centOs下怎么安装和使用DenyHosts

发布时间:2022-02-17 10:40:23 作者:iii
来源:亿速云 阅读:277
# CentOS下怎么安装和使用DenyHosts

## 目录
1. [DenyHosts简介](#denyhosts简介)
2. [安装前准备](#安装前准备)
3. [安装DenyHosts](#安装denyhosts)
4. [配置DenyHosts](#配置denyhosts)
5. [启动和管理DenyHosts](#启动和管理denyhosts)
6. [测试DenyHosts](#测试denyhosts)
7. [常见问题解决](#常见问题解决)
8. [DenyHosts的替代方案](#denyhosts的替代方案)
9. [总结](#总结)

## DenyHosts简介
DenyHosts是一个用Python编写的开源安全工具,主要用于防止SSH暴力破解攻击。它会监控SSH登录日志(`/var/log/secure`),自动分析失败的登录尝试,并将多次尝试失败的IP地址加入`/etc/hosts.deny`文件,从而阻止这些IP继续尝试登录。

### 主要功能
- 自动分析SSH登录失败记录
- 支持自定义封锁阈值
- 支持白名单功能
- 可发送邮件通知管理员
- 支持同步全球黑名单

## 安装前准备

### 系统要求
- CentOS 6/7/8(本文以CentOS 7为例)
- Python 2.4或更高版本(DenyHosts 2.6需要Python 2.3+)
- root权限

### 检查Python
```bash
python --version
# 或
python -V

如果系统没有安装Python,可以使用以下命令安装:

yum install python -y

更新系统

建议先更新系统到最新状态:

yum update -y

安装DenyHosts

方法一:通过YUM安装(推荐)

EPEL仓库提供了DenyHosts包:

# 安装EPEL仓库
yum install epel-release -y

# 安装DenyHosts
yum install denyhosts -y

方法二:手动安装

如果EPEL仓库不可用,可以手动下载安装:

  1. 下载最新版本(注意检查官网最新版本):
wget https://sourceforge.net/projects/denyhosts/files/denyhosts/2.6/DenyHosts-2.6.tar.gz
  1. 解压并安装:
tar -xzvf DenyHosts-2.6.tar.gz
cd DenyHosts-2.6
python setup.py install
  1. 复制配置文件:
cp denyhosts.cfg-dist /etc/denyhosts.conf
cp daemon-control-dist /usr/share/denyhosts/daemon-control

配置DenyHosts

主配置文件

配置文件通常位于/etc/denyhosts.conf,主要需要关注的参数:

# 监控的日志文件
SECURE_LOG = /var/log/secure

# 阻止IP写入的文件
HOSTS_DENY = /etc/hosts.deny

# 封锁时间(秒),0表示永久封锁
PURGE_DENY = 0

# 允许的错误登录次数
DENY_THRESHOLD_INVALID = 5
DENY_THRESHOLD_VALID = 10
DENY_THRESHOLD_ROOT = 3

# 白名单文件
WORKSPACE = /usr/share/denyhosts/data
WHITELIST_HOSTS = WORKSPACE/allowed-hosts

# 邮件通知设置
ADMIN_EML = root@localhost
SMTP_HOST = localhost
SMTP_PORT = 25

白名单配置

编辑/usr/share/denyhosts/data/allowed-hosts,加入信任的IP或网段:

192.168.1.100
192.168.1.0/24

同步配置

DenyHosts可以从中央服务器同步已知的攻击IP:

# 启用同步
SYNC_SERVER = http://xmlrpc.denyhosts.net:9911
SYNC_INTERVAL = 1h

启动和管理DenyHosts

系统服务方式(YUM安装)

# 启动服务
systemctl start denyhosts

# 设置开机启动
systemctl enable denyhosts

# 检查状态
systemctl status denyhosts

手动启动方式(源码安装)

/usr/share/denyhosts/daemon-control start

常用管理命令

查看被阻止的IP:

cat /etc/hosts.deny

手动解封IP:

# 1. 从hosts.deny中删除对应行
# 2. 清除DenyHosts记录
cd /usr/share/denyhosts/data
grep -v "192.168.1.100" hosts > hosts.tmp && mv hosts.tmp hosts
grep -v "192.168.1.100" hosts-restricted > hosts-restricted.tmp && mv hosts-restricted.tmp hosts-restricted
grep -v "192.168.1.100" hosts-valid > hosts-valid.tmp && mv hosts-valid.tmp hosts-valid

测试DenyHosts

模拟失败登录

从另一台服务器执行:

ssh root@your-server -o ConnectTimeout=5

故意输入错误密码5次(根据你的阈值设置)

验证封锁

  1. 检查/etc/hosts.deny文件:
tail -f /etc/hosts.deny

应该能看到类似内容:

sshd: 192.168.1.100
  1. 检查DenyHosts日志:
tail -f /var/log/denyhosts

常见问题解决

问题1:找不到/var/log/secure

某些系统可能使用不同路径:

# 检查实际路径
ls /var/log/auth.log /var/log/secure

然后在配置文件中修改SECURE_LOG参数

问题2:SELinux阻止

如果遇到SELinux错误,可以尝试:

# 临时禁用
setenforce 0

# 或添加规则
audit2allow -a -M denyhosts
semodule -i denyhosts.pp

问题3:Python版本冲突

如果系统默认Python版本不兼容:

# 指定Python路径
/usr/bin/python2 /usr/share/denyhosts/daemon-control start

DenyHosts的替代方案

Fail2Ban

更强大的替代工具,支持多种服务:

yum install fail2ban -y

SSH配置加固

直接修改SSH配置:

# 限制登录尝试
vim /etc/ssh/sshd_config

添加:

MaxAuthTries 3
LoginGraceTime 1m

防火墙限制

使用firewalld或iptables限制连接频率:

# 使用firewalld
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" reject'
firewall-cmd --reload

总结

DenyHosts是保护SSH服务器简单有效的工具,通过本文您已经学会了: 1. 在CentOS上安装DenyHosts的两种方法 2. 关键配置项的详细说明 3. 日常管理和故障排除技巧 4. 了解替代方案

建议结合防火墙规则和SSH配置加固,形成多层次的安全防护。对于高安全要求的环境,可以考虑使用Fail2Ban等更先进的工具。

注意:DenyHosts项目自2015年后未更新,在生产环境中建议评估Fail2Ban等替代方案。 “`

这篇文章共计约2350字,采用Markdown格式编写,包含详细的安装步骤、配置说明、管理方法和故障排查等内容,适合作为CentOS系统管理员的参考指南。

推荐阅读:
  1. CentOS下JDK安装和配置
  2. centos 7 下nagios 安装和配置

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

centos denyhosts

上一篇:Centos7中怎么安装NTP网络时间协议

下一篇:CentOS中怎么安装wdDNS

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》