如何保障企業(yè)系統(tǒng)服務(wù)安全
目前企業(yè)開源系統(tǒng)的運(yùn)行保障是業(yè)界關(guān)注的熱點(diǎn),如何保證開源系統(tǒng)高效、可靠的運(yùn)行是非常重要的技術(shù)問題。本文將詳細(xì)介紹如何使用TCP wrappers來保障企業(yè)系統(tǒng)服務(wù)安全。
使用TCP Wrappers進(jìn)行保障
1、主要功能
TCP wrappers作為客戶端/服務(wù)器模型的一部分,以/etc/hosts.allow和/etc/hosts.deny文件作為其簡(jiǎn)單訪問控制列表(ACL)的基礎(chǔ),可用于與libwrap掛鉤的任何守護(hù)進(jìn)程。此訪問控制語言定義的規(guī)則為:基于客戶端的地址和客戶端嘗試訪問的守護(hù)進(jìn)程,選擇性地允許客戶端訪問服務(wù)器守護(hù)程序。ldd的輸出顯示sshd依賴的共享庫之一是libwrap:
$ ldd /usr/sbin/sshd | grep libwrap
libwrap.so.0 => /lib/libwrap.so.0 (0×00e7c000)
2、使用hosts.allow和hosts.deny
hosts.allow和hosts.deny文件中的每一行的格式如下:
daemon_list : client_list [: command]
其中daemon_list是一個(gè)以逗號(hào)分隔的一個(gè)或多個(gè)服務(wù)器守護(hù)進(jìn)程(如rpcbind、vsftpd、sshd)的列表,client_list是一個(gè)以逗號(hào)分隔的一個(gè)或多個(gè)客戶端的列表,可選的command是當(dāng)client_list中的一個(gè)客戶端試圖訪問daemon_lis t中的一個(gè)服務(wù)器守護(hù)進(jìn)程時(shí),要執(zhí)行的命令。
當(dāng)客戶端請(qǐng)求連接到服務(wù)器時(shí),按照下面的順序查閱服務(wù)器系統(tǒng)上的hosts.allow和hosts.deny文件,直到找到一個(gè)匹配項(xiàng):
如果守護(hù)進(jìn)程/客戶端對(duì)匹配hosts.allow中的一行,授予訪問權(quán)限。
如果守護(hù)進(jìn)程/客戶端對(duì)匹配hosts. deny中的一行,訪問被拒絕。
如果在hosts.allow或hosts.deny中都沒有匹配項(xiàng),授予訪問權(quán)限。
第一個(gè)匹配決定是否允許客戶端訪問服務(wù)器。當(dāng)hosts.allow或hosts.deny中都不存在時(shí),該文件好像是空的。通過刪除這兩個(gè)文件,可以允許所有客戶端訪問所有守護(hù)進(jìn)程,但不建議這樣做。
要開放一個(gè)本地系統(tǒng)以從遠(yuǎn)程系統(tǒng)訪問時(shí),請(qǐng)遵循這些準(zhǔn)則:
只對(duì)你要允許訪問它的系統(tǒng)開放本地系統(tǒng)。
只允許每個(gè)遠(yuǎn)程系統(tǒng)訪問你要它訪問的數(shù)據(jù)。
只允許每個(gè)遠(yuǎn)程系統(tǒng)以適當(dāng)?shù)姆绞?只讀、讀/寫、只寫)訪問數(shù)據(jù)。
3、具體例子
為了一個(gè)更安全的系統(tǒng),把以下行放入hosts.deny中以阻止所有訪問:
$ cat /etc/hosts.deny
...
ALL : ALL : echo '%c tried to connect to %d and was blocked' >> /var/log/tcpwrappers.log
此行可以防止任何客戶端連接到任何服務(wù),除非在hosts.allow中專門允許的連接。當(dāng)匹配這條規(guī)則時(shí),它向/var/log/tcpwrappers.log文件中添加一行。%c擴(kuò)展到客戶端信息,以及%d擴(kuò)展到客戶端試圖連接的守護(hù)進(jìn)程名稱。
也可以在hosts.allow中包括行,以明確允許訪問某些服務(wù)和系統(tǒng)。例如,下面的hosts.allow文件允許任何客戶端連接到OpenSSH守護(hù)進(jìn)程(ssh、scp、sftp),但只允許來自本地系統(tǒng)網(wǎng)絡(luò)和192.168. 子網(wǎng)用戶的telnet連接:
$ cat /etc/hosts.allow
sshd: ALL
in.telnet: LOCAL
in.telnet: 192.168.* 127.0.0.1
...
第一行允許從任何系統(tǒng)(ALL)連接到sshd。第二行允許與該服務(wù)器(LOCAL)在同一個(gè)域的任何系統(tǒng)的連接。第三行匹配其IP地址始自192.168.的任何系統(tǒng)以及本地系統(tǒng)。