天天看點

關于libwrab

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,如需轉載請自行聯系原作者

繼續閱讀