day1-Vsftpd

FTP

File Transfer Protocol

基於c/s

FTP會話屬於複合TCP連接

控制連接TCP21端口,發送FTP命令信息

數據連接TCP20端口,上傳/下載數據


數據連接模式

主動 20端口---->主動連接---->客戶端

被動 服務端??<----被動連接<----客戶端


傳輸模式

文本模式 ASCII 模式,文本序列傳輸

二進制模式 Binary模式,二進制序列傳輸


FTP用戶類型

匿名用戶:ftp或anonymous

本地用戶:Linux服務器本機的系統用戶賬號

虛擬用戶:賬號信息存放在獨立的文件或數據庫內


vsftpd

Very Secure FTP Daemon

非常案例的FTP守護程序


服務程序/usr/sbin/vsftpd

服務腳本/etc/init.d/vsftpd


ftp工具

wKioL1eu_AeT2DBAAABTtYfKUqA635.png

匿名瀏覽 ftp://ip

用戶驗證訪問ftp://user:pass@IP/path


主配置文件

配置目錄/etc/vsftpd

主配置文件 vsftpd.conf

黑名單文件 ftpusers

黑/白名單文件 user_list


[root@localhost test]# ls /etc/vsftpd/

ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh


幫助

當我們忘記時可以查看幫助文檔和MAN 配置文件

/usr/share/doc/


全局FTP配置

listen 是否以獨立運行方式監聽服務

listen_address 設置監聽FTP服務的IP地址

listen_port 設置監聽FTP服務的端口

write_enable 是否僱用寫入權限

download_enable 是否允許下載

anonymous_enable 是否僱用匿名訪問

anon_root 匿名FTP的根目錄

local_enable 是否僱用本地用戶

local_root 本地用戶的FTP根目錄

local_umask 本地用戶上傳的權限掩碼

chroot_local_user 是否禁錮在主目錄


用戶訪問控制

黑名單文件 /etc/vsftpd/ftpusers

列入其中的用戶被禁止訪問


黑白名單文件 /etc/vsftpd/user_list

userlist_enable=YES  決定是否啓動些文件

userlist_deny=YES|NO 當YES時爲黑名單,否則白名單


FTP連接及傳輸控制

併發數限制 帶寬限制

max_clients 限制併發的客戶端個數

max_per_ip 限制每個客戶機IP的併發連接數

anon_max_rate 匿名最大速度(字節/秒)

local_max_rate 驗證用戶最大速率(字節/秒)


userlist_enable=YES

userlist_deny=NO

僅允許列表中的用戶


清空user_list添加需要訪問FTP的用戶

-------------------------------------------------

黑名單不允許登錄FTP服務

[root@localhost vsftpd]# cat ftpuser 

# Users that are not allowed to login via ftp

root

bin

daemon

adm

lp

sync

shutdown

halt

mail

news

uucp

operator

games

nobody


實驗

vsftpd + pam + mysql


首先安裝相應的軟件包

yum -y install vsftpd


yum -y install mysql-server mysql-devel

yum -y groupinstall "Development Tools" "Development Libraries"


yum install pam-devel -y


安裝pam_mysql-0.7RC1

首先去官網下

http://nchc.dl.sourceforge.net/project/pam-mysql/pam-mysql/0.7RC1/pam_mysql-0.7RC1.tar.gz


tar xf  pam_mysql-0.7RC1.tar.gz

cd  pam_mysql-0.7RC1

./configure --with-mysql=/usr --with-openssl

make

make install


pam包已裝上

[root@localhost pam_mysql-0.7RC1]# ll /lib/security

total 140

-rwxr-xr-x. 1 root root    876 Aug 14 23:11 pam_mysql.la

-rwxr-xr-x. 1 root root 138564 Aug 14 23:11 pam_mysql.so


安裝後準備

/etc/init.d/vsftpd start

/etc/init.d/mysqld start

chkconfig vsftpd on

chkconfig mysqld on


建立pam認證文件

vim /etc/pam.d/vsftpd.mysql

auth required /lib/security/pam_mysql.so user=user1 passwd=password1 host=localhostdb=vsftpd table=ftpuser usercolumn=user passwdcolumn=password crypt=0

account required /lib/security/pam_mysql.so user=user1 passwd=password1 ost=localhost db=vsftpd table=ftpuser usercolumn=user passwdcolumn=password crypt=0


進入mysql

mysql> create database vsftpd;

mysql> use vsftpd;

mysql> create table ftpuser (

    id int AUTO_INCREMENT NOT NULL,

    user char(20) binary NOT NULL,

    password char(48) binary NOT NULL,

    primary key(id)

    );


myssql> desc ftpuser;


mysql> grant select on vsftpd.* to user1@localhost identified by 'password1';

mysql> grant select on vsftpd.* to [email protected] identified by 'password1';

mysql> flush privileges;


新建兩個虛擬用戶

mysql> insert into ftpuser(user,password) values('vuser1','1');

mysql> insert into ftpuser(user,password) values('vuser2','1');


mysql> select * from ftpuser

    -> ;

+----+--------+----------+

| id | user   | password |

+----+--------+----------+

|  1 | vuser1 | 1        |

|  2 | vuser2 | 1        |

+----+--------+----------+

2 rows in set (0.01 sec)



驗證數據庫

mysql -uuser1 -ppassword1


新建系統用戶-->虛擬用戶家目錄

useradd -s /sbin/nologin -d /var/vsftpdroot/ vuser

chmod go+rw /var/vsftpdroot


修改配置文件

vim /etc/vsftpd/vsftpd.conf


anonymous_enable=YES

local_enable=YES

write_enable=YES


anon_upload_enable=NO

anon_mkdir_write_enable=NO


chroot_local_user=YES


guest_enable=YES

guest_username=vuser


pam_service_name=vsftpd.mysql


以上配置VSFTPD虛擬用戶 虛擬用戶就是匿名用戶


注:配置文件系統不要寫錯,否則無法登錄


補充

配置虛擬用戶具有不同的訪問權限

# vim vsftpd.conf

添加如下選項

user_config_dir=/etc/vsftpd/vuser_acl_dir


創建所需要目錄,併爲虛擬用戶提供配置文件

mkdir /etc/vsftpd/vuser_acl_dir

cd /etc/vsftpd/vuser_acl_dir

touch vuser1 vuser2


vim /etc/vsftpd/vuser_acl_dir/vuser1

anon_upload_enable=YES


anon_mkdir_write_enable=YES

anon_other_write_enable=YES


驗證


vuser2用戶

wKioL1ewZUCxNmLBAAAxz8alOzE379.png


匿名用戶

wKiom1ewZWmx5F4BAAAYOqKpFBs373.png



虛擬用戶還有一種方法

確認安裝PAM服務相關部件

yum -y install pam*

這裏要特別安裝一個db4的包,用來支持文件數據庫。

yum -y install db4*

建立文件 兩個用戶

[root@localhost ~]# cat /etc/vsftpd/vuser 

     vu1    用戶名

     1    密碼

     vu2    用戶名

     2    密碼


使用db_load命令生成虛擬用戶口令認證文件

db_load -T -t hash -f /etc/vsftpd/vsftpd.user /etc/vsftpd/vsuser.db


useradd vuser -s /sbin/nologin -d /var/vuserroot/


vim /etc/vsftpd/vsftpd.conf

pam_service_name=vsftpd

anon_upload_enable=NO

anon_mkdir_write_enable=NO

chroot_local_user=YES

guest_enable=YES

guest_username=vu


註釋全部的行,添加以下內容

vim /etc/pam.d/vsftpd

auth        required    pam_userdb.so   db=/etc/vsftpd/vuser

account     required    pam_userdb.so   db=/etc/vsftpd/vuser



關於

FTP併發及帶寬限制


實驗

將50M的文件共享

匿名用戶10KB/S

普通用戶50KB/S

每個IP2個併發連接

最多允許100個併發連接


生成50M文件

[root@localhost ftp]# dd if=/dev/zero of=file50M count=50000 bs=1000

50000+0 records in

50000+0 records out

50000000 bytes (50 MB) copied, 0.961573 s, 52.0 MB/s


配置文件加/etc/vsftpd/vsftpd.conf最後加

限制IP併發連接

max_clients=100

max_per_ip=2


wKiom1ewaj6y6SbNAAA_6mbDcOo526.png


配置文件加/etc/vsftpd/vsftpd.conf最後加

限制速率

匿名用戶10KB/S

本地用戶50KB/S

注:默認單位是字節

anon_max_rate=10000

local_max_rate=50000


此爲匿名用戶

wKioL1ewezCQ2NVZAABPDe1szlw271.png


本地用戶

wKiom1ewgEnxYLhWAABUg7W5eVc370.png



加密方式 

FTPS SSL

SFTP SSH


還有一個小技巧,可以和HTTP服務合起來

HTTP家目錄和VSFTPD目錄設爲相同

我們可以通過FTP來遠程更新網頁內容







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