阻止所有连接,但仅允许带有 iptables 的少数端口

阻止所有连接,但仅允许带有 iptables 的少数端口

我需要的规则是:

  1. 阻止所有传入流量(互联网 > 服务器),但允许传出流量(服务器 > 互联网)并允许本地服务运行

  2. 只接受来自我想要的端口的传入流量。

我还需要在 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 的回答下的评论中所说

相关内容