我需要的规则是:
阻止所有传入流量(互联网 > 服务器),但允许传出流量(服务器 > 互联网)并允许本地服务运行
只接受来自我想要的端口的传入流量。
我还需要在 ssh 会话中执行此操作(我之前已被锁定)。
我问的原因是因为我无法将 UFW 与我的 VPS 提供商一起使用...显然是因为他们的内核/OpenVZ...
当我尝试自己学习命令时,就像学习使用工具并尝试建造房屋一样。如果我今天能够提高工作效率,而不是花费大量时间试图解决这个问题,那就太好了。如果有人可以帮助我,我将非常感激。
答案1
首先允许您的特定端口,然后阻止所有传入流量
# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
其中 22 您的演示端口可根据您的需求进行更改
阻止所有传入流量
# iptables -A INPUT -j REJECT
允许所有传出数据包
# iptables -A OUTPUT -j ACCEPT
# iptables -A OUTPUT -o lo -j ACCEPT
答案2
@Rakib 提供了一个很好的答案,我认为它应该被接受。我给出的答案只是补充了他的答案。我建议制作一个 shell 脚本,以便您可以在操作系统启动时自动运行它,或者按需运行,而无需再次全部输入:
#!/bin/sh
IPT = iptables
#allowing the specific port
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT
#block all incoming traffic
$IPT -A INPUT -j REJECT
#ALLOW ALL OUTGOING PACKETS
$IPT -A OUTPUT -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
#same thing for ip6tables (IPv6)
IPT = ip6tables
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -j REJECT
$IPT -A OUTPUT -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
剧本也做了两次,唯一的区别是ip6表被包括在内,因此也适用于 IPv6,正如 @Michael Mol 在 @Rakib 的回答下的评论中所说