系统安全及应用(账户安全控制,系统引导和登录,弱口令检测和登录控制,PAM认证,端口扫描,用户切换和提权)
文章目錄
- 系統安全及應用
- 賬戶安全控制
- 基本安全措施
- chattr--鎖定賬號配置文件
- 密碼安全控制( chage)
- 要求用戶下次登錄時修改密碼
- 命令歷史,自動注銷
- 注銷時自動清空命令歷史:
- bash終端自動注銷
- 用戶切換與提權
- su 命令 -切換用戶
- sudo命令--提升執行權限
- 配置文件/etc/sudoers中添加
- 認識了解pam_wheel認證模塊
- PAM安全認證
- su 命令的隱患
- PAM認證原理
- PAM認證的構成
- PAM安全認證流程
- 系統引導和登錄控制
- 調整BIOS引導設置
- 更改GRUB引導參數
- 終端登錄安全控制
- 禁止root用戶登錄
- 禁止普通用戶登錄
- 弱口令檢測
- 弱命令檢查
- 弱口令實驗:通過john工具查看自己的密碼
- 四:端口掃描
- nmap實驗
系統安全及應用
賬戶安全控制
基本安全措施
系統賬號清理
一般除了手動創建賬號之外,還包括系統或安裝過程生成的其他賬號。除了其他賬號只是用來維護系統運作,啟動或保持服務,一般不允許登錄,常見的非登錄用戶包括bin,daemon,adm,lp,mail,nobody,apache,mysql,dbus,ftp,gdm,haldaemon等。
為了確保系統安全,這些用戶的登錄shell通常是/sbin/nologin,表示禁止終端登錄,應確保不被人為改動
[root@localhost ~]# grep "/sbin/nologin$" /etc/passwd bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin對長期不用的賬號進行鎖定(passwd ,usermod)
[root@localhost ~]# usermod -L tom 鎖定賬號 [root@localhost ~]# passwd -S tom 查看賬號狀態 tom LK 2020-06-21 0 99999 7 -1 (密碼已被鎖定。) [root@localhost ~]# usermod -U tom 解鎖賬號 [root@localhost ~]# passwd -S tom tom PS 2020-06-21 0 99999 7 -1 (密碼已設置,使用 SHA512 算法。)chattr–鎖定賬號配置文件
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow 鎖定文件 [root@localhost ~]# lsattr /etc/passwd /etc/shadow 查看鎖定的狀態 ----i----------- /etc/passwd ----i----------- /etc/shadow [root@localhost ~]# chattr -i /etc/passwd /etc/shadow 解鎖文件 [root@localhost ~]# lsattr /etc/passwd /etc/shadow 查看為解鎖狀態 ---------------- /etc/passwd ---------------- /etc/shadow 鎖定賬戶是無法登錄和刪除賬號,更改密碼 [root@localhost ~]# useradd zhang useradd:無法打開 /etc/passwd密碼安全控制( chage)
chage命令—設置密碼有效期限
為了降低密碼被猜出和暴力爆破的風險
[root@localhost ~]# vi /etc/login.defs 見下圖,對于未創建的用戶,使用此命令修改配置文件' PASS_MAX_DAYS 99999 密碼有效期無限大 PASS_MIN_DAYS 0 PASS_MIN_LEN 5 PASS_WARN_AGE 7[root@localhost ~]# chage -M 30 lisi 對于已創建的用戶,用這條命令'把最大天數9999改為30天,9999為無線大
要求用戶下次登錄時修改密碼
[root@localhost ~]# chage -d 0 mike 重新登錄一下 You must change your password now and login again! 更改用戶 mike 的密碼 。 為 mike 更改 STRESS 密碼。 (當前)UNIX 密碼:命令歷史,自動注銷
shell給用戶提供了極大的方便,但是歷史機制會給安全帶來隱患這里記錄條數由HISTSIZE控制,默認1000條,可以設置200條
root@localhost ~]# vi /etc/profile 對于未創建的用戶,使用此命令修改配置文件 ...省略部分內容 將其中的HISTSIZE=1000,修改為HISTSIZE=200 [root@localhost ~]# export HISTSIZE=200 該命令適用于當前用戶,及時成效注銷時自動清空命令歷史:
修改用戶宿主目錄中的~/.bash_logout文件,添加清空歷史命令的操作語句。即:當用戶注銷(退出已登錄的bash環境)時,所記錄的歷史命令將自動清空
[root@localhost ~]# vi .bash_logout history -c clearbash終端自動注銷
bash終端環境中,可以設置一個閑置超時時間,當超過指定時間沒有任何輸入時即自動注銷終端,這樣可以有效避免當管理員不在時其他人員對服務器的誤操作風險。閑置時間有變量TMOUT來控制,默認單位為秒
[root@localhost ~]# vi /etc/profile '適用于新登錄的用戶' ...中間省略內容 export TMOUT=20 '閑置時間設置為20s' [root@localhost ~]# export TMOUT=20 '適用于當前用戶'用戶切換與提權
大多數Linux服務器并不建議用戶直接以root用戶進行登錄。
linux 提供了su ,sudo 兩種命令
su命令主要用來切換用戶
sudo命令用來提升執行權限
su 命令 -切換用戶
使用su命令,可以切換為指定的另一個用戶,從而具有該用戶的所有權限
切換時需要對目標用戶的密碼進行驗證(從root用戶切換為其他用戶不需要)
[root@localhost ~]# su - root 上一次登錄:一 6月 22 19:38:36 CST 2020從 192.168.136.2pts/0 上 [root@localhost ~]# su - zhangsan root用戶切換不需要密碼 上一次登錄:三 7月 1 17:22:44 CST 2020pts/3 上 [root@localhost ~]# su - lisi 上一次登錄:三 7月 1 17:23:28 CST 2020pts/3 上限制用戶使用su命令的用戶
以減少有機會反復嘗試登錄密碼,將允許使用su命令的用戶加入wheel組
[root@localhost ~]# id mike 查看是否在wheel中 uid=1002(mike) gid=1004(mike) 組=1004(mike) [root@localhost ~]# gpasswd -a mike wheel 添加到wheel中 正在將用戶“mike”加入到“wheel”組中 [root@localhost ~]# id mike uid=1002(mike) gid=1004(mike) 組=1004(mike),10(wheel) [root@localhost ~]# vi /etc/pam.d/su ...省略部分內容 auth sufficient pam_roottok.so auth required pam_wheel.so use_uid '進入編輯,將此行開頭的#刪除,隨后wq退出即可[root@localhost ~]# su lisi [lisi@localhost /]$ su root 密碼: su: 拒絕權限 [root@localhost ~]# su mike [mike@localhost root]$ su root [root@localhost ~]# su mike [ mike@localhost root]$ id uid=1001( mike) gid=1001( mike) 組=1001( mike),10(wheel) 環境 在whell中可以直接登錄root =unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023sudo命令–提升執行權限
用過su命令可以非常方便的切換為另一個用戶,但前提條件是必須知道目標用戶的登錄密碼
對于生產環境中的Linux服務器,每多一個人知道特權密碼,其安全風險也就增加一分,而sudo命令就誕生了,既可以讓部分普通用戶擁有管理權限還可以不要root密碼
配置文件/etc/sudoers中添加
sudo機制的配置文件為/etc/sudoers,文件的默認權限是440,需要使用專門的visudo工具進行編輯。若使用vi編輯,保存時必須執行“:w!”命令強制操作,否則系統將提示為只讀文件而拒絕保存
授權配置包括用戶,主機,命令
[root@localhost ~]# visudo '或者使用vi /etc/sudoers 命令進入sudo配置文件' ...此處省略部分信息 root ALL=(ALL) ALL '發現root用戶擁有所有權限' ## Allows members of the 'sys' group to run networking, software, ## service management apps and more. # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS ## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL '發現wheel組中的用戶也擁有所有權限'認識了解pam_wheel認證模塊
啟用pam_wheel認證以后,未加入到wheel組內的其他用戶將無法使用su命令 嘗試進行切換時將會按照“拒絕權限”來處理,以減少有機會反復嘗試登錄密碼
[root@localhost ~]# vi /etc/pam.d/su ...省略部分內容 #auth required pam_wheel.so use_uid '進入編輯,將此行開頭的#刪除,隨后wq退出即可' su: 拒絕權限 [wangwu@localhost ~]$ su - mike '無法使用su命令' 密碼: su: 拒絕權限PAM安全認證
su 命令的隱患
限制用戶使用su命令的用戶,以減少有機會反復嘗試登錄密碼,將允許使用su命令的用戶加入wheel組
PAM認證原理
PAM認證一般遵循的順序:Service(服務)→PAM(配置文件)→pam_*.so(.so 后綴代表模塊文件)
PAM認證首先要確定哪一項服務,然后加載相應的PAM的配置文件(位于/etc/pam.d下),最后調用認證文件(位于/lib/security下)進行安全認證
PAM認證的構成
查看su的PAM配置文件:cat /etc/pam.d/su
每一行都是一個獨立的認證過程
每一行可以區分為三個字段(認證類型,控制類型,PAM模塊及其參數)
[root@localhost ~]# cat /etc/pam.d/su #%PAM-1.0 auth sufficient pam_rootok.so # Uncomment the following line to implicitly trust users in the "wheel" group. #auth sufficient pam_wheel.so trust use_uid # Uncomment the following line to require a user to be in the "wheel" group. auth required pam_wheel.so use_uid auth substack system-auth auth include postlogin account sufficient pam_succeed_if.so uid = 0 use_uid quiet account include system-authPAM安全認證流程
控制類型也可以稱作Control Flags,用于PAM驗證類型的返回結果
1.required驗證失敗時仍然繼續,但返回Fail
2.requisite驗證失敗則立即結束整個驗證過程,返回Fail
3.sufficient驗證成功則立即返回,不在繼續,否則忽略結果并繼續
4.optional不用于驗證,只顯示信息(通常用于session(會話)類型)
系統引導和登錄控制
調整BIOS引導設置
將第一引導設備設為當前系統所在硬盤
禁止從其他設備(光盤,U盤,網絡)引導系統
將安全級別設為setup,并設置管理員密碼
更改GRUB引導參數
使用grub2-mkpasswd-pbkdf2生成秘鑰
修改/etc/grub.d/00_header文件中,添加密碼記錄
生成新的grub.cfg配置文件
localhost ~]# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak '將grub配置文件備份' [root@localhost ~]# cp /etc/grub.d/00_header /etc/grub.d/00_header.bak '將/etc/grub.d/00_header文件也備份一下' [root@localhost ~]# grub2-mkpasswd-pbkdf2 '開始加密自己的密碼' 輸入口令: '例如輸入 123123' Reenter password: '重復輸入123123' PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.E95B023DE28491A5F5A34B18C5C6CE9F74695A15FB17F48E04630B04DCB8E9A21EE3322C02311DEF3049654B5F64DD7A455BDF707FD304F4DB6ABC51A0F12321.08CF42CC9225D539DB130989F5445BDE2995B3691CE5806F075CBB51AD3084BA5E9B7C04EFC9D5BEEA8782CCDAA3105FA45AD9F534B5473FD91EB20556453EEB 'is 后面的內容就是通過加密算法將123123生成的加密密碼' [root@localhost ~]# vi /etc/grub.d/00_header '編輯配置文件頭文件' '將以下內容輸入進去,剛剛生成的加密密碼也輸入進去' cat << EOF set superusers="root" passwd_pbkdf2 root grub.pbkdf2.sha512.10000.E95B023DE28491A5F5A34B18C5C6CE9F74695A15FB17F48E04630B04DCB8E9A21EE3322C02311DEF3049654B5F64DD7A455BDF707FD304F4DB6ABC51A0F12321.08CF42CC9225D539DB130989F5445BDE2995B3691CE5806F075CBB51AD3084BA5E9B7C04EFC9D5BEEA8782CCDAA3105FA45AD9F534B5473FD91EB20556453EEB EOF[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg '將生成的配置文件覆蓋掉原來的grub.cfg配置文件' Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-b02d514a7e824ce7b6ea15214bb43466 Found initrd image: /boot/initramfs-0-rescue-b02d514a7e824ce7b6ea15214bb43466.img done [root@localhost ~]# init 6 '重啟'終端登錄安全控制
禁止root用戶登錄
[root@192 ~]# vi /etc/securetty vc/11 tty1 tty2 tty3 tty4 #tty5 '禁止終端tty5登錄,在其前方輸 入#即可' #tty6 '禁止終端tty6登錄,在其前方輸入#即可'禁止普通用戶登錄
維護時候不希望有新的用戶登錄
建立/etc/nologin文件
刪除nologin文件或重啟后即恢復正常
[root@localhost ~]# touch /etc/nologin '禁止普通用戶登錄' [root@localhost ~]# rm -rf /etc/nologin '取消上述登錄限制' '一般做維護的時候使用(只有root用戶可以登錄,其他用戶不可登錄)'弱口令檢測
弱命令檢查
-
一款密碼分析工具,支持字典式的暴力破解
-
通過對shadow文件的口令分析,可以檢測密碼強度
弱口令實驗:通過john工具查看自己的密碼
[root@localhost ~]# ll 總用量 5336 -rw-------. 1 root root 1423 6月 17 01:34 anaconda-ks.cfg -rw-r--r--. 1 root root 5450412 6月 22 23:56 john-1.8.0.tar.gz -rw-r--r--. 1 root root 2158 6月 22 23:58 John BUG ?????????Loaded 5 password hashes with 5 different salts (crypt, generic crypt(3) [64]).txt ----------. 1 root root 867 6月 23 10:08 shadow.txt [root@localhost ~]# tar zxvf john-1.8.0.tar.gz john-1.8.0/README john-1.8.0/doc/CHANGES john-1.8.0/doc/CONFIG john-1.8.0/doc/CONTACT john-1.8.0/doc/COPYING john-1.8.0/doc/CREDITS john-1.8.0/doc/EXAMPLES john-1.8.0/doc/EXTERNAL john-1.8.0/doc/FAQ john-1.8.0/doc/INSTALL [root@localhost 111]# cd /root/john-1.8.0/ [root@localhost john-1.8.0]# ls '查看壓縮包' doc README run src 'doc是說明文檔,README是說明書,run是腳本,src是源碼文件' 接下來是手工編譯安裝的過程 [root@localhost src]# cd src 源碼中編輯 [root@localhost src]# yum install gcc gcc-c++ -y [root@localhost src]# make linux-x86-64 'make編譯' [root@localhost john-1.8.0]# cd run [root@localhost run]# ls '此時已經有john腳本' ascii.chr john lm_ascii.chr makechr relbench unique digits.chr john.conf mailer password.lst unafs unshadow [root@localhost run]# ./john /etc/passwd /etc/shadow '運行腳本查看/etc/passwd /etc/shadow文件' 123123 (zhangsan) 已經出來密碼 1g 0:00:00:40 0% 2/3 0.02488g/s 228.7p/s 252.6c/s 252.6C/s leslie..boston四:端口掃描
一款強大的網絡掃描,安全檢測工具
可以探測局域網中那些主機在線,或者某臺主機中開了那些端口
NMAP的掃描語法nmap [掃描類型] [選項] <掃描目標…>常用的掃描類型 -sS:tcp syn掃描-sF:tcp fin掃描-P0:跳過ping掃描-sT:TCP連接掃描-sU:UDP端口掃描,查看主機提供哪些UDP-sP:類似于ping,查看主機是否在線nmap實驗
[root@localhost run]# yum install nmap -y [root@localhost ~]# nmap -sP 192.168.136.0/24Starting Nmap 6.40 ( http://nmap.org ) at 2020-06-23 11:11 CST Nmap scan report for 192.168.136.1 Host is up (0.00016s latency). MAC Address: 00:50:56:F6:EF:9A (VMware) Nmap scan report for 192.168.136.2 Host is up (0.00014s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap scan report for 192.168.136.254 Host is up (-0.11s latency). MAC Address: 00:50:56:F9:0A:A8 (VMware) Nmap scan report for 192.168.136.158 Host is up. Nmap done: 256 IP addresses (4 hosts up) scanned in 6.32 secon [root@localhost ~]# nmap -sT 192.168.136.158 查看tcp端口Starting Nmap 6.40 ( http://nmap.org ) at 2020-06-23 11:12 CST Nmap scan report for 192.168.136.158 Host is up (0.0012s latency). Not shown: 999 closed ports PORT STATE SERVICE 22/tcp open ssh8.136.254
Host is up (-0.11s latency).
MAC Address: 00:50:56:F9:0A:A8 (VMware)
Nmap scan report for 192.168.136.158
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 6.32 secon
[root@localhost ~]# nmap -sT 192.168.136.158 查看tcp端口
Starting Nmap 6.40 ( http://nmap.org ) at 2020-06-23 11:12 CST
Nmap scan report for 192.168.136.158
Host is up (0.0012s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh
總結
以上是生活随笔為你收集整理的系统安全及应用(账户安全控制,系统引导和登录,弱口令检测和登录控制,PAM认证,端口扫描,用户切换和提权)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 杀手6:内存极限优化,让行动更轻松
- 下一篇: 搭建AWStats日志分析系统