我在我的私人VPS上设置了VPN服务器,操作系统是CentOS 7.现在我想这个VPN服务器只能用于访问网站,所以我将使用iptables来拒绝所有输出tcp端口,除了服务器的端口80和443。
1,我添加了一个非root用户' ssuser'
useradd ssuser
2,以此用户身份运行VPN服务器。
3,添加iptables规则。
iptables -t filter -m owner --uid-owner ssuser -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -m owner --uid-owner ssuser -A OUTPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -m owner --uid-owner ssuser -A OUTPUT -p tcp -j REJECT --reject-with tcp-reset
4,iptables -L向我展示了这个输出:
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
1 OUTPUT_direct all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 owner UID match 1000 tcp dpt:80
3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 owner UID match 1000 tcp dpt:443
4 REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 owner UID match 1000 reject-with tcp-reset
不幸的是,Accept规则不起作用,所有端口都被阻止。我的VPN服务器无法访问任何网站,除非删除第4条规则。
根据规则的顺序,iptables应该首先接受端口80,443,然后拒绝其余的端口吗?
有人可以告诉我我必须做什么吗?
由于
答案 0 :(得分:0)
如果可以显示iptables过滤器,则需要使用命令“ iptables -L -t filter”。我建议添加-vvv“ iptables -L -t filter -vvv”。它会向您显示更多详细信息。