如何保證自己的Linux生產(chǎn)服務(wù)器安全
原創(chuàng)【51CTO.com獨(dú)家特稿】
①首先要保證自己的服務(wù)器的絕對(duì)安全,root密碼我一般設(shè)置為28位以上,而且某些重要的服務(wù)器必須只有幾個(gè)人知道root密碼,這個(gè)根據(jù)公司權(quán)限來(lái)設(shè)置,如果有公司的系統(tǒng)管理員離職,root密碼一定要更改;玩linux久了的人都應(yīng)該知道,更改root密碼不會(huì)影響linux的crontab計(jì)劃任務(wù),而windows2003就不一樣了,如果隨意更改administrator密碼,會(huì)直接影響其計(jì)劃任務(wù)運(yùn)行。
②我的Nagios外網(wǎng)監(jiān)控服務(wù)器,剛開(kāi)始測(cè)試時(shí)取的密碼是redhat,放進(jìn)公網(wǎng)一天就被人改了,郁悶死了;后來(lái)環(huán)境部署成熟以后發(fā)現(xiàn)仍然有不少外網(wǎng)ip在掃描和試探,看來(lái)不用點(diǎn)工具不行?。缓呛?,DenyHosts是用Python2.3寫(xiě)的一個(gè)程序,它會(huì)分析/var/log/secure等日志文件,當(dāng)發(fā)現(xiàn)同一IP在進(jìn)行多次SSH密碼嘗試時(shí)就會(huì)記錄IP到/etc/hosts.deny文件,從而達(dá)到自動(dòng)屏蔽該IP的目的。
DenyHosts官方網(wǎng)站為:http://denyhosts.sourceforge.net
一、檢查安裝條件
1、首先判斷系統(tǒng)安裝的sshd是否支持tcp_wrappers(默認(rèn)都支持)
|
2、判斷默認(rèn)安裝的Python版本
|
二、已安裝Python2.3以上版本的情況
1、安裝DenyHosts
|
程序腳本自動(dòng)安裝到/usr/share/denyhosts
庫(kù)文件自動(dòng)安裝到/usr/lib/python2.3/site-packages/DenyHosts
denyhosts.py自動(dòng)安裝到/usr/bin
2、設(shè)置啟動(dòng)腳本
|
根據(jù)自己需要進(jìn)行相應(yīng)的修改
|
如果需要DenyHosts隨系統(tǒng)重啟而自動(dòng)啟動(dòng),還需做如下設(shè)置:
# vi /etc/rc.local |
加入下面這條命令
/usr/share/denyhosts/daemon-control start |
3、啟動(dòng)
# /usr/share/denyhosts/daemon-control start |
如果要使DenyHosts每次重起后自動(dòng)啟動(dòng)還需做如下設(shè)置:
|
然后就可以啟動(dòng)了:
service denyhosts start |
DenyHosts配置文件:
vi /etc/denyhosts.cfg |
SECURE_LOG = /var/log/secure #ssh 日志文件,它是根據(jù)這個(gè)文件來(lái)判斷的。
HOSTS_DENY = /etc/hosts.deny #控制用戶登陸的文件
PURGE_DENY = 5m#過(guò)多久后清除已經(jīng)禁止的
BLOCK_SERVICE = sshd#禁止的服務(wù)名
DENY_THRESHOLD_INVALID = 1#允許無(wú)效用戶失敗的次數(shù)
DENY_THRESHOLD_VALID = 10#允許普通用戶登陸失敗的次數(shù)
DENY_THRESHOLD_ROOT = 5#允許root登陸失敗的次數(shù)
HOSTNAME_LOOKUP=NO#是否做域名反解
DAEMON_LOG = /var/log/denyhosts#自己的日志文件
ADMIN_EMAIL = yuhongchun027@163.com#管理員郵件地址,它會(huì)給管理員發(fā)郵件
③服務(wù)器上除root外,Linux用戶越少越好;如果非要添加授權(quán)用戶,請(qǐng)給他的登陸shell為nologin;終止未授權(quán)用戶,定期檢查系統(tǒng)有無(wú)多余的用戶都是很必要的工作。
④分析系統(tǒng)的日志文件,尋找入侵者曾經(jīng)試圖入侵系統(tǒng)的蛛絲馬跡。last命令是另外一個(gè)可以用來(lái)查找非授權(quán)用戶登錄事件的工具
|
以下是一臺(tái)機(jī)器上的演示圖:
last命令輸入的信息來(lái)自/var/log/wtmp。這個(gè)文件詳細(xì)地記錄著每個(gè)系統(tǒng)用戶的訪問(wèn)活動(dòng)。但是有經(jīng)驗(yàn)的入侵者往往會(huì)刪掉/var/log/wtmp以清除自己非法行為的證據(jù),但是這種清除行為還是會(huì)露出蛛絲馬跡:在日志文件里留下一個(gè)沒(méi)有退出操作與之對(duì)應(yīng)的登錄操作(因?yàn)樵谀銊h除wtmp的時(shí)候,你的登錄記錄就沒(méi)有了,但是你待會(huì)兒登出,系統(tǒng)還是會(huì)把你記下來(lái)),不過(guò)再高明一點(diǎn)就用at或者cron等自己登出之后再刪文件。(但是這種方法也還是可以查,總之linux沒(méi)有一種操作是最強(qiáng)的,強(qiáng)到?jīng)]有紕漏。就像古龍的小說(shuō)一樣,沒(méi)有一個(gè)人是天下第一。這樣看起來(lái)才有勁)
⑤另外,可以用命令 grep error /var/log/messages檢查自己的服務(wù)器是否存在著硬件損壞的情況。
⑥嘗試使用Chkrootkit應(yīng)用程序?qū)ootkit的蹤跡和特進(jìn)行查找,從它的報(bào)告中分析你的服務(wù)器否已經(jīng)感染木馬。
⑦嘗試使用AIDE來(lái)檢查文件系統(tǒng)的完整性。
⑧推薦使用Snort自動(dòng)檢測(cè)入侵,它集成了同類(lèi)軟件中最先進(jìn)行技術(shù),并且是開(kāi)放源碼的。
⑨以自己的郵件服務(wù)器舉例說(shuō)明,由于這是一個(gè)獨(dú)立的服務(wù)器,所以前端并沒(méi)放置硬件防火墻及Web防火墻,所以一定要開(kāi)啟iptables來(lái)防護(hù),其/root/firewall.sh內(nèi)容如下:
|
在另一臺(tái)機(jī)器上用掃描之王nmap進(jìn)行掃描
|
lsof -i:1014,發(fā)現(xiàn)又是rpc.statd,這東東,每次用的端口都不一樣?。凰荒苷_處理SIGPID信號(hào),遠(yuǎn)程攻擊者可利用這個(gè)漏洞關(guān)閉進(jìn)程,進(jìn)行拒絕服務(wù)攻擊;發(fā)現(xiàn)rpc.statd是由服務(wù)nfslock開(kāi)啟,關(guān)閉它即可
|
⑩停掉一些系統(tǒng)不必要的服務(wù),強(qiáng)化內(nèi)核;多關(guān)注下服務(wù)器的內(nèi)核漏洞,現(xiàn)在linux很多攻擊都是針對(duì)內(nèi)核的,保證內(nèi)核版本為2.6.9以上(不含2.6.9)。
【51CTO.COM 獨(dú)家特稿,轉(zhuǎn)載請(qǐng)注明出處及作者!】
【編輯推薦】