在CentOS上限制SFTP访问可以通过多种方式实现,以下是一些常见的方法:
Chroot Jail可以将用户的根目录限制在一个特定的目录中,从而限制用户只能访问该目录及其子目录。
安装必要的软件包:
sudo yum install openssh-server
创建一个新的用户组(可选):
sudo groupadd sftpusers
创建一个新的用户并设置密码:
sudo useradd -m -G sftpusers your_username
sudo passwd your_username
编辑SSH配置文件:
sudo vi /etc/ssh/sshd_config
添加或修改以下配置:
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
重启SSH服务:
sudo systemctl restart sshd
你可以使用firewalld
来限制特定IP地址对SFTP服务的访问。
安装firewalld(如果尚未安装):
sudo yum install firewalld
启动并启用firewalld:
sudo systemctl start firewalld
sudo systemctl enable firewalld
添加SFTP服务到firewalld:
sudo firewall-cmd --permanent --add-service=sftp
重新加载firewalld配置:
sudo firewall-cmd --reload
限制特定IP访问:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'
sudo firewall-cmd --reload
SELinux可以提供更细粒度的访问控制。
安装SELinux管理工具(如果尚未安装):
sudo yum install policycoreutils-python
设置SELinux为 enforcing 模式(如果尚未设置):
sudo setenforce 1
创建一个新的SELinux策略模块(可选):
sudo ausearch -c 'sshd' --raw | audit2allow -M my_sshd
sudo semodule -i my_sshd.pp
配置SELinux策略(可选):
sudo vi /etc/selinux/config
将SELINUX=enforcing
改为SELINUX=permissive
进行测试,确认无误后再改回enforcing
。
Fail2Ban可以防止暴力破解SSH和SFTP登录尝试。
安装Fail2Ban:
sudo yum install fail2ban
启动并启用Fail2Ban:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
配置Fail2Ban:
sudo vi /etc/fail2ban/jail.local
添加以下内容:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 600
重启Fail2Ban服务:
sudo systemctl restart fail2ban
通过以上方法,你可以有效地限制CentOS上的SFTP访问,提高系统的安全性。