vsftp服務器配置

FTP模式


ftp主動模式  21驗證握手   20數據傳輸
ftp被動模式  21驗證握手   1024-65535數據傳輸   ---默認FTP模式


1.安裝vsftpd
yum -y install vsftpd 


/etc/logrotate.d/vsftpd   日誌滾動
/etc/pam.d/vsftpd   驗證文件
/etc/rc.d/init.d/vsftpd  啓動腳本
/etc/vsftpd/ftpusers      拒絕用戶列表
/etc/vsftpd/user_list  用戶訪問控制文件(拒絕/只允許)
/etc/vsftpd/vsftpd.conf   主配置文件
/var/ftp匿名用戶家目錄
/var/ftp/pub  匿名用戶擴展目錄 


主配置文件三種配置: 全局配置,本地用戶配置local,匿名用戶anon  虛擬用戶






實例1:
只啓匿名用戶,匿名用戶可讀可寫(上傳/新建目錄/刪除/下載),禁用本地用戶:
1.vim /etc/vsftpd/vsftpd.conf 
anonymous_enable=yes
local_enable=NO
write_enable=yes
local_umask=022
anon_upload_enable=YES --匿名用戶可上傳文件
anon_mkdir_write_enable=YES --可新建文件夾 
anon_other_write_enable=YES --可改名/刪除
anon_umask=022 --匿名用戶上傳文件,可下載
dirmessage_enable=YES   開啓目錄消息功能
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
tcp_wrappers=YES


給本地目錄授權:
# chown ftp /var/ftp/pub/         或chmod 777 /var/ftp/pub/   更改目錄本身權限


# service vsftpd restart
# netstat -tnlp |grep :21
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      26761/vsftpd      
# chkconfig vsftpd on


警告:不要把/var/ftp目錄權限改成777,否則開啓selinux


chmod 777 /var/ftp/pub   更改目錄本身權限


實例一:匿名用戶只能上傳不能下載:
anonymous_enable=YES      開啓匿名用戶
download_enable=NO               不能下載
anon_upload_enable=YES              匿名能上傳
(anon_mkdir_write_enable=YES           匿名能新建目錄)


實例二匿名用戶下載 被上傳的文件
在第23行增加   anon_umask=022          匿名文件上傳後權限爲755
 
實例三  匿名用戶上傳後自動更改屬主:指定上傳文件擁有人
46 chown_uploads=YES
47  chown_username=root


實例四  anon_world_readable_only=YES --只讀,只能下載


實例五  將本地用戶登錄鎖定在自己的家目錄


96   chroot_list_enable=YES    --禁錮家目錄
    #(default follows)
chroot_list_file=/etc/vsftpd/chroot_list   
vim /etc/vsftpd/chroot_list 
student      --將student禁錮在家目錄中
+++++++++++
如果chroot_local_user=YES  則/etc/vsftpd/chroot_list中不受限
 ++++++++++
 
實例六  FTP自身的訪問控制
vim /etc/vsftpd/ftpusers   拒絕用戶列表
vim /etc/vsftpd/user_list
當 userlist_enable=YES  啓用/etc/vsftpd/user_list
    userlist_deny=YES    拒絕的作用(默認)
    userlist_deny=NO   只允許的作用
user_list中的用戶可登錄,ftpusers中的用戶不能登錄
二者有衝突,拒絕優先
user01-->/etc/vsftpd/user_list-->/etc/vsftpd/ftpusers


實例七  匿名用戶和認證用戶上傳文件夾到不同的目錄 
anon_root=/var/ftp/temp     --指定家目錄
local_root=/var/ftp/data




FTP虛擬主機
基於不同IP相同端口
ifconfig eth0 192.168.0.158
ifconfig eth0:0 192.168.0.159
# cd /etc/vsftpd/
# cp vsftpd.conf vsftpd2.conf


# vim /etc/vsftpd/vsftpd.conf 
listen_address=192.168.0.158
listen_port=21


# vim /etc/vsftpd/vsftpd2.conf
listen_address=192.168.0.159
listen_port=21


+++++++++++++++++++++
anon_root=/var/ftp/none    基於不同IP相同端口 ftp不同家目錄
++++++++++++++++++++
# service vsftpd restart


基於相同IP的不同端口
# cd /etc/vsftpd/
# cp vsftpd.conf vsftpd2.conf
# vim vsftpd2.conf
 listen_port=2121
anon_root=/var/ftp/none
local_root=/var/ftp/local


-----------------
ftp連接控制:
max_clients=100 --全局的最大連接數
max_login_fails=3 --最大的登錄失敗
max_per_ip=2 --每IP的最大連接數2個
local_max_rate=100000 --本地用戶的最大傳輸速率,單位是字節
anon_max_rate=50000


官方示例:
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS




----------------------
虛擬用戶:
Step 1) 創建虛擬用戶的數據庫:




# vim /root/logins.txt
a
123
b
456
c
789


# yum -y install db4-utils
# db_load -T -t hash -f /root/logins.txt /etc/vsftpd/login.db --轉換格式
# chmod 600 /etc/vsftpd/login.db




Step 2) 創建PAM的配置文件,指向你新建用戶數據庫( /etc/vsftpd/login.db)
# vim /etc/pam.d/ftp
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/login
[root@r1 ~]# find / -name pam_userdb.so






Step 3) 新建一個本地用戶(a b c-->virtual-->/etc/vsftpd/login.db)


# useradd -d /home/ftpsite virtual -s /sbin/nologin
# ls -ld /home/ftpsite
(which should give):
drwx------    3 virtual  virtual      4096 Jul 30 00:39 /home/ftpsite


# cp /etc/hosts /home/ftpsite
# chown virtual.virtual /home/ftpsite/hosts




Step 4)更改主配置文件,包括以下的選項:
# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
anon_world_readable_only=NO
chroot_local_user=YES
connect_from_port_20=YES
guest_enable=YES --啓用虛擬用戶
guest_username=virtual --被映射本地用戶的身份
listen=YES
pam_service_name=/etc/pam.d/ftp
pasv_min_port=30000
pasv_max_port=30999




Step 5) Start up vsftpd.
# service vsftpd start




Step 6) 測試
使用a b c三個用戶測試。。。




a
b--- 【虛擬用戶】-->21(vsftpd)-->virtual(系統用戶)-->user_list-->/etc/pam.d/ftp-->login.db-->a/123--> cd $HOME 
c




擴展FTP的功能
a: mkdir /home/ftpsite/a
b: mkdir /home/ftpsite/b
c: /home/ftpsite/
# chown -R virtual.virtual /home/ftpsite/
++++++++++++++++++++++++
a 上傳 50k
b 下載  200k vip
c 什麼都可以  超級vip不限速
+++++++++++++++++++++++++
# vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/ew/
# mkdir /etc/vsftpd/ew/


# vim /etc/vsftpd/ew/a
local_root=/home/ftpsite/a
anon_world_readable_only=YES  ---下載
write_enable=YES                         
anon_upload_enable=YES    
anon_max_rate=50000




# vim /etc/vsftpd/ew/b
local_root=/home/ftpsite/b
anon_world_readable_only=NO
anon_max_rate=200000




# vim /etc/vsftpd/ew/c
local_root=/home/ftpsite
anon_world_readable_only=NO
anon_max_rate=0
anon_upload_enable=YES
write_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES


定義全侷限制:
# vim /etc/vsftpd/vsftpd.conf
max_clients=100
max_per_ip=2






在服務上創建下載測試文件
# dd if=/dev/zero of=/home/ftpsite/down.iso count=10 bs=10M

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章