一、賬號安全控制
隨著信息技術的快速發展,系統安全成為我們日常生活和工作中不可或缺的一部分。主要包括了賬號安全控制、系統引導和登錄控制、弱口令檢測以及端口掃描等多個方面,為我們提供了一系列實用的安全措施和策略。
1、基本安全措施
(1)系統賬號清理
在系統中,除了用戶手動創造的各種賬號之外,還包括隨系統或程序安裝過程而生成的其他大量賬號。除了超級用戶 root 之外,其他大量賬號只是用來維護系統運作,啟動或保持服務進程,一般是不允許登錄的,因此也稱為非登錄用戶賬號 。如下所示:
[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:1p:/var/spool/lpd:/sbin/nologin mail: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 zhangsan zhangsan 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 billgate useradd:無法打開/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 arerequiredto change your passwordimmediately(root enforced) Changing passwordforzhangsan.//強制修改 zhangsan 的密碼 (current)UNIX password: New password: Retypenewpassword:
(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 logout history -c clear
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 -e cat << EOF set superusers="root" export superusers passwordpbkdf2rootgrub.pbkdf2.sha512.10000.008E820A9C9582F74076E747CF75F1E642C21CFA6B555DD2DF61D0A90DF98DAAFA8E83F3FC188BDE774C4B28ED158D2C274E9E4B24E91AFAE763F0FF6CE467AF,19BE9E44CB15605F64B80BFE6BA04428ABB29FF9CD1AA2D051DA20752600B898F8C49653DA24F58E39CBA1E5D798994BBB9A25B0B6EF12FFC9B26F17864C5871 EOF
使用 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_64 Found initrd image: /boot/initramfs-3.10,0-514.e17.x86 64.img Found linux image: /boot/vmlinuz-0-rescue-b15df1eb8205483f9f70c79709810abc Found initrd image:/boot/initramfs-0-rescue-b15df1eb8205483f9f70c79709810abc.img done
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 doc lrwxrwxrwx 1 root root 10 May 29 2013 README ->dOC/README drwxr-xr-x 2 root root 143 sep 14 21:43 run drwxr-xr-x2 root root 4096 Sep 14 21:43 src [root@localhost john-1.8.0]# ls doc/ CHANGES CONTACT CREDITS EXTERNAL INSTALL MODES README CONFIG 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 salts Press 'g'or ctrl-c to abort, almost any other key for status zhangsan(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 //查看已破解出的賬戶列表kadmin1511499999:: zhangsan1515499999:: tsengyia1515499999:: b-down1514699999:: lisi1515499999:: 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.txt Loaded 6 password hashes with 6 different salts (crypt, generic crypt(3)[?/64]) Press 'g'or ctrl-c to abort, almost any other key for status 123456(jerry) 123456 (kadmin) a1b2c3(tsengyia) iloveyou(lisi) 4g 000:28 100% 0.1412g/s 125.2p/s 270.8c/s 270.8C/s !@#$%..ssS Use the "-show" option to display all of the cracked passwords reliably Session 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
-
Linux
+關注
關注
87文章
11456瀏覽量
212759 -
服務器
+關注
關注
12文章
9681瀏覽量
87267 -
命令
+關注
關注
5文章
726瀏覽量
22669
原文標題:別等服務器被入侵才學安全!Linux系統防護全攻略
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
VPN在信息系統安全等級保護中的應用

嵌入式產品如何進行安全防護
Linux必學的系統安全命令
確保電力系統數據網絡安全的電力二次系統安全防護

評論