c/hosts.allow 指定授權主機
/etc/hosts.deny 指定非授權主機
配置文件的編寫規(guī)則非常簡單,一般是:
services_list : client_list [ : shell_command ]
1. 如果client及services滿足hosts.allow里面的條目,那么訪問將被允許。
2. 如果client及services滿足hosts.deny里面的條目,那么訪問將被禁止。
3. 如果以上兩條都不滿足,訪問將被允許。
4. 如果訪問控制文件不存在,將被當作空規(guī)則文件處理。所以可以通過刪除訪問控制文件來關閉訪問限制。
其中services_list可以列出一個或幾個服務進程名,也可以使用通配符;client_list可以是IP地址、主機名或者網(wǎng)絡號,也可以使用通配符。
services_list有兩個特殊用法的符號:ALL和EXCEPT。ALL表示所有的進程,而EXCEPT表示排除某個進程。比如,ALL EXCEPT in.fingerd表示除了in.fingerd外所有的進程。
client_list可以使用如下通配符:
1. “.”號在字符串前匹配所有后面部分和所提供字符串一樣的主機名。比如:.linuxidc.net可以匹配idc.net">www.linuxidc.net或mail.linuxidc.net。
2. “.”號在字符串后匹配以所提供字符串開頭的地址,比如,10.44.可以匹配所有10.44.xxx.xxx的地址。
3. 可以使用n.n.n.n/m.m.m.m的格式來表示net/mask,比如,10.44.72.0/255.255.254.0匹配從10.44.72.0到10.44.73.255的地址。
4. 以“/”號開頭的字符串將被看作一個文件處理,它匹配所有在這個文件中列出的主機名或者地址。
5. “@”開頭的串將被當作一個NIS組的名字。
6. ALL表示所有的主機,LOCAL匹配所有機器名中不帶“.”號的主機,EXCEPT表示排除某些主機。
比如,hosts.allow中有一行,ALL: .edu.cn EXCEPT example.edu.cn表示允許除了主機名叫example.edu.cn 以外的所有.edu.cn域內(nèi)的機器訪問所有的服務。而在hosts.deny中,ALL EXCEPT in.fingerd:192.168.0.0/255.255.255.0則表示禁止192.168.0.1到192.168.0.254的機器訪問除了in.fingerd以外的服務。防火墻的選用和配置
前面介紹了tcpwrappers的詳細應用,但是對管理員而言,只有經(jīng)過Internet的考驗才能真正得到直接有效的磨煉和提高。如何分辨和抵擋 Internet上形形色色的信息呢?僅僅 tcpwrappers是不夠的,關鍵是防火墻的選用和配置。配置高效的防火墻是管理員要掌握的十分重要而且非常有效的必修課。在此,防火墻的功能和類型就不介紹了。最主要的是防火墻的構建要量身定制,應從企業(yè)自身狀況和需求特點來考慮所需要的防火墻解決方案。不同規(guī)模、不同類型的企業(yè),其網(wǎng)絡保護的要求也存在明顯的差異。防火墻是個重要的話題,在這里限于篇幅不可能詳細分析每一種配置。入侵檢測系統(tǒng)
對攻擊者來說,端口掃描是入侵主機的必備工作,可以用端口掃描程序掃描服務器的所有端口來收集有用的信息,如哪些端口打開、哪些端口關閉、提供服務的程序版本、操作系統(tǒng)的版本等。下面介紹幾種對付端口掃描的工具。
1. PortSentry
PortSentry是一個被設計成實時地發(fā)現(xiàn)端口掃描并對端口掃描快速作出反應的檢測工具。一旦發(fā)現(xiàn)端口掃描,PortSentry做出的反應有:
(1)通過syslog()函數(shù)給出一個日志消息;
(2)自動地把對服務器進行端口掃描的主機加到tcp wrappers的/etc/hosts.deny文件中;
(3)本地主機會自動把所有的信息流都重定向到一個不存在的主機;
(4)本地主機用包過濾程序把所有的數(shù)據(jù)包(來自對其進行端口掃描的主機)都過濾掉。
簡單地介紹一下配置和啟動步驟:
(1)配置/usr/psionic/portsentry/portsentry.conf文件
/usr/psionic/portsentry/portsentry.conf是PortSentry的主要配置文件。可以設置需要監(jiān)聽的端口、需要禁止和監(jiān)控的IP地址等。可以參看PortSentry的README.install文件以獲取更多的信息。
(2)配置portsentry.ignore文件
在portsentry.ignore文件中設置希望PortSentry忽略的主機。這個文件至少要包括localhost(127.0.0.1)和本地界面(lo)的IP。
(3)最好改變文件默認的權限:
#chmod 600 /usr/psionic/portsentry/portsentry.conf
#chmod 600 /usr/psionic/portsentry/portsentry.ignore
(4)啟動PortSentry
PortSentry程序可以配置在6個不同的模式下運行,但每次啟動時只能在一種模式下運行。這些模式是:
◆ portsentry -tcp(基本的端口綁定TCP模式)
◆ portsentry -udp 基本的端口綁定UDP 模式)
◆ portsentry -stcp(秘密的TCP掃描檢測)
◆ portsentry -atcp(高級TCP秘密掃描檢測)
◆ portsentry -sudp(秘密的UDP掃描檢測)
◆ portsentry -audp(高級的秘密UDP掃描檢測)
推薦使用最后兩種模式檢測。建立啟動腳本:
# vi /etc/init.d/portsentry
/usr/local/portsentry/portsentry sudp
/usr/local/portsentry/portsentry audp
# chmod a+x ./portsentry(建立啟動腳本)
# cd /etc/rc.d/rc3.d/ ; ln -s ../init.d/portsentry S60portsentry(建立軟鏈接啟動)
2. chkrootkit
另一個有用的工具是chkrootkit。chkrootkit是設計用來檢查許多廣為人知的rootkit(一組包括常用木馬程序的套件,以方便 cracker攻入主機時, 在受害主機上順利地編譯和安裝特洛伊木馬程序)。在chkrootkit的網(wǎng)站上會公布最新的rootkit列表。
配置chkrookit非常簡單:先從http://www.chkrootkit.com下載源代碼,解開軟件包,在文件被解開的路徑里敲入make。完成后,chkrootkit就隨時侯命了。下面是在機器上chkrootkit的一個輸出的例子:
# ./chkrootkit
Checking `su'... not infected
Checking `ifconfig'... not infected
Checking `inetd'... not tested
Checking `inetdconf'... not found
Checking `identd'... not infected
Checking `init'... not infected
Checking `killall'... not infected
Checking `login'... not infected
Checking `ls'... not infected
Checking `lsof'... not infected
Checking `mail'... not infected
Checking `mingetty'... not infected
Checking `netstat'... not infected
Checking `named'... not infected
Checking `passwd'... not infected
[...]
由上可以看到,系統(tǒng)中重要的一些命令并沒有被改變。chkrootkit是一個很不錯的實用工具,它可以進一步讓我們放心:機器目前是安全的。
3.secheck
個人推薦一個比較好的檢測工具secheck,這個軟件安裝簡單,檢測范圍廣,記錄文件條目簡明,資料詳細。它可以檢測開放端口列表、登錄用戶、磁盤空間情況;檢查UID和GID為0的非root用戶、弱口令用戶、正在運行的系統(tǒng)進程、su root的用戶;檢測有SUID和SGID標識的命令,以及相關password、shadow、xinetd.conf、.rhosts文件的變化等。建議配合crontab做定時檢查,命令如下(每隔一小時做一次檢查):
00 * * * * /usr/local/etc/secheck/secheck
可以從http://twtelecom.dl.sourceforge.net/secheck/secheck-0.03.tgz下載感受一下。災難恢復
盡管已經(jīng)采用了許多的安全措施來保護主機穩(wěn)定運行,但是遇到一些意外情況,如停電、硬件故障或地震等仍有可能發(fā)生系統(tǒng)崩潰事件。要想在最短時間內(nèi)恢復系統(tǒng),必須事先做好備份工作。
在進行備份之前,首先要選擇合適的備份策略,包括何時需要備份,以及出現(xiàn)故障時進行恢復的方式。通常使用的備份方式有三種:1.完全備份
每隔一定時間就對系統(tǒng)進行一次全面的備份,這樣在備份間隔期間出現(xiàn)數(shù)據(jù)丟失等問題,可以使用上一次的備份數(shù)據(jù)恢復到前次備份時的數(shù)據(jù)狀況。
2.增量備份
首先進行一次完全備份,然后每隔一個較短時間進行一次備份,但僅備份在這個期間更改的內(nèi)容。這樣一旦發(fā)生數(shù)據(jù)丟失,首先恢復到前一個完全備份,然后按日期逐個恢復每天的備份,就能恢復到前一天的情況。這種備份方法比較經(jīng)濟。
3.累計備份
這種備份方法與增量備份相似,首先每月進行一次完全備份,然后備份從上次進行完全備份后更改的全部數(shù)據(jù)文件。一旦發(fā)生數(shù)據(jù)丟失,使用一個完全備份和一個累計備份就可以恢復故障以前的狀態(tài)。累計備份只需兩次恢復,因此它的恢復工作相對簡單。
備份內(nèi)容 工作量 恢復步驟 恢復速度 優(yōu)缺點
完全備份 全部內(nèi)容 大,慢 一次操作 很快 占用空間大,恢復快
增量備份 每次修改后的單個內(nèi)容 小,很快 多次操作 中 空間小,恢復麻煩
累計備份 每次修改后的所有內(nèi)容 中,快 二次操作 快 空間較小,恢復快
增量備份和累計備份都能以比較經(jīng)濟的方式對系統(tǒng)進行備份。如果系統(tǒng)數(shù)據(jù)更新不是太頻繁的話,可以選用累計備份。如果系統(tǒng)數(shù)據(jù)更新太快,使每個備份周期后的幾次累計備份的數(shù)據(jù)量相當大,這時候可以考慮增量備份或混用累計備份和增量備份的方式,或者縮短備份周期。下面是一個有效的備份方式供參考。
假設備份介質為支持熱插拔的硬盤,掛接在/backup目錄下:
# tar zcvf /backup/bp_full.tar.gz /*(先做一個完全備份)
# find / -mtime -7 -print > /tmp/filelist(找出7天內(nèi)修改過的文件)
# tar -c -T /tmp/filelist -f /backup/bp_add.tar.gz(每隔7天做增量備份)
其它建議和技巧
1.用密碼保護單用戶模式。
# vi /etc/lilo.conf
restricted
password="I am admin"
2.修改/etc/inittab文件。
# ca::ctrlaltdel:/sbin/shutdown -t3 -r now
#表示取消Alt+Ctrl+Delete重啟機器
3.刪除登錄信息(不顯示內(nèi)核版本,主機名,發(fā)行版本號及一些后臺進程的版本號),這樣可以從一定程度上防止別有用心的探測。
# cat /dev/null > /etc/issue
# cat /dev/null > /etc/issue.net
# cat /dev/null > /etc/motd
4.設置密碼屬性,包括有效時間(-e)、失效時間、警告時間(-w)等。修改缺省的密碼長度。
# vi /etc/login.defs
PASS_MAX_DAYS 99999(設置密碼有效期限)
PASS_MIN_DAYS 0(設置修改密碼的最少時間段)
PASS_MIN_LEN 5(修改密碼設置的長度)
PASS_WARN_AGE 7(修改改變密碼的告警時間)
修改為:
PASS_MAX_DAYS 30 (30天后必須重新設置)
PASS_MIN_LEN 8 (密碼長度不得少于8位)
5.默認賬號的管理。查看/etc/passwd 文件,刪除多余的賬號,檢查有沒有除root外UID、GID為0的其它非法用戶。
6.如果正在接手的是一個新的服務器,那么對原先的配置必須有深刻的了解。要刪除一些舊的系統(tǒng)賬戶應注意以下問題:
(1) 刪除用戶與其home目錄
# userdel -r good
(2) 刪除用戶未接收的郵件
# rm /var/spool/mail/good
(3) 刪除由此用戶在后臺執(zhí)行的程序
# ps -aux|grep "good"
# kill PID
(4) 刪除crontab 任務
# crontab -l good
# crontab -d good
7.應該取消普通用戶的控制臺訪問權限,比如shutdown、reboot、halt等命令。
# rm -f /etc/security/console.apps/*
*表示要注銷的程序名,如halt、shutdown
8.修改/etc/profile文件中的“HISTFILESIZE”和“HISTSIZE”行,確定所有用戶的.bash_history文件中可以保存的舊命令條數(shù)。編輯profile文件(vi /etc/profile),把下面這行改為:
HISTFILESIZE=30
HISTSIZE=30
表示每個用戶的.bash_history文件只可以保存30條舊命令。
9.編輯.bash_logout文件。
# vi /etc/skel/.bash_logou(添加下面這行)
# rm -f $HOME/.bash_history
這樣,當用戶每次注銷時,.bash_history文件自動被刪除。
億恩科技地址(ADD):鄭州市黃河路129號天一大廈608室 郵編(ZIP):450008 傳真(FAX):0371-60123888
聯(lián)系:億恩小凡
QQ:89317007
電話:0371-63322206 本文出自:億恩科技【www.laynepeng.cn】
服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]
|