尽管存在例外情况,iptables 仍主动拒绝一切

尽管存在例外情况,iptables 仍主动拒绝一切

我关注了 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

请参阅此帖子:iptables 中的“state RELATED,ESTABLISHED”是什么意思?

答案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),不允许其他端口上的传入连接?

相关内容