批量增加防火墙入站规则

环境:Win10

需求:每个端口单独增加一条入站规则

方案:使用脚本批量增加规则

脚本

@echo off & setlocal enabledelayedexpansion
REM 服务器别名
set server_alias=135

REM 端口列表
set port_list=9922,8090

REM 实测入站规则的作用域(远程地址)是有长度限制的,所以IP如果比较多,可分为多组
set ip_list_1=192.168.1.1,192.168.1.2,192.168.1.3
set ip_list_2=192.168.1.4,192.168.1.5,192.168.1.6

REM 调用add_rule_batch模块
call :add_rule_batch
goto :eof


REM 定义add_rule_batch模块
:add_rule_batch
for /f "tokens=1,* delims=," %%i in ("!port_list!") do (
    set rule_name1=%server_alias%端口白名单-%%i-1
    echo 正在删除入站规则:!rule_name1!
    netsh advfirewall firewall delete rule name="!rule_name1!"
    netsh advfirewall firewall add rule name="!rule_name1!" dir=in action=allow protocol=TCP localport=%%i enable=yes profile=domain,private,public remoteip=!ip_list_1!
    echo=
    
    set rule_name2=%server_alias%端口白名单-%%i-2
    echo 正在删除入站规则:!rule_name2!
    netsh advfirewall firewall delete rule name="!rule_name2!"
    netsh advfirewall firewall add rule name="!rule_name2!" dir=in action=allow protocol=TCP localport=%%i enable=yes profile=domain,private,public remoteip=!ip_list_2!
    echo=
    
    set port_list=%%j
    goto add_rule_batch
)
goto :eof

实测效果图:两个端口,两组IP列表

**************************************************

Linux脚本(使用iptables):

# 禁用
iptables -I INPUT -p tcp --dport 1521 -j DROP

# 单IP
iptables -I INPUT -s 192.168.10.0 -p tcp --dport 1521 -j ACCEPT

# 多IP
iptables -I INPUT -s 192.168.10.49,192.168.10.33 -p tcp --dport 54321 -j ACCEPT

# 掩码
iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 1521 -j ACCEPT

# IP段
iptables -I INPUT -m iprange --src-range 192.168.10.0-192.168.10.255 -p tcp --dport 1521 -j ACCEPT

# 指定网卡
iptables -I INPUT -s 192.168.10.0 -p tcp -i eno1 --dport 1521 -j ACCEPT

# 指定目的IP
iptables -I INPUT -s 192.168.10.0 -p tcp -d 192.168.10.1 --dport 1521 -j ACCEPT

# 多个端口(连续)
iptables -I INPUT -s 192.168.10.0 -p tcp --dport 65530:65535 -j ACCEPT

# 多个端口(不连续)
iptables -I INPUT -s 192.168.10.0 -p tcp -m multiport --dport 65530:65535,1521,2181 -j ACCEPT

Linux脚本(使用firewall-cmd):

#!/bin/bash
file="ip-list.txt"
ZONE=public
 
if [ -f "$file" ]; then
	while IFS= read -r IP; do
		# 需要替换掉换行符
        IP=${IP//\n/}
		IP=${IP//\r/}
		IP=$(echo -n "$IP" | tr -d '\n')
		IP=$(echo -n "$IP" | tr -d '\r')
        # 去掉收尾空格
        IP=`echo $IP | xargs`
		echo "$IP"
		# 移除
		# firewall-cmd --permanent --zone=public --remove-source=$IP
		firewall-cmd --permanent --zone=$ZONE --add-rich-rule="rule family="ipv4" source address="$IP" port protocol="tcp" port="54321" accept"
	done < "$file"
	
	firewall-cmd --reload
    echo "添加完成"
else
	echo "文件 $file 不存在"
fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wsdhla

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值