【iptables 实战】08 iptables 常用规则

一、原理

iptables和netfilter的关系

Iptables和netfilter的关系是一个很容易让人搞不清的问题。很多的知道iptables却不知道 netfilter。其实iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables。真正实现防火墙功能的是 netfilter,它是Linux内核中实现包过滤的内部结构。

二、实验

拒绝进入防火墙的所有ICMP协议数据包

bash 复制代码
 iptables -I INPUT -p icmp -j REJECT

允许防火墙转发除ICMP协议以外的所有数据包

bash 复制代码
iptables -A FORWARD -p ! icmp -j ACCEPT

说明:使用"!"可以将条件取反

拒绝转发来自192.168.1.10主机的数据,允许转发来自192.168.0.0/24网段的数据

bash 复制代码
iptables -A FORWARD -s 192.168.1.11 -j REJECT
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

说明:注意要把拒绝的放在前面不然就不起作用了啊。

丢弃从外网接口(eth1)进入防火墙本机的源地址为私网地址的数据包

bash 复制代码
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

封堵网段(192.168.1.0/24),两小时后解封

bash 复制代码
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

只允许管理员从202.13.0.0/16网段使用SSH远程登录防火墙主机

bash 复制代码
iptables -A INPUT -p tcp --dport 22 -s 202.13.0.0/16 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

说明:这个用法比较适合对设备进行远程管理时使用,比如位于分公司中的SQL服务器需要被总公司的管理员管理时

为什么这里ACCEPT写在前面,DROP写在后面

允许本机开放从TCP端口20-1024提供的应用服务

bash 复制代码
iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20:1024 -j ACCEPT

允许转发来自192.168.0.0/24局域网段的DNS解析请求数据包

bash 复制代码
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

禁止其他主机ping防火墙主机,但是允许从防火墙上ping其他主机

bash 复制代码
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

禁止转发来自MAC地址为00:0C:29:27:55:3F的和主机的数据包

bash 复制代码
iptables -A FORWARD -m mac --mac-source 00:0c:29:27:55:3F -j DROP

说明:iptables中使用"-m 模块关键字"的形式调用显示匹配。咱们这里用"-m mac --mac-source"来表示数据包的源MAC地址。

允许防火墙本机对外开放TCP端口20、21、25、110以及被动模式FTP端口1250-1280

bash 复制代码
iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT

说明:这里用"-m multiport --dport"来指定目的端口及范围

禁止转发源IP地址为192.168.1.20-192.168.1.99的TCP数据包

bash 复制代码
iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP

说明:此处用"-m --iprange --src-range"指定IP范围。

禁止转发与正常TCP连接无关的非---syn请求数据包。

bash 复制代码
iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP

说明:"-m state"表示数据包的连接状态,"NEW"表示与任何连接无关的,新的嘛!

拒绝访问防火墙的新数据包,但允许响应连接或与已有连接相关的数据包

bash 复制代码
iptables -A INPUT -p tcp -m state --state NEW -j DROP
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

说明:"ESTABLISHED"表示已经响应请求或者已经建立连接的数据包,"RELATED"表示与已建立的连接有相关性的,比如FTP数据连接等。

只开放本机的web服务(80)、FTP(20、21、20450-20480),放行外部主机发住服务器其它端口的应答数据包,将其他入站数据包均予以丢弃处理

bash 复制代码
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

三、常见问题

拒绝与接收的相关问题

拒绝转发来自192.168.1.10主机的数据,允许转发来自192.168.0.0/24网段的数据

bash 复制代码
iptables -A FORWARD -s 192.168.1.11 -j REJECT
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

说明:注意要把拒绝的放在前面不然就不起作用了啊。

关闭所有端口,只把运维ssh端口22和80端口打开

bash 复制代码
iptables -t filter -A INPUT -s 0.0.0.0/0.0.0.0 -d X.X.X.X -j DROP
复制代码
-A表示在链的尾部插入
bash 复制代码
iptables -I INPUT -s 0.0.0.0/0.0.0.0 -d X.X.X.X -p tcp --dport 22 -j ACCEPT
复制代码
-I表示在链的头部插入
bash 复制代码
iptables -A INPUT -s 0.0.0.0/0.0.0.0 -d X.X.X.X -p tcp --dport 80 -j ACCEPT

说明

  • 这里的三条语句是有顺序的
  • 22 -j ACCEPT这是第1条规则
  • 然后是DROP
  • 然后是80 -j ACCEPT
    当来自22端口的请求被匹配到,就不会执行下面的DROP了
    报文先被第一条规则匹配到,于是当前报文被放行了,因为报文已经被放行了,所以即使第二条规则被匹配到,也不会执行相应的动作,这就是iptables的工作机制
    思考:为什么拒绝了,还能往下面走,不是break了吗,下面的接收包,还会被执行

DROP与REJECT有什么区别

DROP ping的时候会卡在那里,REJECT是目标不可达(返回了一条icmp差错报文)

相关推荐
网络研究院14 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智14 天前
ARP代理--工作原理
运维·网络·arp·arp代理
treesforest14 天前
AI安全系统如何识别异常访问?IP风险识别正在成为关键能力
网络·人工智能·tcp/ip·安全·web安全
shushangyun_14 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
2601_9618451514 天前
粉笔行测题库|系统班|刷题
网络·百度·微信·微信公众平台·facebook·新浪微博
程序猿阿伟15 天前
《Chrome离线扩展安装的底层逻辑与场景落地指南》
服务器·网络·chrome
InHand云飞小白15 天前
无人值守站点网络困境?工业级路由器IR315破解连接难题
网络·物联网·4g·工业路由器·4g路由器·iiot·蜂窝路由器
森G15 天前
75、服务器源码解析---------云视频服务项目
linux·服务器·网络·c++·qt
江华森15 天前
TCP/IP 协议栈实战 — 7 个实验详解
网络·tcp/ip·智能路由器
酉鬼女又兒15 天前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php