1.iptables 四表五链
filter表
- 作用
主要和主机自身相关,真正负责主机防火墙功能,是iptables默认使用的表,包含3个链:INPUT、FORWARD、OUTPUT
对于filter表的控制是实现本机防火墙功能的重要手段,特别是对INPUT链的控制 - INPUT
过滤进入主机的数据包 - FORWARD
负责转发流经主机的数据包,起转发作用,和NAT关系很大 - OUTPUT
过滤从本机发出去的数据包
nat表
- 作用
负责网络地址转换,来源与目的IP地址和PORT转换。一般用于局域网共享上网或特殊的端口转换服务,包含3个链:OUTPUT、PREROUTING、POSTROUTING - OUTPUT
和主机发出去的数据包相关,改变主机发出数据包的目标地址 - PREROUTING
数据包达到防火墙时进行路由判断之前执行的规则,作用改变数据包的目的地址,目的端口 - POSTROUTING、
在数据包离开防火墙时进行路由判断之后执行的规则,作用改变数据包的源地址、源端口等
mangle表
- 作用
负责修改数据包中特殊的路由标记,如TTL、TOS、MARK等,包含5个链:INPUT、FORWARD、OUTPUT、PREROUTING、POSTROUTING
2.iptables工作流程
iptables是采用数据包过滤机制工作,会对请求的数据包的包头数据进行分析,根据预先设定的规则进行匹配来决定是否可以进行主机
- 小结
1、防火墙按照配置规则顺序从上到下匹配
2、如果匹配上规则,明确表明是阻止还是同过,数据包就不在向下匹配吓一条规则
3、如果匹配的规则中没有明确表明是阻止还是通过,则会继续向下进行匹配,直到匹配默认规则得到明确的阻止还是通过
4、防火墙默认规则是所有的规则执行完才会执行
3.iptables操作
- 永久保存成配置文件
查看保存的文件/etc/init.d/iptables save
cat /etc/sysconfig/iptables
- 启动
无法启动:setup —>Firewallwall configuration —> enable/etc/init.d/iptables start
- 关闭
/etc/init.d/iptables stop
- 重启
/etc/init.d/iptables restart
- 查看状态
/etc/init.d/iptables status
4.iptables命令
用iptables命令行匹配的命令都是临时生效
-
查看帮助
iptables -h
-
查看防火墙规则(默认:filter规则)
iptables -L -n
-
查看防火墙规则:加序号
iptables -L -n --line-numbers
-
清除默认规则
iptables -F //清除所有规则,不会处理默认的规则 iptables -X //删除用户自定义的链 iptables -Z //链的计数器清零
-
规则语法
iptables -t [table] [ACD] [chain] rule-specification [options]
iptables:关键字
-t [table]:不写,默认用的是filter表
-[ACD]:A-增加规则,C-检查是否存在规则,D-删除规则
[chain]:链
rule-specification:规则
[options]:ACCEPT(接受)、DROP(丢弃)、REJECT(拒绝)
-A与-I区别:
-A:添加规则到指定链的结尾,最后一条
-I:添加规则到指定链的开头,第一条,也可以插入到指定行
-
匹配指定的协议
iptables -A INPUT -p tcp iptables -A INPUT -p udp
匹配指定外的所有协议
iptables -A INPUT -p ! tcp
-
匹配主机源IP
iptables -A INPUT -s 192.168.47.1 iptables -A INPUT ! -s 192.168.47.1
-
匹配网段
iptables -A INPUT -s 192.168.47.0/24 iptables -A INPUT -s ! 192.168.47.0/24
-
匹配单一端口
iptables -A INPUT -p tcp --sport 8080 ==>源端口 iptables -A INPUT -p tcp --dport 8080 ==>目的端口
-
指定端口之外的端口
iptables -A INPUT -p tcp --dport ! 22 iptables -A INPUT -p tcp ! --dport 22 -s 192.168.47.1 -j DROP
-
匹配端口范围
iptables -A INPUT -p tcp --dport 22:80:8080 iptables -A INPUT -p tcp -m multiport --dport 22,80,8080
-
匹配ICMP类型
iptables -A INPUT -p icmp --icmp-type 8
-
匹配指定的网络接口
iptables -A INPUT -i eth0 iptables -A FORWARD -o eth0
-
样例:增加禁止用户访问80端口规则
iptables -A INPUT -p tcp --dport 80 -j DROP iptables -t filter -A INPUT -p tcp --dport 80 -j DROP
-
样例:增加禁止用户访问8080端口规则插入到第二行
iptables -I INPUT 2 -p tcp --dport 8080 -j DROP
-
样例:删除禁止用户访问80端口规则
iptables -t filter -D INPUT -p tcp --dport 80 -j DROP iptables -t filter -D INPUT 1
iptables -t filter -D INPUT 1需要通过iptables -L -n --line-numbers查看规则序号
-
样例:禁止指定IP连入
iptables -t filter -A INPUT -i eth0 -s 192.168.47.1 -j DROP
-
样例:指定IP连入
iptables -t filter -A INPUT -i eth0 ! -s 192.168.47.1 -j DROP =>了解