最基本的Linux系統(tǒng)安全防護,你做到了嗎?阿里云租用須看
前言
最近有些朋友自己買了阿里云主機,他們自己在阿里云上面部署了一些服務什么的,他們或許對代碼比較熟悉,但是對系統(tǒng)安全和系統(tǒng)防護這一塊還是比較缺乏經(jīng)驗。前幾天有個朋友叫我?guī)退聪滤⒗镌浦鳈C上的一些進程卡死的問題,這個朋友也是很信任我,直接把公網(wǎng)IP,賬號密碼給我了。
我拿到IP、賬號、密碼一看。IP是公網(wǎng)的,ssh的端口是22,賬號是root,密碼是8位簡單的密碼。可能是職業(yè)的關系,我就覺得這個機器很不安全,于是就建議朋友從安全方面加固他的阿里云主機系統(tǒng)安全。
1、修改默認的ssh端口號
系統(tǒng)默認的ssh端口號是22,現(xiàn)在的網(wǎng)絡環(huán)境中,無時無刻不在有人對暴露在公網(wǎng)的服務器進行掃描,為的就是入侵你的系統(tǒng),控制你的系統(tǒng)作為犯罪的肉雞,或者盜竊其中的信息。此時你的ssh端口如果依然為22,那么無疑是幫助這些小人降低入侵你系統(tǒng)的難度。因此第一條建議是修改ssh的默認端口。
修改方法:
- # sed -i 's/#Port 22/Port 22612/' /etc/ssh/sshd_config
- # /etc/init.d/sshd restart

2、創(chuàng)建普通用戶,禁止root用戶直接遠程登錄系統(tǒng)
首先你需要創(chuàng)建一個普通用戶,這個普通用戶的定位可以是用來可以遠程登錄系統(tǒng)的用戶,可以是基于程序運行的用戶等等,總之只有一個root用戶是不太安全的。
- # useradd testuser
- # echo testuser@112233 | passwd --stdin testuser (當然建議密碼使用 # mkpasswd -l 16 命令進行隨機生成密碼,從安全角度來說,盡量16位以上)
普通用戶創(chuàng)建了,接下來進行root用戶直接登錄系統(tǒng)。
修改方法:
- # sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
設置完成后,root無法從遠程直接登錄系統(tǒng),如需使用root權限,可以遠程登錄testuser用戶,再su切換到root即可使用root權限。

3、系統(tǒng)登錄失敗次數(shù)限制策略
我上面也說了,現(xiàn)在的網(wǎng)絡環(huán)境中,無時無刻不在有人對暴露在公網(wǎng)的服務器進行掃描,如果有人掃描到了你這個系統(tǒng)的ssh端口是被修改之后的,比如說是2222,那么他就會根據(jù)ssh協(xié)議不斷嘗試你的服務器密碼,當然他們也沒那么傻,肯定不會人工去嘗試你的服務器密碼,他們是有程序不斷去嘗試攻破你的服務器。
這個時候,我們試想下,如果我們的ssh密碼只有8位,而且很簡單,估計不用3天就被嘗試攻破了,16位的也不用3個月就能攻破。所以除了密碼復雜度(盡量隨機)以及長度以外,為了防止有些想做壞事的人去嘗試攻破你的服務器密碼,你還可以設置系統(tǒng)登錄失敗次數(shù)限制策略。比如說超過5次密碼驗證錯誤,那么則在3分鐘之內(nèi)即使密碼輸入正確,也登錄失敗。
- # vim /etc/pam.d/sshd
- #%PAM-1.0 必須添加下面這行在文件的第二行;也就是這個注釋的下一行
- auth required pam_tally2.so deny=5 even_deny_root unlock_time=180
檢驗方法:
使用ssh遠程連接方式連接服務器,連續(xù)輸入5次錯誤密碼,則會鎖定180秒;180秒以后,則輸入正確密碼就可以進行登錄了

4、iptables策略設置
現(xiàn)在還有一部分的公司是還沒有能購買硬件防火墻的,這個時候軟件級別的iptables就派上用場了。iptables可以作為一個輕量級的防護軟件,如果你的服務器,不管是你自主購買進行托管的,還是租用阿里云的,iptables必須要進行設置,否則遲早有一天你的服務器會淪陷的。
- # iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT (#允許已建立的或相關連的通行)
- # iptables -A INPUT -i lo -j ACCEPT (#允許本地回環(huán)接口(即運行本機訪問本機))
- # iptables -A INPUT -s 內(nèi)網(wǎng)網(wǎng)段/掩碼 -j ACCEPT (#允許內(nèi)網(wǎng)網(wǎng)段之間互相訪問)
- # iptables -A OUTPUT -j ACCEPT (#允許所有本機向外的訪問)
- # iptables -A INPUT -p tcp --dport 22222 -j ACCEPT (#允許訪問22222(ssh端口)端口 )
- # iptables -A INPUT -p tcp --dport 80 -j ACCEPT (#如果有80端口,則允許訪問80端口)
- # iptables -A INPUT -j DROP (#禁止除了上述規(guī)則以外的任意訪問)
- # /etc/init.d/iptables save (#一定要記得進行規(guī)則保存,否則一切都前功盡棄,重啟iptables之后就全都沒了)
后續(xù)
上述4個安全建議設置僅為初等級別的,但是如果你的系統(tǒng)連初等級別的安全還未達到,那你就要趕緊進行設置了。后續(xù)會繼續(xù)出一些更為安全措施建議。