适用于白名单-端口限制
配合 IP 清单文件一起执行
#!/bin/bash
#writed by Xu
#date:2020-04-27
#获取当前工作目录
dir=$(cd `dirname $0`; pwd)
#echo ${dir}
log=${dir}/iptables.log
#echo ${log}
#---------首次执行请执行以下规则策略---------
#清除预设表filter中的所有规则链的规则
iptables -F
#清除预设表filter中使用者自定链中的规则
iptables -X
#禁止进站访问以及转发
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
#开放 icmp
#iptables -A INPUT -p icmp -j ACCEPT
#允许loopback
#iptables -A INPUT -A lo -p all -j ACCEPT
#开放特定端口
#iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
#时间同步服务器
#iptables -A INPUT -s 192.168.2.2 -j ACCEPT
#网管机服务器
#iptables -A INPUT -s 192.168.2.2 -j ACCEPT
#---------追加端口规则请关闭以上规则策略---------
#---------指定 IP 访问特定端口---------
echo -e "Input your port:"
read port
for line in `cat ${dir}/ip.txt`
do
iptables -I INPUT -s ${line} -p tcp --dport ${port} -j ACCEPT 2>&1 |tee -a ${log}
if [ $? -eq 0 ];then
echo -e "端口 `echo ${port}` 针对 IP `echo ${line}` ACCEPT 策略执行成功" 2>&1 |tee -a ${log}
else
echo -e "端口 `echo ${port}` 针对 IP `echo ${line}` ACCEPT 策略执行失败,核查相关原因 `echo ${log}`" 2>&1 |tee -a ${log}
exit
fi
done
#---------以上是针对端口策略---------
#---------指定特定 IP 策略---------(需将参数 -A 改为 -I)
for line in `cat ${dir}/ip.txt`
do
iptables -I INPUT -s ${line} -p tcp -j ACCEPT 2>&1 |tee -a ${log}
if [ $? -eq 0 ];then
echo -e "针对 IP `echo ${line}` ACCEPT 策略执行成功" 2>&1 |tee -a ${log}
else
echo -e "针对 IP `echo ${line}` ACCEPT 策略执行失败,核查相关原因 `echo ${log}`" 2>&1 |tee -a ${log}
exit
fi
done
#---------以上是针对 IP 策略---------(需将参数 -A 改为 -I)
#其次封堵该端口
#iptables -A INPUT -p tcp --dport ${port} -j DROP
#封堵 INPUT 链(默认规则)
#iptables -P INPUT DROP
#开放 OUTPUT 链(默认规则)
#iptables -P OUTPUT ACCEPT
#封堵 FORWARD 链(默认规则)
#iptables -P FORWARD DROP
#保存iptables配置
service iptables save
#重启iptables服务
service iptables restart
#开机启动iptables服务
chkconfig iptables on
#查看 iptables 规则
#iptables -nL --line-number
#删除 iptables 规则
#iptables -D INPUT 1
#!/bin/bash
#writed by Xu
#date:2020-04-27
echo -e "iptables 防火墙策略规则脚本"
echo -e "脚本传参执行:端口,IP,以及相应规则"
PORT=$1
IPADDR=$2
RULE=$3
#获取当前工作目录
dir=$(cd `dirname $0`; pwd)
#echo ${dir}
log=${dir}/iptables.log
#echo ${log}
#开启防火墙
systemctl start firewalld 2>&1|tee -a ${log}
#判断传参个数
if [ $# -ne 3 ];then
echo -e "请输入规范参数,端口,IP,相应规则"
exit
else
#判断第一个参数值($1)是否为数字端口
if [ -n "`echo ${PORT}|sed 's/[0-9]//g'`" ];then
echo -e "请检查端口输入是否正确" |tee -a ${log}
exit
else
#判断第二个参数($2)是否为有效IP
if [[ ! ${IPADDR} =~ ^[1-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[1-9]{1,3}$ ]];then
echo -e "请检查 IP 输入是否正确" |tee -a ${log}
exit
else
#判断第三个参数($3)是否为字母
if [[ ! ${RULE} =~ ^[A-Z]+$ ]];then
echo -e "请检查规则输入是否规范" |tee -a ${log}
exit
else
#iptables 命令
iptables -I INPUT -s ${IPADDR} -p tcp --dport ${PORT} -j ${RULE} 2>&1 |tee -a ${log}
#判断命令执行是否成功
if [ $? -eq 0 ];then
echo -e "端口 `echo ${PORT}` 针对 IP `echo ${IPADDR}` 执行策略 `echo ${RULE}` 成功" |tee -a ${log}
else
echo -e "端口 `echo ${PORT}` 针对 IP `echo ${IPADDR}` 执行策略 `echo ${RULE}` 失败,请核查相关原因 `echo ${log}`"
fi
fi
fi
fi
fi