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
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