场景:
我有一台树莓派,我想:
- 从我的内部网络中的任何设备通过 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 的语法实际上没有太多其他可做的事情,它一直都是这样的。(并不是说它不好,它实际上非常简洁和严格,但对于未经训练的人来说不是最友好的)