开放端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 443 -j ACCEPT
# qbittorrent出现tracker连不上的情况,需要加入以下内容
iptables -A INPUT -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --sport 443 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
关闭所有端口
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
开启所有
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
查看iptables信息
iptables -L -n
删除规则
通过 iptables -L -n --line-number
可以显示规则和相对应的编号
iptables -D INPUT 规则编号
iptables -D OUTPUT 规则编号
nginx反代设置
在nginx反向代理、web服务器所在的同一系统上配置iptables进行访问限制时,可能会导致nginx反向代理不能正常工作。
一种常见原因是iptables没有配置来自本机ip的连接权限而且默认是DROP策略。
解决方法也很简单,添加本机ip的连接权限,例如:
iptables -A INPUT -p tcp -s 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -p tcp -s 127.0.0.1 -j ACCEPT
屏蔽docker暴露的端口
使用ifconfig
查看网卡信息,显示如下:
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
....
enp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
....
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
....
veth161f19b: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
....
该机器真正的网口是enp4s0
。 docker 启动的虚拟网口是docker0
iptables -I DOCKER-USER -i enp4s0 -j DROP
使用iptables -L -n
查看,多出如下信息:
Chain DOCKER-USER (1 references)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0
RETURN all -- 0.0.0.0/0 0.0.0.0/0
使用nginx反代docker容器:
iptables -A INPUT -p tcp -s 172.17.0.1 -j ACCEPT
iptables -A OUTPUT -p tcp -s 172.17.0.1 -j ACCEPT
iptables -A INPUT -p tcp -s 172.17.0.2 -j ACCEPT
iptables -A OUTPUT -p tcp -s 172.17.0.2 -j ACCEPT
开机加载配置
上面的设置只是临时的, 重启服务器还是会恢复原来没有设置的状态,使用iptables-persistent
开机加载配置
apt -y install iptables-persistent
安装时会有两次提示,选择yes
netfilter-persistent save