在Ubuntu上限制FTP访问可以通过多种方式实现,包括使用防火墙规则、配置FTP服务器以及使用SELinux(如果适用)。以下是一些常见的方法:
安装并配置UFW(Uncomplicated Firewall):
sudo apt update
sudo apt install ufw
启用UFW:
sudo ufw enable
允许FTP访问: 你可以允许特定的IP地址或IP范围访问FTP服务器。例如,只允许本地网络访问:
sudo ufw allow from 192.168.1.0/24 to any port 21
限制FTP数据端口: FTP使用两个端口:21用于控制连接,20用于数据传输。你可以限制数据端口的访问:
sudo ufw allow from 192.168.1.0/24 to any port 20
重新加载UFW规则:
sudo ufw reload
安装vsftpd:
sudo apt update
sudo apt install vsftpd
配置vsftpd:
编辑/etc/vsftpd.conf
文件:
sudo nano /etc/vsftpd.conf
进行以下配置:
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
重启vsftpd服务:
sudo systemctl restart vsftpd
如果你使用的是SELinux,可以通过设置SELinux策略来限制FTP访问。
安装SELinux管理工具:
sudo apt install policycoreutils-python
设置SELinux上下文:
sudo chcon -Rt svirt_sandbox_file_t /var/ftp
配置SELinux策略:
编辑/etc/selinux/config
文件,设置SELinux为 enforcing 模式:
SELINUX=enforcing
重启系统:
sudo reboot
Fail2Ban可以防止暴力破解FTP登录尝试。
安装Fail2Ban:
sudo apt update
sudo apt install fail2ban
配置Fail2Ban:
编辑/etc/fail2ban/jail.local
文件:
sudo nano /etc/fail2ban/jail.local
添加以下内容:
[vsftpd]
enabled = true
port = ftp
filter = vsftpd
logpath = /var/log/vsftpd.log
bantime = 600
findtime = 600
maxretry = 3
重启Fail2Ban服务:
sudo systemctl restart fail2ban
通过以上方法,你可以在Ubuntu上有效地限制FTP访问,提高系统的安全性。