我关注了 centos wiki 上有关 iptables 的页面,但无论我如何更改,只有端口 22 开放。使用各种端口扫描网站,他们都说服务器正在积极拒绝所有其他端口上的连接。
这是 iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:https
ACCEPT tcp -- anywhere anywhere tcp dpt:smtp
ACCEPT tcp -- anywhere anywhere tcp dpt:urd
ACCEPT tcp -- anywhere anywhere tcp dpt:pop3
ACCEPT tcp -- anywhere anywhere tcp dpt:pop3s
ACCEPT tcp -- anywhere anywhere tcp dpt:imap
ACCEPT tcp -- anywhere anywhere tcp dpt:imaps
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
据我所知,INPUT(策略 DROP)应该丢弃所有没有定义规则的流量,并且我设置了规则以接受端口 443/25/465 除外。但它们都显示为被阻止。然而端口 22(ssh)已解锁并正常工作。
有人知道我做错了什么吗?
答案1
我已经有一段时间没有使用过 iptables 了,但我认为你想要一条始终允许建立连接的规则:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
答案2
sudo iptables -A 输入 -p tcp --dport 22 -j 接受
该命令所做的就是添加一条允许通过 tcp 端口 22 进行 SSH 连接的规则。
你需要:
-加载状态模块
iptables -A INPUT -m 状态 --状态 ESTABLISHED,RELATED -j ACCEPT
-设置链上的默认策略
iptables -P 输入删除
-将默认策略设置为删除
iptables -P 转发删除
-然后你开始建立规则:
iptables -A 输入 -p tcp --dport 22 -j 接受
或者
iptables -A 输入 -p tcp -s 192.168.0.0/24 --dport 22 -j 接受
或者在一行中允许所有传入的 SSH、HTTP 和 HTTPS 流量
iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPT
答案3
两个想法:
1) 您是否在其他端口上运行服务?(netstat -an)2) 服务器是否托管在某个地方(例如家庭 ISP),不允许其他端口上的传入连接?