在Linux中使用iptables批量修改防火墙设置的shell脚本

shell脚本全文

#!/bin/bash

#Linux主机iptables批量修改的脚本

iptables_tcp_accept () {
	iptables -A INPUT -s $IP_ADDRESS -p tcp $TCP_PORT -j ACCEPT
}

iptables_tcp_dport_accept () {
	iptables -A INPUT -s $IP_ADDRESS -p tcp --dport $TCP_PORT -j ACCEPT
}

iptables_tcp_drop () {
	iptables -A INPUT -p tcp --dport $TCP_PORT -j DROP
}


cat <<- _EOF_
		请选择你的iptables修改方式:
		1)iptables -A INPUT -s IP地址 -p tcp 端口号 -j ACCEPT
		2)iptables -A INPUT -s IP地址 -p tcp --dport 端口号 -j ACCEPT
		3)iptables -A INPUT -p tcp --dport 端口号-j DROP
		4)exit

		说明:
		1) 请将IP地址和PORT端口号放在iptables_tcp_accept.txt
		2)请将请将IP地址和PORT端口号放在iptables_tcp_dport_accept.txt
		3) 请将PORT端口号放在iptables_tcp_drop.txt
		4) 退出程序

		注意点:如果文件在windows下创建,导入Linux后请操作: sed -i 's/\r$//' 文件名

_EOF_

while true; do
	read -p "请输入您想要选择的修改方式序号:" NUMBER

	case $NUMBER in
		1 ) if [[ -e iptables_tcp_accept.txt ]]; then
				while read IP_ADDRESS TCP_PORT; do
					iptables_tcp_accept
				done < iptables_tcp_accept.txt
			else 
				echo "iptables_tcp_accept.txt不存在,请创建。"
			fi
			;;
		2 ) if [[ -e  iptables_tcp_dport_accept.txt ]]; then
				while read IP_ADDRESS TCP_PORT; do
					iptables_tcp_dport_accept
				done < iptables_tcp_dport_accept.txt
			else 
				echo "iptables_tcp_dport_accept.txt不存在,请创建。"
			fi
			;;
		3 ) if [[ -e  iptables_tcp_drop.txt ]]; then
				while read TCP_PORT; do
					iptables_tcp_drop
				done < iptables_tcp_drop.txt
			else
				echo "iptables_tcp_drop.txt不存在,请创建。"
			fi
			;;
		4 ) echo "已退出程序!"
			break
			;;
	esac
done

脚本说明

文字说明,在terminal中显示,供用户选择需要的iptables修改方式以及创建相应的TXT,将需要批量添加或删除的路由、端口号放入TXT中。注意IP地址分行存入,IP和端口号同一行放入。

注意如果文件在windows下创建,导入Linux后请操作: sed -i 's/\r$//' 文件名

cat <<- _EOF_
		请选择你的iptables修改方式:
		1)iptables -A INPUT -s IP地址 -p tcp 端口号 -j ACCEPT
		2)iptables -A INPUT -s IP地址 -p tcp --dport 端口号 -j ACCEPT
		3)iptables -A INPUT -p tcp --dport 端口号-j DROP
		4)exit

		说明:
		1) 请将IP地址和PORT端口号放在iptables_tcp_accept.txt
		2)请将请将IP地址和PORT端口号放在iptables_tcp_dport_accept.txt
		3) 请将PORT端口号放在iptables_tcp_drop.txt
		4) 退出程序

		注意点:如果文件在windows下创建,导入Linux后请操作: sed -i 's/\r$//' 文件名

_EOF_

使用case命令作选择,分别对应文字说明中的4项。在每一项中,先使用if判断对应的TXT文件是否存在。如果存在则执行read选项,从TXT文件分行读取IP地址、端口号;如果不存在则提醒创建对应TXT文件。

while true; do
	read -p "请输入您想要选择的修改方式序号:" NUMBER

	case $NUMBER in
		1 ) if [[ -e iptables_tcp_accept.txt ]]; then
				while read IP_ADDRESS TCP_PORT; do
					iptables_tcp_accept
				done < iptables_tcp_accept.txt
			else 
				echo "iptables_tcp_accept.txt不存在,请创建。"
			fi
			;;
		2 ) if [[ -e  iptables_tcp_dport_accept.txt ]]; then
				while read IP_ADDRESS TCP_PORT; do
					iptables_tcp_dport_accept
				done < iptables_tcp_dport_accept.txt
			else 
				echo "iptables_tcp_dport_accept.txt不存在,请创建。"
			fi
			;;
		3 ) if [[ -e  iptables_tcp_drop.txt ]]; then
				while read TCP_PORT; do
					iptables_tcp_drop
				done < iptables_tcp_drop.txt
			else
				echo "iptables_tcp_drop.txt不存在,请创建。"
			fi
			;;
		4 ) echo "已退出程序!"
			break
			;;
	esac
done

在判断文件存在后,while执行时分别调用三个函数,完成不同方式的iptables修改操作。若是选择4,break执行退出while循环。

iptables_tcp_accept () {
	iptables -A INPUT -s $IP_ADDRESS -p tcp $TCP_PORT -j ACCEPT
}

iptables_tcp_dport_accept () {
	iptables -A INPUT -s $IP_ADDRESS -p tcp --dport $TCP_PORT -j ACCEPT
}

iptables_tcp_drop () {
	iptables -A INPUT -p tcp --dport $TCP_PORT -j DROP
}

实际环境演示

[***@localhost route]$ ./linux_iptables_add_drop.sh 
请选择你的iptables修改方式:
1)iptables -A INPUT -s IP地址 -p tcp 端口号 -j ACCEPT
2)iptables -A INPUT -s IP地址 -p tcp --dport 端口号 -j ACCEPT
3)iptables -A INPUT -p tcp --dport 端口号-j DROP
4)exit

说明:
1) 请将IP地址和PORT端口号放在iptables_tcp_accept.txt
2)请将请将IP地址和PORT端口号放在iptables_tcp_dport_accept.txt
3) 请将PORT端口号放在iptables_tcp_drop.txt
4) 退出程序

注意点:如果文件在windows下创建,导入Linux后请操作: sed -i 's/\r$//' 文件名

请输入您想要选择的修改方式序号:1
iptables -A INPUT -s 192.168.1.1 -p tcp 20:8080 -j ACCEPT
iptables -A INPUT -s 192.168.2.2 -p tcp 13389 -j ACCEPT
iptables -A INPUT -s 192.168.191.152 -p tcp 33890 -j ACCEPT
请输入您想要选择的修改方式序号:2
iptables -A INPUT -s 192.168.1.1 -p tcp --dport 20:8080 -j ACCEPT
iptables -A INPUT -s 192.168.2.2 -p tcp --dport 13389 -j ACCEPT
iptables -A INPUT -s 192.168.191.152 -p tcp --dport 33890 -j ACCEPT
请输入您想要选择的修改方式序号:3
iptables -A INPUT -p tcp --dport 33890 -j DROP
iptables -A INPUT -p tcp --dport 20:13389 -j DROP
iptables -A INPUT -p tcp --dport 12345 -j DROP
请输入您想要选择的修改方式序号:4
已退出程序!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

殊彦_sy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值