Approaches to Disable SSH
一、禁止用户登录
1、修改用户配置文件/etc/shadow
将第二栏设置为“*”,如下。那么该用户就无法登录。但是使用这种方式会导致该用户的密码丢失,也就是当你再次允许他登录的时候,你还得让他重新设置密码。(再次启用这个帐号的方法是把“*”去掉就可以了)
如:tom:*:14245:0:99999:7:::
为了使原密码不丢失,可以在原密码前面加一个特殊字符,比如”!”。需要再次启用这个用户的方法是删除此感叹号”!”。
2、使用命令usermod
这个方式简单又实用,而且没有(1)中的副作用。
1 | usermod -L tom##Lock 帐号tom |
3、通过修改shell类型
这种方式会更加人性化一点,因为你不仅可以禁止用户登录,还可以告诉他你这么做的原因。如下:
1 | chsh tom-s /sbin/nologin #将用户tom的shell进行更改 |
4、禁止所有的用户登录
当你(如果你是系统管理员)不想让所有用户登录时(比如你要维护系统升级什么的),如果按上面的方式,一个一个地去禁止用户登录,这将是很……无聊的事。而且还容易出错。下面有一种简洁有效的方式:
1 | ##在/etc目录下建立一个nologin文档 |
5、修改用户配置文件/etc/ssh/sshd_config
(1)只允许指定用户进行登录(白名单):
1 | 在/etc/ssh/sshd_config配置文件中设置AllowUsers选项,(配置完成需要重启 SSHD 服务)格式如下: |
(2)只拒绝指定用户进行登录(黑名单):
1 | 在/etc/ssh/sshd_config配置文件中设置DenyUsers选项,(配置完成需要重启SSHD服务)格式如下: |
(3)禁止root通过ssh远程登录
1 | vi /etc/ssh/sshd_config |
重启SSH
1 | service sshd restart |
二、限制IP登录
除了可以禁止某个用户登录,我们还可以针对固定的IP进行禁止登录,linux 服务器通过设置/etc/hosts.allow和/etc/hosts.deny这个两个文件,hosts.allow许可大于hosts.deny可以限制或者允许某个或者某段IP地址远程 SSH 登录服务器,方法比较简单,且设置后立即生效,不需要重启SSHD服务,具体如下:
1 | /etc/hosts.allow 添加: |