1. 程式人生 > 其它 >網路安全實驗二:4.Linux伺服器通用安全加固指南

網路安全實驗二:4.Linux伺服器通用安全加固指南

本實驗參考資料:

通用CentOS6伺服器安全配置指南:http://segmentfault.com/a/1190000002532945

讓Linux更安全,第3部分:加固系統:http://www.ibm.com/developerworks/cn/linux/l-seclnx3/

Linux磁碟配額:http://hetianlab.com/expc.do?w=exp_ass&ec=ECID172.19.104.182014120311052400001

深度解析CentOS通過日誌反查入侵:http://linux.it.net.cn/CentOS/safe/2014/0429/985.html

步驟一:基本系統安全

1.保護引導過程(以Grub引導為例)

在/etc/inittab中新增sp:S:respawn:/sbin/sulogin,以確保當切換到單

防止使用者使用Ctrl-Alt-Del進行重新引導:

在RHEL6.X和CentOS6.X下,該熱鍵的行為由'/etc/init/control-alt-delete.conf'控制。

註釋掉原來的改成:exec/usr/bin/logger-pauthpriv.notice-tinit"Ctrl-Alt-Delwaspressedandignored",這個配置會在每次按下Ctrl-Alt-Del時輸出日誌。

小提示:在終端登入的情況下,看不到效果,只有在機器面前,按下鍵盤上的Ctrl+Alt+del鍵,才會在/var/log/message裡面看到輸出日誌

2、關閉不使用的服務

首先檢視哪些服務是開啟的:

關閉郵件服務,使用公司郵件伺服器:

關閉nfs服務及客戶端:

當然還有其他的,根據你伺服器的實際情況來關閉不必要的服務。

3、增強特殊檔案許可權:

給下面的檔案加上不可更改屬性,從而防止非授權使用者獲得許可權。

注意:執行以上chattr許可權修改之後,就無法新增刪除使用者了。在後面的實驗過程中,如果修改不了上面設定過的檔案,記得取消只讀許可權chattr-i。

如果再要新增刪除使用者,需要先取消上面的設定,等使用者新增刪除完成之後,再執行上面的操作,例如取消只讀許可權chattr-i/etc/passwd。(記得重新設定只讀)

4、強制實行配額和限制:

LinuxPAM(插入式認證模組,PluggableAuthenticationModules)可以強制實行一些實用的限制,在/etc/security/limits.conf檔案中對此進行配置。

謹記,這些限制適用於單個對話。您可以使用maxlogins來控制總額限制。limits.conf中的條目有如下結構:username|@groupnametyperesourcelimit。

為了與username區別,groupname之前必須加@。型別必須是soft或者hard。軟限制(soft-limit)可以被超出,通常只是警戒線,而硬限制(hard-limit)不能被超出。resource可以是下面的關鍵字之一:

core-限制核心檔案的大小(KB)

data-最大資料大小(KB)

fsize-最大檔案大小(KB)

memlock-最大鎖定記憶體地址空間(KB)

nofile-開啟檔案的最大數目

rss-最大持久設定大小(KB)

stack-最大棧大小(KB)

cpu-以分鐘為單位的最多CPU時間

nproc-程序的最大數目

as-地址空間限制

maxlogins-此使用者允許登入的最大數目

下面的程式碼示例中,所有使用者每個會話都限制在10MB,並允許同時有四個登入。第三行禁用了每個人的核心轉儲。第四行除去了使用者bin的所有限制。ftp允許有10個併發會話(對匿名ftp帳號尤其實用);managers組的成員的程序數目限制為40個。developers有64MB的memlock限制,wwwusers的成員不能建立大於50MB的檔案。

要啟用這些限制,您需要在/etc/pam.d/login底部新增下面一行:sessionrequired/lib/security/pam_limits.so。

要為檔案系統啟用配額,您必須在/etc/fstab中為相應的那行新增一個選項。使用usrquota和grpquota來啟用使用者配額和組配額,像下面這樣:

然後,使用mount-a-oremount重新掛載相應的檔案系統,來啟用剛才新增的選項;然後使用quotacheck-cugvm建立一個二進位制配額檔案,其中包含了機器可讀格式的配額配置。這是配額子系統要操作的檔案。然後使用edquota-uusername為具體的使用者配額。

如果對磁碟配額不瞭解可以學習參考資料裡面的“Linux磁碟配額”實驗。

步驟二:使用者安全 1.禁用不使用的使用者

注意:不建議直接刪除,當你需要某個使用者時,自己重新新增會很麻煩。也可以usermod-L或passwd-luser鎖定。

示例:

註釋的使用者名稱:

註釋掉的組:

2、ssh登陸安全

(1)修改ssh的預設埠22,改成如20002這樣的較大埠會大幅提高安全係數,降低ssh破解登入的可能性。(注意:本實驗環境不允許修改ssh埠,否則會造成服務斷開)

找到SSh服務配置檔案路徑一般都是在/etc/ssh這個目錄下面sshd_config這個檔案,在“#Port22”這一行下面新增一行,內容為port埠號。

然後重啟ssh服務即可。

(2)只允許wheel使用者組的使用者su切換(這裡只是舉例,不一定要用這個使用者組名字)

其他使用者切換root,即使輸對密碼也會提示su:incorrectpassword

(3)登入超時(本實驗環境不允許這樣操作!!!)

使用者線上5分鐘無操作則超時斷開連線,在/etc/profile中新增:

(4) 禁止root直接遠端登入(本實驗環境不允許這樣操作!!!)

(5)限制登入失敗次數並鎖定

在/etc/pam.d/login後新增:

登入失敗5次鎖定180秒,根據需要設定是否包括root。

3、減少history命令記錄

執行過的歷史命令記錄越多,從一定程度上講會給維護帶來簡便,但同樣會伴隨安全問題。

vi/etc/profile

找到HISTSIZE=1000改為HISTSIZE=50。

執行 source /etc/profile生效

或每次退出時清理history命令:history–c。

步驟三:網路安全

1、禁用ipv6

IPv6是為了解決IPv4地址耗盡的問題,但我們的伺服器一般用不到它,反而禁用IPv6不僅僅會加快網路,還會有助於減少管理開銷和提高安全級別。以下幾步在CentOS上完全禁用ipv6。

禁止載入IPv6模組:

讓系統不載入ipv6相關模組,這需要修改modprobe相關設定檔案,為了管理方便,我們新建設定檔案/etc/modprobe.d/ipv6off.conf,內容如下:

禁用基於IPv6網路,使之不會被觸發啟動:

禁用網絡卡IPv6設定,使之僅在IPv4模式下執行:

關閉ip6tables:

重啟系統,驗證是否生效:

如果沒有任何輸出就說明IPv6模組已被禁用,否則被啟用。

2、防止一般網路攻擊

網路攻擊不是幾行設定就能避免的,以下都只是些簡單的將可能性降到最低,增大攻擊的難度但並不能完全阻止。

(1)禁ping

阻止ping如果沒人能ping通您的系統,安全性自然增加了,可以有效的防止ping洪水。為此,可以在/etc/rc.d/rc.local檔案中增加如下一行:

注意 1 後面是有空格的

或使用iptable禁ping,當然前提是你啟用了iptables防火牆。

(2)防止IP欺騙

編輯/etc/host.conf檔案並增加如下幾行來防止IP欺騙攻擊:

(3)防止DoS攻擊

對系統所有的使用者設定資源限制可以防止DoS型別攻擊,如最大程序數和記憶體使用數量等。

可以在/etc/security/limits.conf中新增如下幾行:

core0表示禁止建立core檔案;nproc128把最多的程序數限制到20;nofile64表示把一個使用者同時開啟的最大檔案數限制為64;*表示登入到系統的所有使用者,不包括root。

然後必須編輯/etc/pam.d/login檔案檢查下面一行是否存在:

limits.conf引數的值需要根據具體情況調整。

3、定期做日誌檢查

將日誌移動到專用的日誌伺服器裡,這可避免入侵者輕易的改動本地日誌。下面是常見linux的預設日誌檔案及其用處:

分析與思考

一、查詢資料瞭解更多關於linux系統加固的知識。

加固Linux系統的三種方法總結

Linux命令列歷史加固

通過配置系統環境變數實現記錄使用者在命令列執行的命令。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 vim /etc/profile.d/system_monitor.sh # 新增下面程式碼 export TMOUT=600 readonly TMOUT #history USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'` HISTDIR=/usr/share/.history if [ -z $USER_IP ]; then USER_IP=`hostname` fi if [ ! -d $HISTDIR ]; then mkdir -p $HISTDIR chmod 777 $HISTDIR fi if [ ! -d $HISTDIR/${LOGNAME} ]; then mkdir -p $HISTDIR/${LOGNAME} chmod 300 $HISTDIR/${LOGNAME} fi export HISTSIZE=4000 DT=`date +%Y%m%d_%H%M%S` export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.history.$DT" export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S]" chmod 600 $HISTFILE/${LOGNAME}/*.history* 2>/dev/null

重新載入環境變數

1 source /etc/profile.d/system_monitor.sh

效果:每個帳號每次的登入IP以及執行命令都會記錄在該目錄如下:

1 2 3 4 [root@localhost ~]# ll /usr/share/.history/root/ total 8 -rw-------. 1 root root 236 Apr 23 21:49 1.180.212.137.history.20170423_214918 -rw-------. 1 root root 564 Apr 23 21:54 1.180.212.137.history.20170423_214957

crond呼叫黑白名單

Cron有它自己內建的特性,這特性允許定義哪些人能哪些人不能跑任務。 這是通過兩個檔案/etc/cron.allow 和 /etc/cron.deny控制的。要鎖定在用Cron的使用者時可以簡單的將其名字寫到corn.deny裡,而要允許使用者跑cron時將其名字加到cron.allow即可。如果你要禁止所有使用者,僅允許root使用者。如下:

1 2 # echo 'root' >> /etc/cron.allow # echo 'ALL' >> /etc/cron.deny

ssh服務禁止root登入

1、不要使用預設埠,修改方式;

1 Port 3714

2、不要使用第一版協議;

1 Protocol 2

3、限制可登入的使用者;

1 AllowUsers user1 user2 #僅允許user1和user2使用者登入

4、設定空閒會話超時時長;

5、利用防火牆設定ssh的遠端訪問策略;僅允許來自於指定網路中的主機訪問;

6、僅監聽於指定的IP地址;

ListenAddress

7、基於口令認證時,要使用強密碼策略;

1 2 # 使用mkpasswd命令生成密碼; mkpasswd -l 15 -s 3 -d 3 -C 3

8、最後使用基於金鑰進行認證

9、禁止使用空密碼,預設啟用;

1 PermitEmptyPasswords no:是否允許空密碼登入;

10、禁止管理員直接登入;

1 PermitRootLogin yes # 是否允許管理員直接登入;安全起見,建議為no;

11、限制ssh訪問頻度和併發線上;

12、做好日誌分析;

二、查詢資料瞭解iptables有哪些用途?

iptables簡稱netfilter/iptables(簡稱為iptables)組成Linux平臺下的包過濾防火牆,與大多數的Linux軟體一樣,這個包過濾防火牆是免費的,它可以代替昂貴的商業防火牆解決方案,完成封包過濾、封包重定向和網路地址轉換(NAT)等功能。

答題: