iptable

iptable表中包含链。如果报文需要转发,那么报文则不会经过input链发往用户空间,而是直接在内核空间中经过forward链和postrouting链转发出去的。通过服务器上的每个数据包,都会依次经过三个不同的机制,首先是PREROUTING(DNAT),再到路由表,最后到POSTROUTING(SNAT),如下图所示知识总结12:iptables三表五链详解及面试题_eternalsfiere的博客-CSDN博客…………

目录

iptables概述

iptables的五链三表

三表:

五链:

命令

命令解析

1、iptables -t mangle -xvnL //查看iptables mangle表

2、iptables -xvnL //查看iptables filter表(默认为filter表)

3、 iptables -t nat -xvnL

4、自定义链(首先要新创建)

5、删除INPUT链的第一条规则:iptables -D INPUT 1

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

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

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

9、端口重定向

10、比如现在要将123.44.55.66这个IP封杀,就输入:

11、要解封一个IP,使用下面这条命令:

12、要添加IP段到封停列表中,使用下面的命令:

13、禁用所有ip

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

15、禁止某ip段访问外网

16、对于源地址192.168.1.7, 禁止访问服务器端口22,23,80,135

17、实现把访问10.0.0.3:80 的请求转到 172.16.1.17:80

18、禁止来自10.0.0.7 ip地址访问80端口的请求

19、禁止icmp通信-ping 不通

20、屏蔽端口 5000

命令中动作含义

扩展 ebtables 

大佬文章:


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是不经过内核路由之前的信息

iptable

命令

  • 命令解析

1、iptables -t mangle -xvnL //查看iptables mangle表

iptable

2、iptables -xvnL //查看iptables filter表(默认为filter表)

iptable

3、 iptables -t nat -xvnL

iptable

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

iptable

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 DROP

21、禁止来自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),如下图所示

iptable

扩展 ebtables 

  •  ebtables 是主要是控制数据链路层的,在内核中,ebtables 的数据截获点比 iptables 更“靠前”,它获得的数据更“原始”,ebtables 多用于桥模式,比如控制 VLAN ID 等。 
  • iptables 不能过滤桥接流量,而 ebtables 可以。ebtables 不适合作为 Internet 防火墙。

ACCEPT 表示让这个包通过。

DROP表示将这个包丢弃。

QUEUE表示把这个包传递到用户空间

RETURN表示停止这条链的匹配,到前一个链的规则重新开始。如果到达了一个内建的链(的末端),或者遇到内建链的规则是RETURN,包的命运将由链准则指定的目标决定。

大佬文章:

知识总结12:iptables三表五链详解及面试题_eternals fiere的博客-CSDN博客

今天的文章iptable分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/5726.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注