暴露在公網環境下主機的安全防護

服務器安全問題是每個運維從事人員不可避免的一部分工作,在linux管理界乃至計算機界也都是一個首要考慮的問題。最近公司的部分機器需要暴露在公網環境下,如果不做安全策略的話,可能睡到半夜就會被叫起來處理問題,爲睡眠安穩計,爲工作質量計,特整理下關於基本安全防護的注意點與可操作點:

公司的部分主機需要能夠與公網通信,相應的,遠程連接安全是肯定需要做加固的,而一臺公網上主機基本的安全策略有以下幾點:

1.禁止主機被ping:如果能夠ping通某個主機或者IP,那麼攻擊者就認爲此係統處於活動狀態,繼而進行攻擊或破壞。如果沒有人能ping通機器並收到響應,那麼就可以大大增強服務器的安全性,在linux下可以執行如下設置,來禁止ping請求:

[root@localhost ~]#echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

可以加上面的一行命令到/etc/rc.d/rc.local文件中,以使每次系統重啓後自動運行。

2.禁止系統被重啓:在linux的默認設置下,同時按下Control-Alt-Delete鍵,系統將自動重啓,這種情況下很容易被重啓,從而導致不可預知的問題,而禁止Control-Alt-Delete組合鍵重啓系統,需修改/etc/inittab文件:

 

[root@localhost ~]#vi /etc/inittab
找到:ca::ctrlaltdel:/sbin/shutdown -t3 -r now    在之前加上"#"或者刪除此行,即可,然後
[root@localhost ~]#telinit q

3.限制shell history所記錄的命令:默認情況下,bash shell會在文件$HOME/.bash_history中存放多達1000條命令記錄,攻擊者可以根據這些命令來判斷出主機的關鍵文件以及其他的關鍵信息,那就減少它所記錄的命令或者關閉它:

 

[root@localhost ~]#vi /etc/profile
找到:HISTSIZE=1000
表示在文件$HOME/.bash_history中記錄最近的1000條歷史命令。將其修改爲合適的值,如果將“HISTSIZE”設置爲0,
則表示不記錄歷史命令,那麼也就不能用鍵盤的上下鍵查找歷史命令了。

4.刪除系統默認的不必要用戶和組:Linux提供了各種系統賬戶,在系統安裝完畢,如果不需要某些用戶或者組,就要立即刪除它,因爲賬戶越多,系統就越不安全,越容易受到攻擊,具體的話根據實際情況,一般Linux系統中可以刪除的默認用戶和組分別爲刪除的用戶,如adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher等。刪除的組,如adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers等。根據自己的需要進行操作。具體的命令爲

[root@localhost ~]# userdel username
[root@localhost ~]# groupdel groupname

 

5.限制ssh訪問IP:基於ssh的連接本質上來說是安全的,連接被監聽是一般不用考慮的安全問題,但非法連接卻是一個極大的安全隱患,但是我們可以於hosts.allow和hosts.deny文件允許或禁止ssh或telnet操作,降低系統被暴力破解的可能,具體的操作如下:

[root@localhost ~]#vi /etc/hosts.allow或者hosts.deny
ssh允許/禁止單個ip
sshd:192.168.220.1
ssh允許/禁止ip段
sshd:192.168.220.
telnet允許/禁止單個ip
in.telnetd:192.168.220.1
telnet允許/禁止ip段
in.telnetd:192.168.221.
值得一提的是,hosts.allow的優先級高於hosts.deny,所以呢,甚至可以將host.deny設置爲ALL,拒絕所有ssh或telnet連接,在hosts.allow文件中配置業務IP,以實現最高的安全需求。

 

本條策略可以基於腳本來進行,可以使用腳本對安全日誌進行過濾,將多次嘗試進行ssh連接的IP信息寫入hosts.deny文件中,直接拒絕它的請求,具體的操作方法如下:

#!/bin/bash 
num=10 #連接上限 
for i in `awk '/Failed/{print $(NF-3)}' /var/log/secure|sort|uniq -c|sort -rn|awk '{if ($1>$num){print $2}}'` 
do 
    echo "sshd:$i" >> /etc/hosts.deny
done

 

對secure文件做日誌分割後,可以每天執行一次腳本,寫入定時任務即可。如果覺得這樣做比較麻煩,可以參照我的博客/系統安全/防止ssh暴力破解的小工具denyhosts中的介紹,使用denyhosts工具來進行防爆破安全加固,而且使用denyhosts可以更細緻的根據需求完成拒絕請求。

6.修改ssh端口,禁止root用戶遠程登陸:所有的ssh非法連接都是基於指定端口與指定賬戶密碼的,如果修改了默認的端口並禁止root用戶遠程登陸,那麼安全性無疑是進一步的加強了:

PS:如果公司的上下班是非常規律的,甚至可以設置ssh服務的服務時間爲9:00-18:00,這樣的話,所有的問題都將不是問題,但同樣的,如果在這個時間段之外需要遠程處理,那就比較麻煩了,這條策略僅作參考。

 [root@localhost ~]#vi /etc/ssh/sshd_config
ssh默認的端口是22,修改的話,直接添加Port XXXX就可以了,這樣就完成了修改,將其改爲了XXXX(最好選擇大於10000的不常用高位端口)
將sshd_config文件中PermitRootLogin yes改爲PermitRootLogin no,這樣root用戶就不能遠程登陸了(修改後,reload sshd服務,不要restart ssh服務,防止出現問題,無法遠程連接,就尷尬了)

 

7.隱藏服務器的版本信息:這條策略主要針對的是web服務,如果對方訪問了不存在資源,服務器404時,順帶給了對方web服務器的版本信息,這就相當危險了,對方拿着指定版本的服務器信息,就可以做針對性的攻擊,十發九中。具體的隱藏辦法根據服務器版本自行百度,不安全的設置如下圖:

針對當前業界服務器集羣化的應用場景,綜合以上基本的安全策略,可以這樣做:指定一臺服務器做服務跳板機,將其端口映射到其他服務器的業務端口,其他服務器的只允許跳板機的數據包進來,然後對跳板機做全部的安全策略(畢竟ping的安全策略也不適合對所有的服務器做),還有就是關於堡壘機的問題,堡壘機的概念和這個方案的思想差不多,但堡壘機能夠更細化的解決這些問題,而且還可以記錄子賬號的操作,方便查出導致問題的人。

8.至少設置一個複雜的密碼:含有數字,大小寫字母,特殊符號,儘可能的長,至少不少於10個字符。

結語:通用的基本安全策略就是這些,如果閱讀中發現不夠全面,歡迎指出補充,如果需要對指定功能的服務器做安全,那肯定需要在此基礎上繼續完善,但可以肯定的是:沒有永遠完備無患的安全策略,只有不斷升級完善的安全策略,最好的安全策略就是多看安全日誌,根據不同的應用場景制訂出相應的安全策略,才能在日益嚴峻的安全環境下安全無虞。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章