9个实验带你了解iptables的显示扩展规则设置

本小结重点讲解一下iptables的显示扩展规则设置

成都创新互联是一家专业提供川汇企业网站建设,专注与成都网站制作、成都做网站、外贸营销网站建设H5开发、小程序制作等业务。10年已为川汇众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。

    

显示扩展:必须显式地指明使用的扩展模块进行扩展;

                 使用帮助:

                        Centos 6:man Iptables

                        Centos 7:man iptables-extensions

实验1:

multiport扩展

                   以离散的方式定义多端口匹配;最多指定15个端口;

                    [!]--source-ports,--sports port,port,....:指定多个源端口;

                    [!]--destination-ports,--dports port,port....:指定多个目标端口

                    [!]--ports port ,port...:指明多个端口,不管是源端口还是目标端口都匹配

                    允许192.168.32.163这台主机访问本机的22,80端口

                    iptables -A INPUT -s 192.168.32.163 -d 192.168.32.144 -p tcp -m multiport --dports 22,80 -j ACCEPT

实验2:

iprange扩展  

                    指明连续的(但一般不能是整个网络)ip地址范围;

                    [!]--src-rang from[-to]:源IP地址;

                    [!]--dst-rang from[-to]:目标IP地址;

                    172.16.100.5主机到172.16.100.10主机不能访问本机的web服务

                    iptables -A INPUT -d 192.168.32.144 -p tcp --dport 80 -m iprange --src-range 172.16.100.5-172.16.100.10 -j DROP

实验3:

string扩展

                     对报文中的应用层数据做字符串模式匹配检测;

                     --algo{bm|kmp}:字符串匹配检测算法;

                     bm:Boyer-Moore

                     kmp:Knuth-Pratt_Morrls

                     [!]--string patter:要检测的字符串模式;

                     [!]--hex-string patter:要检测的字符创模式,16进制格式;

                     限制192.168.32.163访问本机web网页中含有have内容的网页。

                     必须定义到OUTPUT中因为请求的报文中是不带需要限制的字符串的,只有响应的报文中才带有需要限制的字符串

                     iptables -A OUTPUT -s 192.168.32.144 -d 192.168.32.163 -p tcp --sport 80 -m string --algo bm --string "have" -j REJECT

                    在本机安装web服务,并创建两个页面,其中一个含有have字符串,

                    初始状态防火墙未做任何规则

                    9个实验带你了解iptables的显示扩展规则设置

                    此时客户端可以正常访问web服务器

                    9个实验带你了解iptables的显示扩展规则设置

                    添加防火墙规则

                    iptables -A OUTPUT -s 192.168.32.144 -d 192.168.32.163 -p tcp --sport 80 -m string --algo bm --string "have" -j REJECT

                    9个实验带你了解iptables的显示扩展规则设置

                    含有have字段的网页不能够访问

                        

实验4:

time扩展

                   根据将报文到达时间与指定的时间范围进行匹配

                    --datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]

                    --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]

                    --datestart 1970-01-01T00:00:00 

                    --datestop 2030-01-19T04:17:07

                    --timestart hh:mm[:ss]

                    --timestop hh:mm[:ss]

                    [!]--monthdays day[,day]

                    Possible values are 1 to 31.

                    [!]--weekdays day[,day]

                    Possible values are Mon,Tue,Wed,Thu,Fri,Sat,Sun

                    --kerneltz:使用内核上的时区,而非默认的UTC;      

                    定义本机的web服务在每周末下午的14:30到18:30不允许192.168.32.145主机访问

                    iptables  -A INPUT -s  192.168.32.163  -d  192.168.32.144 -p tcp --dport  80  -m time  --timestart  14:30  --timestop 18:30   --weekdays Sat,Sun   --kerneltz  -j DROP  

                    未使用time扩展设置防火墙规则时客户端可以正常网站

                    9个实验带你了解iptables的显示扩展规则设置 

                    客户端可以正常访问web服务

                    9个实验带你了解iptables的显示扩展规则设置

                    添加time扩展访问规则

                    9个实验带你了解iptables的显示扩展规则设置    

实验5:

connlimit扩展

                     根据每客户端IP做并发连接数量匹配;

                     --connlimit-upto n:连接的数量小于等于n时匹配;

                     --connlimit-above n:连接的数量大于n时匹配;    

                     我们要求每个客户端IP最多能够连接两个

                     iptables  -A  INPUT -d 192.168.32.144 -p tcp --dport 21 -m connlimit  --connlimit-above  2   -j  REJECT

实验6:

limit扩展

                    基于收发报文的速率做匹配;

                    令牌桶过滤器:

                     --limit rate[/second | /minute| /hour| /day]

                     --limit-burst number

                     每分钟只允许其它主机对本主机进行ping操作三次,峰值最大为5

                     iptables -I INPUT -d 192.168.32.144 -p icmp  --icmp-type  8  -m limit  --limit  10/minute  --limit-burst  5  -j  ACCEPT  满足条件执行放行策略

                     iptables -I INPUT 2 -p icmp  -j REJECT 加一条拒绝规则

                     设置规则之前:

                    9个实验带你了解iptables的显示扩展规则设置

                    添加规则:

                    9个实验带你了解iptables的显示扩展规则设置   

实验7:

state扩展

                   根据“连接追踪机制”去检查连接的状态;跟TCP协议没有关系

                   如何判断从本机发出的一个连接是对别人请求的响应还是自己发起的请求?

                   可以通过本机记录的conntrack追踪结果,在有效时间内,可以查看到每个对本机的请求连接跟本机反馈的结果的之间的对应关系

                   conntrack机制:追踪本机上的请求和响应之间关系;状态有如下几种;

                                NEW:新发出请求;连接追踪模板中不存在此连接的信息条目,因此,将其识别为第一次发出的请求;

                                ESTABLISHED:NEW状态之后,连接追踪模板中为其建立的条目失效之前期间内所进行的通信状态;

                                RELATED:相关联的连接;如ftp协议中的命令连接与书籍之间的关系;

                                INVALID:无效的连接;

                                UNTRACKEN:为进行追踪的连接;     

                    正常情况下,服务器是不会通过80端口主动发起连接请求,22号端口正常情况下也是不会主动发起连接请求

                    允许NEW请求连接进来

                    iptables -A INPUT -d 192.168.32.144  -p tcp --dport 80 -m state --state NEW -j ACCEPT

                    INPUT链放行NEW,ESTABLISHED

                    iptables -A INPUT -d 192.168.32.144 -p tcp -m multiport  --dports 22,80  -m state  --state  NEW,ESTABLISHED  -j ACCEPT                        

                    OUTPUT链放行ESTABLISHED   

                    iptables -A OUTPUT -s 192.168.32.144  -p tcp -m multiport  --sports 22,80  -m state  --state  ESTABLISHED  -j ACCEPT     

                    更改默认策略全部为DROP:

                    iptables -P INPUT DROP

                    iptables -P OUTPUT DROP 

                    iptables -P FORWARD DROP

                   9个实验带你了解iptables的显示扩展规则设置

                   客户端可以正常访问:

                    9个实验带你了解iptables的显示扩展规则设置  

                    调整连接追踪功能所能容纳的最大连接数量:

                    /proc/sys/net/nf_contrack_max

                    已经追踪到的并记录下来的连接:

                    /proc/net/nf_conntrack

                    不同的协议的连续追踪时长

                    /proc/sys/net/netfilter/ 

                    iptables的链接跟踪最大容量为/proc/sys/net/ipv4/ip_conntrack_max,链接碰到各种状态的超时后就会从表中删除;当模板满载时,后续的连接可能会超时

                    解决方法一般有两个:

                  (1)加大nf_conntrack_max值

                     vim /etc/sysctl.conf

                      net.ipv4.nf_conntrack_max=393216

                      net.ipv4.netfilter.nf_conntrack_max=393216

                      (2)降低nf_conntrack timeout时间

                      vim /etc/sysctl.conf  

                       net.ipv4.netfilter.nf_conntrack_tcp_timeout_established=300

                       net.ipv4.netfilter.nf_conntrack_tcp_timeout_time_wait=120

                       net.ipv4.netfilter.nf_conntrack_tcp_timeout_close_wait=60

                       net.ipv4.netfilter.nf_conntrack_tcp_timeout_fin_wait=120

 实验8:  

 如何开放被动模式的ftp

                      ftp主动链接模式。客户端发起请求连接服务器21号端口,服务器端进程会通过本机的20号端口主动去连接客户端随机端口+1的端口(新数据请求),客户端有可能存在防火墙,

                      ftp被动连接模式。客户端请服务器发起数据下载请求,服务器端随机使用一个端口响应,

                       服务器端判断数据连接是不是与此前的某个命令连接有关联关系, 只要数据连与此前的命令连接有关联关系,防火墙就放行,不从端口放行,以转态为标准。

                       先复制一个文件到/var/ftp/pub

                       cp   /etc/issue   /var/ftp/pub/

                        9个实验带你了解iptables的显示扩展规则设置            9个实验带你了解iptables的显示扩展规则设置   

                       防火墙初始状态:

                       因为要使用远程连接功能,所以放行了22号端口

                       9个实验带你了解iptables的显示扩展规则设置

                        客户端使用lftp连接发现连接失败

                         9个实验带你了解iptables的显示扩展规则设置           9个实验带你了解iptables的显示扩展规则设置

                         手动记载连接追踪的模块

                          modprobe nf_conntrack_ftp

                          9个实验带你了解iptables的显示扩展规则设置

                          设置防火墙规则放行命令连接:

                          iptables -A INPUT -d 192.168.32.144 -p tcp --dport 21 -m state  --state  NEW,ESTABLISHED  -j ACCEPT

                          iptables -A OUTPUT -s 192.168.32.144  -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT

                          放行数据连接:

                          iptables -A INPUT -d 192.168.32.144 -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT

                          iptables -A OUTPUT -s 192.168.32.144 -p tcp -m state --state  ESTABLISHED  -j ACCEPT

                          此时继续访问可以看到

                           9个实验带你了解iptables的显示扩展规则设置 

                                    9个实验带你了解iptables的显示扩展规则设置

实验9:

规则优化:

                       服务器规则优化设定:任何不允许的访问,应该在请求到达时给予拒绝;

                     (1)可安全放行所有入站的状态为ESTABLISHED状态连接;

                     (2)可安全放行所有出站的状态为ESTABLISHED状态连接;

                     (3)谨慎放行入站的新请求;

                     (4)有特殊目的的限制访问功能,要于芳心规则之前加以决绝;

                        9个实验带你了解iptables的显示扩展规则设置 

                        iptables -I  INPUT -d  192.168.32.144 -m state --state ESTABLISHED -j ACCEPT                                    9个实验带你了解iptables的显示扩展规则设置

                        iptables -I INPUT  2 -d 192.168.32.144 -p tcp -m multiport --dport 21,22,80  -m state --state NEW -j ACCEPT

                        iptables -I INPUT 3 -d 192.168.32.144 -p tcp -m state --state RELATED -j ACCEPT

                        iptables -D INPUT 4

                        iptables -D INPUT 4

                        iptables -D INPUT 4        

                         出站规则设定

                         iptables -I OUTPUT -s 192.168.32.144 -m state --state ESTABLISHED -j ACCEPT     

                         iptables -D OUTPUT 2

                         iptables -D OUTPUT 2

                         iptables -D OUTPUT 2

                         9个实验带你了解iptables的显示扩展规则设置                                

                         限制掉web服务反馈的请求中含有have的页面

                         9个实验带你了解iptables的显示扩展规则设置         9个实验带你了解iptables的显示扩展规则设置

                         iptables -I OUTPUT -m string --algo kmp --string "have" -j REJECT

                         9个实验带你了解iptables的显示扩展规则设置         9个实验带你了解iptables的显示扩展规则设置

                         备注:其实在前端的web服务异常繁忙的服务器上的使用state连接追踪功能是不明智的,在讲到集群负载的时候我们将重点讨论这个问题






        


分享名称:9个实验带你了解iptables的显示扩展规则设置
URL地址:http://csdahua.cn/article/pjdsjd.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流