第一次打开SSH服务器到Internet时,要检查什么


9

我已经运行了很长时间的一些服务器,但是我总是只租用它们,因此我对保护实际服务器(相对于我在其上运行的应用程序)没有太多经验。

现在,我想将我的小型家用SSH服务器打开到互联网。

我将是唯一使用它的人,我的密码已经足够复杂,我已将默认SSH端口更改为4000左右,唯一可访问的端口是通过路由器/防火墙上的端口转发的此SSH端口,并且已更新每天晚上自动运行(它运行Arch Linux,一个滚动发布发行版)。

为了确保其安全,我还应该采取什么其他措施?

谢谢!

Answers:


22

确保禁用root登录PermitRootLogin no。我还将考虑完全禁用密码PasswordAuthentication no并使用公共密钥PubkeyAuthentication yes


+1击败了我……
gravyface

1
如果要使用密码,则可以尝试使用两因素身份验证系统。如果没有,我建议不要在随机的网吧/图书馆系统中输入密码。
马克·瓦格纳

4
如果您允许密码验证,请考虑安装fail2ban来防止暴力攻击,并对允许通过ssh登录的任何帐户使用强密码
uSlackr

@embobo-为什么呢?通过线路传送的密码在SSH加密。是的,密钥身份验证在许多方面都具有优越性,但是只要密码足够强大并且您已经证实没有人能进行肩膀冲浪,那么这并不是什么大问题。
EEAA 2011年

3
@Erika我认为embobo暗示了对任何外国系统的普遍不信任。即使SSH被加密,外部机器仍然可以说,记录您的击键。因此,密码=已泄露。
rthomson,2011年

9

确保仅允许使用SSH-2(因为SSH-1 过去曾引起过一些安全问题):

Protocol 2

指定哪些是唯一允许通过SSH登录的用户:

AllowUsers bob, john

为了提高安全性,请禁用密码身份验证并使用公共密钥身份验证:

PasswordAuthentication no
PubkeyAuthentication yes

注意:本教程包含有关创建密钥和配置公共密钥身份验证的说明。


5

除了禁用root登录或仅使用公共密钥身份验证的要点外,我还要仔细检查系统上是否没有用户密码具有微不足道的密码或空密码。您已经说过您的个人密码很好,但这并不排除由于其他原因创建的密码错误的帐户。

例如:我必须修复一个网络,在该网络中,以前的管理员从源头开始在其所有系统上都安装了nagios,并创建了一个没有密码或密码“ nagios”的nagios用户,然后继续获得三台不同的计算机妥协。


4

您可能希望查看某种IP黑名单工具,例如http://denyhosts.sourceforge.net/。它会阻止尝试多次登录失败的任何IP,并且高度可配置。


如果您禁用了root登录,则可能会浪费时间。以我的经验(在互联网上使用SSH服务器2年的经验),甚至只有几对正确使用了我(显而易见的)用户名。僵尸程序只是在检查常见用户名上的明显密码(我的服务器上99%的失败登录名是root用户,当然已禁用)。
布伦丹·朗

4
绝对不是浪费时间-而是看看fail2ban
symcbean 2011年

为fail2ban +1。
JamesBarnett 2011年

1
root并不是机器人检查的唯一明显帐户,请参阅上文所述的nagios。还有数据库帐户,例如mysql和postgres。加上任何其他应用程序帐户。
JamesBarnett 2011年

是的,我实际上是让我的机器人通过面向网络的SSH机器接管了猜测非root密码的,因此绝对不会浪费时间。此外,由于得到了这样的黑名单,并查看日志,因此实际上只有很少一部分尝试是root用户。
林登·希尔兹


0

反复查看系统相关部分/组件的日志(取决于其实际/特定配置)...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.