引言:SSH连接安全的重要性
在互联网环境中,服务器安全是运维工作的重中之重。SSH作为远程管理服务器的最主要方式,其安全性直接关系到服务器的整体安全。FinalShell作为一款专业的SSH终端工具,提供了完善的安全功能和配置选项。本文将详细介绍如何通过FinalShell构建安全的SSH连接环境,保护您的服务器免受未授权访问。
一、SSH密钥认证配置
1.1 为什么使用SSH密钥认证?
传统的密码认证方式存在以下风险:
- 密码被暴力破解:弱密码容易被字典攻击或暴力破解
- 密码泄露风险:密码可能被截获或通过其他途径泄露
- 重复使用风险:多台服务器使用相同密码,一台被攻破全部受威胁
SSH密钥认证的优势:
- 更强的安全性:密钥长度通常2048位或4096位,几乎无法暴力破解
- 便捷的管理:一个密钥对可以管理多台服务器
- 无需输入密码:配置密钥后可以实现无密码自动登录
1.2 生成SSH密钥对
在FinalShell中生成SSH密钥对的步骤:
- 打开密钥管理器:在工具菜单中选择"SSH密钥管理"
- 生成新密钥:点击"生成密钥对"按钮
- 选择密钥类型:推荐使用RSA 4096位或ED25519
- 设置密钥密码:为私钥设置强密码(可选但推荐)
- 保存密钥:保存私钥文件并记录公钥内容
命令行方式生成密钥:
# 生成RSA 4096位密钥对
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# 生成ED25519密钥对(推荐,更安全高效)
ssh-keygen -t ed25519 -C "your_email@example.com"
1.3 配置服务器端密钥认证
将公钥部署到服务器:
- 复制公钥内容:从FinalShell密钥管理器中复制公钥
- 登录到服务器:使用密码方式登录服务器
- 编辑authorized_keys:
# 创建.ssh目录(如果不存在)
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# 编辑authorized_keys文件
vim ~/.ssh/authorized_keys
# 将公钥内容粘贴到文件中,设置正确的权限
chmod 600 ~/.ssh/authorized_keys
配置SSH密钥认证,提升连接安全性
1.4 在FinalShell中使用密钥认证
配置密钥认证连接:
- 新建SSH连接:填写服务器IP地址和端口
- 选择认证方式:在认证方式中选择"公钥认证"
- 导入私钥:导入之前生成的私钥文件
- 输入密钥密码:如果私钥设置了密码,在此输入
- 测试连接:点击连接测试密钥认证是否配置成功
二、密码安全策略
2.1 强密码设置原则
如果必须使用密码认证,请遵循以下原则:
- 最小长度:密码长度不少于12个字符
- 复杂度要求:包含大小写字母、数字和特殊符号
- 避免个人信息:不使用生日、手机号等易猜信息
- 定期更换:每3-6个月更换一次密码
- 唯一性:不同服务器使用不同密码
强密码示例:
- 好:K9#mP2$vL5@xR8!
- 好:Blue-Sky-2026-Mountain-River
- 差:12345678、password、admin123
2.2 密码存储安全
FinalShell提供了安全的密码存储机制:
- 加密存储:密码使用AES-256加密后存储在本地
- 主密码保护:可设置主密码,启动时需要验证
- 自动锁定:闲置一段时间后自动锁定,需要重新输入密码
- 密码不显示:密码输入框默认隐藏,防止偷窥
2.3 密码管理器集成
FinalShell支持与第三方密码管理器集成:
- KeePass集成:从KeePass数据库读取密码
- LastPass支持:通过浏览器插件获取密码
- 1Password集成:使用1Password的安全存储
三、SSH连接安全设置
3.1 禁用不安全的认证方式
在服务器SSH配置中禁用不安全的认证方式:
编辑 /etc/ssh/sshd_config:
# 禁用密码认证(仅允许密钥认证)
PasswordAuthentication no
# 禁用空密码
PermitEmptyPasswords no
# 禁用基于主机的认证
HostbasedAuthentication no
# 禁用root直接登录(建议)
PermitRootLogin no
# 限制最大认证尝试次数
MaxAuthTries 3
# 认证失败后的延迟
LoginGraceTime 60
3.2 更改默认SSH端口
将SSH端口从默认的22改为其他端口可以减少大量自动化攻击:
# 在sshd_config中修改端口
Port 22222
# 修改后需要重启SSH服务
systemctl restart sshd
# 或
service sshd restart
修改SSH端口并加固安全设置
3.3 启用防火墙规则
使用防火墙限制SSH访问:
# 使用iptables限制SSH访问(仅允许特定IP)
iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22222 -j ACCEPT
iptables -A INPUT -p tcp --dport 22222 -j DROP
# 使用firewalld配置
firewall-cmd --permanent --add-port=22222/tcp
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100/32" port protocol="tcp" port="22222" accept'
firewall-cmd --reload
# 使用ufw配置(Ubuntu)
ufw allow from 192.168.1.100 to any port 22222
ufw enable
四、会话安全与加密
4.1 选择强加密算法
在FinalShell中选择安全的加密算法:
- 密钥交换算法:curve25519-sha256、ecdh-sha2-nistp384
- 对称加密:chacha20-poly1305、aes256-gcm@openssh.com
- 消息认证:hmac-sha2-256-etm@openssh.com、hmac-sha2-512-etm@openssh.com
在服务器sshd_config中配置:
# 推荐的加密算法配置
KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp384
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com
MACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com
4.2 会话保活设置
配置会话保活参数,防止会话被劫持:
- 客户端保活:每隔60秒发送保活包
- 服务端保活:设置ClientAliveInterval和ClientAliveCountMax
- 会话超时:设置空闲会话自动断开时间
# 客户端配置(~/.ssh/config或FinalShell连接设置)
ServerAliveInterval 60
ServerAliveCountMax 3
# 服务端配置(/etc/ssh/sshd_config)
ClientAliveInterval 60
ClientAliveCountMax 3
ClientAliveInterval 300 # 5分钟后断开空闲连接
五、访问控制与审计
5.1 限制允许登录的用户
在服务器上限制哪些用户可以通过SSH登录:
# 只允许特定用户登录
AllowUsers user1 user2 user3
# 禁止特定用户登录
DenyUsers root admin test
# 只允许特定组登录
AllowGroups sshusers sysadmin
# 禁止特定组登录
DenyGroups nogroup
5.2 启用登录日志审计
启用和查看SSH登录日志:
# 查看最近的SSH登录记录
last
# 查看失败的登录尝试
lastb
# 查看认证日志
tail -f /var/log/auth.log # Debian/Ubuntu
tail -f /var/log/secure # CentOS/RHEL
# 查看当前登录的用户
who
w
定期审计登录日志,及时发现异常访问
5.3 使用TCP Wrappers
配置TCP Wrappers进行额外的访问控制:
# 编辑/etc/hosts.allow
sshd: 192.168.1.0/24 : ALLOW
sshd: 10.0.0.100 : ALLOW
# 编辑/etc/hosts.deny
sshd: ALL : DENY
六、双因素认证(2FA)
6.1 配置Google Authenticator
为SSH添加双因素认证:
- 安装Google Authenticator:
# Ubuntu/Debian
sudo apt-get install libpam-google-authenticator
# CentOS/RHEL
sudo yum install google-authenticator
# 运行配置向导
google-authenticator
- 配置SSH使用Google Authenticator:
# 编辑/etc/pam.d/sshd,在文件开头添加
auth required pam_google_authenticator.so
# 编辑/etc/ssh/sshd_config
ChallengeResponseAuthentication yes
6.2 使用其他2FA方案
除了Google Authenticator,还可以使用:
- Authy:支持多设备同步
- FreeOTP:开源的认证应用
- YubiKey:硬件密钥,更安全
七、FinalShell客户端安全设置
7.1 启用主密码
为FinalShell设置主密码,保护保存的连接信息:
- 打开FinalShell设置
- 在"安全"选项中启用"主密码保护"
- 设置强主密码(建议使用密码管理器生成)
- 启用"自动锁定",设置空闲超时时间
7.2 配置安全策略
在FinalShell中设置安全策略:
- 复制确认:复制敏感内容时弹出确认对话框
- 粘贴确认:粘贴命令前需要确认
- 日志自动清理:定期清理会话日志
- 禁止保存密码:对于敏感连接,不保存密码
7.3 定期更新FinalShell
保持FinalShell为最新版本:
- 安全补丁:及时修复安全漏洞
- 新功能:获得新的安全特性
- 兼容性:保持与最新SSH协议的兼容
八、安全最佳实践
8.1 定期安全检查清单
- □ 定期审查SSH登录日志,查找异常访问
- □ 检查是否有未授权的密钥在authorized_keys中
- □ 确保所有服务器SSH配置符合安全标准
- □ 验证防火墙规则是否正确配置
- □ 测试备份服务器是否可以通过SSH正常访问
8.2 应急响应流程
发现安全事件时的处理流程:
- 立即断开:断开可疑连接,必要时断开服务器网络
- 保存证据:备份日志文件和相关数据
- 评估损失:检查系统是否被入侵,数据是否泄露
- 恢复访问:更换所有密钥和密码,从备份恢复系统
- 加固防护:分析原因,加强安全措施
总结
SSH安全是服务器安全的基石,通过本文介绍的各项安全配置措施,您可以大幅提升SSH连接的安全性。关键是要同时保护客户端和服务器端,采用多层防护策略:使用强认证方式、限制访问来源、启用加密传输、定期审计日志。安全是一个持续的过程,需要不断学习和改进。FinalShell为您提供了完善的安全工具,合理配置和使用这些工具,可以让您的服务器管理更加安全可靠。
立即下载最新版FinalShell,开始构建安全的SSH连接环境!