9个实验带你了解iptables的显示扩展规则设置-创新互联

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

在漳平等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计、做网站 网站设计制作按需开发网站,公司网站建设,企业网站建设,品牌网站建设,成都全网营销,成都外贸网站制作,漳平网站建设费用合理。

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

         使用帮助:

            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连接追踪功能是不明智的,在讲到集群负载的时候我们将重点讨论这个问题










另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:9个实验带你了解iptables的显示扩展规则设置-创新互联
文章地址:http://pwwzsj.com/article/dhddsi.html