在Linux上,有多種方法可以限制FTP服務器的訪問。以下是一些常見的方法:
vsftpd是一個非常流行的FTP服務器軟件,提供了多種安全選項來限制訪問。
編輯/etc/vsftpd/vsftpd.conf文件,進行以下配置:
# 啟用本地用戶登錄
local_enable=YES
# 禁止匿名用戶登錄
anonymous_enable=NO
# 允許寫操作
write_enable=YES
# 限制用戶訪問自己的主目錄
chroot_local_user=YES
# 允許特定用戶訪問
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
創建/etc/vsftpd/user_list文件,并添加允許訪問的用戶:
user1
user2
確保防火墻允許FTP流量:
sudo ufw allow 21/tcp
sudo ufw allow 20/tcp
ProFTPD是另一個流行的FTP服務器軟件,提供了靈活的訪問控制選項。
編輯/etc/proftpd/proftpd.conf文件,進行以下配置:
# 啟用本地用戶登錄
DefaultRoot ~
# 禁止匿名用戶登錄
<Anonymous ~ftp>
User nobody
Group nogroup
DenyAll
</Anonymous>
# 允許特定用戶訪問
<Directory /home/user1>
<Limit ALL>
AllowUser user1
</Limit>
</Directory>
確保用戶有適當的權限訪問其主目錄:
sudo chown user1:user1 /home/user1
sudo chmod 755 /home/user1
你可以使用iptables或firewalld來限制FTP服務器的訪問。
# 允許特定IP訪問FTP端口
sudo iptables -A INPUT -p tcp --dport 21 -s 192.168.1.100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 20 -s 192.168.1.100 -j ACCEPT
# 拒絕所有其他IP訪問FTP端口
sudo iptables -A INPUT -p tcp --dport 21 -j DROP
sudo iptables -A INPUT -p tcp --dport 20 -j DROP
# 允許特定IP訪問FTP端口
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="21" accept'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="20" accept'
# 重新加載防火墻配置
sudo firewall-cmd --reload
如果你的系統啟用了SELinux,可以使用SELinux策略來進一步限制FTP服務器的訪問。
編輯/etc/selinux/config文件,設置SELinux為 enforcing 模式:
SELINUX=enforcing
然后,使用semanage命令來管理SELinux策略:
# 允許FTP訪問特定目錄
sudo semanage fcontext -a -t httpd_sys_content_t "/home/user1(/.*)?"
sudo restorecon -Rv /home/user1
通過以上方法,你可以有效地限制Linux FTP服務器的訪問,確保只有授權用戶才能訪問FTP服務。