tcp調試助手使用教程:tcp工具連接失敗

一、TCP_Wrappers

1. 簡介

全稱是Transmission Control Protocol (TCP) Wrappers ,它是一個基於主機的網絡訪問控制列表系統。最初代碼由Wietse Venema在1990年編寫(比Linux的出現要早一點),2001年以類BSD的許可發佈。TCP Wrappers工作在TCP/IP模型的第4層(傳輸層),對有狀態連接的特定服務進行安全檢測並實現訪問控制。

核心配置文件是:

  • /etc/hosts.allow
  • /etc/hosts.deny

TCP Wrappers有一個TCP守護進程:tcpd。可以在 wrappers 下進行訪問控制的通常有 :

  • telnet
  • ssh
  • sendmail
  • ftp
  • pop3
  • vsftpd

2. 查看系統是否支持

TCP Wrappers核心是libwrap庫,可以通過命令查看系統是否支持:

sudo ldd /usr/sbin/sshd | grep libwrap
Linux 安全工具TCP_Wrappers、DenyHosts

這裡sshd使用了libwrap。

3. 工作流程:

  1. 遠程IP請求連接
  2. TCP Wrapper先看/etc/hosts.allow中是否允許,有允許就放行;
  3. 沒有允許,看/etc/hosts.deny是否禁止,如果存在就禁止連接;
  4. 兩個文件都沒有默認放行。

另外tcp_wrappers可以設置調用外部程序,如記錄日誌等。

4. tcp_wrappers配置文件語法

服務列表@host:主機列表:選項服務列表@host:主機列表:選項服務列表@host:主機列表:選項

(1) 服務列表

要支持的服務名,如:telnet,vsftpd等@host 是指定本機網卡,如果不寫就代表全部。

(2) 主機列表

受控制的機器,可以是機器名、IP,支持通配符* ? ALL EXECPT

  • 基於IP地址: 192.168.10.1 192.168.1.
  • 基於主機名: www.magedu.com .magedu.com 較少用
  • 基於網絡/掩碼: 192.168.0.0/255.255.255.0
  • 基於net/prefixlen: 192.168.1.0/24(CentOS7)
  • 基於網絡組(NIS 域): @mynetwork

內置ACL: ALL, LOCAL, KNOWN, UNKNOWN,PARANOID

  • ALL:所有主機
  • LOCAL:本地主機
  • KNOWN:主機名可解析成ip的
  • UNKNOWN:主機名無法解析成IP的
  • PARANOID:正向解析與反向解析不對應的主機

(3) 選項,要控制的動作

  • ALLOW 接受
  • DENY 禁止

5. 示例

(1) telnet禁止192.168.0.0/16,但允許192.168.0.2,其它段不限制

vim /etc/hosts.allow
in.telnetd: 192.168.0.2
vim /etc/hosts.deny
in.telnetd: 192.168.

(2) 禁止192.168.1.4通過ssh連接

vim /etc/hosts.deny
# 自己的IP是192.168.1.2
sshd@192.168.1.2:192.168.1.4

(3) 禁止192.168.1.*網段ssh連接

vim /etc/hosts.deny
# 自己ip192.168.1.2
sshd@192.168.1.2:192.168.1.

(4) 允許本地網段,除了192.168.1.4連ssh

vim /etc/hosts.allow
# 可以用EXCEPT排除某個IP
sshd@192.168.1.2:192.168.1. EXCEPT 192.168.1.4
vim /etc/deny
sshd: ALL

(5) 在allow里使用deny

vim /etc/hosts.allow
sshd:192.168.1.4:deny
# 也可以在deny中使用allow
vim /etc/hosts.deny
sshd:192.168.1.4:allow

6. 使用tcpmatch查看連接情況

tcpdmatch  [-d]  daemon[@host]  client
-d 測試當前目錄下的 hosts.allow和hosts.deny

二、DenyHosts

由Phil Schwartz編寫,使用Python開發。它是通過監控系統安全日誌來分析是否有對OpenSSH的暴力破解行為。如果發現有暴力破解,就分析IP並加到etc/hosts.deny來禁止連接。

1. 安裝

官網地址: http://denyhosts.sourceforge.net/

  • yum安裝
yum install -y denyhosts
  • 下載安裝:
wget http://jaist.dl.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6.tar.gz
tar zxvf DenyHosts-2.6.tar.gz -C /usr/local/bin
cd DenyHosts-2.6
python setup.py install
cd /usr/share/denyhosts/
cp denyhosts.cfg-dist denyhosts.cfg
cp daemon-control-dist daemon-control
chown root daemon-control
chmod 700 daemon-control

設置開機啟動:

cd /etc/rc.d/init.d/
ln -s /usr/share/denyhosts/daemon-control denyhosts
chkconfig --add denyhosts
chkconfig daemon-control on
chkconfig --list denyhosts
# 啟動
/etc/init.d/daemon-control start  

vim /etc/rc.local
# 添加
/usr/share/denyhosts/daemon-control start

2. 配置文件設置

vim denyhosts.cfg
SECURE_LOG = /var/log/secure   #ssh日誌文件
# format is: i[dhwmy]
# Where i is an integer (eg. 7)
# m = minutes
# h = hours
# d = days
# w = weeks
# y = years
#
# never purge:
PURGE_DENY = 50m               #過多久後清除已阻止IP
HOSTS_DENY = /etc/hosts.deny   #將阻止IP寫入到hosts.deny
BLOCK_SERVICE = sshd           #阻止服務名
PURGE_THRESHOLD =              #定義了某一IP最多被解封多少次。某IP暴力破解SSH密碼被阻止/解封達到了PURGE_THRESHOLD次,則會被永久禁止;
DENY_THRESHOLD_INVALID = 1     #允許無效用戶登錄失敗的次數
DENY_THRESHOLD_VALID = 10      #允許普通用戶登錄失敗的次數
DENY_THRESHOLD_ROOT = 5        #允許root登錄失敗的次數
WORK_DIR = /usr/local/share/denyhosts/data #將deny的host或ip紀錄到Work_dir中
DENY_THRESHOLD_RESTRICTED = 1 #設定 deny host 寫入到該資料夾
LOCK_FILE = /var/lock/subsys/denyhosts #將DenyHOts啟動的pid紀錄到LOCK_FILE中,已確保服務正確啟動,防止同時啟動多個服務。
HOSTNAME_LOOKUP=NO            #是否做域名反解
ADMIN_EMAIL =                 #設置管理員郵件地址
DAEMON_LOG = /var/log/denyhosts #DenyHosts日誌位置

如果有ssh的攻擊記錄,可以在文件 /etc/hosts.deny查看。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/224421.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-09 14:38
下一篇 2024-12-09 14:38

相關推薦

發表回復

登錄後才能評論