一.使用iptables批量做访问限制,只允许某个ip访问指定端口
1.1编写如下的shell脚本
#!/usr/bin/bash
#开放哪些网段的主机可访问,subnets中填写开放哪些网段的主机ip,多个ip用空格隔开即可
subnets=(192.168.116.1 192.168.116.22 192.168.116.21)
#要屏避的端口列表,根据实际可能会有不同,多个端口使用空格隔开,连续的使用冒号,比如17000:17999
ports=(17000:17999 2000 2181 9870 22)
for port in ${ports[*]} ; do
echo $port
for subnet in ${subnets[*]} ; do
iptables -A INPUT -p tcp -s $subnet --dport $port -j ACCEPT
done
iptables -A INPUT -p tcp --dport $port -j REJECT
done
1.2 执行脚本后查看所有规则
二、单独追加
2.1防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。所以允许的规则必须放在拒绝之前。
iptables -I INPUT -p tcp --dport 22 -s 192.168.116.23 -j ACCEPT
2.2使用上面单独追加命令后,这条可访问的在第一条,也就是在拒绝规则之前
三、查看规则
3.1带有序号查看
iptables -L -n --line-number
四、删除规则
4.1其中数字3就是规则的编号,删除上一步查询到的第三条规则
iptables -D INPUT 3