iptables 仅允许 ssh、VPN 和阻止扫描程序

iptables 仅允许 ssh、VPN 和阻止扫描程序

我确实有一个需要保护的 Debian VPS。我希望服务器只能通过 ssh 和 openvpn 访问。一旦连接,就不会有任何限制。此外,阻止扫描仪并 ping 服务器。由于我被 iptables 命令集困住了,所以我希望得到一些帮助。目前 iptables 是:

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
iptables -X
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 1194 -j ACCEPT
iptables -P INPUT DROP
iptables -A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --sport 1194 -j ACCEPT
iptables -P OUTPUT DROP

一旦连接,就可以浏览互联网。我还希望系统能够发送电子邮件、dns 请求。

答案1

您的大多数要求都很明确,例如:

  • Debian VPS 必须能够发送电子邮件
  • Debian VPS 必须能够查询 DNS 服务器
  • Debian VPS 中的块扫描器
  • 你的计算机必须能够与 VPS 建立 SSH 会话
  • 你的计算机必须能够与 VPS 建立 openVPN 会话

我不清楚的是“一旦连接就可以浏览互联网”。但我有一个假设。;)

发电子邮件

根据您想要使用哪种协议来发送电子邮件,打开相应的端口(例如 TCP 端口 25 或 TCP 端口 587 ;在下面的示例中我将使用 25):

iptables -I OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT

然后,您需要允许来自远程邮件服务器的传入返回流量:

iptables -I INPUT -p tcp -m tcp --sport 25 -j ACCEPT

或更好:

iptables -I INPUT -p tcp -m state --state ESTABLISHED,RELATED --sport 25 -j ACCEPT

(允许 Debian VPS 建立的连接中所有来自端口 25 的 TCP 返回流量)。

DNS 查询

这与发送电子邮件非常相似:

iptables -I OUTPUT -p udp --dport 53 -j ACCEPT
iptables -I INPUT -p udp -m state --state ESTABLISHED,RELATED --sport 53 -j ACCEPT

SSH 和 openVPN

这是您自己已经配置的

浏览网络

我想你想

  • 通过 openVPN 连接到 Debian VPS
  • 通过 Debian VPS 浏览互联网
  • 这样你家里的电脑就会看起来像是 Debian VPS(就公共 IP 地址而言)

所以你想

在 Debian VPS 上启用内核转发:

$ sudo sysctl -w net.ipv4.ip_forward=1

另外

$ sudo nano /etc/sysctl.conf

并确保有一个未​​注释的#行(前面没有),内容为

net.ipv4.ip_forward=1

启用 iptables 转发

此外,您想在 iptables 中启用转发:我假设您使用tun设备在路由模式下使用 openVPN(而不是使用tap设备的桥接模式,并且您使用 10.8.0.0/24(openVPN 的默认值)作为 IP 地址范围。

iptables -A INPUT -i tun+ -j ACCEPT
iptables -A OUTPUT -o tun+ -j ACCEPT
iptables -A FORWARD -o eth0 -i tun+ -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

阻止扫描仪

嗯,扫描仪通常会查看常用端口,如 80、22、1194。所以我个人喜欢使用不同的端口。我写了关于使用不同方法的文章在此超级用户帖子中,使用atd来帮助您不把自己锁定在远程 Debian VPS 之外。简而言之,您可以

  • 在不同的端口上使用 SSH 和 openVPN
  • 根据请求使用端口敲击打开端口

相关内容