在RHEL4系统中构建vsftpd服务器
2007-09-11 kenthy#qingdaonews.com
################################################################
系统环境:RHEL4 [ 2.6.9-5.EL ]
软件版本:
vsftpd-2.0.1-5
db4-utils-4.2.52-7.1
[注:软件包均使用RHEL4光盘自带的rpm包[安装过程略]。若需要配置虚拟FTP用户,则需要安装db4软件包(生成数据库时用到db_load工具)。]
系统环境:
eth0: 192.168.10.1/24
eth0:0 192.168.10.100/24
################################################################
一、vsftpd服务器配置
1、服务器基本配置(匿名用户、本地用户)
# cd /etc/vsftpd
# cp vsftpd.conf vsftpd.conf.bak //备份系统默认的vsftpd.conf配置文件
# grep -v ^# vsftpd.conf.bak > vsftpd.conf //去除配置文件中的注释行
# vi vsftpd.conf //修改配置文件,内容及解释如下
anonymous_enable=YES //允许匿名用户登陆
local_enable=YES //允许本地用户登陆
write_enable=YES //若需开放任何形式的可写权限,均需启用此项
local_umask=0022 //本地用户创建文件掩码,使用0开头表示八进制
anon_upload_enable=YES //允许匿名用户上传
anon_mkdir_write_enable=YES //允许匿名用户创建目录
dirmessage_enable=YES //进入目录时显示.message文件内容
xferlog_enable=YES //启用xferlog日志记录,默认使用标准的xferlog日志格式记录到/var/log/xferlog文件中
xferlog_std_format=YES //若不设置此项,将使用vsftp自己的日志格式记录到/var/log/vsftpd.log
# dual_log_enable=YES //若启用此项,在xferlog和vsftpd.log两个文件中都会记录日志
connect_from_port_20=YES //允许从20端口(FTP数据端口)建立连接
chroot_local=YES //限制本地用户只能在宿主目录
pam_service_name=vsftpd //指定FTP用户的pam认证文件
userlist_enable=YES //允许使用/etc/vsftpd.user_list文件控制用户是否允许访问
userlist_deny=NO //此项配置为NO时将只允许在/etc/vsftpd.user_list文件中指定的用户登陆,缺省值为YES
listen=YES //设置vsftpd服务使用独立运行的方式(非xinetd)
tcp_wrappers=YES //允许使用tcp_wrappers进行客户端控制
max_clients=100 //最多允许100个客户端连接
max_per_ip=5 //同一个IP地址最多允许5个客户端连接
anon_max_rate=50000 //匿名用户最大传输速率为50KB/s
local_max_rate=200000 //本地用户最大传输速率为200KB/s
# chown -R ftp /var/ftp/pub //使匿名用户在默认的pub目录有可写权限,以便上传文件等
# chkconfig --level 35 vsftpd on
# service vsftpd restart
# useradd -s /sbin/nologin kenthy //创建一个测试FTP的本地用户,shell建议设为/sbin/nologin,可以禁止登陆终端
# passwd kenthy
2、FTP用户安全控制
# vi /etc/vsftpd.ftpusers //此文件中指定的用户,将被禁止登陆vsftp服务器,每行指定一个用户名
root
bin
deamon
……
# vi /etc/vsftpd.user_list //此文件中的用户是否允许登陆,将由vsftpd.conf主配置文件中的userlist_deny选项决定
kenthy //若主配置文件中指定userlist_enable=YES、userlist_deny=NO,则只有此文件中指定的用户可以登陆FTP
ftp //如本处添加了kenthy、ftp、anonymous用户
anonymous //则只有匿名用户及本地用户kenthy允许登陆到该FTP服务器
3、FTP客户端访问控制
如果在/etc/vsftpd/vsftpd.conf配置文件中,指定了tcp_wrappers=YES选项,则可以使用以下文件对客户端进行限制。
# vi /etc/hosts.allow
vsftpd: 127.0.0.1,192.168.10.0/24,172.17.17.* //指定允许访问的客户端IP地址
# vi /etc/hosts.deny
vsftpd: ALL //除了在hosts.allow文件中指定的地址以外,其它所有客户端都被禁止访问该FTP服务器
二、虚拟用户配置
1、创建虚拟用户数据库文件
# cd /etc/vsftpd
# vi vusers.txt //编辑用户数据库原始文件,奇数行为用户名,偶数行对应为前一行用户的密码
tom
123456
jerry
ilovemouse
# db_load -T -t hash -f vusers.txt /etc/vsftpd/vusers.db //使用db_load工具创建用户数据库
# chmod 600 vusers.* //为用户数据库文件设置严格的访问权限
2、创建本地映射用户
# useradd -d /var/ftp/vuserdir -s /sbin/nologin vuser
# touch /var/ftp/vuserdir/todown.txt
# chown vuser:vuser /var/ftp/vuser/todown.txt
3、建立新的pam认证文件
# vi /etc/pam.d/vsftpd.vu1 //使用以下内容,将只允许开放虚拟用户和匿名用户登陆
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vusers
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vusers
# vi /etc/pam.d/vsftpd.vu2 //使用以下内容,将允许同时开放匿名用户、本地用户、虚拟用户
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vusers
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vusers
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
auth required pam_stack.so service=system-auth
auth required pam_shells.so
account required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth
4、修改主配置文件
# vi /etc/vsftpd/vsftpd.conf //添加或修改以下行的内容
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.vu2 //此处根据实际需要选用Step3中的vsftpd.vu1或vsftpd.vu2文件
5、建立虚拟用户权限配置目录(此项可选)
# vi /etc/vsftpd/vsftpd.conf //在主配置文件中添加以下一行,启用虚拟用户的配置文件目录
user_config_dir=/etc/vsftpd/vuser_conf
# vi /etc/vsftpd/vuser_conf/tom //为虚拟用户tom创建同名配置文件,开放文件上传权限,限制传输速率200KB/s,禁止下载
anon_upload_enable=YES
anon_max_rate=200000
download_enable=NO
# vi /etc/vsftpd/vuser_conf/jerry //为虚拟用户jerry创建同名配置文件,开放上传及所有写权限,传输速率限制为500KB/s
anon_world_readable_only=NO //此项如为YES,则所有人都有读取权限的文件才允许下载(不包括如所有者为ftp,权限为700的文件)
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_max_rate=500000
6、重启vsftpd服务并测试
# service vsftpd restart
三、虚拟主机配置
1、添加一个虚拟IP地址
# ifconfig eth0 192.168.10.1/24
# ifconfig eth0:0 192.168.10.100/24 //如果服务器有两块物理网卡,可以直接使用物理网卡
2、创建虚拟FTP服务器的根目录
# useradd -d /var/ftp2 -s /sbin/nologin ftp2 //创建对应于虚拟FTP服务器的用户ftp2及其根目录
# chmod -R 755 /var/ftp2
# chown -R root:root /var/ftp2
# mkdir -m 755 /var/ftp2/pub
# chown ftp2:root /var/ftp2/pub
3、准备虚拟FTP服务器的配置文件
# cd /etc/vsftpd/
# cp vsftpd.conf.bak vsftpd2.conf
# vi /etc/vsftpd/vsftpd.conf //修改原来的FTP配置文件,添加以下设置
listen_address=192.168.10.1 //指定原始FTP服务器在192.168.10.1监听服务
# vi /etc/vsftpd/vsftpd2.conf
listen_address=192.168.10.100 //指定虚拟FTP服务器在192.168.10.100监听服务
ftp_username=ftp2
local_root=/var/ftp2
由于在两个IP地址分别监听的FTP服务使用了不用的配置文件,原则上在FTP目录、用户控制、传输速率、以及虚拟用户设置上都可以不一样。以上设置仅在默认配置的基础上,将虚拟FTP服务器的匿名登陆、本地登陆后的根目录做了更改。
4、重启并测试虚拟FTP服务器
# service vsftpd restart //将会自动检测到两个配置文件,启动两个vsftpd进程,根据各自配置文件提供不同的服务
# ftp 192.168.10.1 //测试原始FTP服务器
# ftp 192.168.10.100 //测试虚拟FTP服务器,根据在配置文件中的区别设置比较两个服务器的差别
阅读(1554) | 评论(1) | 转发(0) |