用shell脚本防ssh和vsftpd暴力破解的详解讲解


要防止SSH和vsftpd服务的暴力破解攻击,你可以通过配置系统来增强安全性。虽然直接编写一个全面的shell脚本来自动完成所有配置可能不现实(因为涉及多个配置文件和权限设置),但我可以提供一个概述和关键步骤,你可以根据这些步骤来编写自己的脚本或手动配置系统。

### 1. SSH 暴力破解防护

#### a. 修改SSH默认端口

- 修改`/etc/ssh/sshd_config`文件,将`#Port 22`(如果默认被注释)改为`Port 新端口号`(如`Port 2222`),然后重启SSH服务。

#### b. 禁用root用户直接登录

- 在`/etc/ssh/sshd_config`中设置`PermitRootLogin no`,然后重启SSH服务。

#### c. 使用密钥对认证而非密码

- 鼓励使用SSH密钥对认证,禁用密码认证(将`PasswordAuthentication`设置为`no`),然后重启SSH服务。

#### d. 配置fail2ban

- 安装fail2ban,配置它来监控SSH登录失败尝试,并根据规则自动封禁IP。

**Shell脚本片段示例(非完整脚本,仅供思路参考)**:


#!/bin/bash

# 假设已经安装了ssh和fail2ban

# 修改SSH端口
sed -i 's/#Port 22/Port 2222/g' /etc/ssh/sshd_config
systemctl restart sshd

# 禁用root登录
sed -i 's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config
systemctl restart sshd

# 禁用密码认证(仅当密钥对认证已设置)
sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/g' /etc/ssh/sshd_config
systemctl restart sshd

# fail2ban配置(这通常涉及编辑配置文件,而非单行命令)
# 你需要编辑/etc/fail2ban/jail.local来添加或修改规则
# 这里不直接给出编辑命令,因为它依赖于具体的配置文件内容

### 2. vsftpd 暴力破解防护

#### a. 禁用匿名用户

- 修改`/etc/vsftpd.conf`,确保`anonymous_enable=NO`。

#### b. 限制登录尝试次数

- 可以使用PAM模块(如`pam_tally2`或`pam_faillock`)来限制登录尝试次数。

#### c. 配置fail2ban

- 同样,配置fail2ban来监控FTP登录失败尝试,并根据规则封禁IP。

**注意**:vsftpd的具体配置和安全措施可能因版本和操作系统而异。务必参考你所使用的vsftpd版本的官方文档。

**总结**:由于每个系统的配置和环境都有所不同,因此没有一个“一刀切”的shell脚本来防止所有类型的暴力破解攻击。上述步骤提供了一个大致的方向,你可以根据自己的需求和环境来定制脚本或手动配置。务必确保在进行任何更改之前备份相关配置文件,并在测试环境中验证更改的有效性。