Linux学习97 Linux防火墙iptables高级扩展匹配

一、iptables续

  1、显示扩展:必须使用-m选项指明要调用的扩展模块的机制

    a、multiport

      (1)、以离散或连续的方式定义多端口匹配条件,最多15个

      (2)、[!] --source-ports,--sports port[,port|,port:port]...:指定多个源端口

      (3)、[!] --destination-ports,--dports port[,port|,port:port]...:指定多个目标端口

      (4)、将我们tcp的几个端口开放给INPUT访问

        1)、iptables -I INPUT -d 192.168.10.15 -p tcp -m multiport --dports 22,80,139,445,3306 -j ACCEPT

        2)、我们将我们定义的第二条规则改为上述规则,先放行INPUT

[root@node3 ~]# iptables --line-numbers -vnL INPUT
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            192.168.10.15        udp dpts:137:138
2     2918  215K ACCEPT     tcp  --  *      *       192.168.10.0/24      192.168.10.15        tcp dpt:22
3        3   252 ACCEPT     icmp --  *      *       0.0.0.0/0            192.168.10.15        icmptype 0 code 0
4      569 46181 REJECT     all  --  ens33  *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
[root@node3 ~]# iptables -R INPUT 2 -d 192.168.10.15 -p tcp -m multiport --dports 22,80,139,445 -j ACCEPT
[root@node3 ~]# iptables --line-numbers -vnL INPUT
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            192.168.10.15        udp dpts:137:138
2        5   356 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.10.15        multiport dports 22,80,139,445
3        3   252 ACCEPT     icmp --  *      *       0.0.0.0/0            192.168.10.15        icmptype 0 code 0
4      569 46181 REJECT     all  --  ens33  *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

        3)、再放行OUTPUT

[root@node3 ~]# iptables --line-numbers -vnL OUTPUT
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     udp  --  *      *       192.168.10.15        0.0.0.0/0            udp spts:137:138
2     1877  197K ACCEPT     tcp  --  *      *       192.168.10.15        192.168.10.0/24      tcp spt:22
3       21  1764 ACCEPT     icmp --  *      *       192.168.10.15        0.0.0.0/0            icmptype 8
4       15  1680 REJECT     all  --  *      ens33   0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
[root@node3 ~]# iptables -R OUTPUT 2 -s 192.168.10.15 -p tcp -m multiport --sports 22,80,139,445 -j ACCEPT
[root@node3 ~]# iptables --line-numbers -vnL OUTPUT
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     udp  --  *      *       192.168.10.15        0.0.0.0/0            udp spts:137:138
2        4   576 ACCEPT     tcp  --  *      *       192.168.10.15        0.0.0.0/0            multiport sports 22,80,139,445
3       21  1764 ACCEPT     icmp --  *      *       192.168.10.15        0.0.0.0/0            icmptype 8
4       15  1680 REJECT     all  --  *      ens33   0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

    b、iprange

      (1)、以连续地址块的方式来指明多IP地址匹配条件

      (2)、[!] --src-range from [-to]

      (3)、[!] --dst-range from [-to]

      (4)、我们开放本机的telnet服务,只开放telnet给指定地址范围内的主机访问。即开放23号端口

        1)、首先要启动telnet服务,可以看到23号端口生效了

          systemctl start telnet.socket (注意看是socket)

        2)、开放INPUT

[root@node3 ~]# iptables --line-numbers -vnL INPUT
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            192.168.10.15        udp dpts:137:138
2      282 20176 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.10.15        multiport dports 22,80,139,445
3        3   252 ACCEPT     icmp --  *      *       0.0.0.0/0            192.168.10.15        icmptype 0 code 0
4      589 48051 REJECT     all  --  ens33  *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
[root@node3 ~]# iptables -I INPUT 3 -d 192.168.10.15 -p tcp --dport 23 -m iprange --src-range 192.168.10.10-192.168.10.20 -j ACCEPT
[root@node3 ~]# iptables --line-numbers -vnL INPUT
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            192.168.10.15        udp dpts:137:138
2      497 35504 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.10.15        multiport dports 22,80,139,445
3        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.10.15        tcp dpt:23 source IP range 192.168.10.10-192.168.10.20
4        3   252 ACCEPT     icmp --  *      *       0.0.0.0/0            192.168.10.15        icmptype 0 code 0
5      589 48051 REJECT     all  --  ens33  *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

        3)、开放OUTPUT

[root@node3 ~]# iptables -I OUTPUT 3 -s 192.168.10.15 -p tcp --sport 23 -m iprange --dst-range 192.168.10.10-192.168.10.20 -j ACCEPT
[root@node3 ~]# iptables --line-numbers -vnL OUTPUT
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     udp  --  *      *       192.168.10.15        0.0.0.0/0            udp spts:137:138
2      347 34548 ACCEPT     tcp  --  *      *       192.168.10.15        0.0.0.0/0            multiport sports 22,80,139,445
3        0     0 ACCEPT     tcp  --  *      *       192.168.10.15        0.0.0.0/0            tcp spt:23 destination IP range 192.168.10.10-192.168.10.20
4       21  1764 ACCEPT     icmp --  *      *       192.168.10.15        0.0.0.0/0            icmptype 8
5       15  1680 REJECT     all  --  *      ens33   0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

        4)、我们发现就可以在指定的地址范围内通过telnet进行登录了

    c、time:

      (1)用来匹配在什么时间能够访问网络什么时间不能访问网络

      (2)、--timestart hh:mm[:ss] #起始时间范围

      (3)、--timestop hh:mm[:ss] #结束时间范围

      (4)、[!] --weekdays day[,day...] #使用周几的时间范围

      (5)、[!] --monthdays day[,day...] #使用每月的几号允许或拒绝,一般和周几的时间范围不一起用,否则会取交集

      (6)、--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] #

      (7)、--datestop [-MM[-DD[Thh[:mm[:ss]]]]]

      (8)、kerneltz:使用内核配置的时区而非默认的UTC

      (9)、演示:我们将刚刚的telnet规则进行修改,修改为只开放给有限的几个人访问,并且限制只在指定时间段内进行访问。假如我们工作时间是早上十点到下午四点。

        1)、首先我们需要开放访问我们的时间服务器的端口123和323(主要是为了同步时间服务器使时间准确)

      Linux学习97  Linux防火墙iptables高级扩展匹配

 

        2)、添加相应的规则。先是INPUT。意思是我们来自于192.168.10.10-192.168.10.20访问我们192.168.10.15主机23号端口的时候都允许,并且时间范围是周1到周五的10点到16点之间的时候。并且时区需要使用内核配置的时区。

[root@node3 ~]# iptables -R INPUT 3 -d 192.168.10.15 -p tcp --dport 23 -m iprange --src-range 192.168.10.10-192.168.10.20 -m time --timestart 10:00:00 --timestop 16:00:00 --weekdays 1,2,3,4
,5 --kerneltz -j ACCEPT

        3)、添加OUTPUT上的规则

[root@node3 ~]# iptables --line-numbers -vnL OUTPUT
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     udp  --  *      *       192.168.10.15        0.0.0.0/0            udp spts:137:138
2      882 88748 ACCEPT     tcp  --  *      *       192.168.10.15        0.0.0.0/0            multiport sports 22,80,139,445
3        0     0 ACCEPT     tcp  --  *      *       192.168.10.15        0.0.0.0/0            tcp spt:23 destination IP range 192.168.10.10-192.168.10.20 TIME from 10:00:00 to 16:00:00 on M
on,Tue,Wed,Thu,Fri4       21  1764 ACCEPT     icmp --  *      *       192.168.10.15        0.0.0.0/0            icmptype 8
5       15  1680 REJECT     all  --  *      ens33   0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

        4)、此时我们相应的主机就只有在固定时间段才能连上我们的环境了

    d、string:字符串匹配

      (1)、this modules matches a given string by using some pattern matching strategy

      (2)、--algo {bm | kmp}

      (3)、[!] --string pattern

      (4)、[!] --hex-string pattern 

      (5)、--from offset

      (6)、--to offset

      (7)、示例:iptables -I OUTPUT -m string --algo bm --string "gay" -j REJECT

29:19

 

Linux学习97 Linux防火墙iptables高级扩展匹配

上一篇:Makefile 一点一滴(三)—— 尝试简单的变量替换


下一篇:delphi执行一个外部程序,当外部程序结束后,delphi程序立即响应