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

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

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

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




















