设置简单的 iptables 规则以允许 ssh、80、443 和 openvpn

设置简单的 iptables 规则以允许 ssh、80、443 和 openvpn

场景:

我有一台树莓派,我想:

  • 从我的内部网络中的任何设备通过 SSH 进入
  • 从我的内部网络中的任何设备访问端口 80 和 443
  • 到达路由器中端口映射的 4567 端口,以便能够从我的网络外部建立 OpenVPN 连接
  • 阻止其他任何东西
  • 允许来自我的 raspberryPi 的任何传出流量

这些是我当前的 Iptables 规则(iptables -S输出):

NAT

-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A POSTROUTING -o eth0 -j MASQUERADE

筛选

-P INPUT DROP
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -s 192.168.2.0/24 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.2.0/24 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 192.168.2.0/24 -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i tun0 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 4567 -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -i tun0 -o eth0 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

我在几篇博客文章中看到过这种略有不同的做法。我以 2018 年的一本关于 Linux Admin 的书为基础,书中稍微介绍了 iptables,但主要关注 ufw 和firewalld。

我的问题:

  • 这其中是否存在任何巨大的安全漏洞?是否有任何因素使我的防火墙规则完全失效?(我也不是在寻找世界上最安全的防火墙配置,只是任何可以轻松规避的东西)

  • 这条规则A INPUT -i lo -j ACCEPT真的有必要吗?还是说没有它一切都能正常工作?当我删除这条规则时,我的 owncloud 就无法正常工作了

  • 有没有更好、更简洁或更现代的方法在 iptables 中实现这一点?(我知道还有其他工具,但我现在想坚持使用 iptables)

答案1

回答你的问题:

  • 规则看起来很好,似乎没有任何意外或漏洞。
  • 您需要此规则,因为您已将策略设置为在 INPUT 上删除
  • iptables 的语法实际上没有太多其他可做的事情,它一直都是这样的。(并不是说它不好,它实际上非常简洁和严格,但对于未经训练的人来说不是最友好的)

相关内容