Iptables - 删除已过滤的端口并关闭它们

Iptables - 删除已过滤的端口并关闭它们

nmap以下是在我的家用 Linux PC 上的专用服务器上执行命令的结果:

Not shown: 980 closed ports
PORT      STATE    SERVICE
20/tcp    filtered ftp-data
21/tcp    filtered ftp
22/tcp    open     ssh
53/tcp    filtered domain
80/tcp    open     http
81/tcp    filtered hosts2-ns
110/tcp   filtered pop3
135/tcp   filtered msrpc
139/tcp   filtered netbios-ssn
143/tcp   filtered imap
443/tcp   open     https
445/tcp   filtered microsoft-ds
587/tcp   filtered submission
993/tcp   filtered imaps
995/tcp   filtered pop3s
3306/tcp  filtered mysql
8080/tcp  filtered http-proxy
8081/tcp  filtered blackice-icecap
8443/tcp  filtered https-alt
40193/tcp filtered unknown

Nmap done: 1 IP address (1 host up) scanned in 2.34 seconds

目前,我在此专用服务器上有以下规则:

*filter
:INPUT ACCEPT [0:0] 
:FORWARD ACCEPT [0:0] 
:OUTPUT ACCEPT [0:0] 
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT 
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT 
-A INPUT -j REJECT --reject-with icmp-host-prohibited 
-A FORWARD -j REJECT --reject-with icmp-host-prohibited 

实际上,我想关闭除 22、80 和 443 之外的所有端口。但我不知道如何使用nmap命令关闭所有显示为“已过滤”的端口(在上面的结果列表中)。

如果有人能帮助我解决这个问题,

提前致谢

答案1

根据下面的链接,你应该用以下方式结束你的规则

-j REJECT --reject-with tcp-reset

代替

-A INPUT -j REJECT --reject-with icmp-host-prohibited 
-A FORWARD -j REJECT --reject-with icmp-host-prohibited 

http://diaryproducts.net/about/operating_systems/unix/nmap_port_scanner_iptables_firewall

然后端口看起来就像没有服务在其上运行,因为 tcp-reset 是对未使用端口的响应。

但是你说你前面有另一个防火墙,所以问题就出在这里,正如 Joey 所说的那样;-)

答案2

替换你的规则:

-A INPUT -j REJECT --reject-with icmp-host-prohibited 
-A FORWARD -j REJECT --reject-with icmp-host-prohibited 

-A INPUT -j DROP
-A FORWARD -j DROP

REJECT 主要用于本地网络,如果您的服务器正在访问互联网,我建议您使用 DROP。

看一看这里更多 iptables 示例也可能有帮助。

相关内容