tcp_wrapper:tcp包裝器
對基于tcp協定開發并提供服務的應用程式,提供的一層通路控制工具;
基于庫調用實作其功能:
libwrap
判斷服務是否能夠由tcp_wrapper進行通路控制:
(1) 動态編譯:ldd指令;
ldd `which vsftpd`檢視是否有vsftpd的共享庫指令。libwrap.so.0 => /lib/libwrap.so.0
(2) 靜态編譯:strings指令檢視應用程式檔案,其結果中如果出現
hosts.allow
hosts.deny
在配置檔案在為各服務分别定義通路控制規則實作通路控制:
/etc/hosts.allow
/etc/hosts.deny
注意優先級 首先檢查/etc/hosts.allow ,若這裡允許則直接通過,
若不允許,再看/etc/hosts.deny 這裡若沒定義則通過。若定義不允許則不通過
配置檔案文法:
daemon_list: client_list [:options]
daemon_list:
應用程式的檔案名稱,而非服務名;
這裡可用 rpm -ql 服務名
例如 rpm -ql vsftpd
看到有個/usr/sbin/vsftpd,這個路徑把vsftpd當作應用daemon_list
應用程式檔案名稱清單,彼此間使用逗号分隔;
例如:sshd, vsftpd:
ALL表示所有服務;
client_list:
IP位址;
主機名;
網絡位址:必須使用完整格式的掩碼,不使用字首格式掩碼;是以類似于172.16.0.0/16不合法;
簡短格式的網絡位址:例如172.16. 表示 172.16.0.0/255.255.0.0 完整格式的掩碼
ALL:所有主機;
KNOWN:
UNKNOWN
PARANOID
例如:vsftpd服務不允許172.16.100.1通路
EXCEPT: 除了
hosts.allow
vsftpd: 172.16. EXCEPT 172.16.100.0/255.255.255.0 EXCEPT 172.16.100.1 //隻允許172.168.100.0/24 中的172.16.100.1 和 在172.168.0.0/24這個且不包含172.16.100.0/24的網絡。
[:options] 注意前面有個:
deny: 拒絕,主要用于hosts.allow檔案中
實作了反作用,不允許前面所說的主機通路服務。
allow:允許,用于hosts.deny檔案,實作allow的功能
實作了反作用,允許前面所說的主機通路服務。
spawn: 啟動額外應用程式:
vsftpd: ALL :spawn /bin/echo `date` login attempt from %c to %s, %d >> /var/log/vsftpd.deny.log //啟動echo指令将登陸失敗的使用者記錄在那個檔案中。
%c: client ip
%s: server ip
%d: daemon name
練習:控制192.168.0.110主機上telnet服務僅允許192.168.0.0網絡中的主機通路,但不包括192.168.1.0/255.255.255.0中的主機;對所有正常登入的主機都記錄于/var/log/telnet.allow.log中;所有未授權通路嘗試都記錄于/var/log/telnet.deny.log中;
首先啟動telnet服務。在centos 6中啟動telnet
若安裝完成,vim /etc/xinetd.d/telnet 将disable = no
然後重新啟動xinetd
service xinetd restart 這時候可以用ss -tnl檢視23端口是否已經開啟。
這是在centos 7上啟動telnet。
1. CentOS7.0 telnet-server 啟動的問題。
①、先檢查CentOS7是否已經安裝以下兩個安裝包:telnet-server、xinetd。指令如下:
[root@master ~]# yum install telnet-server
[root@master ~]# yum install telnet
[root@master ~]# yum install xinetd
安裝完成後,将xinetd服務加入開機自啟動:
systemctl enable xinetd.service
将telnet服務加入開機自啟動:
systemctl enable telnet.socket
最後,啟動以上兩個服務即可:
systemctl start telnet.socket
systemctl start xinetd(或service xinetd start)
在/etc/hosts.allow 中輸入
in.telnetd:192.168. EXCEPT 192.168.1.0/255.255.255.0 :spawn /bin/echo `date` login scuccess connect from %c to %s, %d >> /var/log/telnet.allow.log //注意空格
在/etc/hosts.deny 中輸入
in.telnetd:ALL:spawn /bin/echo `date` login fail connnect from %c to %s,%d >> /var/log/telnet.deny.log
如此便完成任務
本文轉自 神迹難覓 51CTO部落格,原文連結:http://blog.51cto.com/ji123/1959469,如需轉載請自行聯系原作者