Linux禁止用户远程登录方法总结

家里电脑安装LINUX系统之后,仍旧发生被远程操作卡停等开扰情况,这是因为家里的电脑被远程SSH登陆的原因。解决思路:禁止所有的远程登陆,只允许本地登陆。

一、禁止用户登录

1、修改用户配置文件/etc/shadow
      将第二栏设置为“*”,如下。那么该用户就无法登录。但是使用这种方式会导致该用户的密码丢失,也就是当你再次允许他登录的时候,你还得让他重新设置密码。(再次启用这个帐号的方法是把“*”去掉就可以了)
      如:tom:\*:14245:0:99999:7:::

2、使用命令usermod
      这个方式简单又实用,而且没有(1)中的副作用。

usermod -L tom##Lock 帐号tom
usermod -U tom##Unlock 帐号tom

3、通过修改shell类型
      这种方式会更加人性化一点,因为你不仅可以禁止用户登录,还可以告诉他你这么做的原因。如下:

chsh tom-s /sbin/nologin #将用户tom的shell进行更改
 
###############
##修改/etc/nologin.txt(没有就新建一个),
##在里面添加给被禁止用户的提示
###############

#解禁用户的方式就是把shell改为他原有的就可以了。

4、禁止所有的用户登录
      当你(如果你是系统管理员)不想让所有用户登录时(比如你要维护系统升级什么的),如果按上面的方式,一个一个地去禁止用户登录,这将是很……无聊的事。而且还容易出错。下面有一种简洁有效的方式:

##在/etc目录下建立一个nologin文档
touch /etc/nologin ##如果该文件存在,那么Linux上的所有用户(除了root以外)都无法登录
##在/etc/nologin(注意:这可不是(3)中的nologin.txt啊!)写点什么,告诉用户为何无法登录
#################
cat /etc/nologin
9:00-10:00 系统升级,所有用户都禁止登录!

##解禁帐号也简单,直接将/etc/nologin删除就行了!

5、修改用户配置文件/etc/ssh/sshd_config
(1)只允许指定用户进行登录(白名单):

在/etc/ssh/sshd_config配置文件中设置AllowUsers选项,(配置完成需要重启 SSHD 服务)格式如下:
AllowUsers    aliyun test@192.168.1.1            
# 允许 aliyun 和从 192.168.1.1 登录的 test 帐户通过 SSH 登录系统。

(2)只拒绝指定用户进行登录(黑名单):

在/etc/ssh/sshd_config配置文件中设置DenyUsers选项,(配置完成需要重启SSHD服务)格式如下:   
DenyUsers    zhangsan aliyun    #Linux系统账户        
# 拒绝 zhangsan、aliyun 帐户通过 SSH 登录系统

(3)禁止root通过ssh远程登录

vi /etc/ssh/sshd_config
找到PermitRootLogin,将后面的yes改为no,把前面的注释#取消,这样root就不能远程登录了!
可以用普通账号登录进去,要用到root的时候使用命令su root切换到root账户

重启SSH

service sshd restart

二、限制IP登录
      除了可以禁止某个用户登录,我们还可以针对固定的IP进行禁止登录,linux 服务器通过设置/etc/hosts.allow和/etc/hosts.deny这个两个文件,hosts.allow许可大于hosts.deny可以限制或者允许某个或者某段IP地址远程 SSH 登录服务器,方法比较简单,且设置后立即生效,不需要重启SSHD服务,具体如下:

/etc/hosts.allow添加
sshd:192.168.0.1:allow  #允许 192.168.0.1 这个IP地址SSH登录
sshd:192.168.0.:allow #允许192.168.0.1/24这段IP地址的用户登录,多个网段可以以逗号隔开,比如192.168.0.,192.168.1.:allow

/etc/hosts.allow添加
sshd:ALL #允许全部的ssh登录

/etc/hosts.deny添加
sshd:ALL #拒绝全部IP

作者: 张津东

群而不党,和而不同,自由理性皆容纳。

发表回复