* /etc/hosts.allow 文件
但是對(duì)于telnet、ftp等服務(wù),如果將其一同關(guān)閉,那么對(duì)于管理員需要遠(yuǎn)程管理時(shí),將非常不方便。Linux提供另外一種更為靈活和有效的方法來實(shí)現(xiàn)對(duì)服務(wù)請(qǐng)求用戶的限制,從而可以在保證安全性的基礎(chǔ)上,使可信任用戶使用各種服務(wù)。Linux提供了一個(gè)叫TCP wrapper的程序。在大多數(shù)發(fā)布版本中該程序往往是缺省地被安裝。利用TCP wrapper你可以限制訪問前面提到的某些服務(wù)。而且TCP wrapper的記錄文件記錄了所有的企圖訪問你的系統(tǒng)的行為。通過last命令查看該程序的log,管理員可以獲知誰曾經(jīng)或者企圖連接你的系統(tǒng)。
在/etc目錄下,有兩個(gè)文件:hosts.deny hosts.allow 通過配置這兩個(gè)文件,你可以指定哪些機(jī)器可以使用這些服務(wù),哪些不可以使用這些服務(wù)。
當(dāng)服務(wù)請(qǐng)求到達(dá)服務(wù)器時(shí),TCP wrapper就按照下列順序查詢這兩個(gè)文件,直到遇到一個(gè)匹配為止:
1.當(dāng)在/etc/hosts.allow里面有一項(xiàng)與請(qǐng)求服務(wù)的主機(jī)地址項(xiàng)匹配,那么就允許該主機(jī)獲取該服務(wù)
2.否則,如果在/etc/hosts.deny里面有一項(xiàng)與請(qǐng)求服務(wù)的主機(jī)地址項(xiàng)匹配,就禁止該主機(jī)使用該項(xiàng)服務(wù)。
3.如果相應(yīng)的配置文件不存在,訪問控制軟件就認(rèn)為是一個(gè)空文件,所以可以通過刪除或者移走配置文件實(shí)現(xiàn)對(duì)清除所有設(shè)置。在文件中,空白行或者以#開頭的行被忽略,你可以通過在行前加 # 實(shí)現(xiàn)注釋功能。
配置這兩個(gè)文件是通過一種簡單的訪問控制語言來實(shí)現(xiàn)的,訪問控制語句的基本格式為:
程序名列表:主機(jī)名/IP地址列表。
程序名列表指定一個(gè)或者多個(gè)提供相應(yīng)服務(wù)的程序的名字,名字之間用逗號(hào)或者空格分割,可以在inetd.conf文件里查看提供相應(yīng)服務(wù)的程序名:如上面的文件示例中,telent所在行的最后一項(xiàng)就是所需的程序名:in.telnetd。
主機(jī)名/IP地址列表指定允許或者禁止使用該服務(wù)的一個(gè)或者多個(gè)主機(jī)的標(biāo)識(shí),主機(jī)名之間用逗號(hào)或空格分隔。程序名和主機(jī)地址都可以使用通配符,實(shí)現(xiàn)方便的指定多項(xiàng)服務(wù)和多個(gè)主機(jī)。
Linux提供了下面靈活的方式指定進(jìn)程或者主機(jī)列表:
1.一個(gè)以"."起始的域名串,如 .amms.ac.cn 那么www.amms.ac.cn就和這一項(xiàng)匹配
2.以"."結(jié)尾的IP串如 202.37.152. 那么IP地址包括202.37.152. 的主機(jī)都與這一項(xiàng)匹配。
3.格式為n.n.n.n/m.m.m.m表示網(wǎng)絡(luò)/掩碼,如果請(qǐng)求服務(wù)的主機(jī)的IP地址與掩碼的位與的結(jié)果等于n.n.n.n 那么該主機(jī)與該項(xiàng)匹配。
4.ALL表示匹配所有可能性
5.EXPECT表示除去后面所定義的主機(jī)。如:list_1 EXCEPT list_2 表示list_1主機(jī)列表中除去List_2所列出的主機(jī)
6.LOCAL表示匹配所有主機(jī)名中不包含"."的主機(jī)
上面的幾種方式只是Linux提供的方式中的幾種,但是對(duì)于我們的一般應(yīng)用來說是足夠了。我們通過舉幾個(gè)例子來說明這個(gè)問題:
例一:我們只希望允許同一個(gè)局域網(wǎng)的機(jī)器使用服務(wù)器的ftp功能,而禁止廣域網(wǎng)上面的ftp服務(wù)請(qǐng)求,本地局域網(wǎng)由 202.39.154.、202.39.153.和202.39.152. 三個(gè)網(wǎng)段組成。
在hosts.deny文件中,我們定義禁止所有機(jī)器請(qǐng)求所有服務(wù):
ALL:ALL
在hosts.allow文件中,我們定義只允許局域網(wǎng)訪問ftp功能:
in.ftpd -l –a: 202.39.154 202.39.153. 202.39.152.
這樣,當(dāng)非局域網(wǎng)的機(jī)器請(qǐng)求ftp服務(wù)時(shí),就會(huì)被拒絕。而局域網(wǎng)的機(jī)器可以使用ftp服務(wù)。此外,應(yīng)該定期檢查/var/log目錄下的紀(jì)錄文件,發(fā)現(xiàn)對(duì)系統(tǒng)安全有威脅的登錄事件。last命令可以有效的查看系統(tǒng)登錄事件,發(fā)現(xiàn)問題所在。
最后tcpdchk是檢查TCP_WAPPERS配置的程序。它檢查TCP_WAPPERS的配置,并報(bào)告它可以發(fā)現(xiàn)的問題或潛在的問題。在所有的配置都完成了之后,請(qǐng)運(yùn)行tcpdchk程序:
[root@deep]# tcpdchk
* /etc/services 文件
端口號(hào)和標(biāo)準(zhǔn)服務(wù)之間的對(duì)應(yīng)關(guān)系在RFC 1700 “Assigned Numbers”中有詳細(xì)的定義。“/etc/services”文件使得服務(wù)器和客戶端的程序能夠把服務(wù)的名字轉(zhuǎn)成端口號(hào),這張表在每一臺(tái)主機(jī)上都存在,其文件名是“/etc/services”。只有“root”用戶才有權(quán)限修改這個(gè)文件,而且在通常情況下這個(gè)文件是沒有必要修改的,因?yàn)檫@個(gè)文件中已經(jīng)包含了常用的服務(wù)所對(duì)應(yīng)的端口號(hào)。為了提高安全性,我們可以給這個(gè)文件加上保護(hù)以避免沒有經(jīng)過授權(quán)的刪除和改變。為了保護(hù)這個(gè)文件可以用下面的命令:
[root@deep]# chattr +i /etc/services
* /etc/securetty 文件
“/etc/securetty”文件允許你規(guī)定“root”用戶可以從那個(gè)TTY設(shè)備登錄。登錄程序(通常是“/bin/login”)需要讀取“/etc/securetty”文件。它的格式是:列出來的tty設(shè)備都是允許登錄的,注釋掉或是在這個(gè)文件中不存在的都是不允許root登錄的。
注釋掉(在這一行的開頭加上#號(hào))所有你想不讓root登錄的tty設(shè)備。
編輯securetty文件(vi /etc/securetty)象下面一樣,注釋掉一些行:
tty1
#tty2
#tty3
#tty4
#tty5
#tty6
#tty7
#tty8
* 使Control-Alt-Delete關(guān)機(jī)鍵無效
把“/etc/inittab”文件中的一行注釋掉可以禁止用Control-Alt-Delete關(guān)閉計(jì)算機(jī)。如果服務(wù)器不是放在一個(gè)安全的地方,這非常重要。
編輯inittab文件(vi /etc/inittab)把這一行:
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
改為:
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
用下面的命令使改變生效:
[root@deep]# /sbin/init q
* 改變“/etc/rc.d/init.d/”目錄下的腳本文件的訪問許可
/etc/rc.d/init.d/下的腳本主要包含了啟動(dòng)服務(wù)的腳本程序。一般用戶沒有什么必要知道腳本文件的內(nèi)容。所以應(yīng)該改變這些腳本文件的權(quán)限。
[root@deep]# chmod -R 700 /etc/rc.d/init.d/*
這樣只有root可以讀、寫和執(zhí)行這個(gè)目錄下的腳本。
* /etc/rc.d/rc.local 文件
在默認(rèn)情況下,當(dāng)?shù)卿浹b有Linux系統(tǒng)的計(jì)算機(jī)時(shí),系統(tǒng)會(huì)告訴你Linux發(fā)行版的名字、版本號(hào)、內(nèi)核版本和服務(wù)器名稱。這泄露了太多的系統(tǒng)信息。最好只顯示一個(gè)“Login:”的提示信息。
第一步:
編輯“/ect/rc.d/rc.local”文件,在下面這些行的前面加上“#”:
--
# This will overwrite /etc/issue at every boot. So, make any changes you
# want to make to /etc/issue here or you will lose them when you reboot.
#echo "" > /etc/issue
#echo "$R" >> /etc/issue
#echo "Kernel $(uname -r) on $a $(uname -m)" >> /etc/issue
#
#cp -f /etc/issue /etc/issue.net
#echo >> /etc/issue
--
第二步:
刪除“/etc”目錄下的“issue.net”和“issue”文件:
[root@deep]# rm -f /etc/issue
[root@deep]# rm -f /etc/issue.net
注意:“/etc/issue.net”文件是用戶從網(wǎng)絡(luò)登錄計(jì)算機(jī)時(shí)(例如:telnet 、SSH),看到的登錄提示。同樣在“”目錄下還有一個(gè)“issue”文件,是用戶從本地登錄時(shí)看到的提示。這 兩個(gè)文件都是文本文件,可以根據(jù)需要改變。但是,如果想刪掉這兩個(gè)文件,必須向上面介紹的那樣把 “/etc/rc.d/rc.local”腳本中的那些行注釋掉,否則每次重新啟動(dòng)的時(shí)候,系統(tǒng)又會(huì)重新創(chuàng)建這兩個(gè)文件。
<全文完>
安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢】
Linux網(wǎng)絡(luò)服務(wù)器配置基礎(chǔ)(下)
2006-03-31 14:30:17 作者:木子摘錄 來源:
相關(guān)熱詞搜索:名師講堂