117.info
人生若只如初见

怎样防止CentOS SSH被暴力破解

防止CentOS SSH被暴力破解可以通过以下几种方法:

1. 修改SSH配置文件

编辑 /etc/ssh/sshd_config 文件,设置以下参数:

  • Port: 修改SSH默认端口,避免使用22号标准端口,以减少自动化工具的扫描效率。
  • PermitRootLogin: 禁止root用户通过SSH登录,改为使用普通用户登录后切换到root。
  • PasswordAuthentication: 禁用密码认证,只允许公钥认证。
  • MaxAuthTries: 限制登录尝试次数,例如设置为3次。
  • AllowUsers: 指定允许登录的用户,避免使用root用户。

示例配置:

Port 2222
PermitRootLogin no
PasswordAuthentication no
MaxAuthTries 3
AllowUsers user1 user2

修改配置后,重启SSH服务:

sudo systemctl restart sshd

2. 使用Fail2Ban

Fail2Ban 是一个开源工具,可以分析SSH登录日志,对多次失败的登录尝试进行封禁。

安装Fail2Ban

sudo yum install fail2ban

配置Fail2Ban

编辑 /etc/fail2ban/jail.local 文件,设置以下内容:

[DEFAULT]
bantime = 3600  # 封禁时间,单位秒
maxretry = 5     # 最大尝试次数

[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 5

启动Fail2Ban

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

3. 使用端口敲门(Port Knocking)

端口敲门是一种安全措施,要求客户端按特定顺序敲击多个端口,防火墙才会开放SSH端口。

安装Knockd

sudo yum install knockd

配置Knockd

编辑 /etc/knockd.conf 文件,设置以下内容:

[openSSH]
sequence = 5003,5001
seq_timeout = 15
start_command = /sbin/iptables -C INPUT -s %IP% -p tcp --dport 22 -j ACCEPT || /sbin/iptables -I INPUT 1 -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
cmd_timeout = 10

[closeSSH]
sequence = 7001
seq_timeout = 15
start_command = /sbin/iptables -C INPUT -p tcp --dport 22 -j DROP || /sbin/iptables -I INPUT 1 -p tcp --dport 22 -j DROP && /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
cmd_timeout = 10

启动Knockd

sudo systemctl enable knockd
sudo systemctl start knockd

4. 监控和日志分析

编写脚本定期分析SSH登录日志,例如:

#!/bin/bash
LOG_FILE="/var/log/secure"
THRESHOLD=5
BLOCK_TIME=600

fail2ban() {
    awk '/Failed password for invalid user/ { print $11 }' "$LOG_FILE" | sort | uniq -c | while read count ip; do
        if [ $count -gt $THRESHOLD ]; then
            echo "Blocking $ip - $count failed attempts"
            iptables -I INPUT -s $ip -j DROP
            (sleep $BLOCK_TIME; iptables -D INPUT -s $ip -j DROP) &
        fi
    done
}

clean_old_rules() {
    iptables -D INPUT -s $ip -j DROP 2>/dev/null
}

main() {
    fail2ban
    # 可以选择运行清理函数,定期清理旧的规则
    # clean_old_rules
}

main

确保脚本有执行权限并定期运行。

5. 使用防火墙限制访问

配置防火墙规则,限制特定IP地址或用户的访问。

sudo firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="192.168.1.0/24" service name="ssh" drop'
sudo firewall-cmd --reload

6. 定期更新系统和软件

保持系统和软件的最新状态,及时修补已知的安全漏洞。

sudo yum update

通过上述措施,可以显著提高CentOS系统的安全性,有效防御SSH暴力破解攻击。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fefd9AzsNAgNTB1w.html

推荐文章

  • 在CentOS上如何配置MongoDB安全策略

    在CentOS上配置MongoDB的安全策略,可以遵循以下步骤:
    1. 安装MongoDB
    首先,确保你已经安装了MongoDB。你可以使用以下命令来安装:
    sudo yum i...

  • CentOS sniffer能检测哪些攻击

    在CentOS系统中,sniffer工具(如tcpdump)主要用于网络数据包的捕获和分析,它本身并不直接检测攻击,而是通过分析数据包来识别潜在的安全问题。以下是一些可能...

  • CentOS下Golang内存如何优化

    在CentOS下优化Golang应用程序的内存使用是一个多方面的过程,涉及到垃圾回收(GC)调整、内存分配策略、使用内存池以及性能分析工具的使用等。以下是一些具体的...

  • CentOS备份文件怎么清理

    在CentOS系统中,清理备份文件可以通过编写shell脚本并使用crontab定时任务来实现。以下是一个简单的示例,展示如何清理特定目录下15天前的备份文件。
    1. 创...

  • centos ftpserver并发连接数

    在CentOS系统上,通过配置vsftpd服务,可以设置FTP服务器的并发连接数。具体来说,可以通过修改vsftpd的配置文件/etc/vsftpd/vsftpd.conf来实现这一目标。以下是...

  • Rust在Linux容器技术中的应用

    Rust在Linux容器技术中的应用主要体现在以下几个方面:
    containerd与Rust的集成 containerd的角色和功能:containerd是一个由云原生计算基金会(CNCF)管理的...

  • ubuntu上如何部署kafka

    在Ubuntu上部署Kafka涉及几个步骤,包括安装Java(因为Kafka是基于Java开发的)、下载和配置Kafka。以下是一个基本的指南:
    1. 安装Java
    Kafka需要Jav...

  • Debian Filezilla断点续传功能使用

    在Debian系统上使用FileZilla进行断点续传功能,可以按照以下步骤进行操作: 打开FileZilla:启动FileZilla客户端,并连接到远程FTP服务器。
    进入设置:点击...