【 Iptables 】

iptables简介

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
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值