我正在尝试设置一个可以从家庭网络访问的 SSH 服务器仅有的,而不是互联网。
它运行的是 Ubuntu Linux。
我已经安装了该ssh
软件包,我可以启动/停止 SSH 服务器,然后继续从位于同一网络上的另一台机器登录到计算机。
然而,在继续进行之前,我应该采取哪些安全措施?显然,设置安全密码是最佳选择。
我也很担心:如果有人知道服务器的 IP,他们能连接到它吗?我该如何禁用不是来自的连接192.168.*.*
?
答案1
您可以使用 UFW(简单防火墙)仅为某些 IP 地址打开端口 22(SSH)。
它可能类似于:
$ sudo ufw allow from 192.168.0.0/24 to any port 22 proto tcp
该192.168.0.0/24
位表示 IP 地址范围192.168.0.*
- 即192.168.0.1
包括192.168.0.255
至。
有关详细信息,请参阅UFW 文档。
答案2
然而,在继续进行之前,我应该采取哪些安全措施?显然,设置安全密码是最佳选择。
密钥比密码更安全,尤其是受密码保护的情况下。
其他内容(大多数在配置文件中设置):
总是一个好主意的事情:
不允许 root 直接登录(您可以随时
su
或sudo
之后登录)禁用您不需要的任何功能,
/etc/ssh/sshd_config
例如转发等。sshd
不需要的时候就不要运行。
防止 Internet 访问您的sshd
如果可能的话,请在路由器的防火墙上阻止端口 22。使用
iptables
规则或ufw
按照 @Greg Hendershott 的建议进一步执行此操作。/etc/hosts_allow
控制哪些 IP 可以访问服务器,并且您可以包含拒绝 IP 范围的行。
如果您稍后将其暴露在互联网上:
如果可能的话,将端口从 22 更改为其他端口。这不会增加任何实际安全性,但会减少随机攻击。
禁用 SSH 横幅,或将其更改为无法识别您身份的内容(您想在登录完成后执行此操作)。
安装类似的东西
fail2ban
可以自动阻止连续多次登录失败的 IP。仅接受 SSHv2,如果我没记错的话,以前的版本有漏洞。我认为这是默认设置的。