保護(hù)你的Ubuntu服務(wù)器
原創(chuàng)【51CTO精選譯文】安全是相對的,使用本文介紹的這些方法不能絕對保證你的服務(wù)器是“安全的”,但可以肯定的是它比以前更安全,也比大多數(shù)服務(wù)器要安全,至少菜鳥級的黑客是無法攻破的;安全是一個(gè)持續(xù)的過程,它不是一蹴而就的,我們認(rèn)為,在安全領(lǐng)域是需要一點(diǎn)偏執(zhí)精神的。
本文所列舉的這些保護(hù)措施在Ubuntu Server 10.04(Lucid)和10.10(Maverick)中測試通過,如果你想讓你的新Ubuntu服務(wù)器變得堅(jiān)不可摧,你應(yīng)該仔細(xì)閱讀本文。
Ubuntu服務(wù)器設(shè)計(jì)優(yōu)良,并有定期更新,相對來說是比較安全的,Ubuntu安全團(tuán)隊(duì)表示會(huì)不斷努力,保護(hù)Ubuntu的安全,將會(huì)定期提供安全更新。
· 不打開端口
· 基于角色的管理
· 無X服務(wù)器
· 安全更新
· 內(nèi)核和編譯器保護(hù)
在這篇文章中,我們將從不同方向來應(yīng)對安全挑戰(zhàn),包括:系統(tǒng)分析,修改設(shè)置,安裝防火墻,掃描rootkit和制定周期性維護(hù)制度。
· 修改設(shè)置,增強(qiáng)安全性
· 實(shí)施UFW,簡單的防火墻
· 使用denyhosts自動(dòng)將攻擊者列入黑名單
· 使用Tiger掃描系統(tǒng)漏洞
· 使用psad檢測入侵嘗試行為
· 安裝nmap,掃描系統(tǒng)打開的端口
· 使用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通過SSH登錄
Root帳號(hào)在Ubuntu中默認(rèn)是被禁用了的,如果你在Slicehost或Linode上安裝Ubuntu,root則是被啟用的,無論怎樣,禁止root通過SSH登錄系統(tǒng)都是一個(gè)好主意。
sudo vi /etc/ssh/sshd_config
將PermitRootLogin設(shè)為no:
PermitRootLogin no
當(dāng)然,如果你通過SSH訪問你的服務(wù)器,在禁用root使用SSH之前,確保其它用戶可以正常使用sudo工作。
只允許管理用戶使用su
這將有助于預(yù)防特權(quán)提升,默認(rèn)情況下,Ubuntu沒有提供管理組,因此需要先創(chuàng)建一個(gè)管理組。
sudo groupadd admin
將你自己加入到管理組:
sudo usermod -a -G admin andrew
限制/bin/su的訪問權(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)用戶訪問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)用戶拒絕使用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:簡單防火墻
UFW(Uncomplicated Firewall,簡單防火墻)提供了一個(gè)易于理解的接口控制iptable(iptable控制Netfilter,Netfilter內(nèi)置于內(nèi)核之中),只需要幾個(gè)簡單的命令,你的服務(wù)器就可以控制訪問,創(chuàng)建狀態(tài)也很容易。
UFW是用于配置iptable的一個(gè)簡單接口。
安裝并啟用Uncomplicated Firewall:
sudo aptitude install -y ufw sudo ufw enable
顯示可用的UFW命令:
sudo ufw show
顯示UFW配置:
sudo ufw status
允許SSH和HTTP訪問Apache服務(wù)器:
sudo ufw allow ssh sudo ufw allow http
在上面的示例中,OpenSSH和Apache的端口通過服務(wù)名(ssh和http)打開,你可以使用端口號(hào)替換這里的服務(wù)名(如用80替換http)。
查看服務(wù)運(yùn)行情況:
查看運(yùn)行中的服務(wù),便知道應(yīng)該打開哪些端口:
sudo ufw app list
查看UFW使用的服務(wù):
less /etc/services
#p#
Denyhosts:避免SSH攻擊
項(xiàng)目主頁: http://denyhosts.sourceforge.net/
查看服務(wù)器上的/var/log/auth.log,我發(fā)現(xiàn)有一連串的SSH攻擊,對付這種攻擊有很多方法,首先就是denyhosts。
Denyhosts會(huì)周期性地掃描/var/log/auth.log,找出通過SSH反復(fù)失敗訪問系統(tǒng)的行為和來源,然后將它們添加到/etc/hosts.deny中。詳細(xì)情況請?jiān)L問項(xiàng)目主頁。
sudo aptitude -y install denyhosts
要做的就這些,剩下來的都是自動(dòng)的,你可以使用下面的命令查看添加到/etc/hosts.deny中的IP地址:
sudo less /etc/hosts.deny
Tiger:系統(tǒng)安全掃描器
項(xiàng)目主頁: http://www.nongnu.org/tiger/
通過分析系統(tǒng)上的文件和設(shè)置,Tiger創(chuàng)建自動(dòng)的安全審核,最終以報(bào)告的形式列出分析的內(nèi)容,警告,警報(bào)和故障。
Tiger命令在/var/log/tiger中記錄了潛在的安全問題,使用tigexp命令查找結(jié)果編碼可以獲得詳細(xì)的解釋和安全加固建議,tiger認(rèn)為很嚴(yán)重的問題都標(biāo)記為Fail。
安裝tiger:
sudo aptitude -y install tiger
運(yùn)行tiger,創(chuàng)建一個(gè)安全問題報(bào)告:
sudo tiger
使用less查看最近的tiger報(bào)告:
sudo -i less /var/log/tiger/`ls -t1 /var/log/tiger | head -1` exit
使用tigexp列出Fail代碼的解釋:
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)致其它問題。#p#
使用psad檢測入侵行為
項(xiàng)目主頁: 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è)置,檢測到入侵行為時(shí)給管理員發(fā)送電子郵件。
Nmap:端口掃描
項(xiàng)目主頁: http://nmap.org/
Nmap允許你查看打開的端口,驗(yàn)證UFW/iptable工作是否正常。
安裝nmap:
sudo aptitude install -y nmap
端口掃描:
nmap -v -sT localhost
SYN掃描:
sudo nmap -v -sS localhost
掃描類型解釋: http://nmap.org/book/man-port-scanning-techniques.html
Chkrootkit:檢查rootkit
項(xiàng)目主頁: 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ì),如果沒有一款好用的日志查看器,日志起的作用也非常有限,Logwatch可以從海量的日志中精選出最有用的信息,形成一個(gè)易讀的報(bào)告,每天打開Logwatch看一下系統(tǒng)產(chǎn)生的日志是一個(gè)良好的習(xí)慣。
安裝:
sudo aptitude -y install logwatch
用法:
sudo logwatch | less
持續(xù)維護(hù)
你的服務(wù)器現(xiàn)在更安全了,但不要就此停下來,每周例行一次維護(hù)是個(gè)好習(xí)慣。
更新軟件:
sudo aptitude update sudo aptitude safe-upgrade
我喜歡使用safe-upgrade,因?yàn)樗鼒?zhí)行的是安全更新。
請看: http://wiki.debian.org/Aptitude
或者,你可以將安全更新設(shè)置為自動(dòng),如果你不能每周維護(hù)一次,這不是一個(gè)完美的解決方案,因?yàn)楣芾韱T沒有監(jiān)控更新了什么,更新后也沒有執(zhí)行測試。請看: https://help.ubuntu.com/10.04/serverguide/C/automatic-updates.html
檢查入侵行為:
sudo psad -S
請先使用tiger分析一下系統(tǒng),因?yàn)閠iger在/var/log/tiger中的報(bào)告屬于root用戶,每次都運(yùn)行一下這些命令,解決有些用戶的權(quá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用戶運(yùn)行多個(gè)命令,使用exit結(jié)束命令。
使用tigexp列出Fail代碼的解釋:
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)載請注明原文出處及出處!】
【編輯推薦】