配置FTP服务器
vsftpd:Very Secure
,是一个基于
GPL
发布的类
UNIX
系统上使用的
FTP
服务器的软件,具有安全、稳定
(
单机上支持
4000
个以上的并发用户同时连接
)
和高速
(
千兆以太网可达
86M
/s)
的特点
著名的
vsftpd
站点
:ftp.redhat.com ftp.suse.com ftp.gnome.org
3.FTP
服务的使用者
:
本地用户
(
本地用户可能通过输入自已的帐号和口令登陆到自家目录,即可以下载也可以上传
)
、虚拟用户
(FTP
服务器上只用于文件传输的的帐号
)
和匿名用户
(
匿名用户可以输入
anonmous
或
ftp
和口令用户自己的
E-Mail
地址来进行登陆
)
三
.FTP
服务器的配置
2.
启动
vsftpd
service vsftpd start
pstree|grep vsftpd
ntsysv
3.Red Hat Linux9
中的配置文件
/etc/vsftpd/vsftpd.conf
是主配置文件
/etc/vsftpd.ftpusers
指定哪些用户不能访问
FTP
服务器
/etc/vsftpd.user_list
中指定的用户在
/etc/vsftpd/vsftpd.conf
中设置了
userlist_enable=YES
且
userlist_deny=YES
时不能访问
FTP
服务器
4.vsftpd
的默认主配置文件
anonymous_enable=YES
允许匿名登录
local_enable=YES
允许本地用户登录
write_enable=YES
开放本地用户的写权限
local_umask
设置本地用户的文件生成掩码为
022,
默认值为
077
dirmessage_enable=YES
xferlog_enable=YES
激活上传和下载日志
connect_from_port_20=YES
启用
FTP
数据端口的连接请求
xferlog_std_name=vsftpd
使用标准的
ftpd xferlog
日志格式
pam_service_name=vsftpd
设置
PAM
认证服务的配置文件名称,
该文件存放在
/etc/pam.d/
目录下
userlist_enable=YES
文件中所列的用户均不能访问此
vsftpd
服务器
listen=YES
使
vsftpd
处于独立启动模式
tcp_wrappers=YES
使用
tcp_wrappers
作为主机访问控制方式
例
1.
允许匿名用户上传
anon_upload_enable=YES
允许匿名用户上传
write_enable=YES
匿名用户对文件系统的上传目录具有写权限
anon_mkdir_write_enable=YES
开启匿名用户的写和创建目录的权限
anon_world_readable_only=NO
放开匿名用户
YES
览权限
,
即浏览此服务器中全部的内容
anon_other_write_enable=YES
开放了文件更名、删除文件等权限
创建匿名上传目录
mkdir /var/ftp/incoming
#chmod o+w /var/ftp/incoming/
#service vsftpd restart
测试匿名用户上传
ftp 192.168.1.57
>ls
列出文件和目录列表
put install.log
将本地文件传送至远程主机
mkdir newdir bye
退出
ftp
例
2.
配置基于本地用户的访问控制
限制指定的用户不能访问,而其他本地用户可访问。例如
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd.user_list
使文件
/etc/vsftpd.user_list
中指定的本地用户不能访问
FTP
服务器
限制指定的用户能访问,而其他本地用户不能访问。例如
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.user_list
使文件
/etc/vsftpd.user_list
中指定的本地用户能访问
FTP
服务器
例
3.
配置基于主机的访问控制
Vsftpd
从版本
1.1.3
以后内置了对
TCP_wrppers
支持,为独立的
vsftpd
提供基于主机的访问控制配置
.TCP_wrappers
使用
/etc/hosts.allow
和
/etc/hosts.deny
两个配置文件实现访问控制
#cat /etc/vsftpd/vsftpd.conf|grep tcp_wrappers
tcp_wrappers=YES
#cat<<! >>/etc/vsftpd/vsftpd.conf
>local_max_rate=10000
>anon_max_rate=10000
>max_per_ip=1
>!
编辑
/etc/hosts.deny
ALL: ALL@ALL, PARANOID
除非在
allow
文件中说明允许访问,所有服务、所有主机都被拒绝。
编辑
/etc/hosts.allow
#cat<<!>>/etc/hosts.allow
>vsftpd:.smartrainig.com,192.168.1.0/24 \
>:setenv VSFTPD_LOAD_CONF /etc/vsftpd/vsftpd_tcp_wrap.conf
>vsftp: 202.54.15.99 foo.com
对于你的客户机来说:
202.54.15.99
为
IP
地址,
foo.com
为允许使用
ftp
的一个客户机。
>vsftpd:192.168.1.0/255.255.255.0:allow
vsftpd:
主机表:
setenv VSFTPD_LOAD_CONF
配置文件名
vsftpd
表示是对
vsftpd
进程实施访问控制
表示当遇到主机表中的主机访问本
FTP
服务器时,修改环境变量的值为指定的配置文件名
.
其意图是让
vsftpd
守护进程读取新的配置文件中的配置项来覆盖主配置文件中的配置,关于主机表的书写形式
Hostname
可解析的主机名
IP Address
点分十进制表示的
IP
地址
.domain
匹配一个域中的所有主机,表示在
DNS
域
smartraining.com
中的任何主机
network-number
匹配
IP
地址的开始部分,如
192.168 IPAddress/netmask
定义要匹配的网络或子网,例
172.19.16/20
匹配从
172.19.16.0
到
172.19.31.255
编辑
/etc/vsftpd/vsftpd_tcp_wrap.conf
#cat<<!>>/etc/vsftpd/vsftpd.conf
>local_max_rate=0
>anon_max_rate=0
>max_per_ip=0
>!
#service vsftpd restart
例
4.
配置本地组访问的
FTP
服务器
本地组
softgrp
有
3
个用户
soft
、
soft1
和
soft2
,其中
soft
对
FTP
有读写权限,而
soft1
和
soft2
对
FTP
只有读的权限,可借助于本地文件系统的权限设置来实现
#vi /etc/vsftpd/vsftpd.conf
local_enable=YES
write_enable=YES
chroot_local_user=YES
不允许本地用户切换到自家目录以外的目录进行浏览
#mkdir -p /var/local-ftp/softgrp
#groupadd softgrp
#groupadd softgrp
#useradd -G softgrp -d /var/local-ftp/softgrp -M soft -G
指定新用户的附加组
-d
指定宿主目录
-M
不建立新用户的自家目录
#useradd -G softgrp -d /var/local-ftp/softgrp -M soft1
#useradd -G softgrp -d /var/local-ftp/softgrp -M soft2
#passwd soft #passwd soft1 #passwd soft2
#chown soft.softgrp /var/local-ftp/softgrp
#chmod 750 /var/local-ftp/softgrp
#ll -d /var/local-ftp/softgrp
#ftp 192.168.1.57
ftp>put install.log
ftp>close
ftp>open 192.168.1.57
例
5.
配置
vsftpd
在非标准端口下提供服务
#echo "listen_port=10021">>/etc/vsftpd/vsftpd.conf
#service vsftpd restart
#ftp 192.168.1.57 10021
ftp>bye
例
6.
配置独立启动的基于
IP
的虚拟
FTP
服务器
配置虚拟
IP
地址
建立虚拟
FTP
的服务器目录并设置适当的权限
建立虚拟
FTP
的服务器的主配置文件
#ifconfig |grep -1 eth0
#ifconfig eth0:1 192.168.1.57 up
#ifconfig |grep -1 eth0:1
#mkdir -p /var/ftp2/pub
#ll -d /var/ftp2/pub
#ll -d /var/ftp2
#echo "hello">/var/ftp2/pub/test_file
#useradd -d /var/ftp2 -M ftp2
#vi /etc/vsftpd/vsftpd.conf
listen_address=192.168.1.67
#cp /etc/vsftpd/vsftpd.conf.rh9 /etc/vsftpd/vsftpd_site2.conf
#vi /etc/vsftpd/vsftpd_site2.conf
listen_address=192.168.1.234
ftp_username=ftp2
ftpd_banner=This is the alternative FTP site,and vsftpd in "standalone" mode.
#service vsftpd restart
测试
例
7.
配置简单的虚拟用户
FTP
服务器
生成虚拟用户口令库文件
配置生成
vsftpd
的认证文件
建立虚拟用户所要访问的目录并设置相应权限
建立配置文件
cat <<! >logins.txt
>tom
>foo
>fred
>bar
单数行为用户名,偶数行为口令
#db_load -T -t hash -f ~/logins.txt /etc/vsftpd/vsftpd_login.db
使用
db_load
命令生成口令库文件前,要先安装
db4-utils- 4.0.14 -20
工具插入第二张光盘
#rpm -ivh db4_utils-4.0.14-20.i386.rpm
#chmod 600 /etc/vsftpd/vsftpd_login.db
#vi /etc/pam.d/vsfpt.vu
类型
(type)
控制
(control)
模块路径
(module-path)
模块参数
(module-arguments)
auth required /lib/security/pam_userdb.so db=/etcvsftpd/vsftpd_login
accout required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
PAM,Pluggable Authentication Modules for Linux
类型
:accout
验证用户帐号是否被允许访问服务,如用户帐号口令是否已过期等
auth
验证用户身份,一般为通过口令进行验证
控制
:
控制标记告诉
PAM
如何对待模块认证失败,例
:required
模块认证失败会导致拒绝用户认证,但在拒绝用户之前
PAM
仍将调用所有的其他模块
模块路径
:module-path
告诉
PAM
使用哪个模块的路径
,
如未给出模块路径
PAM
会在默认的
PAM
模块目录
/lib/security
中查找
模块参数
:module-arguments
用于给模块传递参数
#useradd -d /home/ftpsite virtual
#chmod 700 /home/ftpsite/
#su -virtual -c "echo hello>/home/ftpsite/test_file"
#cp /etc/vsftpd/vsftpd/conf/bak /etc/vsftpd/vsftpd.conf
#vi /etc/vsftpd/vsftpd.conf
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
one_process_model=NO
这个设定项目比较危险一点
,
当设定为
YES
时,表示每个建立的连线都会拥有一支
process
在负责,可以增加
vsftpd
的效能。不过,除非您的系统比较安全,而且硬体配备比较高,否则容易耗尽系统资源!一般建议设定为
!
chroot_local_user=YES
ftp_banner=This FTP server is virtual user only
guest_enable=YES
guest_username=virtual
pam_service_name=vsftp.vu
#service vsftpd restart
下面分别创建虚拟用户
tom
的配置文件
#vi /etc/vsftpd.conf
user_config_dir=/etc/vsftpd_user_conf
激活对不同的虚拟用户进行不同权限配置的配置语句
#vi /etc/vsftpd_user_conf/tom
anon_upload_enable=YES
write_enable=YES
anon_world_readable_only=NO
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
例
8.
配置安全的
vsftpd
仅仅允许匿名用户访问
anonymous_enable=YES
不允许本地用户访问
local_enable=NO
关闭所有写权限
write_enable=NO
不允许匿名用户上传
anon_upload_enable=NO anon_other_write_enable=NO
设置客户端连接时的端口范围
pasv_min_port=50000 pasv_max_port=60000
设置匿名用户的最大传输速率限制
anon_max_rate=50000
设置空闲的数据连接的中断时间
data_connection_timeout=300
设置客户端空闲时的自动中断和激活连接的时间
accept_timeout=60 connect_timeout=60
配置每个主机的最大连接数
max_per_ip=5
配置总的并发连接数
instances=60
配置禁止访问的主机
userlist_enable=YES userlist_deny=YES userlist_file=/etc/vsftpd/user_list
配置安全日志
xferlog_enable=YES anon_world_readable_only=YES connect_from_port_20=YES