Linux——系統安全及應用
目錄
一、賬號安全控制
1、基本安全措施
(1)系統賬號清理
(2)密碼安全控制
(3)命令歷史、自動登出
二、系統引導和登入控制
1、開關機安全控制
2、終端及登入控制
三、弱口令檢測,埠掃描
1、弱口令檢測
2、網路掃描——NMAP
一、賬號安全控制
隨著資訊科技的快速發展,系統安全成為我們日常生活和工作中不可或缺的一部分。主要包括了賬號安全控制、系統引導和登入控制、弱口令檢測以及埠掃描等多個方面,為我們提供了一系列實用的安全措施和策略。
1、基本安全措施
(1)系統賬號清理
在系統中,除了使用者手動創造的各種賬號之外,還包括隨系統或程式安裝過程而生成的其他大量賬號。除了超級使用者 root 之外,其他大量賬號只是用來維護系統運作,啟動或保持服務程序,一般是不允許登入的,因此也稱為非登入使用者賬號 。如下所示:
[root@localhost ~]# grep "/sbin/nologin$" /etc/passwdbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:1p:/var/spool/lpd:/sbin/nologinmail:x:8:12:mail:/var/spool/mail:/sbin/nologin . //省略部分內容
各種非登入使用者賬號中,還有相當一部分是很少用到的,如 games。這些使用者賬號可以視為冗餘賬號,直接刪除即可。除此之外,還有一些隨應用程式安裝的使用者賬號,若解除安裝程式以後未能自動刪除,則需要管理員手動進行清理。 對於 Linux 伺服器中長期不用的使用者賬號,若無法確定是否應該刪除,可以暫時將其鎖定。例如,若要鎖定、解鎖名為 zhangsan 的使用者賬號,可以執行以下操作(passwd、usermod 命令都可用來鎖定。解鎖賬號)。
[root@localhost ~]# usermod -L zhangsan //鎖定賬號[root@localhost ~]# passwd -s zhangsan //檢視賬號狀態zhangsan LK 2017-08-240 99999 7 -1(密碼已被鎖定。)[root@localhost ~]# usermod -U zhangsan //解鎖賬號[root@localhost ~]# passwd S zhangsanzhangsan ps 2017-08-24 0 99999 7 -1(密碼已設定,使用 SHA512 演算法。)
如果伺服器中的使用者賬號已經固定,不再進行更改,還可以採取鎖定賬號配置檔案的方法。使用chattr 命令,分別結合“+i”“-i”選項來鎖定、解鎖檔案,使用 1sattr 命令可以檢視檔案鎖定情況。
[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
在賬號檔案被鎖定的情況下,其內容將不允許變更,因此無法新增、刪除賬號,也不能更改使用者的密碼、登入 She11、宿主目錄等屬性資訊。
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow[root@localhost ~]# useradd billgateuseradd:無法開啟/etc/passwd
(2)密碼安全控制
在不安全的網路環境中,為了降低密碼被猜出或被暴力破解的風險,使用者應養成定期更改密碼的習慣,避免長期使用同一個密碼。管理員可以在伺服器端限制使用者密碼的最大有效天數,對於密碼己過期的使用者,登入時將被要求重新設定密碼,否則將拒絕登入。 執行以下操作可將密碼的有效期設為 30 天(chage 命令用於設定密碼時限)
[root@localhost ~]# wi /etc/login.defs… //省略部分內容/適用於新建的使用者PASS MAX DAYS 38[root@localhost ~]# chage -M 30 lisi //適用於已有的 lisi 使用者
在某些特殊情況下,如要求批次建立的使用者初次登入時必須自設密碼,根據安全規劃統一要求所有使用者更新密碼等,可以由管理員執行強制策略,以便使用者在下次登入時必須更改密碼。例如,執行以下操作可強制要求使用者 zhangsan 下次登入時重設密碼。
[root@localhost ~]# chage -d 8 zhangsan[root@localhost ~]#Localhost login: zhangsan //zhangsan 使用者登入系統password:You are required to change your password immediately (root enforced)Changing password for zhangsan.//強制修改 zhangsan 的密碼(current)UNIX password:New password:Retype new password:
(3)命令歷史、自動登出
shell環境的命令歷史機制為使用者提供了極大的便利,但另一方而也給使用者帶來了潛在的風險。只要獲得使用者的命令歷史檔案,該使用者的命令操作過程將會一覽無餘,如果曾經在命令列輸入明文的密碼,則無意之中伺服器的安全壁壘又多了一個缺口。 Bash 終端環境中,歷史命令的記錄條數由變數 HISTSIZE 控制,預設為 1000 條。透過修改/etc/profile 檔案中的 HISTSIZE 變數值,可以影響系統中的所有使用者。
[root@localhost ~]# vi /etc/profile //適用於新登入使用者…… //省略部分內容HISTSIZE 200[root@localhost ~]#export HISTSIZE=288 //適用於當前使用者
除此之外,還可以修改使用者宿主目錄中的~/.bash_logout 檔案,新增清空歷史命令的操作語句。這樣,當用戶退出已登入 Bash 環境以後,所記錄的歷史命令將自動清空。
[root@localhost ~]# wi ~/.bash logouthistory -cclear
Bash 終端環境中,還可以設定一個閒置超時時間,當超過指定的時間沒有任何輸入時即自動登出終端,這樣可以有效避免當管理員不在時其他人員對伺服器的誤操作風險。閒置超時由變數 TMOUT 來控制,預設單位為秒(s)。
[root@localhost ~]# vi /etc/profile //適用於新登入使用者… //省略部分內容export TMOUT=300[root@localhost ~]# export TMOUT=300 //適用於當前使用者
需要注意的是,當正在執行程式程式碼編譯、修改系統配置等耗時較長的操作時,應避免設定 TMOUT 變數。必要時可以執行“unset TMOUT”命令取消 TMOUT 變數設定。
二、系統引導和登入控制
在網際網路環境中,大部分伺服器是透過遠端登入的方式來進行管理的,而本地引導和終端登入過程往往容易被忽視,從而留下安全隱患。特別是當伺服器所在的機房環境缺乏嚴格、安全的管控制度時,如何防止其他使用者的非授權介入就成為必須重視的問題。
1、開關機安全控制
對於伺服器主機,其物理環境的安全防護是非常重要的,不僅要保持機箱完好、機櫃鎖閉,還要嚴格控制機房的人員進出、硬體裝置的現場接觸等過程。在開關機安全控制方面,除了要做好物理安全防護以外,還要做好系統本身的一些安全措施。
(1)調整BIOS引導設定
-
• 將第一優先引導裝置(First Boot Device)設為當前系統所在磁碟; -
• 禁止從其他裝置引導系統,對應的項為“Disabled”; -
• 將BIOS的安全級別改為“ setup ”,並設定好管理密碼,以防止未授權的修改。
(2)限制更改GRUB引導引數 在之前的課程中介紹過透過修改 GRUB 引導引數,對一些系統問題進行修復。從系統安全的角度來看,如果任何人都能夠修改 GRUB 引導引數,對伺服器本身顯然是一個極大的威脅。為了加強對引導過程的安全控制,可以為 GRUB 選單設定一個密碼,只有提供正確的密碼才被允許修改引導引數。 為 GRUB 選單設定的密碼建議採用“grub2-mkpasswd-pbkdf2”命令生成,表現為經過 PBKDF2 演算法加密的字串,安全性更好。生成密碼後在/etc/grub.d/00 header 配置檔案中,新增對應的使用者。密碼等配置,具體新增內容如下所示。
[root@localhost ~]# grub2-mkpasswd-pbkdf2 //根據提示指定密碼輸入密碼:重新輸入口令:您的密碼的 PBKDF2 雜湊為 grub.pbkdf2.sha512.10000.008E820A9C9582F74076E747CF75F1E642C21CFA6B555DD2DF61D0A90DF98DAAFA8E83F3FC188BDE774C4B28ED158D2C274E9E4B24E91AFAE763F0FF6CE467AF,19BE9E44CB15605F64B80BFE6BA04428ABB29FF9CD1AA2D051DA20752600B898F8C49653DA24F58E39CBA1E5D798994BBB9A25B0B6EF12FFC9B26F17864C5871[root@localhost ~]# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak[root@localhost ~]#t cp /etc/grub.d/00 header /etc/grub.d/00 header.bak[root@localhost ~]# vim /etc/grub.d/0l users#!/bin/sh -ecat << EOFset superusers="root"export superuserspasswordpbkdf2rootgrub.pbkdf2.sha512.10000.008E820A9C9582F74076E747CF75F1E642C21CFA6B555DD2DF61D0A90DF98DAAFA8E83F3FC188BDE774C4B28ED158D2C274E9E4B24E91AFAE763F0FF6CE467AF,19BE9E44CB15605F64B80BFE6BA04428ABB29FF9CD1AA2D051DA20752600B898F8C49653DA24F58E39CBA1E5D798994BBB9A25B0B6EF12FFC9B26F17864C5871EOF
使用 grub2-mkconfig 命令生成新的 grub.cfg 配置檔案。
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg //生成新的 grub.cfg 檔案Generating grub configuration file ... Found liunx image:/boot/vmlinuz-3.10.0-514.e17.x86_64Found initrd image: /boot/initramfs-3.10,0-514.e17.x86 64.imgFound linux image: /boot/vmlinuz-0-rescue-b15df1eb8205483f9f70c79709810abcFound initrd image:/boot/initramfs-0-rescue-b15df1eb8205483f9f70c79709810abc.imgdone
2、終端及登入控制
在Linux伺服器中,預設開啟了六個tty終端,允許任何使用者進行本地登入。
(1)禁止普通使用者登入
當伺服器正在進行備份或除錯等維護工作時,可能不希望再有新的使用者登入系統。這時候,只需要簡單地建立/etc/nologin 檔案即可。login 程式會檢査/etc/nologin 檔案是否存在,如果存在,則拒絕普通使用者登入系統(root 使用者不受限制)。
`[root@localhost ~]# touch /etc/nologin`
此方法實際上是利用了 shutdown 延遲關機的限制機制,只建議在伺服器維護期間臨時使用。當手動刪除/etc/nologin 檔案或者重新啟動主機以後,即可復正常。
三、弱口令檢測,埠掃描
1、弱口令檢測
在 Internet 環境中,過於簡單的口令是伺服器面臨的最大風險。儘管大家都知道設定一個更長、更復雜的口令會更加安全,但總是會有一些使用者因貪圖方便而採用簡單、易記的口令字串。對於任何一個承擔著安全責任的管理員,及時找出這些弱口令賬號是非常必要的,這樣便於採取進一步的安全措施(如提醒使用者重設更安全的口令) John the Ripper 是一款開源的密碼破解工具,能夠在已知密文的情況下快速分析出明文的密碼字串,支援 DES、MD5 等多種加密演算法,而且允許使用密碼字典(包含各種密碼組合的列表檔案)來進行暴力破解。透過使用 John the Ripper,可以檢測 Linux/UNIX 系統使用者賬號的密碼強度。
(1)下載並安裝John the Ripper
以原始碼包 john-1.8.0.tar.gz 為例,解壓後可看到三個子目錄–doc、run、src,分別表示手冊文件、執行程式、原始碼檔案,除此之外還有一個連結的說明檔案 README。其中,doc 目錄下包括 README、INSTALL、EXAMPLES 等多個文件,提供了較全面的使用指導。步驟如下:
[root@localhost ~]# tar zxf john-1.8.0.tar.gz[root@localhost ~]# cd john-1.8.0[root@localhost john-1.8.0]# ls -ld* drwxr-xr-x 2 root root 208 Sep 14 21:43 doclrwxrwxrwx 1 root root 10 May 29 2013 README ->dOC/READMEdrwxr-xr-x 2 root root 143 sep 14 21:43 rundrwxr-xr-x2 root root 4096 Sep 14 21:43 src[root@localhost john-1.8.0]# ls doc/CHANGES CONTACT CREDITS EXTERNAL INSTALL MODES READMECONFIG COPYING EXAMPLES FAQ LICENSE OPTIONS RULES
切換到 src 子目錄並執行“make clean linux-x86-64”命令,即可執行編譯過程。若單獨執行 make命令,將列出可用的編譯操作、支援的系統型別。編譯完成以後,run 子目錄下會生成一個名為 john 的可執行程式。
[root@localhost john-1.8.0]# cd src/[root@localhost src]# make clean linux-x86-64 … //省略編譯資訊[root@localhost src]#ls ../run/john //確認已生成可執行程式 john../run/john
John the Ripper 不需要特別的安裝操作,編譯完成後的 run 子目錄中包括可執行程式 john 及相關的配置檔案、字典檔案等,可以複製到任何位置使用。
(2)檢測弱口令賬號
在安裝有 John the Ripper 的伺服器中,可以直接對/etc/shadow 檔案進行檢測。對於其他 Linux伺服器,可以對 shadow 檔案進行復制,並傳遞給 john 程式進行檢測。只需執行 run 目錄下的 john 程式,將待檢測的 shadow 檔案作為命令列引數,就可以開始弱口令分析了。步驟如下:
[root@localhost src]# cp /etc/shadow /root/shadow.txt //準備待破解的密碼檔案[root@localhost src]#cd ../run[root@localhost run]# ./john /root/shadow.txt //執行暴力破解Loaded 6 password hashes with 6 different salts (crypt, generic crypt(3)[?/64])Remaining 4 password hashes with 4 different saltsPress 'g'or ctrl-c to abort, almost any other key for statuszhangsan(zhangsan)nwod-b(b-down)123456(kadmin)a1b2c3(tsengyia)iloveyou(lisi)… //按 Ctrl+C 組合鍵中止後續過程
在執行過程中,分析出來的弱口令賬號將即時輸出,第一列為密碼字串,第二列的括號內為相應的使用者名稱(如使用者 zhangsan 的密碼為“123456”)。預設情況下,john 將針對常見的弱口令設定特點,嘗試破解已識別的所有密文字串,如果檢測的時間太長,可以按 Ctr1+C組合鍵強行終止。破解出的密碼資訊自動儲存到 john.pot 檔案中,可以結合“–show”選項進行檢視。
[root@localhost run]#./john--show /root/shadow.txt //檢視已破解出的賬戶列表kadmin:123456:15114:0:99999:7:::zhangsan:zhangsan:15154:0:99999:7:::tsengyia:a1b2c3:15154:0:99999:7:::b-down:nwod-b:15146:0:99999:7:::lisi:iloveyou:15154:0:99999:7:::5 password hashes cracked,3 lef
(3)使用密碼字典檔案
對於密碼的暴力破解,字典檔案的選擇很關鍵。只要字典檔案足夠完整,密碼破解只是時間上的問題。 John the Ripper 預設提供的字典檔案為 password.lst,其列出了 3000 多個常見的弱口令。如果有必要,使用者可以在字典檔案中新增更多的密碼組合,也可以直接使用更加完整的其他字典檔案。執行john 程式時,可以結合“–wordlist=”選項來指定字典檔案的位置,以便對指定的密碼檔案進行暴力分析。
[root@localhost run]# :> john.pot //清空已破解出的賬戶列表,以便重新分析[root@localhost run]# ./john --wordlist=./password.lst /root/shadow.txtLoaded 6 password hashes with 6 different salts (crypt, generic crypt(3)[?/64])Press 'g'or ctrl-c to abort, almost any other key for status123456(jerry)123456 (kadmin)a1b2c3(tsengyia)iloveyou(lisi)4g 0:00:00:28 100% 0.1412g/s 125.2p/s 270.8c/s 270.8C/s !@#$%..ssSUse the "-show" option to display all of the cracked passwords reliablySession completed
2、網路掃描——NMAP
NMAP 是一個強大的埠掃描類安全評測工具。NMAP 被設計為檢測眾多主機數量的巨大網路,支援 ping 掃描、多埠檢測、0S 識別等多種技術。使用 NMAP 定期掃描內部網路,可以找出網路中不可控的應用服務,及時關閉不安全的服務,減小安全風險。
(1)安裝NAMP軟體
`[root@localhost ~]#dnf -y install nmap`
(2)掃描語法及型別
NMAP的掃描程式位於/usr/bin/nmap目錄下,基本命令格式如下:
`nmap [掃描型別][選項] <掃描目標...>`
其中,掃描目標可以是主機名、IP 地址或網路地址等,多個目標以空格分隔;常用的選項有“-p”“-n”分別用來指定掃描的埠、停用反向 DNS 解析(以加快掃描速度);掃描型別決定著檢測的方式,也直接影響掃描的結果。 常用的幾種掃描型別如下:
-
• -SS,TCP SYN 掃描(半開掃描):只向目標發出 SN 資料包,如果收到 SYN/ACK 響應包就認為目標埠正在監聽,並立即斷開連線:否則認為目標埠並未開放。 -
• -ST,TCP 連線掃描:這是完整的 TCP掃描方式,用來建立一個 TCP 連線,如果成功則認為目標埠正在監聽服務,否則認為目標埠並未開放。 -
• -SF,TCP FIN 掃描:開放的埠會忽略這種資料包,關閉的埠會回應 RST 資料包。許多防火牆只對 SYN 資料包進行簡單過濾,而忽略了其他形式的 TCP 攻擊包。這種型別的掃描可間接檢測防火牆的健壯性。 -
• -sU,UDP 掃描:探測目標主機提供哪些 UDP 服務,UDP 掃描的速度會比較慢。 -
• -SP,ICMP 掃描:類似於 ping 檢測,快速判斷目標主機是否存活,不做其他掃描。 -
• -P0,跳過 ping 檢測:這種方式認為所有的目標主機是存活的,當對方不響應 ICMP 請求時,使用這種方式可以避免因無法 ping 通而放棄掃描。
連結:https://blog.csdn.net/Lemon__ing/article/details/147387029?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522abfbad942bec17dda2939f227e089ede%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=abfbad942bec17dda2939f227e089ede&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-147387029-null-null.142^v102^pc_search_result_base6&utm_term=Linux%20%E5%AE%89%E5%85%A8&spm=1018.2226.3001.4187
(版權歸原作者所有,侵刪)
文末福利
就目前來說,傳統運維衝擊年薪30W+的轉型方向就是SRE&DevOps崗位。
為了幫助大家早日擺脫繁瑣的基層運維工作,給大家整理了一套高階運維工程師必備技能資料包,內容有多詳實豐富看下圖!
共有 20 個模組





······



以上所有資料獲取請掃碼
備註:最新運維資料

100%免費領取
(後臺不再回復,掃碼一鍵領取)