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 示例也可能有帮助。