文章目录
- iptables 概述
- 四表五链
- iptables 安装启动
- iptables 配置详解
- iptables配置文件
- iptables配置语法
- iptables常用实例
- 查看规则
- 修改默认规则
- 保存和备份规则
- 恢复备份的规则
- 清空规则
- 放行SSH服务
- 在ubuntu14.04中iptables规则持久化
iptables 概述
- 主机型
- 对主机进行保护
- 网络型
- 系统当作路由时使用,对网络进行保护
- iptables是一个用户空间的应用,用来设置内核空间的netfilter
- iptables没有守护进程,不能算是真正意义上的服务,应该算是内核提供的功能
四表五链
-
数据经过防火墙的流程
-
四表
- filter表
- 负责过滤功能,防火墙;内核模块:iptables_filter
- nat表
- network address translation,网络地址转换功能;内核模块:iptable_nat
- mangle表
- 拆解报文,做出修改,并重新封装的功能;内核模块:iptable_mangle
- raw表
- 关闭nat表上雇用的连接追踪机制;内核模块:iptable_raw
- filter表
-
五链
- PREROUTING(路由前)
- INPUT(数据包入本机)
- FORWARD(数据转发)
- OUTPUT(数据包出本机)
- POSTROUTING(路由后)
-
规则
- 处理运作
- ACCEPT
- 允许数据包通过
- DROP
- 直接丢弃数据包,不给任何回应信息
- REJECT
- 拒绝数据包通过,返回拒绝的回应信息
- SNAT
- 源地址转换,解决内网用户用同一个公网地址上网的问题
- MASQUERADE
- 伪装,是SNAT的一种特殊形式,适用于动态的、临时会变的IP上
- DNAT
- 目标地址转换
- REDRECT
- 在本机做端口映射
- LOG
- 在/var/log/message文件中记录日志信息,继续进行下一条规则
- ACCEPT
- 处理运作
iptables 安装启动
- 以CentOS7为例
- 禁用selinux和firewalld
systemctl stop firewalld;systemctl disable firewalld;setenforce 0;sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
- 安装启动iptables服务
yum -y install iptables-services;systemctl enable iptables --now;systemctl status iptables
- 查看内核是否支持iptables
lsmod|egrep "nat|filter"
iptables 配置详解
iptables配置文件
- ipv4
vi /etc/sysconfig/iptables
- ipv6
vi /etc/sysconfig/ip6tables
iptables配置语法
- 语法
iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 运作]
- 管理选项
选项 功能 备注 -t 表 指定要操作的表 默认为filter表 -A 向规则链中添加条目 在最后添加 -D 从规则链中删除条目 指定条目内容 -I 向规则链中插入条目 默认在最前插入 -R 替换规则链中已有的条目 -L 显示规则链中已有的条目 -F 清空规则链中所有条目 注意,可能会断SSH -Z 清空规则链中的数据包计数器和字节计数器 -N 创建新的用户自定义规则链 -P 定义规则链中的默认目标 -h 显示帮助信息 -p 指定要匹配的数据包协议类型 -s 指定要匹配的数据包源ip地址 -d 指定要匹配的数据包目的ip地址 -j 目标 指定动作 -i 网络接口 指定数据包进入本机的网络接口 -o 网络接口 指定数据包要离开本机所使用的网络接口
iptables常用实例
查看规则
- 默认为netfilter表,不解析,显示行号
iptables -nL --line-numbers
修改默认规则
- 默认为netfilter表,修改INPUT链默认规则为"DROP"
iptables -P INPUT DROP
保存和备份规则
- 修改的规则临时生效
- 如果要永久生效需要保存配置
- 命令
- 保存配置
iptables-save
- 备份配置
iptables-save > /mnt/iptables_bak_$(date "+%Y-%m-%d_%H:%M")
- 保存配置
恢复备份的规则
- 命令
iptables-restore 备份的文件名
清空规则
- 默认为netfilter表,清空规则,如果默认规则不是ACCEPT,会造成SSH立即断开
iptables -F
放行SSH服务
- 源IP:192.168.86.2
- 目的IP:192.168.99.202
- SSH端口:22
- 命令
iptables -I INPUT -s 192.168.86.2 -d 192.168.99.202 -p tcp --dport 22 -j ACCEPT iptables -I OUTPUT -s 192.168.99.202 -d 192.168.86.2 -p tcp --sport 22 -j ACCEPT
在ubuntu14.04中iptables规则持久化
- 修改规则–保存规则为文件–制作开启启动脚本,自动载入文件中规则
- 脚本
#!/bin/bash # 修改规则(略) # 查看规则 iptables -nL --line-numbers # 保存规则到文件 sudo mkdir /etc/iptables sudo iptables-save > /etc/iptables/rules.v4 # 制作开机脚本 sudo iptables-save > /etc/iptables/rules.v4 cat >> /etc/network/if-pre-up.d/iptables << EOF #!/bin/sh /sbin/iptables-restore < /etc/iptables/rules.v4 EOF sudo chmod +x /etc/network/if-pre-up.d/iptables ```![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/dc4e35de8b4143d5b023fd88c9864e8b.png#pic_center)