优化Linux SFTP配置提升安全性的关键措施
密码认证易受暴力破解攻击,SSH密钥认证是更安全的选择。操作步骤:
ssh-keygen -t rsa -b 4096(默认生成id_rsa私钥和id_rsa.pub公钥);ssh-copy-id sftpuser@server_ip(自动将公钥追加到~/.ssh/authorized_keys);/etc/ssh/sshd_config,设置PasswordAuthentication no、PubkeyAuthentication yes;chmod 700 ~/.ssh、chmod 600 ~/.ssh/authorized_keys(防止未授权访问)。通过Chroot Jail将用户限制在指定目录(如家目录),防止越权访问系统文件。操作步骤:
sftpusers)和用户:groupadd sftpusers、useradd -m -g sftpusers -s /bin/false sftpuser(-s /bin/false禁止SSH shell登录);mkdir -p /home/sftpuser/uploads、chown root:root /home/sftpuser、chmod 755 /home/sftpuser(主目录必须由root拥有);sshd_config:在文件末尾添加Match Group sftpusers,并设置ChrootDirectory /home/%u(将用户限制在家目录)、ForceCommand internal-sftp(强制使用SFTP,禁用shell)。通过调整sshd_config文件,关闭SSH的非必要功能,减少攻击面:
X11Forwarding no、AllowTcpForwarding no(防止端口转发滥用);AllowUsers sftpuser或AllowGroups sftpusers(仅允许指定用户/组访问);Port 2222(避免针对默认端口22的扫描攻击,需同步更新防火墙规则)。通过防火墙(如UFW、iptables)限制SSH端口(默认22)的访问,仅允许可信IP地址连接:
sudo ufw allow from <client_ip> to any port 22(允许指定IP)、sudo ufw enable(启用防火墙);sudo iptables -A INPUT -p tcp --dport 22 -s <client_ip> -j ACCEPT(允许指定IP)、sudo iptables -A INPUT -p tcp --dport 22 -j DROP(拒绝其他IP)。Fail2ban可自动检测多次失败登录尝试,并封禁攻击IP。操作步骤:
sudo apt install fail2ban -y(Ubuntu/Debian)、sudo yum install epel-release -y && sudo yum install fail2ban -y(CentOS/RHEL);/etc/fail2ban/jail.local,设置[sshd]部分:enabled = true、port = 22、filter = sshd、logpath = /var/log/auth.log(Ubuntu/Debian)或/var/log/secure(CentOS/RHEL)、maxretry = 5(5次失败后封禁)、bantime = 3600(封禁1小时);sudo systemctl restart fail2ban。通过日志记录SFTP连接和操作,便于后续审计和异常排查:
/etc/ssh/sshd_config,设置LogLevel VERBOSE(记录详细日志,包括用户操作、IP地址、时间戳);sudo tail -f /var/log/auth.log(Ubuntu/Debian)或sudo tail -f /var/log/secure(CentOS/RHEL),实时监控登录和文件传输活动。保持系统和OpenSSH软件为最新版本,修复已知安全漏洞:
sudo apt update && sudo apt upgrade -y(Ubuntu/Debian)、sudo yum update -y(CentOS/RHEL);sudo systemctl restart sshd(应用配置变更)。通过强制访问控制(MAC)限制SFTP进程的权限,防止恶意操作:
Enforcing模式(sestatus查看),运行setsebool -P ssh_chroot_rw_homedirs on(允许SFTP用户在chroot目录中写入);/etc/apparmor.d/usr.sbin.sshd,添加针对SFTP用户的权限规则,限制其对系统文件的访问。