目錄
- 一、賬號安全基本措施
- 1、系統賬號相關
- 2、密碼安全相關
- (1)要求下次登錄時修改密碼(強制的)
- (2)設定密碼有效期
- 3、命令歷史的限制
- (1)減少記錄的命令條數
- (2)登錄時自動清空命令歷史
- 4、終端自動注銷
- 二、su命令相關
- 1、su命令
- (1)su命令簡介
- (2)限制使用su命令的用戶
- (3)查看su操作的記錄
- 2、PAM安全認證
- (1)PAM及其作用
- (2)PAM認證原理
- (3)PAM認證的構成
- 3、sudo命令
- (1)配置sudo授權
- (2)授權格式
- (3)設定別名
- 三、開關機安全
- 1、調整BIOS引導設定
- 2、GRUB限制
- 四、終端登錄
- 1、限制root用戶
- 2、限制普通用戶
- 五、破解密碼(弱口令)
- 1、安裝軟體
- 2、破解密碼
- 六、網路埠掃描
- 補充:netstat命令
一、賬號安全基本措施
本章相關檔案:linux賬號及權限管理
1、系統賬號相關
| 賬號型別 | 處理操作 |
|---|---|
| 非登錄用戶 | 將這些用戶的Shell設為/sbin/nologin或/bin/false 方法一:usermod -s /sbin/nologin 用戶名 方法二:使用vim /etc/passwd在passwd檔案內更改 |
| 長期不用的賬號 | 鎖定這些賬號 命令一:usermod -L 用戶名 命令二:passwd -l 用戶名 查看賬號狀態:passwd -S 用戶名 解鎖usermod -U 和passwd -u |
| 無用的賬號 | 洗掉 userdel [-r] 用戶名 |
| 賬號檔案 | 鎖定賬號檔案passwd、shadow 鎖定狀態:chattr +i /etc/passwd /etc/shadow 解鎖狀態:chattr -i /etc/passwd /etc/shadow 查看狀態:lsattr /etc/passwd /etc/shadow |
這里我就演示以下鎖定賬號檔案的命令,其他命令在之前都有寫,有不清楚的可以點擊上方的相關檔案查看,

2、密碼安全相關
(1)要求下次登錄時修改密碼(強制的)
命令格式:chage -d 0 wangwu #要求lisi在下次登錄賬號時修改密碼
cat /etc/shadow | grep wangwu

再次登錄時,輸入兩次舊密碼后,會提示修改密碼,

(2)設定密碼有效期
方法一:用于即將創建的用戶
直接修改組態檔
vim /etc/login.defs #編輯login.defs檔案
PASS_MAX_DAYS 30 #設定有效期30天
方法二:用于已創建的用戶
chage -M 30 lisi #修改lisi用戶的密碼有效期為30天
方法一:編輯login.defs檔案,將密碼有效期改為30天,別忘了保存,

修改引數后建立用戶,查看屬性,

方法二:
修改已存在的用戶lisi的密碼有效期為30天,

3、命令歷史的限制
(1)減少記錄的命令條數
方法一:全域環境生效
vim /etc/profile #編輯profile檔案
HISTSIZE=20 #歷史記錄保留20條,export HISTSIZE=20也行
soure /etc/profile #執行一次組態檔,讓組態檔生效
方法二:當前環境生效,重啟失效
export HISTSIZE=數值 #保留歷史記錄為(數值)條
方法一:
這里可以直接修改上面的“HISTSIZE=”,也可以在最后填上“export HISTSIZE=數值”,組態檔是以最后的命令為主,


方法二:export HISTSIZE=數值,當前用戶環境下生效,重啟失效,

(2)登錄時自動清空命令歷史

.bashrc檔案的編輯

重啟后歷史命令被清空,只有我剛輸進去的history命令,

4、終端自動注銷
方法一:永久配置
vim /etc/profile #編輯profie檔案
TMOUT=600 #600秒閑置,終端注銷
soure /etc/profile #執行一次組態檔,讓組態檔生效
方法二:當前配置,重啟失效
export TMOUT=數值 #(數值)秒閑置,終端注銷
方法一: vim編輯/etc/profile檔案,添加“TMOUT=數值”
編輯profile檔案,在檔案的最后填上“export TMOUT=600”

編輯檔案

等待600秒后

方法二:export TMOUT=數值,結果和上面一樣,不過重啟后失效,

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

(2)限制使用su命令的用戶
第一步:將允許使用su命令的用戶加入wheel組
gpasswd -a 用戶 wheel #添加用戶到wheel組中
grep wheel /etc/group #確定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命令,

例:修改檔案將命令前面的注釋符“#”洗掉,并“wq”保存,

切換用戶,此時lisi在wheel組中,所以和root一樣可以切換,但需要密碼認證,而zhangsan不在wheel組中,所以su命令拒絕了請求,切換失敗,

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

下圖就是我上面部分切換用戶的記錄,可以看到每行里的引數,大概意思能看懂即可,

2、PAM安全認證
在su命令時,有提到pam_wheel認證,這里對PAM補充一些內容,
(1)PAM及其作用
- PAM是linux可插拔認證模塊,是一套可定制、可動態加載的共享庫,系統管理員通過PAM組態檔隨意選擇程式的認證方式,
- PAM的組態檔位于/etc/pam.d目錄下,CentOS7的本地認證模塊放置在/lib64/security下,想要了解有哪些,可以使用ls查看,
(2)PAM認證原理
- PAM認證順序:Service(服務)—>PAM(組態檔)—>pam_*.so
- PAM首先確定服務,然后加載相應的PAM組態檔,最后呼叫PAM認證模塊進行安全認證,
- 用戶訪問服務器的時候,服務器的某一個服務程式把用戶的請求發送到PAM模塊進行認證,不同的應用程式所對應的PAM 模塊也是不同的,
如果想查看某個程式是否支持 PAM 認證,可以用 ls 命令進行查看/etc/pam.d/,
例如:ls /etc/pam.d | grep su #查看su是否支持PAM模塊認證

(3)PAM認證的構成
- 每一行都是一個獨立的認證和程序,它們按從上往下的順序依次由PAM模塊呼叫
- 每行都有三個磁區:認證型別、控制型別、PAM模塊、PAM模塊引數
查看一個login組態檔,先cd /etc/pam.d/,ls 查看有哪些,cat 選定一個,
各個磁區的解釋
第一列:PAM有以下四種模塊型別,分別代表四種不同的任務
| 認證模塊型別 | 作用 |
|---|---|
| auth | 對用戶身份進行識別,如提示輸入密碼,判斷是否為root, |
| account | 對賬號各項屬性進行檢查,如是否允許登錄系統,帳號是否已經過期,是否達到最大用戶數等, |
| password | 使用用戶資訊來更新資料,如修改用戶密碼, |
| session | 定義登錄前以及退出后所要進行的會話操作管理,如登錄連接資訊,用戶資料的打開和關閉,掛載檔案系統, |
第二列:PAM使用控制型別來處理和判斷各個模塊的回傳值
| 控制型別 | 作用 |
|---|---|
| required | 需要回傳一個成功值,如果回傳失敗,不會立刻將失敗結果回傳,而是繼續進行同型別的下一驗證,所有此型別的模塊都執行完成后,再回傳失敗,該行以及所涉及模塊的成功是用戶通過鑒別的必要條件 |
| requisite | 與required類似,但如果此模塊回傳失敗,則立刻回傳失敗并表示此型別失敗, |
| sufficient | 如果此模塊回傳成功,則不管后面的驗證,直接向程式回傳成功,表示驗證通過,如果回傳失敗,則可以看成optional,(慎用) |
| optional | 不進行成功與否的回傳,一般不用于驗證,只是顯示資訊(通常用于 session 型別),不管成功、失敗,繼續下一模塊的驗證,且此模塊的服務也能享用, |
| include | 表示在驗證程序中呼叫其他的PAM組態檔,比如很多應用通過完整呼叫/etc/pam.d/system-auth(主要負責用戶登錄系統的認證作業)來實作認證而不需要重新逐一去寫配置項, |
第三列:
- PAM模塊:CentOS7默認是在/lib64/security/目錄下,如果不在此默認路徑下,要填寫絕對路徑,
同一個模塊,可以出現在不同的模塊型別中,它在不同的型別中所執行的操作都不相同,這是由于每個模塊針對不同的模塊型別編制了不同的執行函式,
第四列:
- PAM模塊引數:這個需要根據所使用的模塊來添加,傳遞給模塊的引數,引數可以有多個,之間用空格分隔開
這張圖PAM作業程序是我自己的理解,如果有錯誤或補充請聯系我,

3、sudo命令
作用:提升執行權限(使用其他用戶的身份執行)
用法:sudo 授權命令
(1)配置sudo授權
- 通過vim /etc/sudoers
- 通過visudo
/etc/sudoers檔案默認的權限為440,需要使用visudo工具進行編輯,如果使用vim命令編輯退出時需要“:wq!”,強制保存,

使用visudo,可以看見里面有大量的模版,這些都是可以直接借用,

(2)授權格式
用戶 主機名=命令程式串列
用戶 主機名=(用戶) 命令程式串列
解釋:
用戶:直接授權指定的用戶名,或采用“%組名”的形式(授權一個組的所有用戶),
主機名:使用此規則的主機名,沒配置過主機名時可用localhost,有配過主機名則用實際的主機名,ALL則代表所有主機
(用戶):用戶能夠以何種身份來執行命令,此項可省略,預設時以root用戶的身份來運行命令
命令程式串列:允許授權的用戶通過sudo方式執行的特權命令,需填寫命令程式的完整路徑,如果不知道路徑可以用“which”查,多個命令之間以逗號“,”進行分隔,ALL則代表系統中的所有命令;通配符“*”表示所有、取反符號“!”表示排除
注:初次使用sudo時需驗證當前用戶的密碼,默認超時時長為5分鐘,在此期間不再重復驗證密碼,
使用visudo編輯

查詢命令路徑

測驗lisi用戶執行ifconfig,順帶測驗wheel組內用戶組成員使用sudo時不需要密碼認證,

zhangsan用戶在輸入reboot和poweroff命令時被限制,

(3)設定別名
輸入時,有時候有些用戶、主機名或命令字符比較長或復雜,可以設定一個別名,方便省力,
使用關鍵字 User_Alias、Host_Alias、Cmnd_Alias 來進行設定別名(別名必須為大寫)
多個資訊需要用“,”隔開,
User_Alias USERS=用戶名1,用戶名2,用戶名3 #用戶別名,USERS代表后面三個用戶
Host_Alias HOSTS=localhost,bogon #主機別名
Cmnd_Alias CMNDS=/sbin/ifconfig,/usr/sbin/useradd,/usr/sbin/userdel #命令別名
USERS HOSTS=CMNDS #使用別名撰寫授權
例如:描述上可能有問題,但命令格式沒問題

(4)查看sudo操作記錄
- 需要啟動Defaults logfile配置
- 默認日志檔案在"/var/log/sudo"
啟用sudo操作日志
visudo
Defaults logfile = "/var/log/sudo"
使用“visudo”,在最后一行輸入lisi localhost=/sbin/reboot;Defaults logfile = “/var/log/sudo”,將sudo操作日志打開,并給lisi用戶reboot的權限,

使用sudo查看,

三、開關機安全
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 檔案
在linux系統重啟時,看最下面有一行,按“e”可以進入grub選單,

進入grub選單后,所有人可以修改grub引導引數,這樣是一個極大的隱患,所以要個grup加個限制,可以為 GRUB 選單設定一個密碼,只有提供正確的密碼才被允許修改引導引數,

(1)使用grub2-mkpasswd-pbkdf2生成密鑰
grub2-mkpasswd-pbkdf2

(2)修改/etc/grub.d/00_header檔案,添加密碼記錄
修改檔案前備份檔案,防止出現問題好恢復,這里將第三步的grup.cfg一起備份了,

編輯00_header檔案,記得保存,

(3)生成新的grub.cfg組態檔

重啟系統init 6,在相應界面按“e”,會跳出下圖界面,按照提示輸入用戶名和密碼才可以進入grub選單,

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

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

普通用戶無法登錄了,root用戶可以登錄,洗掉nologin檔案后,恢復正常,重啟也可以恢復正常,但在實際情況下,公司內部不會讓你重啟服務器,所以需要洗掉檔案,

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

下面是整個流程
cd /opt
tar zxf john-1.9.0.tar.gz #解壓工具包
yum install -y gcc gcc-c++ make #安裝軟體編譯工具
cd /opt/john-1.9.0/src #切換到src子目錄
make clean linux-x86-64 #進行編譯安裝
cp /etc/shadow /opt/shadow.txt #準備待破解的密碼檔案
cd /opt/john-1.9.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視窗,將檔案放入,如果不行可以共享檔案,方法可見:番外篇:windows端共享檔案給Linux,或者用ftp傳輸,這個在之后會說明,

解壓tar包,安裝編譯環境

切換到src子目錄進行編譯安裝

2、破解密碼
準備要破解的密碼,并破解

查看破解過的賬號資訊,

破解軟體的字典password.lst

也可以自己指定字典進行破解,自己先創建一個字典,指定這個字典進行破解


六、網路埠掃描
網路掃描(NMAP) 是一個強大的埠掃描類安全評測工具,支持 ping 掃描、多埠檢測等多種技術,
官方網站:http://nmap.org/
作用:找出網路中不可控的應用服務,及時關閉不安全服務,減小安全風險,


首先使用yum的方式安裝nmap軟體包(聯網狀態),沒有網需要掛載硬碟,建立yum本地云,
rpm -qa | grep nmap #查看是否安裝了
yum install -y nmap #用yum的方式安裝,不然還要找依賴包
rpm ivh nmap-7.91-1.x86_64.rpm #也可以去官網下載新版的軟體包,可能需要下載其他依賴包

命令格式
namp [掃描型別] [選項] 掃描目標
安裝好軟體,就可以使用了,這里先了解一下掃描型別和命令選項
| 掃描型別 | 作用 |
|---|---|
| -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 決議(以加快掃描速度), |
例:
-
查看本機開放的TCP埠:nmap [-sT] 127.0.0.1

-
查看本機開放的UDP埠(掃描速度慢):nmap -sU 127.0.0.1

-
檢測虛擬機192.168.163.0/24網段有哪些主機提供HTTP服務
nmap -p 80 192.168.163.0/24

-
檢測192.168.163.0/24網段有哪些存活主機
nmap -n -sP 192.168.163.0/24

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

-
查看正在運行的使用UDP協議的網路狀態資訊------netstat -naup

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/231081.html
標籤:其他
