目錄
一、賬號安全控制
1.1?系統賬號清理
1.2 密碼安全控制
1.3 歷史記錄控制
1.4 終端自動注銷
二、系統引導和登陸控制
2.1?限制su命令用戶
2.2?PAM安全認證
示例一:通過pam 模塊來防止暴力破解ssh
2.3?sudo機制提升權限
2.3.1 sudo命令(root授權其他用戶的命令權限)
2.3.2 配置sudo授權
示例一:基礎的普通用戶的用戶創建
示例二:普通用戶的建立網卡
示例三:alias用戶別名***
示例四:啟用sudo操作日志
2.4 開關機安全控制
2.4.1?調整BIOS引導設置
2.4.2?GRUB限制
方法一:
方法二:
2.4.3 終端登陸安全控制
三、弱口令檢測
3.1?John the Ripper
示例一:無字典
示例二:有字典
四、端口掃描——NMAP
4.1?NMAP
4.2 NMAP掃描
示例一
?編輯
一、賬號安全控制
1.1?系統賬號清理
①將非登錄用戶的Shell設為/sbin/nologin
恢復
②鎖定長期不使用的賬號
③刪除無用的賬號
④鎖定賬號文件passwd、shadow
恢復
1.2 密碼安全控制
①設置密碼有效期
- 新用戶:
第一個:30天之后要修改密碼
第二個:距離上一次修改密碼時間0天之內不可修改
第三個:密碼最小長度不小于5位
第四個:密碼到期前七天會提醒
- 老用戶:
②要求用戶下次登陸時修改密碼
chage -d 0 用戶名
1.3 歷史記錄控制
①減少記錄的命令條數
在vi? /etc/profile中
②注銷時自動清理歷史命令
1.4 終端自動注銷
二、系統引導和登陸控制
2.1?限制su命令用戶
注意:對這兩行添加注釋,表示是否啟用
第一行:root用戶是否有使用su命令的權限
第五行:wheel組中的用戶是否有使用su命令的權限
(啟用pam_wheel 認證以后,未加入到 wheel 組內的其他用戶將無法使用 su 命令)
例:
2.2?PAM安全認證
- 定義:Linux-PAM,是linux可插拔認證模塊,是一套可定制、 可動態加載的共享庫,使本地系統管理員可以隨意選擇程序的認證方式
- 原理:
? ? ? ?①PAM認證一般遵循的順序: Service (服務) --> PAM (配置文件) --> pam_ *.so
? ? ? ?②PAM認證首先要確定哪一項應用服務,然后加載相應的PAM的配置文件(位于/etc/pam.d? ? ? ? ? ? ? ? ? ?下),最后調用認證模塊(位于/lib64/security/下)進行安全認證
? ? ? ?③用戶訪問服務器的時候,服務器的某一個服務程序把用戶的請求發送到PAM模塊進行認? ? ? ? ? ? ? ? ? ?證。不同的應用程序所對應的PAM模塊也是不同的
注:ls /etc/pam.d:查看某個程序是否支持PAM 認證
第一列代表PAM認證模塊類型
auth:? ? ? ? ? ?對用戶身份進行識別,如提示輸入密碼,判斷是否為root
account::? ? 對賬號各項屬性進行檢查,如是否允許登錄系統,帳號是否已經過期,是否達到最? ? ? ? ? ? ? ? ? ? ? ? ?大用戶數等
password:? 使用用戶信息來更新數據,如修改用戶密碼。
session:? ? ? 定義登錄前以及退出后所要進行的會話操作管理,如登錄連接信息,用戶數據的打? ? ? ? ? ? ? ? ? ? ? ? ? 開和關閉,掛載文件系統。
第二列代表PAM控制標記
required:表示需要返回一個成功值,如果返回失敗,不會立刻將失敗結果返回,而是繼續進行? ? ? ? ? ? ? ? ? ? ? 同類型的下一驗證,所有此類型的模塊都執行完成后,再返回失敗
requisite:與required類似,但如果此模塊返回失敗,則立刻返回失敗并表示此類型失敗
sufficient:如果此模塊返回成功,則直接向程序返回成功,表示此類成功,如果失敗,也不影響? ? ? ? ? ? ? ? ? ? ? 這類型的返回值
optional::不進行成功與否的返回,一般不用于驗證,只是顯示信息(通常用于session類型),
include:? ?表示在驗證過程中調用其他的PAM配置文件
比如很多應用通過完整調用/etc/pam.d/system-auth(主要負責用戶登錄系統的認證工作)
來實現認證而不需要重新逐一去寫配置項。
第三列代表PAM模塊
(默認是在/lib64/security/目錄下,如果不在此默認路徑下,要填寫絕對路徑)
同一個模塊,可以出現在不同的模塊類型中,它在不同的類型中所執行的操作都不相同,這是由于每個模塊針對不同的模塊類型編制了不同的執行函數。
第四列代表PAM模塊的參數
這個需要根據所使用的模塊來添加。傳遞給模塊的參數。參數可以有多個,之間用空格分隔開
?
示例圖演示:
用戶1 | 用戶2 | 用戶3 | 用戶4 | |||
auth | required | 模塊1 | pass | fail | pass | pass |
auth | sufficient | 模塊2 | pass | pass | fail | pass |
auth | required | 模塊3 | pass | pass | pass | fail |
結果 | pass | ????????fail | pass | pass |
示例一:通過pam 模塊來防止暴力破解ssh
auth ?required ?pam_tally2.so ? deny=3 ? ?unlock_time=600 even_deny_root root_unlock_time=1200
說明:嘗試登陸失敗超過3次,普通用戶600秒解鎖,root用戶1200秒解鎖
注解:
- deny:指定最大幾次認證錯誤,如果超出此錯誤,將執行后面的策略。如鎖定N秒,如果后面沒有其他策略指定時,默認永遠鎖定,除非手動解鎖。
- lock_time:鎖定多長時間,按秒為單位;
- unlock_time:指定認證被鎖后,多長時間自動解鎖用戶;
- even_deny_root root:用戶在認證出錯時,一樣被鎖定
- root_unlock_time root:用戶在登錄失敗時,鎖定多長時間。該選項一般是配合even_deny_root 一起使用的
失敗三次自動鎖定
[root@fzx?~l# pam tally2 --user=root
Login? ? ? ? ? ? ? ? ? ?Failures? ??Latest ? ? ? ? ??failure? ? ? ? ? ? ? ? ? ? ??From
root? ? ? ? ? ? ? ? ? ? ??6? ? ? ? ? ? ? ?07/01/24 ? ? ? ?18:46:39? ? ? ? ? ? ? ? ? 192.17.20.66? ? ? ? ? ? ?
[root@benet22 ~l# pam tally2 --user=root --reset
Login? ? ? ? ? ? ? ? ? ?Failures? ??Latest? ? ? ? ? ??failure? ? ? ? ? ? ? ? ? ? ? From
root? ? ? ? ? ? ? ? ? ? ??6? ? ? ? ? ? ? ?07/01/24 ? ? ? ?18:46:39? ? ? ? ? ? ? ? ? 192.17.20.66
2.3?sudo機制提升權限
2.3.1 sudo命令(root授權其他用戶的命令權限)
sudo? ? ?[參數選項]? ? ?命令
- -l:列出用戶在主機上可用的和被禁止的命令;一般配置好/etc/sudoers后,要用這個命令來? ? ? ? ? 查看和測試是不是配置正確的
- -v:驗證用戶的時間戳;如果用戶運行sudo 后,輸入用戶的密碼后,在短時間內可以不用輸? ? ? ? ? ?入口令來直接進行sudo 操作;用-v 可以跟蹤最新的時間戳;
- -u:指定以以某個用戶執行特定操作;
- -k:刪除時間戳,下一個sudo 命令要求用求提供密碼
2.3.2 配置sudo授權
示例一:基礎的普通用戶的用戶創建
操作方法:直接在最后一行添加
注意:在其它用戶用root用戶通過sudo命令給的權限時
命令形式為:sudo 絕對路徑 命令 參數 目標
示例二:普通用戶的建立網卡
示例三:alias用戶別名***
用處:當使用相同授權的用戶較多,或者授權的命令較多時,可以采用集中定義的別名
示例四:啟用sudo操作日志
最后用tail -f 加路徑 進行動態觀察
或者直接
2.4 開關機安全控制
2.4.1?調整BIOS引導設置
- 將第一引導設備設為當前系統所在硬盤
- 禁止從其他設備(光盤、U盤、網絡)引導系統
- 將安全級別設為setup,并設置管理員密碼
2.4.2?GRUB限制
- 使用grub2-mkpasswd-pbkdf2生成密鑰
- 修改/etc/grub.d/00 header文件中,添加密碼記錄
- 生成新的grub.cfg配置文件
方法一:
方法二:
2.4.3 終端登陸安全控制
- 限制root只在安全終端登錄
? ? ? ?安全終端配置:/etc/securetty
- 禁止普通用戶登錄
? ? ? ?建立/etc/nologin文件
? ? ? ?刪除nologin文件或重啟后即恢復正常
三、弱口令檢測
3.1?John the Ripper
- 簡稱為 JR一款密碼分析工具
- 支持字典式的暴力破解通過對shadow文件的口令分析,可以檢測密碼強度
- 官方雙站:http://www.openwall.com/john/
示例一:無字典
- 首先先上傳壓縮包
示例二:有字典
四、端口掃描——NMAP
4.1?NMAP
- 一款強大的網絡掃描、安全檢測工具
- 官方網站:http://nmap.org
- CentOS 7.7光盤中安裝包 nmap-6.40-7.el7.x86 64.rpm
4.2 NMAP掃描
nmap? ? [掃描類型]? ? ?[選項]
- -p:指定掃描的端口
- -n:禁用反向 DNS 解析(以加快掃描速度)
- -sS:TCP的SYN掃描(半開掃描),只向目標發出SYN數據包,如果收到SYN/ACK響應包? ? ? ? ? ? ? 就認為目標端口正在監聽,并立即斷開連接;否則認為目標端口并未開放
- -sT:TCP連接掃描,這是完整的TCP掃描方式(默認掃描類型),用來建立一個TCP連接,? ? ? ? ? ? 如果成功則認為目標端口正在監聽服務,否則認為目標端口并未開放
- -sF:TCP的FIN掃描,開放的端口會忽略這種數據包,關閉的端口會回應RST數據包。許多? ? ? ? ? ? ? ?防火墻只對SYN數據包進行簡單過濾,而忽略了其他形式的 TCP 攻擊包。這種類型的? ? ? ? ? ? ?掃描可間接檢測防火墻的健壯性
- -sU:UDP 掃描,探測目標主機提供哪些 UDP 服務,UDP 掃描的速度會比較慢
- -sP:ICMP 掃描,類似于 ping 檢測,快速判斷目標主機是否存活,不做其他掃描
- -P0:跳過ping檢測,這種方式認為所有的目標主機是存活的,當對方不響應ICMP請求時,? ? ? ? ? ? ? 使用這種方式可以避免因無法 ping 通而放棄掃描
nmap -p 139,445 192.168.4.100-200 ?
//檢測 IP 地址位于 192.168.4.100~200 的主機是否開啟文件共享服務
注:
SYN(synchronous建立聯機)?
ACK(acknowledgement 確認)?
PSH(push傳送)?
FIN(finish結束)?
RST(reset重置)?
URG(urgent緊急)
Sequence number(順序號碼)?
Acknowledge number(確認號碼)
端口的取值范圍是:0-65535
示例一
補充:
永久禁PING:vim /etc/sysctl.conf
禁止:net.ipv4.icmp_echo_ignore_all = 1
啟用:net.ipv4.icmp_echo_ignore_all = 0