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

作者: 張津東

群而不黨,和而不同,自由理性皆容納。

發表回復