昨天被虛擬機網絡samba問題毆打了一天,最終解決,睡了個好覺,一早醒來,想起看到類似這樣一段話:
“大多數的服務器都禁止了root賬戶的直接登陸,而是利用sudo將權限分配給其他管理員,或者先用普通用戶登陸,再su成root用戶來進行操作,降低了風險。”
於是動手開始進行操作:
sudo vi /etc/passwd
直接編輯passwd文件,將root用戶的后面加上了nologin
root:x:0:0:root:/root:/bin/bash/nologin
試驗一下,果然不許登陸了(其實寫錯了,正確的應該是root:x:0:0:root:/root:/bin/bash:/sbin/nologin)
but.....
sudo -i和su指令都無法登陸到root賬戶下
sudo -i
sudo: /bin/bash/: command not found
su
Password:
su: incorrect password
趕緊改回來
root:x:0:0:root:/root:/bin/bash/
還是不成,有點頭大了,reboot下看看吧
>_<.....難道要動用那個術了?
正當想使用SL絕招通殺一切時,又看了一眼passwd文件,發現正確的寫法是:/sbin/bash,正常用戶的配置文件是:/bin/bash
ls /bin/bash/
ls: cannot access /bin/bash/: Not a directory
ls -l /bin/bash
-rwxr-xr-x. 1 root root 938832 Jul 18 2013 /bin/bash
沒有d,這是一個文件,而非目錄,難怪無法登陸
修改回來,一切正常
=================================================================華麗的分隔線
下面是轉載的一些參考內容,里面有nologin文件的詳細用法
=================================================================
早上來了沒什么事看會鳥哥的Linux私菜房,看看用戶管理的相關東西。知道了Linux用戶管理最重要的兩個文件就是/etc/passwd和/etc/shadow這兩個文件。其中/etc/passwd是用來存儲登陸用戶信息的,它的基本格式如下:
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
由上面的格式可以看出,每一行代表一個用戶的信息,一共包括7個字段的信息,每個字段的信息用冒號隔開。這7個字段分別代表:
1. 賬號名稱:即登陸時的用戶名
2. 密碼:早期UNIX系統的密碼是放在這個文件中的,但因為這個文件的特性是所有程序都能夠讀取,所以,這樣很容易造成數據被竊取,因此后來就將這個字段的密碼數據改放到/etc/shadow中了
3. UID:用戶ID,每個賬號名稱對應一個UID,通常UID=0表示root管理員
4. GID:組ID,與/etc/group有關,/etc/group與/etc/passwd差不多,是用來規范用戶組信息的
5. 用戶信息說明欄: 用來解釋這個賬號是干什么的
6. 家目錄:home目錄,即用戶登陸以后跳轉到的目錄,以root用戶為例,/root是它的家目錄,所以root用戶登陸以后就跳轉到/root目錄這里
7. Shell:用戶使用的shell,通常使用/bin/bash這個shell,這也就是為什么登陸Linux時默認的shell是bash的原因,就是在這里設置的,如果要想更改登陸后使用的shell,可以在這里修改。另外一個很重要的東西是有一個shell可以用來替代讓賬號無法登陸的命令,那就是/sbin/nologin。
當我看到這里的時候,我就去登陸我們實驗室的服務器,打開/etc/passwd這個文件,里面果然有很多的類似上面格式的用戶賬號信息。由於我們實驗室服務器開放了ftp服務,而我正好有一個ftp的賬號,我看到我的賬號信息是這樣的lxb:x:530:525::/opt/ftp:/sbin/nologin,通過上面的學習,我覺得它的意思大概是這樣的,用戶名是lxb,x表示密碼經過加密放到/etc/shadow文件中了,UID是530,GID是525,訪問的目錄是/opt/ftp,我看了一下,這個目錄下的內容正好是我登陸ftp后所看到的,至於最后一個/sbin/nologin,應該是登錄時候使用的shell,但是它為什么是nologin呢,難道不讓我登陸嗎?
於是我用root權限登陸到里面,把后面的/sbin/nologin改成了/bin/bash,重新用ssh進行登陸,真的登陸進去了,而且登陸后的目錄正好是/opt/ftp。但是我的權限依舊沒有改變,很多文件還是打不開。於是我明白了,這個nologin的作用就是限制某些用戶通過ssh登陸到shell上。有時候為了進行系統維護工作,臨時禁止其他用戶登錄,可以使用 nologin 文件,具體做法是在/etc/目錄下創建一個名稱為 nologin 的文件。例如:
#touch /etc/nologin
這樣將禁止隨后的用戶登錄到系統中。禁止用戶登錄時,/etc/nologin 文件中的內容將會顯示給用戶,會一閃而過。例如,按如下方式創建 nologin 文件:
disable login by admin temperarily!
當用戶試圖登陸時,將會給用戶顯示"disable login by admin temperarily!",當系統維護結束以后,再刪除/etc/nologin文件,其他用戶就又可以恢復登陸了,這只是限於能登陸shell的用戶來說的,對於那些登陸shell為/sbin/nologin的用戶來說沒有影響,因為他們本身就無法登陸shell。
================================================================
禁止root用戶直接登陸sshd
-----------------------------------------------------------------------------------------------------
-
linux最高權限用戶root,默認可以直接登錄sshd。為了提高服務器的安全度,需要對它進行禁止,使得攻擊者無法通過暴力破解來獲取root權限。
1,新建一個用戶;
#useradd xxx (xxx為你要新建的用戶名)
2,為新用戶設置密碼;
#passwd xxx (xxx為你要新建的用戶名)
3,修改SSHD配置,禁止root直接登錄
#vi /etc/ssh/sshd_config
查找“#PermitRootLogin yes”,將前面的“#”去掉,短尾“Yes”改為“No”,並保存文件。
4,修改完畢后,重啟sshd服務
#service sshd restart
5,下次登錄,先使用xxx登錄,然后通過su root 來獲取root權限。
-
修改sshd默認端口
雖然更改端口無法在根本上抵御端口掃描,但是,可以在一定程度上提高防御。
1.打開sshd配置文件
#vi /etc/ssh/sshd_config
2.找到#Port 22字段刪掉#,將22改為其他不被使用的端口
服務器端口最大可以開到65536
3.重啟sshd服務
#service sshd restart
4.別忘了修改登陸工具那的端口設置。
=======================================================================
conclusion
1.做事的時候要細心,一個符號,字母,/都能引起意想不到的后果
2.動手前留備份文件
3./etc/nologin是個文本文件,里面存放給用戶的拒絕連接提示信息,只要這個文件存在,用戶就無法登陸,可用於維護期間禁止用戶登陸
維護完成后刪除,用戶即可恢復登陸,已經登陸的用戶不受影響。