tcp工具连接失败(tcp调试助手使用教程)
程序员文章站
2024-03-27 09:10:40
一、tcp_wrappers1. 简介全称是transmission control protocol (tcp) wrappers ,它是一个基于主机的网络访问控制列表系统。最初代码由wietse...
一、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
这里sshd使用了libwrap。
3. 工作流程:
- 远程ip请求连接
- tcp wrapper先看/etc/hosts.allow中是否允许,有允许就放行;
- 没有允许,看/etc/hosts.deny是否禁止,如果存在就禁止连接;
- 两个文件都没有默认放行。
另外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查看。