文章目录
- 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和firewalldsystemctl 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
- 查看内核是否支持iptableslsmod|egrep "nat|filter"
iptables 配置详解
iptables配置文件
- ipv4vi /etc/sysconfig/iptables
- ipv6vi /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 ```