sshd配置
配置文件:/etc/ssh/sshd_config
Note: 更改ssh相關配置後需要重啓sshd服務 systemctl restart sshd
參考文檔:https://man.openbsd.org/ssh.1
ssh訪問控制
AllowUsers <userlist> AllowGroups <grouplist> DenyUsers <userlist> DenyGroups <grouplist>
配置加密算法
Ciphers aes256-ctr,aes192-ctr,aes128-ctr # 使用已批准的加密類型 MACs hmac-sha2-512,hmac-sha2-256 # 使用已批准的Mac算法
密碼驗證
PermitEmptyPasswords no # 禁止無密碼訪問服務器 PermitRootLogin yes # 是否禁止使用root登錄(爲方便管理,暫未收回權限)
如果禁用root需要創建一個超級管理員。
openssh主機認證
HostbasedAuthentication no
限制用戶認證次數
MaxAuthTries 4 # 等保三要求該值小於等於 4
ssh空閒超時
ClientAliveInterval 300 # 小於等於300s ClientAliveCountMax 3 # 存活用戶數小於等於3
用戶認證及密碼強度管理(pam)
pam 簡介
Linux-PAM(linux可插入認證模塊)是一套共享庫,使本地系統管理員可以隨意選擇程序的認證方式.。換句話說,不用(重新編寫)重新編譯一個包含PAM功能的應用程序,就可以改變它使用的認證機制。這種方式下,就算升級本地認證機制,也不用修改程序。
PAM使用配置 /etc/pam.d/
下的文件,來管理對程序的認證方式。應用程序調用相應的配置文件,從而調用本地的認證模塊。模塊放置在 /lib/security
下,以加載動態庫的形式進,像我們使用su命令時,系統會提示你輸入root用戶的密碼,這就是su命令通過調用PAM模塊實現的。
pam 配置文件介紹
- PAM配置文件有兩種寫法:
- 一種是寫在 /etc/pam.conf 文件中,但centos6之後的系統中,這個文件就沒有了。
- 另一種寫法是,將PAM配置文件放到 /etc/pam.d/ 目錄下,其規則內容都是不包含 service 部分的,即不包含服務名稱,而 /etc/pam.d 目錄下文件的名字就是服務名稱。如: vsftpd,login等。
- 配置文件示例:
由上圖可以將配置文件內容劃分爲四列:
- 第一列:代表模塊類型
- 第二列:代表控制標記
- 第三列:代表模塊路徑
- 第四列:代表模塊參數
pam 模塊類型
Linux-PAM有四種模塊類型,分別代表四種不同的任務,它們是:
- 認證管理(auth)
- 賬號管理(account)
- 會話管理(session)
- 密碼(password)管理
一個類型可能有多行,它們按順序依次由PAM模塊調用 。
管理方式 |
說明 |
---|---|
auth |
用來對用戶的身份進行識別。如:提示用戶輸入密碼,或判斷用戶是否爲root等。 |
account |
對帳號的各項屬性進行檢查。如:是否允許登錄,是否達到最大用戶數,或是root用戶是否允許在這個終端登錄等。 |
session |
這個模塊用來定義用戶登錄前的,及用戶退出後所要進行的操作。如:登錄連接信息,用戶數據的打開與關閉,掛載文件系統等。 |
password |
使用用戶信息來更新。如:修改用戶密碼。 |
pam 控制標記
PAM使用控制標記來處理和判斷各個模塊的返回值。(在此只說明簡單的認證標記)
控制標記 |
說明 |
---|---|
required |
表示即使某個模塊對用戶的驗證失敗,也要等所有的模塊都執行完畢後,PAM 才返回錯誤信息。這樣做是爲了不讓用戶知道被哪個模塊拒絕,如果對用戶驗證成功,所有的模塊都會返回成功信息。 |
requisite |
與required相似,但是如果這個模塊返回失敗,則立刻嚮應用程序返回失敗,表示此類型失敗,不再進行同類型後面的操作。 |
sufficient |
表示如果一個用戶通過這個模塊的驗證,PAM結構就立刻返回驗證成功信息(即使前面有模塊fail了,也會把 fail結果忽略掉),把控制權交回應用程序。後面的層疊模塊即使使用requisite或者required 控制標誌,也不再執行。如果驗證失敗,sufficient 的作用和 optional 相同 |
optional |
表示即使本行指定的模塊驗證失敗,也允許用戶接受應用程序提供的服務,一般返回PAM_IGNORE(忽略)。 |
模塊路徑
模塊路徑,即要調用模塊的位置.。如果是64位系統,一般保存在/lib64/security,如:pam_unix.so。
同一個模塊,可以出現在不同的類型中。它在不同的類型中所執行的操作都不相同。這是由於每個模塊針對不同的模塊類型,編制了不同的執行函數。
模塊參數
模塊參數,即傳遞給模塊的參數。參數可以有多個,之間用空格分隔開,如:
password requisite pam_cracklib.so try_first_pass retry=3 minlen=14 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1
常用pam模塊介紹
pam模塊 |
結合管理類型 |
說明 |
---|---|---|
pam_unix.so |
auth |
提示用戶輸入密碼,並與/etc/shadow文件相比對。匹配返回0 |
|
account |
檢查用戶的賬號信息(包括是否過期等)。帳號可用時,返回0 |
|
password |
修改用戶的密碼。將用戶輸入的密碼,作爲用戶的新密碼更新shadow文件 |
pam_shells.so |
auth/account |
如果用戶想登錄系統,那麼它的shell必須是在/etc/shells文件中之一的shell |
pam_deny.so |
account/auth/password/session |
該模塊可用於拒絕訪問 |
pam_permit.so |
account/auth/password/session |
模塊任何時候都返回成功 |
pam_securetty.so |
auth |
如果用戶要以root登錄時,則登錄的tty必須在 /etc/securetty 之中 |
pam_listfile.so |
account/auth/password/session |
訪問應用程的控制開關 |
pam_cracklib.so |
password |
這個模塊可以插入到一個程序的密碼棧中,用於檢查密碼的強度 |
pam_limits.so |
session |
定義使用系統資源的上限,root用戶也會受此限制,可以通過 /etc/security/limits.conf 或 /etc/security/limits.d/*.conf 來設定 |
pam_tally2.so |
auth |
設置認證限制(見實例) |
實例及參數介紹
實例1:密碼強度及用戶認證方式
配置密碼複雜度和認證方式(同時修改文件 /etc/pam.d/system-auth
和 /etc/pam.d/password-auth
):
#%PAM-1.0 auth required pam_faillock.so preauth audit silent deny=5 unlock_time=900 auth [success=1 default=bad] pam_unix.so auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=900 auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=900 auth required pam_tally2.so deny=3 unlock_time=300 even_deny_root root_unlock_time=10 # deny 設置普通用戶和root用戶連續錯誤登陸的最大次數,超過最大次數,則鎖定該用戶 # unlock_time 設定普通用戶鎖定後,多少時間後解鎖,單位是秒; # root_unlock_time 設定root用戶鎖定後,多少時間後解鎖,單位是秒; # 此處使用的是 pam_tally2 模塊,如果不支持 pam_tally2 可以使用 pam_tally 模塊。另外,不同的pam版本,設置可能有所不同,具體使用方法,可以參照相關模塊的使用規則 password requisite pam_cracklib.so try_first_pass retry=3 minlen=14 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 # try_first_pass:表明該模塊首先應當使用前一個模塊從用戶那裏得到的密碼,如果該密碼驗證不通過,再提示用戶輸入新的密碼 # minlen:指定密碼最小長度爲14 # dcredit/ucredit/ocredit/lcredit=-1:至少含有1個數字、大寫字母、小寫字母、特殊字符 # retry=3:配置密碼時,提示3次用戶密碼錯誤輸入 # difok=6:配置密碼時,新密碼中至少6個字符與舊密碼不同(默認爲5) # reject_username:新密碼中不能包含與用戶名稱相同的字段 # maxrepeat=N:拒絕包含超過N個連續字符的密碼,默認值爲0表示此檢查已禁用 # maxsequence=N:拒絕包含大於N的單調字符序列的密碼,例如’1234’或’fedcb’,默認情況下即使沒有這個參數配置,一般大多數這樣的密碼都不會通過,除非序列只是密碼的一小部分 # maxcla***epeat=N:拒絕包含相同類別的N個以上連續字符的密碼。默認值爲0表示此檢查已禁用。 # use_authtok:強制使用先前的密碼,不提示用戶輸入新密碼(不允許用戶修改密碼)
實例2:su權限配置
- 配置文件位置:
/etc/pam.d/su
auth required pam_wheel.so use_uid - 創建有sudo權限的用戶組
/etc/group
: wheel \:x\:10:root,<user list>
上述操作可限定具有sudo權限的用戶。
注意事項
在[pam模塊類型](pam 模塊類型)中有講到各個模塊按順序依次由PAM模塊調用,所以在配置時要嚴格按順序配置,否則可能導致配置不生效,以下面的配置爲例:
# tag1 password requisite pam_cracklib.so try_first_pass retry=3 minlen=14 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1 # tag2 password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
在該配置中我標記了其順序分別爲tag1、tag2,pam_cracklib.so用於密碼強度驗證,pam_unix.so用於提示用戶更新密碼並將密碼保存到shadow文件中。
# 密碼過期,登錄時需要更改密碼 You are required to change your password immediately (password aged) Last login: Fri Nov 16 10:54:11 2018 from host2 Changing password for root. (current) UNIX password: New password: Retype new password:
如果將tag1放到tag2後面,會導致遠程更改用戶密碼無法更新到shadow文件,最終因密碼過期等原因無法登錄服務器——後果慘重!!!
參考
更多示例請見:linux中pam模塊
關於各個模塊參數詳解請見:The Linux-PAM System Administrators' Guide
密碼過期時間
- 命令:chage $ chage -h 用法:chage [選項] 登錄 選項: -d, --lastday 最近日期 將最近一次密碼設置時間設爲“最近日期” -E, --expiredate 過期日期 將帳戶過期時間設爲“過期日期” -h, --help 顯示此幫助信息並推出 -I, --inactive INACITVE 過期 INACTIVE 天數後,設定密碼爲失效狀態 -l, --list 顯示帳戶年齡信息 -m, --mindays 最小天數 將兩次改變密碼之間相距的最小天數設爲“最小天數” -M, --maxdays 最大天數 將兩次改變密碼之間相距的最大天數設爲“最大天數” -R, --root CHROOT_DIR chroot 到的目錄 -W, --warndays 警告天數 將過期警告天數設爲“警告天數”
- 對應的配置文件
/etc/login.defs
: PASS_MAX_DAYS 90 # 密碼過期時間 PASS_MIN_DAYS 0 # 兩次密碼更改時間差最小天數 PASS_MIN_LEN 14 # 密碼最小長度(密碼強度在 /etc/pam.d/password-auth 配置) PASS_WARN_AGE 7 # 密碼過期前警告天數
用戶及密碼活躍性
- 將默認密碼不活動期限設置爲30天:
useradd -D -f 30
- 將不合規的用戶設置爲失效狀態:
chage --inactive 30 <user>
郵件管理
將郵件傳輸代理配置爲僅限本地模式:
- 編輯
/etc/postfix/main.cf
文件,inet_interfaces = localhost
; - 重啓postfix。
日誌管理
只記錄指定日誌 /etc/rsyslog.conf
:
# 默認 *.* @@remote-host:514
等保要求:
- 可以將"*.*"替換爲你實際需要的日誌信息。比如:kern.* ; mail.* 等等;
- 或者關閉遠程記錄日誌功能(直接註銷即可)。
grub加密
編輯配置文件 /etc/grub.d/40_custom
添加如下配置:
password xxxxxxxx
aide工具
AIDE(Advanced Intrusion Detection Environment,高級入侵檢測環境)是個入侵檢測工具,主要用途是檢查文檔的完整性。AIDE生產一個文件系統狀態的快照,其中包括修改時間,權限和文件哈希值,然後可以其與文件系統的當前狀態進行比較,以檢測對系統的修改。
yum install -y aide
內核管理
檢查可疑數據包是否被記錄,內核配置如下:
# 在 /etc/sysctl.conf 文件中設置以下參數: net.ipv4.conf.all.log_martians = 1 net.ipv4.conf.default.log_martians = 1
生效以上配置:
# 開啓並記錄欺騙,源路由和重定向包 $ sysctl -w net.ipv4.conf.all.log_martians=1 $ sysctl -w net.ipv4.conf.default.log_martians=1 # 清空路由緩存 $ sysctl -w net.ipv4.route.flush=1 # 更新系統內核配置 $ sysctl -p
(adsbygoogle = window.adsbygoogle || []).push({});