SSH可以进行远程Shell,从而远程操作。这种功能自然是极大地方便了用户。但与此同时,如果图谋不轨者连接上了SSH,那就相当于控制了系统;然后再留下后门,后患无穷。因而SSH的安全非常重要。
一个有公网ip的服务器,常常会被世界各地的黑客尝试SSH登录。不过在ip地址极度缺乏的中国,一个普通家庭常常不会有公网ip,树莓派也常常在内网。虽然在这种环境下树莓派会安全很多,但安全配置也并非不重要。如果你通过内网穿透使外网可以SSH树莓派,那安全配置也是必不可少的。
SSH日志
SSH的日志会记录下登录的信息。它在/var/log/
目录下。Raspbian(Debian)下的文件名叫auth.log
,CentOS叫做secure
。使用cat
指令来查看文件内容,便可看到登录尝试的记录、SSH中曾运行过的指令等信息。如果它太长了以致于根本停不下来,可以改用head
或者tail
指令看它的首尾,或者
grep "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more
来直接统计尝试登录root账户的ip以及次数。如果你发现了有一个ip尝试了很多次,可以到微步在线威胁情报社区查询。
SSH安全配置
文件/etc/ssh/sshd_config
是SSH服务器的配置文件。使用vim、nano或者FlashFXP编辑这个文件。这个文件中的井号#
表示注释,更改需要先去掉之。
- 文件中:
Port 22
定义了SSH监听的端口。可以更改为一个1024以上的值,例如2222。更改后,SSH登录时要加入
-p 2222
来指明端口。 - 文件中:
ListenAddress 0.0.0.0
指明能SSH登录的地址。如果有需要,可以更改为自己的ip地址。这样做有可能会带来不便。
- 如果你已经完全采用了密钥的登陆方式(上一篇文章),可以禁用密码登录:
PasswordAuthentication no PermitEmptyPasswords no UsePAM no
- 禁止使用版本1协议,因为其存在设计缺陷,很容易使密码被黑掉。
Protocol 2
- 修改输入密码的时间(如果开启了密码登录),并限制尝试次数:
LoginGraceTime 30 MaxAuthTries 3
请注意:如果你的密码很长,或者容易输错,可以合理调整值。
LoginGraceTime
的默认单位是秒,还可以使用类似2m
的值。 - 限制能登陆的账户,以防止通过其它有弱密码的账户登录。
AllowUsers root
注:很多地方建议禁止root账户登录,请视情况自己决定。
重启SSH
在配置结束后,要重启SSH服务来应用配置。
systemctl restart ssh
重启过程不会打断当前SSH对话。