系統安全及應用
目錄
一、賬號的基本 安全
1.1、系統賬號清理
1. 2、密碼安全控制
1.3、命令歷史限制
1.4、終端自動登出
二、使用su命令切換使用者
2.1、用途及使用者
2.2、密碼驗證
2.3、限制使用su命令的使用者
三、Linux中的PAM安全認證
3.1、su命令的安全隱患
3.2、PAM可插拔式認證模組
3.3、PAM認證原理
3.4、PM認證的構成
3.5、PAM安全認證流程
四、使用sudo機制提升許可權
4.1、sudo命令的用途及用法
4.2、配置sudo授權
4.3、語法格式
4.4、設定別名
4.5、密碼驗證
4.6、檢視sudo操作記錄
4.7、查詢授權的sudo操作記錄
五、系統引導和登入控制
5.1、開關機安全控制
5.2、終端登入安全控制
六、弱口令檢測
6.1、暴力破解工具-JR
6.2、安裝JR工具
6.3、檢測弱口令賬號
6.4、密碼檔案的暴力破解
6.5、模擬暴破步驟
七、埠掃描
7.1、網路掃描工具-NMAP
7.2、安裝NMAP包
7.3、nmap命令常用的選項和掃描型別
7.4、常規檢測方式:netstat
7.5、netstat命令常用選項
一、賬號安全基本措施
1、系統賬號清理
1)將非登入使用者的Shell設為/sbin/nologin
2) 鎖定長期不使用的賬號
usermod -L 使用者名稱 鎖定使用者賬戶
passwd -l 使用者名稱 鎖定賬戶密碼
passwd -S 使用者名稱 檢視使用者狀態
3)刪除無用的賬戶
userdel [-r] 使用者名稱 刪除使用者及其宿主目錄
4)清空一個賬號密碼
passwd -d 使用者名稱 清空賬戶密碼
5)鎖定賬戶檔案passwd、shadow
chatte +i /etc/passwd /etc/shadow 鎖定檔案
lsatter /etc/passwd /etc/shadow 檢視檔案狀態
chatter -i /etc/passwd /etc/shadow 解鎖檔案
2、密碼安全控制
1)設定密碼有效期
vi /etc/login.defs
PASS_MAX_DAYS N(天數)
chage -M 30 使用者
cat /etc/shadow | grep 使用者
2)要求使用者下次登入修改密碼
chage -d 0 使用者
cat /etc/shadow | grep 使用者
chage -M 日期 使用者 設定使用者密碼和有效期
chage -E xxxx-xx-xx 設定賬號過期日期
3、命令歷史限制
1)減少命令記錄條數
①、概述: /etc/profile 是系統全域性變數配置檔案,可以通過系統或者執行 source /etc/profile命令使檔案被重新整理過載
②、格式:vi /etc/profile 編劇全域性變數配置檔案
export HISTSIZE=x 輸入需要的命令條數
source /etc/profile 重新整理過載
2)登入時自動清空歷史命令
①、概述:~/.bashrc檔案中的命令會在每次開啟新的bash shell時(也包括登入系統)被執行
②、格式:vi ~/.bashrc
echo“ ” > ~/.bashrc_history
4、終端自動登出
1)限制600秒後自動登出
格式:vi /etc/profile
export TMOUT=600
source /etc/profile
二、使用su命令切換使用者
1、用途及使用者
1)用途:Substitute User,切換使用者
2)格式:su - 目標使用者
2、密碼驗證
1)root ->任意使用者,不驗證密碼
2)普通使用者->其他使用者,驗證目標使用者密碼
3)格式: su - 使用者名稱 帶-選項表示將使用目標使用者的登入 shell環境
3、限制使用su命令的使用者
1)將允許使用su命令的使用者加入wheel組
2)在/etc/pam.d/su檔案中設定禁止使用者使用su命令
格式:vim /etc/pam.d/su
注:①、以上兩行是預設狀態(即開啟第一行,註釋第二行),這種狀態下是允許雖有使用者使用su命令進行切換的
②、兩行都註釋也是允許所有使用者都能使用su命令,但root下使用su切換到其他普通使用者需要輸入密碼;如果第一行不註釋,則root使用su切
換普通使用者就不需要輸入密碼
(pam_rootok.so模組的主要作用是使uid為0的使用者,即 root使用者能夠直接通過認證而不用輸入密碼)
③、如果開啟第二行,表示只有root使用者和wheel組內的使用者才可以使用su命令。
④、如果註釋第一行,開啟第二行,表示只有wheel組內的使用者才能使用su命令,root使用者也被禁用su命令。
實驗驗證:
步驟一,新建AYHT/BYHT普通使用者,使用su命令實現root->普通使用者的切換,且將普通使用者AYHT加入wheel組中
步驟二、進入/etc/pam.d/su檔案中設定禁止使用者使用su命令,選擇檔案第六行,將行前註釋#刪除,啟用該欄位
步驟三、重新進行使用者切換,發現加入wheel組中使用者AYHT正常切換,而未加入wheel組中的使用者BYHT切換失敗,顯示su:拒絕許可權
注:啟用 pam_wheel認證後,未加入到wheel組中的其他使用者無法使用su命令
三、Linux中的PAM安全認證
1、su命令的安全隱患
1)、預設情況下,任何使用者都允許使用 su命令,有機會反覆嘗試其他使用者(如root)的登入密碼,帶來安全風險
2)、為了加強su 命令的使用控制,可藉助於PAM認證模組,只允許極個別使用者使用su命令進行切換
2、PAM (Pluggable Authentication Modules)可插拔式認證模組
1)、是一種高效而且靈活的使用者級別的認證方式
2)、也是當前Linux伺服器普遍使用的認證方式
3、PAM認證原理
1)PAM認證一般遵循的順序:Service(服務)-->PAM(配置檔案)-->pam_*.so
2)PAM認證首先要確定哪一項服務,然後載入相應的PAM的配置檔案(位於/etc/pam.d下),最後呼叫認證檔案(位於/lib64/security下)進行安全認證
3)使用者訪問伺服器時,伺服器的某一個服務程式把使用者的請求傳送到PAM模組進行認證,不同的應用程式所對應的PAM模組是不同的
4、PM認證的構成
1)檢視某個程式是否支援PAM認證,可以用ls命令
2)格式:ls /etc/pam.d | grep su
3)檢視su的PAM配置檔案:cat /etc/pam.d/su
每一行都是一個獨立的認證過程,它們按從上往下的順序依次由PAM模組呼叫
每一行可以區分為三個欄位:認證型別、控制型別、pam模組及其引數
①、第一列代表PAM認證模組型別
auth∶ 對使用者身份進行識別,如提示輸入密碼,判斷是否為root。
account∶ 對賬號各項屬性進行檢查,如是否允許登入系統,帳號是否已經過期,是否達到最大使用者數等。
passwor∶使用使用者資訊來更新資料,如修改用 戶密碼。
session∶ 定義登入前以及退出後所要進行的會話操作管理,如登入連線資訊,使用者資料的開啟和關閉,掛載檔案系統。
②、第二列代表PAM控制標記
required∶ 表示需要返回一個成功值,如果返回失敗,不會立刻將失敗結果返回,而是繼續進行同型別的下一驗證,所有此型別的模組都執行完成後,再返回失敗。
requisite∶ 與required類似,但如果此模組返回失敗,則立刻返回失敗並表示此型別失敗。
sufficient∶ 如果此模組返回成功,則直接向程式返回成功,表示此類成功,如果失敗,也不影響這型別的返回值。
optional∶不進行成功與否的返回,一般不用於驗證,只是顯示資訊(通常用於 session 型別)。
include∶ 表示在驗證過程中呼叫其他的PAM配置檔案。比如很多應用通過完整呼叫/etc/pam.d/system-auth(主要負責使用者登入系統的認認證工作)來實現認證而不需要重新逐一去寫配置項
③、第三列代表PAM模組,預設實在/lib64/security/目錄下,若不在此預設路徑下,要填寫絕對路徑。
同一個模組,可以出現在不同的模組型別中,它在不同的型別中所執行的操作都不相同,這是由於每個模組針對不同的模組型別編制了不同的執行函式
④、第四列代表PAM模組的引數,這個需要根據所使用的模組來新增
傳遞給模組的引數,引數可以有多個,之間用空格分隔開
5、PAM安全認證流程
控制型別也稱作Control Flags,用於PAM驗證型別的返回結果
1)required驗證失敗時仍然繼續,但返回Fail
2)requisite驗證失敗則立即結束整個驗證過程,返回Fail
3)sufficient驗證成功則立即返回,不再繼續,否則忽略結果並繼續
4)optional不用於驗證,只顯示資訊(通常用於session型別)
四、使用sudo機制提升許可權
1、sudo命令的用途及用法
用途:以其他使用者身份(如root)執行授權的命令
用法:sudo 授權命令
2、配置sudo授權
visudo或vi /etc/sudoers #此檔案的預設許可權為440,儲存退出時必須執行“wq!”,強制儲存退出
3、語法格式:
使用者 主機名=命令程式列表
使用者 主機名=(使用者) 命令程式列表
使用者:直接授權指定的使用者名稱,或採用“%組名”的形式(授權一個組的所有使用者)。
主機名:使用此規則的主機名。沒配置過主機名時可用localhost(預設主機名),有配過主機名則用實際的主機名,ALL則代表所有主機
(使用者):使用者能夠以何種身份來執行命令。此項可省略,預設時以root使用者的身份來執行命令
命令程式列表:允許授權的使用者通過sudo方式執行的特權命令,需填寫命令程式的完整路徑,多個命令之間以逗號“,”進行分割。ALL則代表系統中的所有命令
注:可使用萬用字元“ * ”表示所有,取反符號“!”表示排除
例如:Jerry localhost=/sbin/*,!/sbin/poweroff
表示jerry使用者操作localhost主機可使用sbin目錄下的除poweroff以外的所有命令
注:Jerry仍可使用init、shutdown等命令執行關機操作,因此限制命令需做到全面無漏,否則限制影響十分有限。
4、設定別名
使用關鍵字User_Alias、Host_Alias、Cmds_Alias來進行設定別名(別名必須為大寫)
User_Alias USERS=Tom,Jerry,Mike
Host_Alias HOSTS=localhost,bogon
Cmnd_Alias CMDS=/sbin/ifconfig,/usr/sbin/useradd,/usr/sbin/userdel
USERS HOST=CMDS
5、密碼驗證
1)正常情況下,第一次使用sudo命令需輸入密碼驗證,有效期為五分鐘,過期後使用sudo需再次輸入密碼驗證。
2)可以設定特定使用者無需密碼驗證
Mike ALL=(ROOT)NOPASSWD:/bin/kill,/usr/bin/killall
3)也可設定組使用者無需密碼驗證
%wheel ALL=NOPASSWD:ALL
4)以及所有使用者無需密碼驗證
USERS HOSTS=NOPASSWD:CMDS
6、檢視sudo操作記錄
- 需啟用Defaults logfile配置
- 預設日誌檔案:/var/log/sudo
- visudo #進入sudo配置檔案
- Defaults logfile="/var/log/sudo" #啟動Defaults logfile
- tail /var/log/sudo #檢視sudo末尾10行記錄
7、查詢授權的sudo操作
1)格式:sudo -l
2)例:
五、系統引導和登入控制
1、開關機安全控制
1)調整BIOS引導設定
- 將第一引導裝置設為當前系統所在硬碟
- 禁止從其他裝置(光碟、U盤、網路)引導系統
- 將安全級別設為setup,並設定管理員密碼
2)GRUB限制
①、通常情況下,在系統開機進入GRUB選單時,按e鍵可以檢視並修改GRUB引導引數,也可進入急救模式修改使用者密碼,這對伺服器是一個極大的安全威脅。為此,可以為GRUB選單設定一個密碼,只有提供正確的密碼才被允許修改引導引數。
使用grub2-mkpasswd-pbkdf2生成金鑰
修改/etc/grub.d/00_header檔案,新增密碼記錄
生成新的grub.cfg配置檔案
grub2-mkpasswd-pbkdf2 #根據提示設定GRUB選單的密碼
PBKDF2 hash of your password is grub.pbkdf2…… # 省略部分內容為加密生成的密碼字串
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak # 製作備份
cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
vim /etc/grub.d/00_header
cat << EOF
set superusers="root" # 設定超級使用者為 root
password_pbkdf2 root grub.pbkdf2…… # 設定密碼,省略部分內容為經過加密生成的密碼字串
EOF
grub2-mkconfig -o /boot/grub2/grub.cfg # 生成新的grub.cfg
完成配置修改工作,重啟後進入GRUB選單時,按e鍵將需要輸入賬號密碼才能修改引導引數。
2、終端登入安全控制
1)限制root只在安全終端登入
①、安全終端配置:/etc/securetty
vi /etc/securetty
②、將tty5,tty6前加“#”將其註釋,表示禁止root使用者從終端tty5、tty6登入
2)禁止普通使用者登入
①、建立/etc/nologin
touch /etc/nologin
②、刪除nologin檔案或重啟後即恢復正常
rm -rf /etc/nologin
六、弱口令檢測
1、暴力破解工具-JR
John the Ripper是一款開源的密碼破解工具,可使用密碼字典(包含各種密碼組合的列表檔案)來進行暴力破解。通過對shadow檔案的口令分析,可以檢測密碼強度。
官方網站:http://www.openwall.com/john/
2、安裝JR工具
1)安裝方法:make clean 系統型別
2)主程式檔案為john
3、檢測弱口令賬號
1)獲得Linux/Unix伺服器的shadow檔案
2)執行john程式,將shadow檔案作為引數
4、密碼檔案的暴力破解
1) 準備好密碼子彈檔案,預設為password.lst
2) 執行john程式,結合--wordlist=字典檔案
5、模擬暴破步驟
1)解壓工具包
cd /opt
tar zxf john-1.8.0.tar.gz
2)安裝軟體編譯工具
yum install -y gcc gcc-c++ make
3)切換到src子目錄
cd /opt/john-1.8.0/src
4)進行編譯安裝
make clean linux-x86-64
5)準備待暴破的密碼檔案
cp /etc/shadow /opt/shadow.txt
6)執行暴力破解
cd /opt/john-1.8.0/run
./john /opt/shadow.txt
7)檢視已破解出的賬戶列表
./john --show /opt/shadow.txt
8)使用密碼字典檔案
使用> john.pot #清空已破解出的賬戶列表以便重新分析
./john --wordlist=./password.list /opt/shadow.txt #使用指定的字典檔案進行破解
9)新增字典內容
若密碼無法被暴力破解說明字典中沒有該密碼記錄,可以進入字典檔案(/opt/john-1.8.0/run/password.list)中手工輸入新增,字典內容的豐富程度與破解能力成正比
七、埠掃描
1、網路掃描工具-NMAP
NMAP是一個強大的埠掃描類安全評測工具,支援ping掃描、多埠檢測等多種技術。
2、安裝NMAP軟體包
rpm -qa | grep nmap #檢查是否已安裝
yum install -y namp #若未安裝,進行yum安裝
3、nmap命令常用的選項和掃描型別
4、常規檢測方式:netstat
netstat -natp # 檢視正在執行的使用TCP協議的網路狀態資訊
netstat -naup # 檢視正在執行的使用UDP協議的網路狀態資訊
1) 分別檢視本機/其他主機開放的TCP、UDP埠
nmap -sT 127.0.0.1
nmap -sU 127.0.0.1
2)檢測192.168.80.0/24網段有哪些主機提供HTTP服務
nmap -p 80 192.168.80.0/24
3)檢測192.168.80.0/24網段有哪些存活主機
nmap -n -sP 192.168.80.0/24
5、netstat命令常用選項