Linux用戶以及ssh安全相關設置

Linux用戶相關操作


摘要

最近重保, 需要進行網絡安全防護.
部分同事處理過程總是順序有一些不太對的情況. 
同時發現自對Linux用戶設置也存在很多不清不楚的地方
所以趁着週末學習和總結一下. 

用戶操作

# 新增用戶, 這裏想加入root用戶組. 僅是測試,可以自定義其他的用戶組
useradd -d /home/zhaobsh -g root zhaobsh
# 查看用戶的組信息
groups zhaobsh
# 或者是通過這種方式來處理
cat /etc/passwd |egrep 'root|zhaobsh'
# 注意第四例就是用戶組信息, 0 一般指代root用戶組.
# 設置密碼
passwd zhaobsh

/etc/passwd的相關信息

image


文件權限以及其他

chmod 777 * -R
第一個 7 指代當前用戶
第二個 7 指代當前用戶組
第三個 7 指代其他用戶
所以一般 777 的授權危險很大, 會導致低權限用戶也有執行命令的權限
一般非常不建議如此設置. 

用戶以及組刪除

# 刪除用戶, 但是這個命令並不會刪除用戶的home目錄
userdel zhaobsh
# 添加組
groupadd  zhaobsh
# 刪除組
groupdel zhaobsh

添加sudo權限

需要注入, 如果不允許root用戶訪問的話, 必須使用非特權用戶.
但是特權用戶登錄之後需要進行 特權操作時必須先進行sudo權限的設置. 
主要方式有兩種, 推薦第一種
第一種: 
使用root用戶, 或者是具有sudo權限的用戶
sudo visudo
可以添加一行信息
# 需要注意, 這樣設置的話  zhaobsh用戶可以特權執行任何命令, 並且不需要輸入密碼
# 不太建議如此設置, 但是如果非核心繫統,如果已經ssh登錄自己的用戶進來了, 輸入密碼一般有點多餘了. 
zhaobsh ALL=(ALL)     NOPASSWD: ALL
第二種:
先修改 /etc/sudoers 的文件權限. 
注意 這個文件的默認權限是 440 建議修改爲 740, 保證root用戶可以操作.
然後在最下面也一樣添加哪條信息
zhaobsh ALL=(ALL)     NOPASSWD: ALL
然後在修改會原來的權限 
chmod 440 /etc/sudoers
# 注意一定要修改回原來的權限,不然會丟失登錄權限. 

注意事項

必須在禁用root用戶之前設置 sudo權限, 不然你會哭. 
重要事情說三遍. 

注意, 一般情況下sudo 如果需要輸入密碼, 有效期一般爲 15min 
如果設置了NOPASSWD: ALL 的話 則不需要輸入密碼
這裏需要注意的一些情況是:
第一: 
su 和 su - 的區別
su 僅是切換用戶, 但是不會切環境變量, 一般不推薦
su - 會切換到要切換的用戶的環境變量, 更加優秀一下. 
第二:
sudo -i 和 sudo su 等的區別:

sudo -i 直接運行sudo命令加-i參數    要求執行該命令的用戶必須在sudoers中才可以
sudo su 運行sudo命令給su命令提權,運行su命令。 要求執行該命令的用戶必須在sudoers中才可以
sudo -i 運行結果 PWD=/root
sudo su 運行結果 PWD=/home/用戶名(當前用戶主目錄) 
這一段的來源:https://blog.csdn.net/qq_43842093/article/details/124913229
需要注意這兩個命令會立即切爲 root用戶

禁止root用戶的遠程訪問

爲了安全期間, 很多時候會禁止root用戶的遠程登錄. 
不允許root用戶進行遠程登錄避免出現安全隱患. 

方式也比較簡單, 可以在 /etc/ssh/sshd_config裏面進行先關設置
需要注意. /etc/ssh 下面有兩個config文件
ssh_config 是ssh客戶端的配置文件
sshd_config 是ssh服務端的配置文件
linux中 daemon 指代守護進程. 

可以通過如下命令來禁止root用戶的遠程登錄
sed -i 's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config
注意 sed 是一個非常好的流處理工具. 在不方面操作時處理起來非常搞笑.  

刪除 密碼登錄驗證的的選項, 並且修改爲不允許密碼登錄驗證
sed -i '/PasswordAuthentication/d' /etc/ssh/sshd_config
echo 'PasswordAuthentication no' >> /etc/ssh/sshd_config

關於ssh防火牆的處理

firewall 其實不是通過端口來將ssh服務進行暴露的.
還是通過服務名將ssh進行暴露,
這種方式有一個好處是,  修改了ssh服務的端口不需要重置firewalld的配置
但是缺點是容易找不對方向, 導致firewalld處理ssh服務實現.
這裏簡單說明一下:

firewall-cmd -h |grep list
# 可以查看firewalld-cmd的查看相關命令的幫助
# 查看firewall-cmd 例外的服務
firewall-cmd --list-services
# 將例外的服務永久移除
firewall-cmd --remove-service cockpit --permanent
# 需要注意 list 是複數形式,但是remove 是單數形式. 注意我這裏是用cockpit進行測試的
# 重置firewalld的服務
firewall-cmd  --reload
# 再次查看是否包含例外服務
firewall-cmd --list-services
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章