iptables 是集成在 Linux 内核中的包过滤防火墙系统。
使用 iptables 可以添加、删除具体的过滤规则,
iptables 默认维护着 4 个表和 5 个链,
所有的防火墙策略规则都被分别写入这些表与链中。
4个表
“四表”是指 iptables 的功能,默认的 iptables规则表有 filter 表(过滤规则表)、nat 表(地址转换规则表)、mangle(修改数据标记位规则表)、raw(跟踪数据表规则表):
filter :控制数据包是否允许进出及转发,可以控制的链路有 INPUT、FORWARD 和 OUTPUT。
nat :控制数据包中地址转换,可以控制的链路有 PREROUTING、INPUT、OUTPUT 和 POSTROUTING。
mangle :修改数据包中的原数据,可以控制的链路有 PREROUTING、INPUT、OUTPUT、FORWARD 和 POSTROUTING。
raw :控制 nat 表中连接追踪机制的启用状况,可以控制的链路有 PREROUTING、OUTPUT。
5个链
“五链”是指内核中控制网络的 NetFilter 定义的 5 个规则链。
每个规则表中包含多个数据链:
INPUT(入站数据过滤)
OUTPUT(出站数据过滤)
FORWARD(转发数据过滤)
PREROUTING(路由前过滤)
POSTROUTING(路由后过滤)
防火墙规则需要写入到这些具体的数据链中。
iptables语法格式
iptables [-t table] COMMAND [chain] CRETIRIA -j ACTION
iptables [-t 表名] 命令选项 [链名] [条件匹配] -j 目标动作或跳转
-t :指定需要维护的防火墙规则表 filter、nat、mangle或raw。在不使用 -t 时则默认使用 filter 表。
COMMAND :子命令,定义对规则的管理。
chain :指明链表。
CRETIRIA:匹配参数。
ACTION :触发动作。
COMMAND选项
-A 添加防火墙规则
-D 删除防火墙规则
-I 插入防火墙规则
-F 清空防火墙规则
-L 列出添加防火墙规则
-R 替换防火墙规则
-E 重命名用户定义的链,不改变链本身
-Z 清空防火墙数据表统计信息
-P 设置链默认规则
-N 新建(new-chain)一条用户自己定义的规则链
-X 删除指定表中用户自定义的规则链(delete-chain)
-n 使用数字形式(numeric)显示输出结果
-v 查看规则表详细信息(verbose)的信息
CHINA链选项
INPUT 入站数据过滤
OUTPUT 出站数据过滤
FORWARD 转发数据过滤
PREROUTING 路由前过滤
POSTROUTING 路由后过滤
CRETIRIA条件
-p 指定协议(TCP、UDP、ICMP、all)
-s 指定ip或网段(1.1.1.0/24)
-d 指定ip或网段
-i 指定网卡
-o 指定网卡
--sport 指定服务及端口
--dport 指定端口
-m state 表示数据包的连接状态 --state NEW
-m mac --mac-source 指定mac地址
-m multiport --dport 指定端口范围
-m iprange --src-range 指定ip范围
ACTION动作
ACCEPT 允许数据包通过
DROP 丢弃数据包
REJECT 拒绝数据包通过
LOG 将数据包信息记录 syslog 曰志
DNAT 目标地址转换
SNAT 源地址转换
MASQUERADE 地址欺骗
REDIRECT 重定向
查看规则
iptables -nvL
参数
-L 表示查看当前表的所有规则,默认查看的是 filter 表,如果要查看 nat 表,可以加上 -t nat 参数。
-n 表示不对 IP 地址进行反查,加上这个参数显示速度将会加快。
-v 表示输出详细信息,包含通过该规则的数据包数量、总字节数以及相应的网络接口。
添加规则
iptables -A INPUT -s 1.1.1.1 -j ACCEPT
参数
-A 添加到规则末尾
-l 可插入指定位置
修改规则
iptables -R INPUT 1 -s 1.1.1.1 -j DROP
# 将第1条规则修改为DROP
删除规则
iptables -D INPUT 1 -s 1.1.1.1 -j DROP
# 将第一条规则删除
iptables -D INPUT 1
# 也可通过行号直接删除 可先使用--line-number查看行号确保 *** 作失误
iptables -nvL --line-number
防火墙的备份与还原
默认的 iptables 防火墙规则会立刻生效,但如果不保存,当计算机重启后所有的规则都会丢失,
所以对防火墙规则进行及时保存的 *** 作是非常必要的。
CentOS 7 系统中防火墙规则默认保存在 /etc/sysconfig/iptables 文件中,
使用 iptables-save 将规则保存至该文件中可以实现保存防火墙规则的作用,计算机重启后会自动加载该文件中的规则。
如果使用 iptables-save 将规则保存至其他位置,可以实现备份防火墙规则的作用。
当防火墙规则需要做还原 *** 作时,可以使用 iptables-restore 将备份文件直接导入当前防火墙规则。
1、iptables-save
iptables-save > /etc/sysconfig/iptables
# 保存防火墙规则
iptables-save > /etc/sysconfig/iptables.bak
# 备份防火墙规则 保存到其他位置
2、iptables-restore
iptables-restore < iptables.bak
# 导入防火墙规则 注意需要是iptables-save导出的文件才可导入
常用iptables规则
1、拒绝所有icmp数据包进入
iptables -I INPUT -p icmp -j REJECT
2、允许转发除ICMP协议以外的所有数据包 使用’!'条件取反
iptables -A FORWARD -p ! icmp -j ACCEPT
3、拒绝转发来自192.168.1.1主机的数据,允许转发来自192.168.0.0/24网段的数据
# 注意拒绝规则放在前面 注意规则顺序
iptables -A FORWARD -s 192.168.1.1 -j REJECT
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
4、丢弃从外网接口(eth1)进入防火墙本机的源地址为私网地址的数据包
iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP
iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
5、封堵网段(192.168.1.0/24),两小时后解封
iptables -I INPUT -s 10.20.30.0/24 -j DROP
iptables -I FORWARD -s 10.20.30.0/24 -j DROP
at now 2 hours at> iptables -D INPUT 1 at> iptables -D FORWARD 1
6、只允许管理员从192.168.0.0/24网段使用SSH远程登录防火墙主机
iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
7、允许本机开放从TCP端口20-1024提供的应用服务
iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20:1024 -j ACCEPT
8、允许转发来自192.168.0.0/24局域网段的DNS解析请求数据包。
iptables -A FORWARD -s 192.168.0.0/24 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -p udp --sport 53 -j ACCEPT
9、禁止其他主机ping防火墙主机,但是允许从防火墙上ping其他主机
iptables -I INPUT -p icmp --icmp-type Echo-Request -j DROP
iptables -I INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT
iptables -I INPUT -p icmp --icmp-type destination-Unreachable -j ACCEPT
10、禁止转发来自MAC地址为00:0C:29:27:55:3F的和主机的数据包
iptables -A FORWARD -m mac --mac-source 00:0c:29:27:55:3F -j DROP
11、允许防火墙本机对外开放TCP端口20、21、25、110以及被动模式FTP端口1250-1280
iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT
12、禁止转发源IP地址为192.168.1.20-192.168.1.99的TCP数据包
iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP
13、禁止转发与正常TCP连接无关的非–syn请求数据包
iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP
14、拒绝访问防火墙的新数据包,但允许响应连接或与已有连接相关的数据包
iptables -A INPUT -p tcp -m state --state NEW -j DROP
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
15、 只开放本机的web服务(80)、FTP(20、21、20450-20480)
放行外部主机发住服务器其它端口的应答数据包
将其他入站数据包均予以丢弃处理
iptables -I INPUT -p tcp -m multiport --dport 20,21,80 -j ACCEPT
iptables -I INPUT -p tcp --dport 20450:20480 -j ACCEPT
iptables -I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)