ubuntu sftp安全策略有哪些
导读:1. 创建专用SFTP用户及组 为隔离普通用户与SFTP用户权限,需创建专用用户组(如sftpusers)及用户,并禁止其登录shell。例如: sudo groupadd sftpusers # 创建组 sudo useradd -m...
1. 创建专用SFTP用户及组
为隔离普通用户与SFTP用户权限,需创建专用用户组(如sftpusers
)及用户,并禁止其登录shell。例如:
sudo groupadd sftpusers # 创建组
sudo useradd -m -g sftpusers -s /bin/false sftpuser # 创建用户(-s /bin/false禁止shell登录)
sudo passwd sftpuser # 设置强密码
此步骤可防止用户通过SSH登录系统,仅允许SFTP传输。
2. 配置SSH限制SFTP访问
编辑/etc/ssh/sshd_config
文件,通过Match
指令针对SFTP用户组设置严格规则:
Match Group sftpusers
ChrootDirectory %h # 将用户限制在其家目录(Chroot Jail)
ForceCommand internal-sftp # 强制使用SFTP,禁用SSH shell
AllowTcpForwarding no # 禁用TCP转发(防止端口转发攻击)
X11Forwarding no # 禁用X11转发(防止图形界面攻击)
修改后重启SSH服务生效:sudo systemctl restart sshd
。
此配置是SFTP安全的核心,通过Chroot
隔离用户访问范围,ForceCommand
彻底禁用非SFTP功能。
3. 设置严格的目录权限
- 家目录权限:SFTP用户的家目录必须归
root
所有,权限设为755
(用户可读写执行,组及其他用户仅读执行),防止用户修改目录结构:sudo chown root:root /home/sftpuser sudo chmod 755 /home/sftpuser
- 子目录权限:若用户需上传文件,需创建子目录(如
uploads
),归用户所有,权限设为755
(或750
,限制组外用户访问):
注意:sudo mkdir /home/sftpuser/uploads sudo chown sftpuser:sftpusers /home/sftpuser/uploads sudo chmod 755 /home/sftpuser/uploads # 或750,根据需求调整
ChrootDirectory
的父目录(如/home/sftpuser
)不能由用户拥有,否则会导致Chroot
失效。
4. 启用公钥认证(禁用密码认证)
密码认证易受暴力破解,建议使用公钥认证提升安全性:
- 客户端生成密钥对:
ssh-keygen -t rsa -b 4096
(默认保存在~/.ssh/id_rsa
)。 - 将公钥上传至服务器:
cat ~/.ssh/id_rsa.pub | sudo tee -a /home/sftpuser/.ssh/authorized_keys
。 - 设置正确的权限:
sudo chown -R sftpuser:sftpusers /home/sftpuser/.ssh
、sudo chmod 700 /home/sftpuser/.ssh
、sudo chmod 600 /home/sftpuser/.ssh/authorized_keys
。 - 修改SSH配置禁用密码认证:
PasswordAuthentication no
。
此步骤可彻底杜绝密码猜测攻击。
5. 配置防火墙限制访问IP
使用ufw
(Uncomplicated Firewall)仅允许可信IP访问SFTP端口(默认22):
sudo ufw allow from <
trusted_ip>
to any port 22 # 替换<
trusted_ip>
为可信IP
sudo ufw enable # 启用防火墙
若需允许整个网段,可将<
trusted_ip>
替换为网段地址(如192.168.1.0/24
)。此措施可减少非法IP的连接尝试。
6. 安装并配置Fail2ban防暴力破解
Fail2ban可自动检测多次登录失败的IP并封禁:
- 安装Fail2ban:
sudo apt install fail2ban
。 - 创建自定义配置(覆盖默认设置):
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local
- 修改
[sshd]
部分:[sshd] enabled = true port = 22 filter = sshd logpath = /var/log/auth.log maxretry = 5 # 5次失败后封禁 bantime = 3600 # 封禁1小时(单位:秒)
- 重启Fail2ban:
sudo systemctl restart fail2ban
。
此配置可有效防止暴力破解攻击。
7. 日志监控与审计
开启SSH详细日志,定期检查用户活动:
- 修改SSH配置:
LogLevel VERBOSE
(记录详细登录信息,如IP、时间、操作)。 - 查看日志:
sudo tail -f /var/log/auth.log
(实时监控)或sudo grep 'sftp' /var/log/auth.log
(过滤SFTP日志)。
通过日志可快速发现异常登录(如陌生IP、频繁失败),及时采取措施。
8. 可选:使用SELinux或AppArmor增强隔离
- SELinux:若系统启用SELinux,需设置布尔值允许SFTP访问家目录:
sudo setsebool -P sftp_home_dir on # 允许SFTP访问用户家目录 sudo chcon -Rt svirt_sandbox_file_t /home/sftpuser # 设置正确的安全上下文
- AppArmor:编辑
/etc/apparmor.d/usr.sbin.sshd
,添加规则限制SFTP用户的文件访问路径(如仅允许/home/sftpuser/**
)。
此步骤适用于对安全要求极高的环境,进一步提升隔离性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu sftp安全策略有哪些
本文地址: https://pptw.com/jishu/723152.html