Linux中系統安全應用及相關實驗講解
- 一、賬號安全控制
- 1.系統賬號清理
- 2.密碼安全控制
- 設定密碼有效期
- 要求下次登錄時修改密碼(強制)
- 3.命令歷史限制
- 4.終端自動注銷
- 二、su命令相關操作
- 1.概述
- 2.限制使用su命令的用戶
- 3.查看su操作的記錄
- 三、PAM安全認證
- 1.PAM概述
- 應用背景
- 2. PAM認證原理
- 3. PAM認證構成
- PAM作業程序
- 四、sudo機制
- 1.配置sudo授權
- 2.設定別名
- 3.查看sudo操作記錄
- 4.查看授權的sudo操作
- 五、開關機安全控制
- 1.調整BIOS引導設定(了解)
- 2.GRUB限制
- 六、終端登錄安全控制
- 1.限制root用戶
- 2.限制普通用戶
- 七、系統弱口令檢測(密碼破解)
- 八、埠掃描
- 九、Netstat命令
- 總結
前言
本文中賬號控制命令詳見檔案:Linux中賬號和權限管理
一、賬號安全控制
1.系統賬號清理
(1)非登錄用戶的Shell設為/sbin/nologin
usermod -s /sbin/nologin 用戶名
(2)鎖定長期不用的賬號
usermod -L 用戶名 或 passwd -l 用戶名
查看賬號狀態:passwd -S 用戶名
解鎖usermod -U 用戶名 或 passwd -u 用戶名
(3)洗掉無用的賬號
userdel [-r] 用戶名
(4)鎖定賬號檔案passwd、shadow
鎖定狀態:chattr +i /etc/passwd /etc/shadow
解鎖狀態:chattr -i /etc/passwd /etc/shadow
查看狀態:lsattr /etc/passwd /etc/shadow
實操:前三個命令之前操作過,這里就不再重復,直接做第四個命令

2.密碼安全控制
設定密碼有效期
方法一:用于即將創建的新用戶
直接修改組態檔
vim /etc/login.defs -編輯login.defs檔案
PASS_MAX_DAYS 30 -設定有效期30天
實操編輯login.defs檔案,將密碼有效期改為30天


方法二:用于已創建的用戶
chage -M 30 feng3 -修改feng3用戶的密碼有效期為30天
實操修改已存在的用戶feng3的密碼有效期為30天

要求下次登錄時修改密碼(強制)
chage -d 0 lili -要求lili在下次登錄賬號時修改密碼
cat /etc/shadow | grep lili
實操要求lili在下次登錄賬號時修改密碼

登錄會出現如下界面

3.命令歷史限制
(1)臨時清除 history 資訊
history -c 重啟失效
實操

(2)減少記錄的命令條數
vim /etc/profile -編輯profile檔案
HISTSIZE=20 或 export HISTSIZE=20 -歷史記錄保留20條,export 表示全域生效
soure /etc/profile -執行一次組態檔,讓組態檔生效
實操


(3)登錄時自動清空命令歷史
vi ~/.bashrc
echo ' ' > ~/.bash_history
實操


4.終端自動注銷
vim /etc/profile -編輯profie檔案
TMOUT=600 -600秒閑置,終端注銷
soure /etc/profile -執行一次組態檔,讓組態檔生效
實操設閑置600秒后自動注銷


二、su命令相關操作
1.概述
su命令作用:切換用戶
格式:su [-] 目標用戶 帶“-”表示使用目標用戶的登錄shell環境,不加環境變數不變,
可登錄的用戶一般分兩種,超級用戶root、普通用戶,
當root切換到任意的用戶時,不需要密碼,
但當普通用戶切換其他用戶的時候,需要輸入目標用戶的密碼進行驗證,
實操

2.限制使用su命令的用戶
第一步:將允許使用su命令的用戶加入wheel組
第二步:修改/etc/pam.d/su認證配置啟用pam_wheel認證
原理
vim /etc/pam.d/su -編輯/etc/pam.d/su檔案
auth sufficient pam_rootok.so
-pam_rootok.so模塊的主要作用是使uid為0的用戶root能夠直接通過認證而不用輸入密碼
... -省略部分
auth required pam_wheel.so use_uid
-pam_wheel.so作用是讓wheel組內的用戶使用su命令,其他人(包括root)無法使用su命令
每種狀態的解釋:
兩行都注釋:所有用戶都能使用su命令,切換時root和普通用戶都需要密碼驗證
開啟第一行,注釋第二行:(默認狀態)允許所有用戶間使用su命令進行切換的,切換時,root不需要密碼,其他用戶需要密碼,
注釋第一行,開啟第二行:只有wheel組內的用戶才能使用su命令,root用戶也無法切換,
兩行都開啟:只有root用戶和wheel組內的用戶才可以使用su命令,
實操創建兩個用戶kiki和lilo,將kiki加入wheel組中,他可以使用su命令,而lilo不能使用su命令


3.查看su操作的記錄
/var/log/secure是su的安全日志,使用su命令切換用戶的操作都會被記錄,所以可以查看此檔案來看記錄
vim /var/log/secure
舉例

三、PAM安全認證
1.PAM概述
Linux-PAM,是linux可插拔認證模塊,是一套可定制、可動態加載的共享庫,使本地系統管理員可以隨意選擇程式的認證方式,PAM使用 /etc/pam.d/ 下的組態檔來管理對程式的認證方式,應用程式呼叫相應的PAM組態檔,從而呼叫本地的認證模塊,模塊放置在 /lib64/security 下,以加載動態庫的形式進行認證,比如使用su命令時,系統會提示輸入root用戶的密碼,這就是su命令通過呼叫PAM模塊實作的,
總結:PAM是一種高效而且靈活便利的用戶級別的認證方式,也是當前Linux服務器普遍使用的認證方式
應用背景
su命令有安全隱患
(1)默認情況下,任何用戶都允許使用su命令,有機會反復嘗試其他用戶(如root)的登錄密碼,帶來安全風險,
(2)為了加強su命令的使用控制,可借助于PAM認證模塊,只允許極個別用戶使用su命令進行切換
2. PAM認證原理
(1)PAM認證順序:Service(服務)—>PAM(組態檔)—>pam_*.so
(2)PAM首先確定服務,然后加載相應的PAM組態檔(位于/etc/pam.d/下),最后呼叫PAM認證模塊(位于/lib64/security/下)進行安全認證,
(3)用戶訪問服務器的時候,服務器的某一個服務程式把用戶的請求發送到PAM模塊進行認證,不同的應用程式所對應的PAM 模塊也是不同的,
如果想查看某個程式是否支持 PAM 認證,可以用 ls 命令進行查看/etc/pam.d/,
例:ls /etc/pam.d | grep su -查看su是否支持PAM模塊認證
3. PAM認證構成
每一行都是一個獨立的認證和程序,它們按從上往下的順序依次由PAM模塊呼叫
每行都有三個磁區:認證型別、控制型別、PAM模塊、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模塊的引數,這個需要根據所使用的模塊來添加,
傳遞給模塊的引數,引數可以有多個,之間用空格分隔開
PAM作業程序

說明:
(1)required 驗證失敗時仍然繼續,但會回傳 Fail;
(2)requisite 驗證失敗則立即結束整個驗證程序,回傳 Fail;
(3)sufficient 驗證成功則立即回傳,不再繼續,否則忽略結果并繼續;
(4)optional 不用于驗證,只顯示資訊(通常用于session型別)
四、sudo機制
作用:提升執行權限(使用其他用戶的身份執行)
用法:sudo 授權命令
1.配置sudo授權
用戶 主機名=命令程式串列
用戶 主機名=(用戶) 命令程式串列
解釋:
用戶:直接授權指定的用戶名,或采用“%組名”的形式(授權一個組的所有用戶),
主機名:使用此規則的主機名,沒配置過主機名時可用localhost,有配過主機名則用實際的主機名,ALL則代表所有主機
(用戶):用戶能夠以何種身份來執行命令,此項可省略,預設時以root用戶的身份來運行命令
命令程式串列:允許授權的用戶通過sudo方式執行的特權命令,需填寫命令程式的完整路徑,如果不知道路徑可以用“which”查,多個命令之間以逗號“,”進行分隔,ALL則代表系統中的所有命令;通配符“*”表示所有、取反符號“!”表示排除
注:初次使用sudo時需驗證當前用戶的密碼,默認超時時長為5分鐘,在此期間不再重復驗證密碼,
實操一
用戶lilo一開始不能使用ifconfig,現在用sudo命令給他加上這個權限


實操二
將wheel組設定為不需要密碼就能執行命令

將lilo加入wheel組中,他可以執行wheel組可進行的操作

2.設定別名
有些時候輸入用戶、主機名或命令字符比較長或復雜,可以設定一個別名,方便又省力
使用關鍵字 User_Alias、Host_Alias、Cmnd_Alias 來進行設定別名(別名必須為大寫)
多個資訊需要用“,”隔開,
User_Alias USERS=用戶名1,用戶名2,用戶名3 -用戶別名,USERS代表后面三個用戶
Host_Alias HOSTS=localhost,mikem -主機別名
Cmnd_Alias CMNDS=/sbin/*,!/sbin/reboot -命令別名
USERS HOSTS=CMNDS -使用別名撰寫授權
實操
設定別名

驗證設定成功

3.查看sudo操作記錄
需要啟動Defaults logfile配置
默認日志檔案在"/var/log/sudo"
啟用sudo操作日志
visudo
Defaults logfile = "/var/log/sudo"
實操
添加Defaults logfile = “/var/log/sudo”

驗證

4.查看授權的sudo操作
sudo -l
實操

五、開關機安全控制
1.調整BIOS引導設定(了解)
(1)將第一引導設備設為當前系統所在硬碟,
(2)禁止從其他設備(光碟、U盤、網路)引導系統,將對應的項設定為“disabled”,
(3)將安全級別設為setup,并設定管理員密碼,
2.GRUB限制
grub2-mkpasswd-pbkdf2 -使用grub2-mkpasswd-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 -修改/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 檔案
實操
修改/etc/grub.d/00_header檔案,添加密碼記錄

設定命令

六、終端登錄安全控制
1.限制root用戶
linux系統啟動時,login程式會讀取 /etc/securetty檔案(安全終端組態檔),決定允許root用戶從哪些終端登錄,所以想要限制需要編輯 /etc/securetty檔案
vim /etc/securetty
tty5 想要不讓在哪個終端登陸就在該終端前加注釋"#"
實操
限制從tty5登錄

設定完成后 按alt +ctrl+f5

將tty5前的# 去掉,在按alt +ctrl+f5,發現可以登錄

2.限制普通用戶
login 程式會檢查/etc/nologin 檔案是否存在,如果存在,則拒絕普通用戶登錄系統(root 用戶不受限制)
touch /etc/nologin -禁止普通用戶登錄
rm -rf /etc/nologin -取消登錄限制
實操

禁止登錄界面如下

七、系統弱口令檢測(密碼破解)
弱口令檢測(John the Ripper )是一款開源的密碼破解工具,可使用密碼字典(包含各種密碼組合的串列檔案)來進行暴力破解,
官方網站:http://www.openwall.com/john/

作業流程
cd /opt
tar zxf john-1.8.0.tar.gz -解壓工具包
yum install -y gcc gcc-c++ make -安裝軟體編譯工具
cd /opt/john-1.8.0/src -切換到src子目錄
make clean linux-x86-64 -進行編譯安裝
cp /etc/shadow /opt/shadow.txt -準備待破解的密碼檔案
cd /opt/john-1.8.0/run -切換到run子目錄
./john /opt/shadow.txt -執行暴力破解
./john --show /opt/shadow.txt -查看已破解出的賬戶串列
使用密碼字典檔案
> john.pot -清空已破解出的賬戶串列,以便重新分析
./john --wordlist=./password.lst /opt/shadow.txt -使用指定的字典檔案進行破解
(1)首先將下載的tar包放入linux系統,這里可以直接拖進xshell視窗,將檔案放入,

(2)解壓tar包

(3)安裝編譯工具

(4)切換到src子目錄,進行編譯安裝

(5)準備要破解的密碼,并破解

(6)查看破解過的賬號資訊

(7)查看密碼字典,可以自己添加密碼

八、埠掃描
網路掃描(NMAP) 是一個強大的埠掃描類安全評測工具,支持 ping 掃描、多埠檢測等多種技術,
官方網站:http://nmap.org/
作用:找出網路中不可控的應用服務,及時關閉不安全服務,減小安全風險,
(1)首先使用yum的方式安裝nmap軟體包
rpm -qa | grep nmap -查看是否安裝了
yum install -y nmap -用yum的方式安裝

命令格式
nmap [掃描型別] [選項] 掃描目標
常用掃描型別
| 掃描型別 | 說明 |
|---|---|
| -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 通而放棄掃描, |
常用選項
| 選項 | 說明 |
|---|---|
| -p | 指定掃描的埠, |
| -n | 禁用反向 DNS 決議(以加快掃描速度), |
實操
(1)查看本機開放的TCP埠:nmap [-sT] 127.0.0.1
(2)檢測虛擬機192.168.19.0/24網段有哪些主機提供HTTP服務
nmap -p 80 192.168.19.0/24
實操

(3)檢測192.168.19.0/24網段有哪些存活主機
nmap -n -sP 192.168.19.0/24
實操

九、Netstat命令
Netstat是一個監控TCP/IP網路的工具,是用來顯示網路狀態資訊的,其中包括路由表、實際的網路連接以及每一個網路介面設備,可顯示與IP、TCP、UDP和ICMP協議相關的統計資料,用于檢驗本機各埠的網路連接情況,
netatat -[選項]
常用選項
| 選項 | 說明 |
|---|---|
| -a | 顯示主機中所有活動的網路連接資訊(包括監聽、非監聽狀態的服務埠) |
| -n | 以數字的形式顯示相關的主機地址、埠等資訊 |
| -t | 查看 TCP相關的資訊 |
| -u | 顯示 UDP協議相關的資訊 |
| -p | 顯示與網路連接相關聯的行程號、行程名稱資訊(該選項需要 root 權限) |
| -r | 顯示路由表資訊 |
| -l | 顯示處于監聽狀態的網路連接及埠資訊 |
實操
查看正在運行的使用TCP協議的網路狀態資訊
netstat -natp

總結
主要掌握su命令和sudo命令,了解PAM認證作業原理,三個實驗終端登錄安全控制、系統弱口令檢測、埠掃描,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/280584.html
標籤:其他
