我怎样才能阻止除以下端口之外的所有端口:
- ssh(端口 22)
- httpd(端口 80)
使用iptables
和ipchains
?
答案1
哪个 Linux 发行版?你最好使用更高级别的防火墙,例如 ufw:
以 root/sudo 身份:
ufw default deny
ufw allow ssh
ufw allow http
ufw enable
答案2
IP 链已经过时了,我不推荐它们。
一个简单的脚本:
#!/bin/bash
IPTABLES=/sbin/iptables
#start and flush
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -X
$IPTABLES -P FORWARD DROP
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
#SSH traffic
$IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT
#HTTP traffic
$IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT
#loopback
$IPTABLES -A INPUT -i lo -p all -j ACCEPT
答案3
ufw
默认使用阻止所有内容但允许 ssh 和 http/https:
sudo ufw default deny incoming
sudo ufw default deny outgoing
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
还请记住,默认情况下 Docker 和 ufw 不能很好地协同工作,您需要按照那里的说明更改 Docker 守护程序配置:https://stackoverflow.com/a/49563279/561309