ubuntu中使用iptables限制端口
脚本
#!/bin/bash#关闭所有端口
echo "关闭所有入口"
iptables -P INPUT DROP
iptables -P FORWARD DROP#允许所有已建立的连接和相关连接的回复数据包通过
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT#允许ping
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT#开启端口
echo "开启tcp端口"
port_tcp_arr=(8090 9000 3306 22 21)
for i in "${port_tcp_arr[@]}"
doiptables -A INPUT -p tcp --dport "$i" -j ACCEPT
doneecho "开启udp端口"
port_udp_arr=(123)
for i in "${port_udp_arr[@]}"
doiptables -A INPUT -p udp --dport "$i" -j ACCEPT
done
设置开机启动
vim /etc/rc.local
/home/ubuntu/iptables.sh
注意:如果脚本不执行,原因是系统使用的bash shell 更换成了dash shell。而/etc/rc.local脚本中用的正是/bin/sh。
有两种方法修改
1、将默认的shell改成bash的方法:
在终端执行 sudo dpkg-reconfigure dash,然后选择 no (推荐)
2、
sudo rm /bin/sh
sudo ln -s /bin/bash /bin/sh