溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

tcp_wrappers應(yīng)用詳解

發(fā)布時(shí)間:2020-06-24 05:39:27 來源:網(wǎng)絡(luò) 閱讀:996 作者:OpenSamlee 欄目:安全技術(shù)

簡介
    TCP wrappers 通常被稱為 wrappers,它是由 Wieste Venema 編寫,已經(jīng)出現(xiàn)幾年了。其背后的思想很簡單,其要旨是可以在您的 AIX (UNIX/Linux) 主機(jī)上快速輕松地鎖定流行的通過 TCP 訪問的客戶端。
    Wrappers 允許系統(tǒng)管理員控制 wrappers 支持的基于 TCP 的服務(wù)或守護(hù)進(jìn)程的訪問。Tcpd 控制從 /etc/inetd.conf 中運(yùn)行的 TCP 守護(hù)進(jìn)程。不過,很多基于 TCP 的應(yīng)用程序已加入 wrappers 支持(一般使用 libwrap 庫),并且能感知 wrapper;不通過 /etc/inetd.conf 進(jìn)行控制也沒有關(guān)系??梢栽?wrappers 下進(jìn)行訪問控制的通常有 telnet、ssh、sendmail、ftp 包、pop3 和 vsftpd。

Wrappers 提供對基于 UDP 的連接的有限控制,不過我建議使用內(nèi)置或第三方防火墻進(jìn)行基于 UDP 的訪問。


1.首先我得了解程序是否支持tcp_wrapper,使用strings命令和ldd命令獲取hosts_access或libwrap

    (1)并非所有服務(wù)均能由tcp_wrapper

    (2)判斷某服務(wù)程序是否能夠由tcp_wrapper
        動(dòng)態(tài)編譯:

 ldd 命令檢測其是否鏈接至libwrap庫上即可
 # ldd `which sshd` | grep libwrap
 libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f6788fe8000)

        靜態(tài)編譯:

 strings /path/to/program
  # which rpcbind
  /sbin/rpcbind
  # strings /sbin/rpcbind | grep hosts_access
  hosts_access

2.tcp_wrapper配置文件語法格式:
        daemon_list: client_list
        daemon_list:
            應(yīng)用程序名稱;
            應(yīng)用程序列表:如果有多個(gè),用逗號分隔即可;
            ALL:匹配所有進(jìn)程
        
        client_list:
            IP地址:172.16.100.100
            主機(jī)名:www.opensamlee.com
            網(wǎng)絡(luò)地址/子網(wǎng)掩碼:掩碼僅允許使用長格式,不允許使用CIDR格式
            172.16. 表示 172.16.0.0/255.255.0.0
            
        tcp_wrapper有幾個(gè)內(nèi)置的Macro     
            用于client_list的有:ALL, KNOWN, UNKNOWN, PARANOID
            用于daemon_list的有:ALL
        
        EXCEPT: 可以用于client或daemon之中,起到排除功能
        
        [:options]
            在hosts.allow文件使用deny選項(xiàng): 在hosts.allow文件定義拒絕規(guī)則
            在hosts.deny文件使用allow選項(xiàng):在hosts.deny文件定義放行規(guī)則
        
        spawn命令調(diào)用:
            echo
                %c: user@host
                %s: server@host
                %h: 客戶端主機(jī)名
                %p: 服務(wù)器上的進(jìn)程的PID
        
        #man 5 hosts_access:獲取其完整幫助信息    
        注意:echo的信息無需加引號,否則,命令替換可能不會(huì)進(jìn)行       

 in.telnetd:     ALL : spawn echo `date` login attempt from %c to %s >> /var/log/tcp_wrapper.log

3.tcp_wrapper匹配機(jī)制:
1、先檢查/etc/hosts.allow,如果被允許,則直接放行;
2、如果/etc/hosts.allow沒有匹配項(xiàng),則檢查/etc/hosts.deny,如果被拒絕,則禁止訪問;
3、如果二者均無匹配,則放行


tcp_wrapper實(shí)踐應(yīng)用案例:

  1. 本機(jī)ip為:172.16.100.7,

  (1)僅放行172.16網(wǎng)段訪問本機(jī)telnet服務(wù):

  (2)僅放行172.16網(wǎng)段訪問本機(jī)telnet服務(wù),但不允許172.16.100.8訪問

安裝telnet服務(wù):

# yum -y install telnet-server

查看telnet程序依賴的工作鏈

# ldd `which in.telnetd` 
linux-vdso.so.1 =>  (0x00007fff450c1000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f8055a31000)
libc.so.6 => /lib64/libc.so.6 (0x00007f805569d000)
/lib64/ld-linux-x86-64.so.2 (0x0000003541000000)
# ldd `which xinetd`
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fe109c7e000)

啟動(dòng)telnet服務(wù):

# chkconfig telnet on
# service xinetd start
Starting xinetd:                                           [  OK  ]
# ss -tnl |grep :23
LISTEN     0      64                       :::23                      :::*

定義tcp_wrapper規(guī)則文件---僅放行172.16網(wǎng)段訪問本機(jī)telnet服務(wù):

# vim /etc/hosts.allow
in.telnetd:    192.168.0.
# vim /etc/hosts.deny 
in.telnetd:    ALL

定義tcp_wrapper規(guī)則文件---僅放行172.16網(wǎng)段訪問本機(jī)telnet服務(wù),但不允許172.16.100.8訪問

# vim /etc/hosts.allow
in.telnetd:    172.16. EXCEPT 172.16.100.8
# vim /etc/hosts.deny 
in.telnetd:    ALL

使用172.16.100.8主機(jī)訪問:
# telnet 172.16.100.7
Trying 172.16.100.7...
Connected to 172.16.100.7.
Escape character is '^]'.
Connection closed by foreign host.


2.本機(jī)ip:172.16.100.7

(1)sshd僅允許172.16.0.0/16網(wǎng)段訪問:

方法:
1、/etc/hosts.allow
sshd: 172.16.
2、/etc/hosts.deny
sshd: ALL

3.本機(jī)ip:172.16.100.7

telnet服務(wù)不允許172.16.0.0/16,但允許172.16.100.200訪問;其他客戶端不做控制。

方法1:
1、/etc/hosts.allow
in.telnetd: 172.16.100.200
2、/etc/hosts.deny
in.telnetd: 172.16.
方法2:
/etc/hosts.deny
in.telnetd: 172.16. EXCEPT 172.16.100.200
方法3:
/etc/hosts.allow
in.telnetd: ALL EXCEPT 172.16. EXCEPT 172.16.100.200
/etc/hosts.deny
in.telnetd: ALL

3.本機(jī)ip:172.16.100.7

使用spawn命令調(diào)用記錄用戶訪問控制記錄信息:

/etc/hosts.allow
記錄登錄用戶日志:
##記錄允許172.16.主機(jī)訪問記錄
in.telnetd: 172.16. : spawn echo "somebody entered,`date`" >> /var/log/tcpwrapper.log
##記錄允許172.16.主機(jī) 且排除 172.16.100.8主機(jī)的訪問sshd記錄
sshd: 172.16. EXCEPT 172.16.100.8 :spawn echo "somebody entered,`date`" >> /var/log/tcpwrapper.log

/etc/hosts.deny
in.telnetd: ALL
sshd: ALL

4.本機(jī)ip:172.16.100.7
(1)僅允許172.16.0.0/16網(wǎng)絡(luò)內(nèi)的主機(jī)訪問vsftpd;但不允許172.16.200.8訪問

方法:
/etc/hosts.allow
vsftpd: 172.16. EXCEPT 172.16.200.8
/etc/hosts.deny
vsftpd: ALL


5.本機(jī)ip:172.16.100.7
(1)僅允許172.16.0.0/16網(wǎng)絡(luò)內(nèi)的主機(jī)訪問rsync;但不允許172.16.56.8訪問

方法:
/etc/hosts.allow
rsync: 172.16. EXCEPT 172.16.200.8
/etc/hosts.deny
rsync: ALL

6.使用tcp_wrapper控制vsftp服務(wù)僅允許172.16.0.0網(wǎng)絡(luò)中的主機(jī)訪問,但要拒絕172.16.200.中的所有主機(jī),對所有的拒絕訪問嘗試使用記錄日志:

方法:
/etc/hosts.allow
vsftpd: 172.16. 
/etc/hosts.deny
vsftpd: 172.16.200. spawn echo `date` login attempt from %c to %s >> /var/log/tcp_wrapper_vsftpd.log

以上tcp_wrappers應(yīng)用詳解所有內(nèi)容。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI