14 防火墙的模块

防火墙的模块

1.multiport

解释:连续匹配多个端口

案例1:要求192.168.15.0/24网段的所有IP只能够访问22,80,443端口,其他的取决。
iptables -t filter -A INPUT -p TCP --dport 22 -s 192.168.15.0/24 -j ACCEPT
iptables -t filter -A INPUT -p TCP --dport 80 -s 192.168.15.0/24 -j ACCEPT
iptables -t filter -A INPUT -p TCP --dport 443 -s 192.168.15.0/24 -j ACCEPT
iptables -t filter -A INPUT -p tcp -j DROP

或: iptables -t filter -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT
iptables -t filter -A INPUT -p tcp -j DROP

案例2:要求192.168.15.0/24网段的所有IP只能够访问70-90端口,其他拒绝

iptables -t filter -A INPUT -p tcp -m multiport --dports 10000:30000 -j ACCEPT
iptables -t filter -A INPUT -p tcp -m multiport --dports 10:30 -j ACCEPT
iptables -t filter -A INPUT -p tcp -j DROP

2.iprange模块

解释:连续匹配多个ip

•参数:  
--src-range from[-to]: 源地址范围    
--dst-range from[-to] 目标地址范围

案例1:要求只有192.168.15.7到192.168.15.66能够通过22端口登录,其他的拒绝    
iptables -t filter -A INPUT -p tcp --dport 22 -s 192.168.15.7 -j ACCEPT    
iptables -t filter -A INPUT -p tcp --dport 22 -s 192.168.15.66 -j ACCEPT    
iptables -t filter -A INPUT -p tcp -j DROP      

iptables -t filter -A INPUT -p tcp -m iprange --src-range 192.168.15.7-192.168.15.66 -j ACCEPT
iptables -t filter -A INPUT -p tcp -j DROP      



3.string模块

解释:按照内容进行匹配

参数:
   --string pattern # 指定要匹配的字符串
   --algo {bm|kmp}  # 匹配的查询算法

案例1:要求访问的内容中包含HelloWorld的内容不允许访问,其他的可以。
iptables -t filter -A OUTPUT -p tcp -m string --string "hello" --algo kmp -j DROP

4. time模块(UTC)

解释:根据时间来控制访问(UTC)

参数:
   --timestart hh:mm[:ss] # 开始时间
   --timestop hh:mm[:ss] # 结束时间
   --monthdays day[,day...] # 指定一个月的某一天
   --weekdays day[,day...] # 指定周 还是 周天

案例1:要求上午的 08:00 到 上午的 10:22 不允许访问,其他时间可以。

iptables -t filter -A INPUT -p tcp -m time --timestart 00:00 --timestop 02:22 -j DROP

 

5.icmp模块

解释:控制icmp协议

参数:
   --icmp-type {type[/code]|typename}
  echo-request (8) 请求(我可以ping别人,别人休想ping我)
  echo-reply (0) 回应(别人可以ping我,我休想ping别人)

案例1:禁止别人ping我,但我可以ping别人
iptables -t filter -I INPUT -p icmp --icmp-type "echo-request" -j DROP

6.connlimit模块

# 控制并发数
参数:
--connlimit-upto n # 如果现有连接数小于或等于 n 则 匹配  
--connlimit-above n # 如果现有连接数大于n 则匹配    

ACCEPT     将数据包放行,进行完此处理动作后,将不再比对其它规则,直接跳往下一个规则链。
REJECT     拦阻该数据包,并传送数据包通知对方。
DROP       丢弃包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。
REDIRECT   将包重新导向到另一个端口,进行完此处理动作后,将会继续比对其它规则。

案例1:要求登录192.168.15.5的窗口最多有两个    
iptables -t filter -A INPUT -p tcp --dport 22 -m connlimit  --connlimit-above 2 -j REJECT

7.limit模块

# 针对 报文速率 进行限制。 秒、分钟、小时、天。   
--limit rate[/second|/minute|/hour|/day] # 报文数量  
--limit-burst number # 报文数量(默认:5)

网速 * 1000 / 1500 = 数据包数量
2.允许10个数据报文快速通过,超过的数据报文 1/m
iptables -t filter -A INPUT -p icmp -m limit --limit 1/m --limit-burst 10 -j ACCEPT    
iptables -t filter -A INPUT -p icmp -j DROP

3.限速:限制传输的带宽不可以超过500k(500 * 1000 / 1500 = 333 包)
案例1:要求每秒只能够传输500k大小数据    
iptables -t filter -A INPUT -p tcp -m limit --limit 333/s -j ACCEPT    
iptables -t filter -A INPUT -p tcp -j DROP

8.防火墙案例

1.对所有的地址开放本机的tcp(80、22、8080-9090)端口的访问

iptables -t filter -A INPUT -p tcp -m multiport --dports 80,22,8080:9090 -j ACCEPT

2.允许对所有的地址开放本机的基于ICMP协议的数据包访问

iptables -t filter -A INPUT -p icmp -j ACCEPT

3.其他未被允许的端口禁止访问

iptables -t filter -A INPUT -p tcp -j DROP

 

posted @ 2021-11-04 17:52  甜甜de微笑  阅读(152)  评论(0编辑  收藏  举报