一:基本语法、数据包控制类型
命令格式:iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
实例:在filter表的input链中插入一条规则,拒绝发给本机的使用ICMP协议的数据包
备注:
-I:插入一条规则,要指定在哪一行插入,不指定默认第一行
REJECT:拒绝
删除此规则
-D:删除
二:添加、查看、删除规则等基本操作
1:添加新的规则
在filter表INPUT链的末尾添加一条防火墙规则
备注:
-A:在末尾追加
-I:在开头添加
ACCEPT:允许
在filter表INPUT链的添加以下两条规则,这两条规则分别位于第一条和第二条(指定位置:-I,大写i)
2:查看规则列表
查看filter表INPUT链中的所有规则,并显示规则序号(列出所有规则:-L)
以数字形式查看filter表INPUT链中的所有规则(数字形式显示:-n)
--line:显示行号
3:删除、清空规则
删除filter表INPUT链中的第三条规则
清空指定链或表中的所有防火墙规则,使用管理选项“-F”
清空filter表INPUT链中所有的规则
分别清空filter表,nat表,mangle表中所有链的规则
4:设置默认策略(找不到匹配项时,就是用该默认规则)
三:规则的匹配条件
1:通用匹配——常规匹配(包括协议、地址、网络接口匹配),可独立使用!
(1)协议匹配
(2)地址匹配(源地址:-s,目标地址:-d)
当遇到小规模的网络攻击或扫描时,应封锁IP地址
(3)网络接口匹配
要丢弃从外网卡接口(eth1)访问防火墙本机且源地址为私有地址的数据包
2:隐含匹配——要以协议匹配作为前提条件,不可独立使用(带有子条件)
(1)端口匹配
允许为网段192.168.4.0/24转发DNS查询数据包
注释:
隐含匹配需要有一个匹配的前提条件,这个前提条件就是隐含要匹配的内容。
上面案例中“ -p udp --dport”就是隐含的子条件,意思是,只匹配一个端口号还不行,还要指定这个端口号是UDP的端口号,并且是目标端口号
搭建vsftpd服务时需要开放20、21端口,以及用于被动模式的端口范围为24500-24600
(2)ICMP类型匹配
若要禁止从其他主机ping本机,但是允许本机ping其他主机
0 响应应答(ECHO-REPLY)(应答报文)
3 不可到达 (目标主机不可达)
4 源抑制
5 重定向
8 响应请求(ECHO-REQUEST)(请求报文)
11 超时
12 参数失灵
13 时间戳请求
14 时间戳应答
15 信息请求(*已作废)
16 信息应答(*已作废)
17 地址掩码请求
18 地址掩码应答
查看icmp协议类型的帮助信息
3:显式匹配——要有额外的内核模块提供支持,以手动“-m 模块名称”调用相关的模块,然后在再置匹配条件,显示匹配就是需要手动指定模块的匹配方式。
(1)多端口匹配(multiport用于多端口)
允许本机开放25、80、110、143端口,以提供电子邮件服务
(2)IP范围匹配(iprange用于ip范围)
禁止转发源IP地址位于192.168.4.21-192.168.4.28之间的TCP数据包
(3)MAC地址匹配
根据MAC地址封锁主机,禁止其访问本机的任何应用
(4)状态匹配
要禁止转发与正常TCP连接无关的非"--syn"请求的数据包,如伪造的网络攻击数据包
只开放本机的WEB服务(80端口),但对发给本机的TCP应答数据包予以放行,其他入站数据包均丢弃,对应的入站规则为(ESTABLISHED:已建立的)