CentOS 安全配置


  • 忘記 root 密碼
  • 禁止進入單用戶模式
  • 減少開放終端個數
  • 設置登錄用戶無操作超時自動退出
  • 只允許 root登錄, 禁止其他用戶登錄
  • 只有wheel組的用戶能切換至root用戶
  • 修改 賬戶 密碼
  • 系統賬號管理
  • 禁止 root 直接登錄
  • 設置 允許或禁止 登錄的用戶
  • 修改系統 SSH 登錄端口
  • 設置同一個用戶同時只能一個人登錄
  • 用戶鎖定
  • 密碼復雜度
  • 命令設置密碼有效期
  • 密碼定期修改
  • 重設密碼5次不能重復
  • 登錄錯誤不能超過5次, 超過5次鎖定20分鍾

忘記 root 密碼


// 方法一:GRUB引導方式   沒有設置 grub 密碼情況下直接進入, 設置的話, 輸入密碼進入;
    1. 重啟服務器,開機進入啟動界面后,按“e”或者回車鍵,進入GRUB啟動菜單;
    2. 按“e”進入編輯模式,上下鍵選擇第2行;
    3. 按“e”進入kernel編輯命令行,按“空格”再輸入single或“s”或“1”,回車保存后,再按“b”啟動系統;
    4. 啟動系統后不需要輸入管理員密碼,進入單用戶模式,可直接輸入passwd命令修改管理員密碼;

// 方法二:lilo引導方式
    1. 重啟服務器,出現LILO提示時,鍵盤輸入 linux single;
    2. 回車進入單用戶模式;
    3. 修改/etc/passwd文件清空root密碼 或者 passwd直接更改密碼;

// 方法三: 使用Linux啟動軟盤引導
    1. 出現boot后,輸入linux single 回車;
    2. 進入單用戶模式;
    3. 修改root密碼;

 

 

禁止進入單用戶模式


 禁止直接進入單用戶模式, 對 GRUB 設置密碼; 修改/boot/grub/grub.conf 或者 /etc/grub.conf ( 是/boot/grub/grub.conf 鏈接文件);

明文方式

vim /boot/grub/grub.conf        # 或者 /etc/grub.conf;
    ... ...
    splashimage=(hd0,0)/grub/splash.xpm.gz
    password=123456 # 添加此行明文密碼;
    hiddenmenu
    ... ...
# 再次啟動登錄到 GRUB 菜單頁面時就會發現不能直接使用 "e" 命令編輯啟動標簽, 必須先使用 "p" 命令輸入正確的密碼后才能啟動標簽進行編輯;明文密碼不是很安全;

 

MD5加密方式

# 首先生成md5加密密碼, 輸入兩次密碼后, 生成 md5 加密密碼;
grub-md5-crypt
Password:
Retype password:
$1$aGKme/$OgQ743fikLz1vjrM4/XDG.

vim /boot/grub/grub.conf                             # 或者 /etc/grub.conf;
    ... ...
    splashimage=(hd0,0)/grub/splash.xpm.gz
    password=$1$aGKme/$OgQ743fikLz1vjrM4/XDG.        # 添加此行明文密碼;
    hiddenmenu
    ... ...
# 再次啟動登錄到 GRUB 菜單頁面時就會發現不能直接使用 "e" 命令編輯啟動標簽, 必須先使用 "p" 命令輸入正確的密碼后才能啟動標簽進行編輯;相對比較安全;

 

減少開放終端個數


 

// 編輯 /etc/init/start-ttus.conf 及 /etc/sysconfig/init 配置文件
// 設置所有用戶僅可以從 tty1 , tty2 , tty3 三個終端登錄
vim /etc/init/start-ttys.conf 
    ... ...
    env ACTIVE_CONSOLES=/dev/tty[1-3]
    ... ...
    
vim /etc/sysconfig/init 
    ... ...
    # What ttys should gettys be started on?
    ACTIVE_CONSOLES=/dev/tty[1-3]
    ... ...
    
// 重啟后, 僅能從 tty1 , tty2 , tty3 登錄

 

設置登錄用戶無操作超時自動退出


 

// 針對指定用戶設置, 首先進入用戶的家目錄, 修改 .bash_profile 文件, 300秒;
cd /home/tian
ls -a
    .  ..  .bash_history  .bash_logout  .bash_profile  .bashrc
vim .bash_profile
    ... ...
    export TMOUT=300
    
// 修改 /etc/profile 文件, 全局所有用戶生效;
vim /etc/profile
    ... ...
    export TMOUT=300
source /etc/profile                // 聲明生效, 或者退出終端重新登錄生效;

 

只允許 root登錄, 禁止其他用戶登錄


 

// 使用場景: 系統需要升級等, 只允許 root 用戶操作, 暫時進制其他用戶登錄,
// 操作步驟: 使用 root 用戶在 /etc/ 目錄下創建 nologin 文件即可;
vim /etc/nologin        // 可為空, 也可以寫入登錄不上回顯提示的內容;
    Sorry, the system is under health examination, please try again in an hour ... ...
    
// 使用用戶 tian 登錄測試
    Connecting to 192.168.9.27:22...
    Connection established.
    To escape to local shell, press 'Ctrl+Alt+]'.

    Sorry, the system is under health examination, please try again in an hour ... ...

 

 

只有wheel組的用戶能切換至root用戶


 

簡介:

  在 Linux 中, wheel 組類似與一個管理員的組;

  通常在Linux下, 及時我們有系統管理員root的權限, 也不推薦用root用戶; 一般情況下用普通用戶就可以了; 在需要 root 權限執行一些操作時, 再使用 su 切換成為 root 用戶; 但是任何用戶只要知道了 root 的密碼就可以通過su 登錄root用戶, 這無疑是一個安全隱患; 所以, 將普通用戶加入到 wheel 組, 被加入的這個普通用戶就成了管理員組內的用戶, 但如果針對一些配置文件, 這個管理員組內成員與普通用戶沒有什么區別;

  根據應用實例不同, 應用wheel組的方法也不同, 對於服務器來說, 我們希望的是剝奪被加入到 wheel 組用戶以外的普通用戶通過su命令登錄 root 的權利,(只有屬於 wheel 組的用戶才可以使用 su 登錄 root) 這樣就加強了系統的安全性;

// 配置 /etc/pam.d/su 配置文件, 開啟 wheel 組;
vim /etc/pam.d/su
    ... ...
    auth           required        pam_wheel.so use_uid
    ... ...
// 修改/etc/login.defs 配置文件, 最后添加 只允許 wheel 組成員切換 root;
vim /etc/login.defs
    ... ...
    SU_WHEEL_ONLY yes
    
// 創建用戶時添加 wheel 組
useradd -G wheel tian
// 或者給已存在用戶添加wheel組
usermod -G wheel tian
// 查看用戶的屬組
groups tian
    tian : tian wheel

 

修改 賬戶 密碼


 

// 一 : passwd 直接修改
passwd tian
Changing password for user tian.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

// 二 : 重定向
echo "666666" | passwd --stdin tian

 

 

系統賬號管理


 

// 設置非登錄用戶的 shell 設置為 /sbin/nologin
// 方法一
usermod -s /sbin/nologin tian
// 方法二
chsh -s /sbin/nologin tian
// 方法三
chsh tian
    Changing shell for tian.
    New shell [/bin/bash]: /sbin/nologin    
    Shell changed.
// 方法四 -- 直接在 /etc/passwd 文件中進行修改
// 查看
grep tian /etc/passwd
    tian:x:502:502::/home/tian:/sbin/nologin
    
// 鎖定長期不使用的賬號
// 方法一, 密文前增加 2 個 "!" ; 使用 passwd -u 進行解鎖
passwd -l
// 方法二, 密文前增加 1 個 "!" ; 使用 passwd -U 進行解鎖; 兩次執行可解上面的鎖定
usermod -L
// 查看
passwd -S tian
    tian LK 2019-03-20 0 60 7 -1 (Password locked.)        // 已鎖定;

 

 

禁止 root 直接登錄


 

// 修改ssh配置文件,開啟 RermitRootLogin, 並改為 no;
vim /etc/ssh/sshd_config
    #LoginGraceTime 2m
    PermitRootLogin no
    #StrictModes yes
    #MaxAuthTries 6
    #MaxSessions 10
// 重啟 sshd 服務
/etc/init.d/sshd restart

 

 

設置 允許或禁止 登錄的用戶


 

// 同樣修改 ssh 配置文件, 添加 AllowUsers 或者 DenyUsers , 表示 允許登錄 或者 拒絕登錄;tian hao zeng rong 四個用戶都在屬於 wheel 組; 
vim /etc/ssh/sshd_config
    #LoginGraceTime 2m                #LoginGraceTime 2m
    PermitRootLogin no                PermitRootLogin no
    AllowUsers zeng rong            DenyUsers tian hao
    #StrictModes yes                #StrictModes yes
    #MaxAuthTries 6                    #MaxAuthTries 6
    #MaxSessions 10                    #MaxSessions 10
// 上面配置文件中左右的配置效果一樣;

 

// 修改sshd配置文件;
vim /etc/ssh/sshd_config
    AllowUsers root@192.168.10.108        // 添加此行,允許root用戶只能在192.168.10.108登錄;
    AllowUsers root@192.168.10.108 admin   // 一行指定多個用戶,用空格隔開,允許root用戶只能在192.168.10.108登錄,允許admin在任何地方登錄;
// 以上兩行不同時存在,介紹規則,以此類推;
// 重啟sshd服務后生效;
[root@localhost ~]# /etc/init.d/sshd restart

// 還可以使用 pam 規則控制, 修改 /etc/pam.d/sshd 文件, 第一行添加一下內容, 允許/拒絕登錄
vim /etc/pam.d/sshd
    auth required pam_listfile.so item=user sense=allow file=/etc/sshusers onerr=fail
    // 或者
    auth required pam_listfile.so item=user sense=deny file=/etc/sshusers onerr=succeed
    
// 在/etc/ 目錄下建立 sshusers 文件, 添加用戶名, 一行為一個用戶;
    // 上面配置文件中若是 allow , 文件中的用戶是可以登錄的;
    // 上面配置文件中若是 deny, 文件中的用戶是不可以登錄的;
vim /etc/sshusers
    tian
    zong

 

 

修改系統 SSH 登錄端口


 

vim /etc/ssh/sshd_config        // 修改ssh配置文件
    13 #Port 22                 // 默認為22端口,可去掉注釋直接修改,也可以如下行;
    14 Port 52353               // 修改為想要設置的端口號
  // 端口的取值范圍是 0--65535; 1024以下是系統使用的端口, 我們可使用的端口是1024--65535;
  
// 沒有關閉防火牆的情況下,修改端口后,一定要修改防火牆規則;否則重啟了sshd服務后,遠程連接不上;
// 添加防火牆規則,進入服務器,端口52353;
iptables -A INPUT -p tcp --dport 52353 -j ACCEPT  
// 添加防火牆規則,出服務器,端口52353;      
iptables -A OUTPUT -p tcp --sport 52353 -j ACCEPT 
// 保存添加的防火牆規則;       
/etc/init.d/iptables save
// 重啟防火牆,添加配置生效;
/etc/init.d/iptables restart

// 重啟sshd服務,修改ssh登錄端口生效;
/etc/init.d/sshd restart    

 

 

設置同一個用戶同時只能一個人登錄


 

// 只能針對與非 root 用戶
vim /etc/security/limits.conf
... ...
 50 tian             hard    maxlogins       1
 // 用戶名                              最大同時連接數
 ... ...

 

 

用戶鎖定


 

// 使用 root 用戶登錄后執行解鎖命令
// 查看鎖定用戶信息
pam_tally2 -u tian
    Login           Failures Latest failure     From
    tian                0    
//    用戶              失敗的次數

// 解鎖
pam_tally2 -u tian --reset

 

 

密碼復雜度


 

// 密碼必須符合復雜度的要求: 字母, 數字, 特殊符號組成, 且長度大於8位
vim /etc/pam.d/system-auth
    # password    requisite   pam_cracklib.so try_first_pass retry=3 type=
    password    requisite     pam_cracklib.so retry=3 difok=3 minlen=8 lcredit=-1 dcredit=-1 ocredit=-1
    
// 參數
    * try_first_pass: 表明該模塊首先應當使用前一個模塊從用戶那里得到的密碼,如果該密碼不通過,再提示用戶輸入新的密碼;
    * debug:將調試信息寫入日志;
    * type=xxx:當天價/修改密碼時, 系統給出的缺省提示符是"New UNIX password:"以及"Retype UNIX password:", 而使用該參數可以自定義輸入密碼的提示符,比如制定type=your own word;
    * retry=N:定義登錄/修改密碼失敗時,可以重試的次數;
    * Difok=N:定義新密碼中必須有幾個字符要與舊密碼不同.但是如果新密碼中有1/2以上的字符與舊密碼不同時,該新密碼將被接受;
    * minlen=N: 定義用戶密碼的最小長度;
    * dcredit=-N: 定義用戶密碼中必須包含多少個數字;
    * ucredit=-N: 定義用戶密碼中必須包含多個大寫字母;
    * lcredit=-N: 定義用戶密碼中必須包含多少個小寫字母;
    * ocredit=-N: 定義用戶密碼中必須包含多少個特殊字符(除數字,字母之外);    

 

命令設置密碼有效期( 已存在的用戶 )


 

chage -M 天數 用戶名            // 方法一
passwd -x 天數 用戶名            // 方法二

// 操作
grep tian /etc/shadow
    tian:!!:17976:0:99999:7:::
chage -M 60 tian
grep tian /etc/shadow
    tian:!!:17976:0:60:7:::

 

 

密碼定期修改


 

// 查看用戶的定期修改的信息
chage -l tian
    Last password change                    : Mar 21, 2019
    Password expires                    : never
    Password inactive                    : never
    Account expires                        : never
    Minimum number of days between password change        : 0
    Maximum number of days between password change        : 99999
    Number of days of warning before password expires    : 7
    
// 配置用戶密碼定期修改
vim /etc/login.defs
    ... ...
    MAIL_DIR /var/spool/mail // 當你在創建用戶的同時,再/var/spool/mail目錄下創建mail文件;
    ... ...
    PASS_MAX_DAYS   90       // 用戶密碼不過期最多的天數;
    PASS_MIN_DAYS   0        // 密碼修改之間的最小天數;
    PASS_MIN_LEN    8        // 密碼最小長度;
    PASS_WARN_AGE   7        // 密碼過期提前的警告天數;
    ... ...
    UID_MIN                   500   // 此處兩行設置創建用戶的最小uid和最大uid范圍;
    UID_MAX                 60000
    ...    ...
    GID_MIN                   500   // 此處兩行是設置GID;
    GID_MAX                 60000
    ... ...
    CREATE_HOME     yes     // 創建用戶的時候是否創建家目錄;
    UMASK       077         // 家目錄的權限初始值;
    ... ...
    USERGROUPS_ENAB yes     // 當一個組只有一個用戶存在的時候,刪除用戶的同時刪除組;
    ENCRYPT_METHOD SHA512   // 指定password的機密方法;

// 要求用戶下次登錄時修改密碼
chage -d 0 用戶名

 

重設密碼5次不能重復


 

// remember=5 表示 5 次
vim /etc/pam.d/system-auth
    password    sufficient    pam_unix.so sha512 shadow nullok     try_first_pass use_authtok remember=5

 

 

登錄錯誤不能超過5次, 超過5次鎖定20分鍾


 

// 查看系統中是否含有pam_tally2.so模塊
find / -type f -name "pam_tally2.so"

// 修改配置文件, 設置密碼錯誤 5 次, 鎖定 20 分鍾; 第二行添加以下內容;
vim /etc/pam.d/sshd
    auth   required     pam_tally2.so deny=5 unlock_time=12000

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM