1:安裝vsftpd
yum install vsftpd -y
2:啟動vsftpd
systemctl start vsftpd
加入開機啟動
systemctl enable vsftpd
啟動后可以看到系統監聽21端口
netstat -nltp | grep 21
3:vsftpd的文件說明
vsftpd.conf: 主要配置文件
ftpusers:配置禁止訪問ftp服務器的用戶列表
user_list:配置用戶訪問控制
4:配置阻止匿名用戶訪問和切換根目錄
vi /etc/vsftpd/vsftpd.conf
找到以下兩處並按下面的樣子修改
# 禁用匿名用戶 anonymous_enable=NO # 禁止切換根目錄 chroot_local_user=YES #開啟以下配置 chroot_local_user=YES chroot_list_enable=YES # (default follows) chroot_list_file=/etc/vsftpd/chroot_list #如果沒有此文件則創建此文件,不需要添加內容
文件末尾添加
allow_writeable_chroot=YES
不添加此項,連接ftp服務器的時候會報500 OOR。。。。
5:創建ftp用戶
useradd ftpuser
為用戶設置密碼
echo "ftpuser123" | passwd ftpuser --stdin
6:限制上步創建的用戶只能通過ftp訪問
usermod -s /sbin/nologin ftpuser
7:為用戶分配主目錄
用以下命令創建,但是該目錄不能上傳文件
mkdir -p /home/ftp/pub
創建歡迎文件
echo "Welcome to use FTP service." > /home/ftp/welcome.txt
設置訪問權限
chmod a-w /home/ftp && chmod 777 -R /home/ftp/pub
設置為用戶主目錄
usermod -d /home/ftp ftpuser
8:保存后重啟vsftpd
systemctl restart vsftpd
9:配置防火牆
在防火牆的配置文件中開啟21端口,並重啟防火牆
firewall-cmd --add-port=21/tcp --permanent
上述步驟即可完成vsftpd搭建,但是客戶端只能通過主動模式訪問vsftpd,例如使用filezilla需要將傳輸模式的默認模式改為主動模式才能訪問ftp服務器,如果發現可以正常登陸但是無法將目錄列出來,就是這個原因.如果需要直接可以訪問的話,需要將ftp服務器開啟被動模式
1:修改配置文件
vi /etc/vsftpd/vsftpd.conf
2:在末尾添加
pasv_enable=YES pasv_min_port=30000 pasv_max_port=31000
3:重啟vsftpd並將上述的30000端口至31000端口開啟,
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 30000:31000 -j ACCEPT
備注:過程雖然不難,但遇到的坑比較多,按照很多網上的文章進行配置,最后都是各種錯誤,剛開始是無法連接,發現沒有給用戶設置主目錄,
當找到問題后修改,可以連接上但是發現權限不夠(忘記給目錄賦值權限),而且竟然發現創建的用戶可以直接通過ssh連接到服務器,這樣子就
失去了我想要的,安全性也大大降低了,總之問題很多,最頭疼的還是提示已經登陸但是無法將目錄展示出來,經過自己分析日志發現是模式不對,
希望大家可以借鑒參考,盡量少入點坑
---------------------
作者:bpandaw
來源:CSDN
原文:https://blog.csdn.net/bpandaw/article/details/78061964
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!