保護(hù)你的Ubuntu服務(wù)器
原創(chuàng)【51CTO精選譯文】安全是相對(duì)的,使用本文介紹的這些方法不能絕對(duì)保證你的服務(wù)器是“安全的”,但可以肯定的是它比以前更安全,也比大多數(shù)服務(wù)器要安全,至少菜鳥(niǎo)級(jí)的黑客是無(wú)法攻破的;安全是一個(gè)持續(xù)的過(guò)程,它不是一蹴而就的,我們認(rèn)為,在安全領(lǐng)域是需要一點(diǎn)偏執(zhí)精神的。
本文所列舉的這些保護(hù)措施在Ubuntu Server 10.04(Lucid)和10.10(Maverick)中測(cè)試通過(guò),如果你想讓你的新Ubuntu服務(wù)器變得堅(jiān)不可摧,你應(yīng)該仔細(xì)閱讀本文。
Ubuntu服務(wù)器設(shè)計(jì)優(yōu)良,并有定期更新,相對(duì)來(lái)說(shuō)是比較安全的,Ubuntu安全團(tuán)隊(duì)表示會(huì)不斷努力,保護(hù)Ubuntu的安全,將會(huì)定期提供安全更新。
· 不打開(kāi)端口
· 基于角色的管理
· 無(wú)X服務(wù)器
· 安全更新
· 內(nèi)核和編譯器保護(hù)
在這篇文章中,我們將從不同方向來(lái)應(yīng)對(duì)安全挑戰(zhàn),包括:系統(tǒng)分析,修改設(shè)置,安裝防火墻,掃描rootkit和制定周期性維護(hù)制度。
· 修改設(shè)置,增強(qiáng)安全性
· 實(shí)施UFW,簡(jiǎn)單的防火墻
· 使用denyhosts自動(dòng)將攻擊者列入黑名單
· 使用Tiger掃描系統(tǒng)漏洞
· 使用psad檢測(cè)入侵嘗試行為
· 安裝nmap,掃描系統(tǒng)打開(kāi)的端口
· 使用chkrootkit檢查系統(tǒng)rootkit
· 監(jiān)控日志
修改設(shè)置,增強(qiáng)安全
保護(hù)共享內(nèi)存
攻擊一個(gè)運(yùn)行中的服務(wù)(如httpd)時(shí)經(jīng)常要使用/dev/shm,修改/etc/fstab使其更安全。
sudo vi /etc/fstab
添加下面這一行內(nèi)容:
tmpfs /dev/shm tmpfs defaults,noexec,nosuid 0 0
禁止root通過(guò)SSH登錄
Root帳號(hào)在Ubuntu中默認(rèn)是被禁用了的,如果你在Slicehost或Linode上安裝Ubuntu,root則是被啟用的,無(wú)論怎樣,禁止root通過(guò)SSH登錄系統(tǒng)都是一個(gè)好主意。
sudo vi /etc/ssh/sshd_config
將PermitRootLogin設(shè)為no:
PermitRootLogin no
當(dāng)然,如果你通過(guò)SSH訪(fǎng)問(wèn)你的服務(wù)器,在禁用root使用SSH之前,確保其它用戶(hù)可以正常使用sudo工作。
只允許管理用戶(hù)使用su
這將有助于預(yù)防特權(quán)提升,默認(rèn)情況下,Ubuntu沒(méi)有提供管理組,因此需要先創(chuàng)建一個(gè)管理組。
sudo groupadd admin
將你自己加入到管理組:
sudo usermod -a -G admin andrew
限制/bin/su的訪(fǎng)問(wèn)權(quán),僅授予管理組成員:
sudo dpkg-statoverride --update --add root admin 4750 /bin/su
檢查/bin/su的權(quán)限:
ls -lh /bin/su
看到下面的輸出內(nèi)容:
-rwsr-x--- 1 root admin 31K 2010-01-26 17:09 /bin/su
不允許跟蹤入站數(shù)據(jù)包的源路由
sudo sysctl -w net.ipv4.conf.all.accept_source_route=0 sudo sysctl -w net.ipv4.conf.default.accept_source_route=0
不允許系統(tǒng)用戶(hù)訪(fǎng)問(wèn)FTP服務(wù)器
只有當(dāng)你安裝了ftpd才需要這么做,只要tiger掃描報(bào)告中不出現(xiàn)相關(guān)警告即可,SFTP比FTP的安全性要好,如果可能,應(yīng)盡量使用SFTP。
Edit /etc/ftpusers:
sudo vi /etc/ftpusers
添加系統(tǒng)用戶(hù)拒絕使用ftpd:
- backup
- bin
- daemon
- games
- gnats
- irc
- libuuid
- list
- lp
- man
- mysql
- news
- ntp
- postfix
- proxy
- sshd
- sync
- sys
- syslog
- uucp
- www-data
#p#
UFW:簡(jiǎn)單防火墻
UFW(Uncomplicated Firewall,簡(jiǎn)單防火墻)提供了一個(gè)易于理解的接口控制iptable(iptable控制Netfilter,Netfilter內(nèi)置于內(nèi)核之中),只需要幾個(gè)簡(jiǎn)單的命令,你的服務(wù)器就可以控制訪(fǎng)問(wèn),創(chuàng)建狀態(tài)也很容易。
UFW是用于配置iptable的一個(gè)簡(jiǎn)單接口。
安裝并啟用Uncomplicated Firewall:
sudo aptitude install -y ufw sudo ufw enable
顯示可用的UFW命令:
sudo ufw show
顯示UFW配置:
sudo ufw status
允許SSH和HTTP訪(fǎng)問(wèn)Apache服務(wù)器:
sudo ufw allow ssh sudo ufw allow http
在上面的示例中,OpenSSH和Apache的端口通過(guò)服務(wù)名(ssh和http)打開(kāi),你可以使用端口號(hào)替換這里的服務(wù)名(如用80替換http)。
查看服務(wù)運(yùn)行情況:
查看運(yùn)行中的服務(wù),便知道應(yīng)該打開(kāi)哪些端口:
sudo ufw app list
查看UFW使用的服務(wù):
less /etc/services
#p#
Denyhosts:避免SSH攻擊
項(xiàng)目主頁(yè): http://denyhosts.sourceforge.net/
查看服務(wù)器上的/var/log/auth.log,我發(fā)現(xiàn)有一連串的SSH攻擊,對(duì)付這種攻擊有很多方法,首先就是denyhosts。
Denyhosts會(huì)周期性地掃描/var/log/auth.log,找出通過(guò)SSH反復(fù)失敗訪(fǎng)問(wèn)系統(tǒng)的行為和來(lái)源,然后將它們添加到/etc/hosts.deny中。詳細(xì)情況請(qǐng)?jiān)L問(wèn)項(xiàng)目主頁(yè)。
sudo aptitude -y install denyhosts
要做的就這些,剩下來(lái)的都是自動(dòng)的,你可以使用下面的命令查看添加到/etc/hosts.deny中的IP地址:
sudo less /etc/hosts.deny
Tiger:系統(tǒng)安全掃描器
項(xiàng)目主頁(yè): http://www.nongnu.org/tiger/
通過(guò)分析系統(tǒng)上的文件和設(shè)置,Tiger創(chuàng)建自動(dòng)的安全審核,最終以報(bào)告的形式列出分析的內(nèi)容,警告,警報(bào)和故障。
Tiger命令在/var/log/tiger中記錄了潛在的安全問(wèn)題,使用tigexp命令查找結(jié)果編碼可以獲得詳細(xì)的解釋和安全加固建議,tiger認(rèn)為很?chē)?yán)重的問(wèn)題都標(biāo)記為Fail。
安裝tiger:
sudo aptitude -y install tiger
運(yùn)行tiger,創(chuàng)建一個(gè)安全問(wèn)題報(bào)告:
sudo tiger
使用less查看最近的tiger報(bào)告:
sudo -i less /var/log/tiger/`ls -t1 /var/log/tiger | head -1` exit
使用tigexp列出Fail代碼的解釋?zhuān)?/p>
tigexp dev002f
當(dāng)然使用Google搜索一下也可以。
忽略這些:
--FAIL-- [dev002f] /dev/fuse has world permissions --FAIL-- [logf005f] Log file /var/log/btmp permission should be 660
修改它們的權(quán)限可能會(huì)導(dǎo)致其它問(wèn)題。#p#
使用psad檢測(cè)入侵行為
項(xiàng)目主頁(yè): http://www.cipherdyne.org/psad/
Psad可以記錄下入侵行為,還可以監(jiān)控iptable。
安裝psad:
sudo aptitude -y install psad
后臺(tái)進(jìn)程會(huì)自動(dòng)運(yùn)行。
檢查當(dāng)前的狀態(tài):
sudo psad -S
你可以修改psad設(shè)置,檢測(cè)到入侵行為時(shí)給管理員發(fā)送電子郵件。
Nmap:端口掃描
項(xiàng)目主頁(yè): http://nmap.org/
Nmap允許你查看打開(kāi)的端口,驗(yàn)證UFW/iptable工作是否正常。
安裝nmap:
sudo aptitude install -y nmap
端口掃描:
nmap -v -sT localhost
SYN掃描:
sudo nmap -v -sS localhost
掃描類(lèi)型解釋: http://nmap.org/book/man-port-scanning-techniques.html
Chkrootkit:檢查rootkit
項(xiàng)目主頁(yè): http://www.chkrootkit.org/
Chkrootkit掃描系統(tǒng)中是否存在rootkit。
理想情況下,你并不需要做這種掃描,但現(xiàn)實(shí)中最好還是定期運(yùn)行一下。
安裝chkrootkit:
sudo aptitude install -y chkrootkit
運(yùn)行chkrootkit:
sudo chkrootkit
LogWatch
Ubuntu社區(qū)文檔: https://help.ubuntu.com/community/Logwatch
日志再詳細(xì),如果沒(méi)有一款好用的日志查看器,日志起的作用也非常有限,Logwatch可以從海量的日志中精選出最有用的信息,形成一個(gè)易讀的報(bào)告,每天打開(kāi)Logwatch看一下系統(tǒng)產(chǎn)生的日志是一個(gè)良好的習(xí)慣。
安裝:
sudo aptitude -y install logwatch
用法:
sudo logwatch | less
持續(xù)維護(hù)
你的服務(wù)器現(xiàn)在更安全了,但不要就此停下來(lái),每周例行一次維護(hù)是個(gè)好習(xí)慣。
更新軟件:
sudo aptitude update sudo aptitude safe-upgrade
我喜歡使用safe-upgrade,因?yàn)樗鼒?zhí)行的是安全更新。
請(qǐng)看: http://wiki.debian.org/Aptitude
或者,你可以將安全更新設(shè)置為自動(dòng),如果你不能每周維護(hù)一次,這不是一個(gè)完美的解決方案,因?yàn)楣芾韱T沒(méi)有監(jiān)控更新了什么,更新后也沒(méi)有執(zhí)行測(cè)試。請(qǐng)看: https://help.ubuntu.com/10.04/serverguide/C/automatic-updates.html
檢查入侵行為:
sudo psad -S
請(qǐng)先使用tiger分析一下系統(tǒng),因?yàn)閠iger在/var/log/tiger中的報(bào)告屬于root用戶(hù),每次都運(yùn)行一下這些命令,解決有些用戶(hù)的權(quán)限問(wèn)題。
sudo -i tiger grep FAIL /var/log/tiger/`ls -t1 /var/log/tiger | head -1` exit
在上面的命令中,使用grep從最新的報(bào)告文件中提取出Fail標(biāo)記,ls子句給grep輸送目錄中的最新文件,sudo -i命令允許你以root用戶(hù)運(yùn)行多個(gè)命令,使用exit結(jié)束命令。
使用tigexp列出Fail代碼的解釋?zhuān)?/p>
tigexp dev002f
使用nmap掃描端口:
sudo nmap -v -sS localhost
檢查rootkit:
sudo chkrootkit
查看日志:
sudo logwatch | less
原文名:Securing an Ubuntu Server 作者:Andrew Ault
【51CTO.com獨(dú)家譯稿,非經(jīng)授權(quán)謝絕轉(zhuǎn)載!合作媒體轉(zhuǎn)載請(qǐng)注明原文出處及出處!】
【編輯推薦】




















