如何保障企業(yè)系統(tǒng)服務(wù)安全
目前企業(yè)開源系統(tǒng)的運行保障是業(yè)界關(guān)注的熱點,如何保證開源系統(tǒng)高效、可靠的運行是非常重要的技術(shù)問題。本文將詳細介紹如何使用TCP wrappers來保障企業(yè)系統(tǒng)服務(wù)安全。
使用TCP Wrappers進行保障
1、主要功能
TCP wrappers作為客戶端/服務(wù)器模型的一部分,以/etc/hosts.allow和/etc/hosts.deny文件作為其簡單訪問控制列表(ACL)的基礎(chǔ),可用于與libwrap掛鉤的任何守護進程。此訪問控制語言定義的規(guī)則為:基于客戶端的地址和客戶端嘗試訪問的守護進程,選擇性地允許客戶端訪問服務(wù)器守護程序。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是一個以逗號分隔的一個或多個服務(wù)器守護進程(如rpcbind、vsftpd、sshd)的列表,client_list是一個以逗號分隔的一個或多個客戶端的列表,可選的command是當client_list中的一個客戶端試圖訪問daemon_lis t中的一個服務(wù)器守護進程時,要執(zhí)行的命令。
當客戶端請求連接到服務(wù)器時,按照下面的順序查閱服務(wù)器系統(tǒng)上的hosts.allow和hosts.deny文件,直到找到一個匹配項:
如果守護進程/客戶端對匹配hosts.allow中的一行,授予訪問權(quán)限。
如果守護進程/客戶端對匹配hosts. deny中的一行,訪問被拒絕。
如果在hosts.allow或hosts.deny中都沒有匹配項,授予訪問權(quán)限。
第一個匹配決定是否允許客戶端訪問服務(wù)器。當hosts.allow或hosts.deny中都不存在時,該文件好像是空的。通過刪除這兩個文件,可以允許所有客戶端訪問所有守護進程,但不建議這樣做。
要開放一個本地系統(tǒng)以從遠程系統(tǒng)訪問時,請遵循這些準則:
只對你要允許訪問它的系統(tǒng)開放本地系統(tǒng)。
只允許每個遠程系統(tǒng)訪問你要它訪問的數(shù)據(jù)。
只允許每個遠程系統(tǒng)以適當?shù)姆绞?只讀、讀/寫、只寫)訪問數(shù)據(jù)。
3、具體例子
為了一個更安全的系統(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中專門允許的連接。當匹配這條規(guī)則時,它向/var/log/tcpwrappers.log文件中添加一行。%c擴展到客戶端信息,以及%d擴展到客戶端試圖連接的守護進程名稱。
也可以在hosts.allow中包括行,以明確允許訪問某些服務(wù)和系統(tǒng)。例如,下面的hosts.allow文件允許任何客戶端連接到OpenSSH守護進程(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)在同一個域的任何系統(tǒng)的連接。第三行匹配其IP地址始自192.168.的任何系統(tǒng)以及本地系統(tǒng)。




















