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 user1@127.0.0.1 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来远程更新网页内容

 

posted @ 2016-08-17 20:51  Final233  阅读(182)  评论(0编辑  收藏  举报