- 忘記 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
