文章目錄
-
- 一.基本安全措施
-
- 1.系統賬号清理
- 2.密碼安全控制
- 3.指令曆史,自動登出
- 二.使用者切換與提權
-
- 1.su指令 --substitute user(切換使用者)
- 2.sudo指令 (提升執行權限)
- 三.PAM安全認證
- 四.開關機安全控制
-
- 1.調整bios引導設定
- 2. 禁止ctrl +alt +del 快捷鍵重新開機
- 3.限制更改GRUB引導參數
- 五.終端及登入控制
-
- 1.減少開放的tty終端個數(以下方法隻适用于contens 6)
- 2. 禁止root 使用者登入
- 3.禁止普通使用者登入
- 六.弱密碼檢測
- 七.網絡掃描 -NMAP
一.基本安全措施
1.系統賬号清理
1.将非登入使用者的shell設為/sbin/nologin 來禁止使用者登入
useradd -s /sbin/nologin zhangsan
2.鎖定長期不适用的賬号
usermod -L zhangsan // 鎖定賬戶zhangsan
passwd -S zhangsan // 檢視賬戶狀态
zhangsan LK 2020-08-28 0 99999 7 -1 (Password locked.) //已被鎖定
usermod -U zhangsan //解鎖賬戶
passwd -S zhangsan
zhangsan PS 2020-08-28 0 99999 7 -1 (Password set, MD5 crypt.)
3.删除無用的賬号
userdel zhangsan
4.鎖定賬号檔案passwd ,shadow
chattr +i /etc/passwd /etc/shadow #鎖定檔案
lsattr /etc/passwd /etc/shadow #檢視狀态
chattr 指令的用法:
選項 | 用法 |
---|---|
+ | 在原有參數設定基礎上,追加參數。(配合以下選項使用,不能單獨使用) |
- | 在源有參數設定基礎上,移除參數(配合以下選項使用,不能單獨使用) |
= | 更新為指定參數設定(配合以下選項使用,不能單獨使用) |
A | 檔案或目錄的atime 不可被修改,可以有效預防例如手提電腦磁盤I /0錯誤的發生。 |
S | 硬碟 I/O 同步選項,功能類似sync |
a | 即 compresse,設定檔案是經過壓縮後再存儲,讀取時需要經過自動解壓操作。 |
d | 即 no dump ,設定檔案不能成為dump 程式的備份目标 |
i | 設定檔案不能被删除,改名,設定連結關系,同時不能寫入或新增内容,i 參數對于檔案系統的安全設定有很大幫助 |
j | 設定此參數使得當通過 mount 參數: data= ordered 或者 data = writeback 挂載的系統檔案 |
例如:
[[email protected] ~]# chattr +i /etc/passwd /etc/shadow //鎖定檔案
[[email protected] ~]# lsattr /etc/passwd /etc/shadow // 檢視為鎖定的狀态
----i----------- /etc/passwd
----i----------- /etc/shadow
[[email protected] ~]# useradd zhangsan //此時建立賬戶因為是鎖定狀态無法建立
useradd: cannot open /etc/passwd
[[email protected] ~]# passwd zhangsan // 修改密碼也因無法打開檔案而無法修改
passwd: Unknown user name 'zhangsan'.
[[email protected] ~]# chattr -i /etc/passwd /etc/shadow //解鎖檔案
[[email protected] ~]# lsattr /etc/passwd /etc/shadow //檢視為解鎖的狀态
---------------- /etc/passwd
---------------- /etc/shadow
[[email protected] ~]# useradd zhangsan //此時建立賬戶以及修改密碼都可
[[email protected] ~]# passwd zhangsan
Changing password for user zhangsan.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[[email protected] ~]# id zhangsan
uid=1002(zhangsan) gid=1002(zhangsan) groups=1002(zhangsan)
2.密碼安全控制
密碼安全控制有以下兩種:
設定密碼有效期
要求使用者下次登入時修改密碼
vi /etc/login.defs #适用于建立使用者
......
PASS_MAX_DAYS 30
chage -M 30 lisi #适用于已有使用者
chage -d 0 zhangsan #強制在下次登入時更改密碼
3.指令曆史,自動登出
指令曆史
指令曆史限制有以下三種方法:
減少記錄的指令條數
登出時自動清空指令曆史
[] vi /etc/profile
histsize=200 //保留 200 t條曆史指令 (重新開機之後生效)
[] vi ~/.bash_logout
history -c // 清空曆史記錄 (重新開機之後生效)
clear
或者
[] echo > $home./bash_history //清空曆史記錄
自動登出
終端自動登出
閑置600 秒後自動登出
vi ~/.bash_profile
......
export TMOUT=600 //閑置600秒後自動登出
二.使用者切換與提權
1.su指令 --substitute user(切換使用者)
作用: substitute user 切換使用者
格式: su - 目标使用者
su - root #帶-選項表示将使用目标使用者的登入Shell環境
密碼
whoami
root
密碼驗證
root -->任意使用者,不驗證密碼
普通使用者-->其他使用者,驗證目标使用者的密碼
限制使用 su 指令的使用者
将允許使用su指令的使用者加入wheel組
啟用 pam_wheel 認證子產品
注意 : ( 自己做試驗的現象就是加入wheel組之間的可以自由切換,包括root,但是建立的或者是未加入wheel組的切換不了)
例如
[[email protected] ~]# gpasswd -a lisi wheel //添加授權使用者lisi
Adding user lisi to group wheel
[[email protected] ~]# grep wheel /etc/group //确認wheel 組成員
wheel:x:10:lihuihui,lisi
[email protected] ~]# vi /etc/pam.d/su //進入配置檔案去掉下面行開頭的#注釋
auth required pam_wheel.so use_uid
2.sudo指令 (提升執行權限)
1.在配置檔案/etc/sudoers 中添加授權
授權配置主要包括使用者,主機,指令三個部分含義分别如下
使用者user 授權的使用者名,或者采用“%組名”的形式,(授權一個組的所有使用者)
主機 (MACHINE)使用此配置檔案的主機名稱,此部分主要是友善在多個主機之間共用同一份sudoers檔案,一般設定為localhost或者實際的主機名即可
指令·(COMMANDS)允許授權的使用者通過sudo方式執行特權指令,需填寫指令程式的完整路徑,多個明令之間以逗号,進行分隔。
彌補su指令的缺點
sudo 指令的用途及用法
用途:以其他使用者身份(如root)執行授權指令
用法:sudo 授權指令
配置sudo授權 (* 表示所有 !表示取反,不給使用)
visudo 或者vi /etc/sudoers (儲存時:wq!)
記錄格式 使用者 主機名清單=指令程式清單
備注: %wheel ALL=(ALL) ALL ALL 從左到右,第一個all是使用者,第二個是機器,第三個是新使用者身份(如 run_as_user ,如root ,oracle )第四個是指令
例如: (提權)
[[email protected] ~]# su lisi //切換使用者
[[email protected] root]$ vi a //建立檔案并編輯,此時因為沒有權限是編輯不了的
[[email protected] root]$ sudo /usr/bin/vi a //提升權限, 此時編輯是可以編輯的,編輯内容如下
[[email protected] root]$ sudo /usr/bin/cat a
123
[[email protected] root]$ touch b.txt //建立檔案夾,此時也因為沒有權限是建立不了
touch: cannot touch ‘b.txt’: Permission denied //無權限,拒絕
[[email protected] root]$ sudo /usr/bin/touch b.txt //提升全限
[[email protected] root]$ sudo /usr/bin/ls -lh //給ls -lh也提升權限來檢視一下,此時,已經建立檔案
total 20K
-rw-r--r-- 1 root root 4 Aug 30 19:35 a
-rw-r--r-- 1 root root 7 Aug 30 19:30 aa
-rw-------. 1 root root 2.9K Aug 9 20:18 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Aug 30 19:31 a.txt
... 省略部分内容
用sudo -l 來參看使用者所擁有的權限 (whoami檢視目前使用者是哪個)
注意:改權限的時候先檢視在哪個檔案夾下面,比如說,檢視路由 which route ,如果一個賬戶屬于多個組,那這個賬戶同時擁有多個組的權限, usr/sbin/下的權限隻能管理者能用,如果授予管理者權限加入wheel租的話既可以用。
[# ]route add -host 192.168.20.100 gw 192.168.20.1 添加主機加路由
【#】# route -n // 檢視路由
【$】sudo /ussr/sbin/route add -host 92.168.20.100 gw 192.168.20.1
【$】sudo /usr/sbin/ifconfig ens33:3 192.168.50.1/24
tail -f /var/log/secure : 此日志是檢視不給記錄
注:
[[email protected] ~]# ifconfig ens33:1 192.168.100.1/24 // 添加網段路由
[[email protected] ~]# route add -net 192.168.100.0/24 gw 192.168.100.1
# route add default gw 192.168.100.1 //添加預設路由
檢視sudo 操作記錄
需要啟用 defaults logfile 配置
預設日志檔案 : /var/log/sudo
補充:給普通使用者提權限但是不加入wheel組還有一種方式
【#】visudo
%wheel ALL=(ALL) ALL //加入wheel組的所有使用者都可以使用root權限
lisi server1=(zhangsan) /usr/bin/touch,/usr/bin/ls // 設定lisi 以張三的身份運作 并權重限 touch , ls
例如: sudo -u lisi /usr/bin/vi a.txt 使lisi以自己的身份運作執行權限。通常用來驗證權限
三.PAM安全認證
PAM 認證原理
一般遵循的順序
service(服務)—>PAM (配置檔案)--->pam_*.so
首先要确定哪一項服務,然後加載相應的PAM的配置檔案(位于/etc/pam.d下),最後調用認證檔案(位于/lib/security下)進行安全認證
使用者通路伺服器時,伺服器的某一個服務程式把使用者的請求發送到pam子產品進行認證
不同的應用程式所對應的pam子產品是不同的
PAM 認證的構成
檢視某個程式是否支援pam認證,可以用ls指令
例如
ls /etc/pam.d \ grep su
檢視su 的pam配置檔案:cat /etc/pam.d/su
每一行都是一個獨立的認證過程
每一行可以區分為三個字段 (認證類型 ,控制類型,PAM子產品及其參數)
認證類型 (有以下四種)
+ 認證管理: 授權使用者名和密碼,進而對該使用者的密碼進行認證
+ 賬戶管理 : 檢查賬戶是否被允許登入系統,賬号時候已經過期,賬号的登入時候有時間段的限制等
+ 密碼管理 : 主要用來修改使用者的密碼
+ 會話管理 : 主要提供對話的管理和記賬
控制類型
控制類型也可以稱作control flags ,用于PAM驗證類型的傳回結果
+ <1> required 驗證失敗時仍然繼續,但傳回fail
+ <2>requisite 驗證失敗則立即結束整個驗證過程,傳回fail
+ <3>sufficient 驗證成功則立即傳回,不再繼續,否則忽略結果并繼續
+ <4>optinal 不用于驗證隻顯示資訊
PAM 子產品及其參數

su 指令的安全隐患
預設情況下,任何使用者都允許使用su指令,有機會反複嘗試其他使用者,(如root)的登入密碼,帶來安全風險
為了加強su 指令的使用控制,可借助PAM認證子產品,隻允許極個别使用者使用su指令進行切換
PAM 可插拔式認證子產品
是一種高效而且靈活便利的使用者級别的認證方式
也是目前linux伺服器普遍使用的認證方式
四.開關機安全控制
1.調整bios引導設定
調整BIOS引導設定
将第一引導裝置設為目前系統所在硬碟
禁止從其他裝置(CD光牒,U盤,網絡)引導系統
将安全級别設為setup,并設定管理者密碼
2. 禁止ctrl +alt +del 快捷鍵重新開機
3.限制更改GRUB引導參數
使用gtub2-mkpasswd-pbkdf2生成密鑰
修改/etc/grub.d/00_header檔案中,添加密碼記錄
生成新的grub.cfg配置檔案
相關指令
grub2-mkpasswd-pbkdf2 //根據提示指定密碼,生成加密密鑰
Enter passwd:
Reenter password:
此段密鑰 is 後面才開始 假設密鑰為:asfhoia hfoasnvosdjiodcnxcjoasdnvasvnaf
......
//以上是經過加密的密碼字元串省略
【#】cp -rp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
【#】cp -rp /etc/grub.d/00_header /etc/grub.d/00_header.bak
【#】vim /etc/grub.d/00_header //将下面内容添加到檔案最後一行
cat << EOF
set superusers="root" password_pbkdf2 root 這裡後面加入is 後面的密鑰
EOF
【#】grub2-mkconfig -o /boot/grub2/grub.cfg
注意:在使用cat <<EOF時,輸入完畢之後,需要在一個新的一行輸入EOF結束stdin的輸入。EOF必須頂行寫,前面不能用制表符或者空格。密鑰也可參考下面密鑰複制:
五.終端及登入控制
1.減少開放的tty終端個數(以下方法隻适用于contens 6)
/etc/init/tty.conf 控制tty終端的開啟
/etc/init/start-ttys.conf 控制tty終端的開啟數量,裝置檔案
/etc/sysconfig/init 控制tty 終端的開啟數量,終端顔色
配置示例如下
【#】vi /etc/init/start-ttys.conf
......
env ACTIVE_CONSOLES=/dev/tty[456]
【#】vi /etc/sysconfig/init
......
ACTIVE_CONSOLES=/dev/tty[456]
【reboot】
禁用tty1,tty2,tty3終端以後,重新開機并進入字元模式,預設将無法登陸。必須按alt+f4,alt+f5,alt+f6組合切換到可用的終端,然後才能進行登陸操作。
2. 禁止root 使用者登入
限制root 隻在安全終端登入
安全終端配置:/etc/securetty
例如
[[email protected] ~]# vi /etc/securetty
......
#tty5
#tty6
//禁止root使用者從終端tty5、tty6
3.禁止普通使用者登入
在伺服器進行備份或調試過程時用
touch /etc/nologin #禁止普通使用者登入
rm -rf /etc/nologin #取消上述登入限制
六.弱密碼檢測
介紹
John the Ripper 簡稱JR ,一款密碼分析工具,支援字典式的暴力破解
通過對shadow檔案的密碼分析,可以檢測密碼強度
官方網站: http://www.openwall.com/john/
檢測過程:
安裝JR工具
安裝方法 : make clean系統類型
主程式檔案為 john
檢測弱密碼賬号
獲得linux/unix伺服器的shadow檔案
執行john程式,将shadow檔案作為參數
密碼檔案的暴力破解
準備好密碼字典檔案,預設為password.lst
執行john程式,結合--wordlist=字典檔案
示例破解過程
首選導入john的壓縮包
[[email protected] ~]# tar zxvf john-1.8.0.tar.gz //解壓縮包
[[email protected] ~]# cd john-1.8.0
[[email protected] john-1.8.0]# cd src
[[email protected] src]# make clean linux-x86-64 //執行編譯檔案
[[email protected] src]# ls ../run/john //檢視是否生成john程式
../run/john
[[email protected] src]# cp /etc/shadow /root/shadow.txt //複制密碼檔案
[[email protected] src]# cd ../run
[[email protected] run]# ./john /root/shadow.txt //破譯賬戶弱密碼
Warning: only loading hashes of type "md5crypt", but also saw type "crypt" Use the "--format=crypt" option to force loading hashes of that type instead Loaded 4 password hashes with 3 different salts (md5crypt [MD5 32/64 X2]) Press 'q' or Ctrl-C to abort, almost any other key for status
123456 (zhangsan)
123456 (root)
123456 (lisi)
[[email protected] run]# ./john --show /root/shadow.txt //檢視已破譯出的賬戶清單
root:123456::0:99999:7:::
lisi:123456:18505:0:99999:7:::
zhangsan:123456:18505:0:99999:7:::
使用密碼字典檔案破解:
[[email protected] run]# :> john.pot //上一步已破解出的賬戶清單,以便重新分析
[[email protected] run]# ./john --wordlist=./password.lst /root/shadow.txt
Warning: only loading hashes of type "md5crypt", but also saw type "crypt" Use the "--format=crypt" option to force loading hashes of that type instead Loaded 3 password hashes with 3 different salts (md5crypt [MD5 32/64 X2]) Press 'q' or Ctrl-C to abort, almost any other key for status
123456 (zhangsan)
123456 (root)
123456 (lisi)
[[email protected] run]# ./john --show /root/shadow.txt
七.網絡掃描 -NMAP
一款強大的網絡掃描,端口掃描安全評測工具,官方站點:http://nmap.org/
支援ping掃描,多端口檢測,OS識别多種技術。
定期掃描内部網絡,可以找出網絡中不可控的應用服務,及時關閉不安全的服務,減小安全風險
指令:(此實驗是在centOS系統下)
yum安裝nmap 軟體包 : yum -y install nmap
文法是:nmap 掃描類型 選項 掃描目标
其中掃描的目标可以是主機名,ip位址,或網絡位址等,多個目标的話可以以空格分隔,常用的選項有 -p -n 分别用來指定掃描的端口,禁用反向DNS解析(以加快掃描速度)
比較常見的幾種掃描方式如下:
nmap -sT (tcp掃描連接配接) 127.0.0.1,192.168.4.0/24,192.168.4.100-200
nmap -sU (udp掃描)
nmap -sP (icmp掃描)
nmap -sS (tcp syn 掃描)
nmap -sF (tcp fin 掃描)
nmap -p (指定端口掃描)
例如
[[email protected] ~]# yum -y install nmap
[[email protected] ~]# nmap 127.0.0.1 //tcp 端口掃描
Starting Nmap 6.40 ( http://nmap.org ) at 2020-09-01 04:15 PDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000030s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
111/tcp open rpcbind
631/tcp open ipp
Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds