根据所连接网络的 Iptables 规则

根据所连接网络的 Iptables 规则

我一直在为我想实现的事情而苦苦挣扎。我在工作和家里都使用 ubuntu 18.04 笔记本电脑。

当我不在家时,我希望我的 iptables 丢弃所有传入连接(当然,已建立的连接除外),但当我在家时,它会允许访问端口 22。

我真的不知道如何处理这个问题,因为我不知道如何在 iptables 规则中直接识别我在家的事实。我考虑过尝试在网络连接时运行一个脚本,ping 远程服务器以获取我的公共 IP 地址,然后刷新 iptables/设置新规则。我不喜欢这个解决方案,因为它不干净,而且我可能会打开一些端口几秒钟(连接后/接收外部 IP 地址之前),这是我不喜欢的

你知道我该如何处理这个问题吗?

谢谢

答案1

您可以通过网络地址识别“在家”并执行以下操作:

# iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j DROP

将 192.168.0.0/24 与您家中的本地网络地址进行交换。当您处于与家庭网络具有相同网络地址和子网的网络中时,这仍将打开端口,因此您应该选择一个不太常见的端口。

但这只是回答你关于如何识别“家”的问题。这既不是你应该依赖的正确方法,也不是安全方法来保护 SSH 服务器(想想 IP 欺骗)。最好遵循经过验证的安全准则,例如 2FA、更改常用端口、使用密钥身份验证、禁用 root 登录、阻止失败的尝试等。

看看这个: https://blog.devolutions.net/2017/04/10-steps-to-secure-open-ssh

相关内容