2、TCP Wrappers(簡單防火牆)

2020-10-13 12:00:51

TCP Wrappers 簡介

TCP_Wrappers 是一個工作在第四層(傳輸層)的安全工具,對有狀態連線(TCP)的特定服務進行安全檢測並實現存取控制,界定方式凡是呼叫 libwrap.so 庫檔案的程式就可以受 TCP_Wrappers 的安全控制。它的主要功能就是控制誰可以存取,常見的程式有 rpcbind、vsftpd、sshd、telnet。
判斷方式:

檢視對應服務命令所在位置
	[root@test1 ~]# which sshd
	/usr/sbin/sshd
檢視指定命令執行時是否呼叫 libwrap.so 檔案
	[root@test1 ~]# ldd /usr/sbin/sshd | grep libwrap.so
		libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fbdd494d000)

TCP Wrappers 工作原理

以 ssh 為例,每當 ssh 的連線請求時,先讀取系統管理員所設定的存取控制檔案,符合要求,則會把這次連線原封不動的轉給 ssh 程序,由 ssh 完成後續工作,如果這次連線發起的 IP 不符合存取控制檔案中的設定,則會中斷連線請求。拒絕 ssh 服務。
在這裡插入圖片描述

  • 優先檢視 hosts.allow 檔案,匹配存取控制策略
  • 允許個別拒絕所有:hosts.allow 檔案新增單個允許的策略,hosts.deny 檔案新增 all
  • 拒絕個別允許所有:hosts.deny 檔案新增單個拒絕的策略,hosts.allow 檔案為空

TCP Wrappers 的使用

TCP_Wrappers 的使用主要依靠兩個組態檔 /etc/hosts/allow,/etc/hosts/deny;以此實現存取控制,預設情況下,這兩個檔案什麼都沒有新增,所以沒有限制。
組態檔編寫規則:
service_list@host:client_list
- service_list:是服務(程式)的列表,可以是多個,使用 「 , 」 隔開
- @host:設定允許或禁止他人從自己的哪個網口進入,這一項不寫就代表全部
- client_list:是存取者的地址,如果需要控制的使用者較多,可以使用空格或 「 , 」 隔開

格式如下:
- 基於IP地址:192.168.117.130 192.168.117.131
- 基於主機名:www.baidu.com www.aliyun.com
- 基於網路/掩碼:192.168.0.0/255.255.255.0
- 內建 ACL:ALL(所有主機)、LOCAL(本地主機)

實驗案例

準備好兩臺 Linux 作業系統的主機,設定好相關網路引數,實現可以正常通訊。

主機名IProot密碼
test~1 (使用者端)192.168.117.130123
test~2 (伺服器端)192.168.117.131123

1、拒絕 192.168.117.130 使用 ssh 遠端連線本機

#test2 新增拒絕策略
	[root@test2 ~]# vim /etc/hosts.deny 
	sshd:192.168.117.130
#test1 ssh 遠端連線 test2 失敗
	[root@test1 ~]# ssh root@192.168.117.131
	catssh_exchange_identification: read: Connection reset by peer

2、拒絕某一網段使用 ssh 遠端連線本地

#test2 新增拒絕策略
	[root@test2 ~]# vim /etc/hosts.deny 
	sshd:192.168.117.
#test1 ssh 遠端連線 test2 失敗
	[root@test1 ~]# ssh root@192.168.117.131
	ssh_exchange_identification: read: Connection reset by peer

3、只允許192.168.117.130 使用 ssh 遠端連線本機

#test2 新增允許策略
	[root@test2 ~]# vim /etc/hosts.allow 
	sshd:192.168.117.130
#test1 ssh 遠端連線 test2 成功
	[root@test1 ~]# ssh root@192.168.117.131
	root@192.168.117.131's password: 
	# test2 root 密碼:123
	Last login: Mon Oct 12 22:04:30 2020 from 192.168.117.130
	[root@test2 ~]#