iptables概述
iptables 实际上就是一种包过滤型防火墙、是一个命令行工具,位于用户空间。 就是通过书写一些接受哪些包,拒绝哪些包的规则,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。这些规则存储在专用的信息包过滤表中,而这些表集成在Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。
iptables的五链三表
表中包含链。
三表:
filter过滤,防火墙,过滤数据包【都是通过内核访问】Nat用于网络地址转换(IP、端口)【不经过内核防火墙访问规则】Mangle****拆解报文,作出修改,封装报文【备用表格】
五链:
PREROUTING数据包进入路由之前【存在表:mangle、nat】INPUT目的地址为本机【存在表:mangle、filter】FORWARD实现转发不经过本机,直接从内核空间转发出去【存在表:mangle、filter】OUTPUT原地址为本机,向外发送【存在表:mangle、nat、filter】POSTROUTING****发送到网卡之前【存在表:mangle、nat】
五条主链,其他的都是自定义链:自定义链中写好规则,然后可以插入主链中。但是自定义链就不允许再有自定义链插进来了。
如果报文需要转发,那么报文则不会经过input链发往用户空间,而是直接在内核空间中经过forward链和postrouting链转发出去的。
IPNUT和OUTPUT包括经过和不经过内核的信息
FORWARD是经过内核的路由转发信息
POSTROUTING是不经过内核路由之后的信息
PREROUTING是不经过内核路由之前的信息
命令
命令解析
1、iptables -t mangle -xvnL //查看iptables mangle表
2、iptables -xvnL //查看iptables filter表(默认为filter表)
3、 iptables -t nat -xvnL
4、自定义链(首先要新创建)
iptables -N inacc
iptables -I inacc ! -i br0 -p TCP --dport 80 -m iprange --src-range 192.168.101.1-192.168.101.5 -j ACCEPT
5、删除INPUT链的第一条规则:iptables -D INPUT 1
6、拒绝进入防火墙的所有ICMP协议数据包
iptables -I INPUT -p icmp -j REJECT
7、允许防火墙转发除ICMP协议以外的所有数据包
iptables -A FORWARD -p ! icmp -j ACCEPT
说明:使用“!”可以将条件取反。
8、拒绝转发来自192.168.1.10主机的数据,允许转发来自192.168.0.0/24网段的数据
iptables -A FORWARD -s 192.168.1.11 -j REJECT
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
说明:注意要把拒绝的放在前面不然就不起作用了啊
9、端口重定向
ssh 62011定向到原ssh 的22
iptables -t mangle -I PREROUTING ! -i br0 -p TCP --dport 62011 -j MARK --set-mark 0x1000
iptables -t nat -I PREROUTING ! -i br0 -p TCP --dport 62011 -j REDIRECT --to-ports 22
10、比如现在要将123.44.55.66这个IP封杀,就输入:
iptables -I INPUT -s 123.44.55.66 -j DROP
11、要解封一个IP,使用下面这条命令:
iptables -D INPUT -s ... -j DROP
12、要添加IP段到封停列表中,使用下面的命令:
iptables -I INPUT -s 121.0.0.0/8 -j DROP
13、禁用所有ip
iptables -I OUTPUT -p UDP -j DROP
14、只开放本机的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
15、禁止某ip段访问外网
iptables -I OUTPUT -s 192.168.7.0/24 -j DROP
iptables -I OUTPUT -m iprange --src-range 192.168.6.0-192.168.8.0 -j DROP
所有禁止通过wan上网,在output处设置规则没有用。电脑或者手机第三方设备连上onu的wan侧网络一样可以访问外网,因为数据是从第三设备来的,不是onu本身自发的数据。
所以要限制第三方经过onu后通过wan侧不能访问外网,则需要在FORWARD处设置规则。
16、对于源地址192.168.1.7, 禁止访问服务器端口22,23,80,135
iptables -A INPUT -s 192.168.1.7 -p tcp --dport 22,23,80,135 drop
17、实现把访问10.0.0.3:80 的请求转到 172.16.1.17:80【请求的目的ip转换】
iptables -t nat -A PREROUTING -d 10.0.0.4 --dport 80 -j DNAT --to-destination 172.16.1.6:80
18、实现172.16.1.0/24端所有主机通过124.32.54.26外网ip共享上网【post访问外网的源地址转换】
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 124.32.54.26
19、禁止icmp通信-ping 不通
iptables -A INPUT -p icmp -j DROP
20、屏蔽端口 5000
iptables -A INPUT -p tcp -m tcp --sport 5000 -j DROP
iptables -A INPUT -p udp -m udp --sport 5000 -j DROP
iptables -A OUTPUT -p tcp -m tcp --dport 5000 -j DROP
iptables -A OUTPUT -p udp -m udp --dport 5000 -j DROP21、禁止来自10.0.0.7 ip地址访问80端口的请求
iptables -A INPUT -p tcp -s 10.0.0.7 --dport 80 -j DROP
注意:INPUT链上的规则过滤不了转发的数据,转发的数据不走INPUT,走FORWARD
说明:
-i 输入接口(input interface)
-i指定了要处理来自哪个接口的数据包
这些数据包即将进入INPUT, FORWARD, PREROUTE链
例如:-i eth0指定了要处理经由eth0进入的数据包
如果不指定-i参数,那么将处理进入所有接口的数据包
如果出现! -i eth0,那么将处理所有经由eth0以外的接口进入的数据包
如果出现-i eth+,那么将处理所有经由eth开头的接口进入的数据包
还可以使用–in-interface参数
传输协议基于TCP/UDP
-I后接链名称(在指定链中插入(insert)一条新的规则,默认在第一行添加):
-A 在后面插入规则。
-N 新建(new-chain)一条用户自己定义的规则链。
命令中动作含义
ACCEPT:允许数据包通过。
DROP:直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了超时时间才会有反应。
REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息。
SNAT:源地址转换,解决内网用户用同一个公网地址上网的问题。
MASQUERADE:是SNAT的一种特殊形式,适用于动态的、临时会变的ip上。
DNAT:目标地址转换。
通过服务器上的每个数据包,都会依次经过三个不同的机制,首先是PREROUTING(DNAT),再到路由表,最后到POSTROUTING(SNAT),如下图所示
扩展 ebtables
- ebtables 是主要是控制数据链路层的,在内核中,ebtables 的数据截获点比 iptables 更“靠前”,它获得的数据更“原始”,ebtables 多用于桥模式,比如控制 VLAN ID 等。
- iptables 不能过滤桥接流量,而 ebtables 可以。ebtables 不适合作为 Internet 防火墙。
ACCEPT 表示让这个包通过。
DROP表示将这个包丢弃。
QUEUE表示把这个包传递到用户空间。
RETURN表示停止这条链的匹配,到前一个链的规则重新开始。如果到达了一个内建的链(的末端),或者遇到内建链的规则是RETURN,包的命运将由链准则指定的目标决定。
大佬文章:
知识总结12:iptables三表五链详解及面试题_eternals fiere的博客-CSDN博客
版权归原作者 冻龄廖女士 所有, 如有侵权,请联系我们删除。