在Linux上如何配置SSH安全连接

弱密码弱密码 in 问答 2024-10-25 7:32:40

要在Linux上配置SSH安全连接,更新系统并安装OpenSSH。然后,创建非特权用户以避免使用root账户。修改`/etc/ssh/sshd_config`,禁用root登录(`PermitRootLogin no`),修改监听端口(如2222),并启用公钥认证(`PubkeyAuthentication yes`)。使用强密码或密钥对进行身份验证,并定期更新SSH软件以防止漏洞。最后,重启SSH服务。

安全性是至关重要的,SSH(Secure Shell)是一种用于加密远程登录和其他网络服务的协议,它提供了一条安全通道,通过不安全的网络进行数据传输。弱密码将介绍如何在 Linux 系统上配置 SSH 以确保其安全性。

网络安全 network security

1. 安装 OpenSSH

大多数 Linux 发行版默认都会安装 OpenSSH,但如果你的系统没有安装,可以通过包管理器来安装它。在 Debian/Ubuntu 系统上,你可以使用以下命令:

sudo apt update

sudo apt install openssh-server

对于 Red Hat/CentOS 用户,可以使用:

sudo yum install openssh-server

完成后,启动并启用 SSH 服务:

sudo systemctl start sshd

sudo systemctl enable sshd

2. 配置基本设置

打开 SSH 配置文件 /etc/ssh/sshd_config,你可以使用任何文本编辑器,例如 nanovim

sudo nano /etc/ssh/sshd_config

2.1 修改端口号

默认情况下,SSHD 运行在 22 端口。为了提高安全性,我们可以更改为其他较高的端口号。例如将其更改为 2222:

Port 2222

请记得防火墙也要允许新端口通过。

2.2 禁止 root 登录

直接以 root 身份登录存在很大的风险,因此建议禁用 root 账户远程访问。在配置文件中找到如下行,并修改为“no”:

PermitRootLogin no

2.3 使用公钥认证而非密码认证

公钥认证比密码更加安全。在客户端生成一对密钥(私钥和公钥),执行以下命令:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

按照提示操作,该命令会生成一个 RSA 类型的密钥对。

将公钥复制到服务器上,以便能够无密码地进行登录:

ssh-copy-id user@server_ip -p new_port_number

这里需要替换成实际用户名、服务器 IP 地址以及你之前设置的新端口号。

然后返回到 /etc/ssh/sshd_config 文件中,确保以下两项被正确设置:

PubkeyAuthentication yes

PasswordAuthentication no

这样就禁止了基于密码的验证,只能使用公钥进行验证。

3. 防火墙配置

需要确保防火墙允许新的 SSH 服务端口。如果你正在使用 UFW(Uncomplicated Firewall),则可以按如下方式添加规则:

如果还未启用 UFW,请先启用它:

sudo ufw enable

然后添加新规则:

sudo ufw allow 2222/tcp # 替换成你的自定义端口。

若想查看当前状态及已开放的端口,可以输入:

sudo ufw status verbose

对于 iptables 用户,你需要手动添加规则,如下所示:

sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT

别忘了保存 iptables 规则,以便重启后依然有效。

4. 限制访问来源 IP 地址

如果可能的话,为特定 IP 或 IP 段限制访问非常有必要。这不仅减少了暴力破解攻击,还能提升整体安全性。例如如果只希望来自 192.168.1.x 网段内机器能够连接,则可在 iptables 中增加如下规则:

sudo iptables -A INPUT -p tcp --dport <new_port> -s <allowed_ip>/24 -j ACCEPT

也要拒绝所有其他来源:

sudo iptables -A INPUT -p tcp --dport <new_port> !-s <allowed_ip>/24-j REJECT

同样不要忘记保存这些变化!

5. 启动率限制与防护机制

为了避免暴力破解攻击,我们可以利用 fail2ban 等工具来监控日志并自动阻止多次失败尝试者。首先安装 fail2ban:

sudo apt install fail2ban

成功安装后,其主要配置文件位于 /etc/fail2ban/jail.local ,我们需根据需求调整相应参数,包括最大尝试次数和封禁时长等信息。要特别注意针对 sshd 部分做出适当调整,使之生效即可。

例如:

[sshd]

enabled = true

port = <new_port_number>

filter = sshd

logpath = /var/log/auth.log

maxretry = 5

bantime =600

以上例子表示若某个 IP 地址连续五次失败登陆,会被暂时封锁 10 分钟(600 秒)。

总结

经过上述步骤,我们已经成功地加强了 Linux 上的 SSH 连接的安全性。从改变默认监听端口、禁止 root 用户登入,到采用更加可靠的方法如公共密匙认证,再到利用防火墙策略及监控工具,这些都是保护我们的服务器免受潜在威胁的重要措施。当然没有一种方法是万无一失的,因此定期检查和更新您的设定也是十分必要的一环!

并不断学习最新的信息技术动态,是维护良好计算机环境的重要途径!希望这篇指南能帮助您顺利实现一个更为稳定、安全且高效的远程管理体验!

-- End --

相关推荐