共同进步
分类: 系统运维
2015-12-21 12:29:55
[root@linux-node2 ~]# rpm -qa|grep vsftp
vsftpd-2.0.5-16.el5_5.1
[root@linux-node2 ~]#
1.1.1.1.3 配置文件说明
[root@linux-node2 vsftpd]# ll
total 20
-rw------- 1 root root 125 Apr 8 2010 ftpusers
-rw------- 1 root root 361 Apr 8 2010 user_list
-rw------- 1 root root 4579 Apr 8 2010 vsftpd.conf
-rwxr--r-- 1 root root 338 Apr 8 2010 vsftpd_conf_migrate.sh
[root@linux-node2 vsftpd]#
(1)ftpusers 是用户控制文件,在这个文件里面的用户,默认是不可以使用vsftpd 服务的。
(2)user_list 默认功能和第一个一样,但是通过配置,我们可以让只有在第二个文件里
的用户才能使用vsftpd 服务,这样新加入的用户就不会自动拥有vsftp 的使用权,这样可以
让vsftpd 服务器更加安全
(3)vsftpd_conf_migrate.sh 是vsftpd 操作的一些变量和设置,这个不用管的
当然,主角就是vsftpd.conf ,配置vsftpd,我们操作最多的也就是这个文件了
配置文件详解:
[root@haproxy01 vsftpd]# cat vsftpd.conf
# Example config file /etc/vsftpd/vsftpd.conf
anonymous_enable=YES //是否允许匿名登录
local_enable=YES //是否允许本地用户登录
write_enable=YES //是否允许写
local_umask=022 //设置mask值,定制文件或目录的默认权限
#anon_upload_enable=YES //是否允许匿名上传文件
#anon_mkdir_write_enable=YES //是否允许匿名用户创建目录
dirmessage_enable=YES //是否显示登录信息
xferlog_enable=YES //是否开启日志功能
#xferlog_file=/var/log/xferlog //日志名称
xferlog_std_format=YES //是否使用标准格式
connect_from_port_20=YES //是否使用20端口来传输数据
#chown_uploads=YES //文件上传后是否修改属主
#chown_username=whoever //文件上传后修改属主名称
#idle_session_timeout=600 //会话空闲超时时限
#data_connection_timeout=120 //数据传输超时
#nopriv_user=ftpsecure //定义底层运行时的用户名,默认为nobody
#ascii_upload_enable=YES //定义是否可以使用ascii模式上传
#ascii_download_enable=YES //定义是否可以使用ascii模式下载
#ftpd_banner=Welcome to blah FTP service. //定义ftp登录欢迎辞
#chroot_list_enable=YES //定义是否开启chroot_list
#chroot_list_file=/etc/vsftpd/chroot_list //定义chroot_list文件位置
listen=YES //以standalone模式启动
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
anon_other_write_enable=YES // 允许匿名帐户删除、重命名
anon_root=/ftp // 更改匿名帐户根目录,默认为”/var/ftp”
local_root=/local // 更改本地帐户根目录为/local,默认为用户主目录~
userlist_enable=YES // 开启用户列表功能
userlist_deny=YES // 用户列表文件中所有帐户全拒绝。NO 时,只有列表中用户能登陆
userlist_file=/etc/vsftpd.user_list // 用户列表文件
anon_max_rate=0 // 匿名用户最大传输速率,0为无限
local_max_rate=0 // 本地用户最大传输速率,0为无限
max_clients=0 // 最大客户端连接数,0为无限
pasv_max_port=0 // 客户端端口
[root@haproxy01 vsftpd]#
查看文件其它参数# man vsftpd.conf
1.1.1.1.4 配置实例一、(搭建匿名访问的ftp服务器)
[root@linux-node2 vsftpd]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
[root@linux-node2 vsftpd]# service vsftpd status
vsftpd (pid 28250) is running...
[root@linux-node2 vsftpd]#
修改/etc/vsftpd/vsftpd.conf文件
anonymous_enable=YES
[root@linux-node2 ~]# ftp 172.16.1.10
Connected to 172.16.1.10.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (172.16.1.10:root): anonymous #以匿名用户登录
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
1.1.1.1.5 配置实例二、(搭建允许本地用户访问,不允许匿名)修改/etc/vsftpd/vsftpd.conf文件中
anonymous_enable=YES
把YES修改为NO ,然后重启服务,如下匿名访问已不允许:
[root@linux-node2 ~]# ftp 172.16.1.10
Connected to 172.16.1.10.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (172.16.1.10:root): anonymous
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp>
以本地用户tom登录:
[root@linux-node2 vsftpd]# cat /etc/passwd |grep tom
tom:x:3004:3004::/home/tom:/bin/bash
[root@linux-node2 vsftpd]#
[root@linux-node2 ~]# ftp 172.16.1.10
Connected to 172.16.1.10.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (172.16.1.10:root): tom
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /etc
250 Directory successfully changed. ##可以切换到其他目录
ftp>
1.1.1.1.6 配置实例三、禁锢用户在自己的家目录
修改/etc/vsftpd/vsftpd.conf
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
创建chroot_list文件,一行一个用户名
[root@linux-node2 vsftpd]# cat chroot_list
tom
[root@linux-node2 vsftpd]#
登录后尝试切换目录
[root@linux-node2 ~]# ftp 172.16.1.10
Connected to 172.16.1.10.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (172.16.1.10:root): tom
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /etc
550 Failed to change directory.
ftp> dir
227 Entering Passive Mode (172,16,1,10,24,53)
150 Here comes the directory listing.
drwx------ 3 3004 3004 4096 Jul 09 08:58 mail
226 Directory send OK.
ftp>
(注意:如果你启动了chroot 机制,却没有子啊/etc/vsftpd/下建立chroot_list 这个文件,那么当你登陆的时候会出现失败的字样具体如下:421 Service not available, remote server has closed connection,所以启用之后一定要建立chroot_list 文件的哦)
1.1.1.1.7 配置实例四、(搭建虚拟用户访问的ftp服务器)
首先创建用户名密码文件
touch vlogin.txt
ftpuser1
123456
ftpuser2
123456
奇数行是用户名,偶数行是密码
ü 使用db_load命令生成db数据库文件,前提是需要先安装db_load命令
[root@linux-node2 Server]# rpm -qa|grep db4
db4-4.3.29-10.el5_5.2
db4-utils-4.3.29-10.el5_5.2
db4-4.3.29-10.el5_5.2
[root@linux-node2 Server]#
ü 生成数据库:
[root@linux-node2 vsftpd]# db_load -T -t hash -f /etc/vsftpd/vlogin.txt /etc/vsftpd/vlogin.db
[root@linux-node2 vsftpd]# ls -ltr vlogin*
-rw-r--r-- 1 root root 32 Sep 6 21:51 vlogin.txt
-rw-r--r-- 1 root root 12288 Sep 6 21:51 vlogin.db
[root@linux-node2 vsftpd]#
ü 修改安全认证机制:
[root@linux-node2 ~]# cat /etc/pam.d/vsftpd
#%PAM-1.0
#session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
#auth include system-auth
#account include system-auth
#session include system-auth
#session required pam_loginuid.so
auth required pam_userdb.so db=/etc/vsftpd/vlogin
account required pam_userdb.so db=/etc/vsftpd/vlogin
[root@linux-node2 ~]#
注释原文件中其他行,添加标黄颜色的两行
ü 配置虚拟用户与实际用户的映射:
光有虚拟用户是无法登录系统的,需要让虚拟用户对应一个系统实际用户
useradd -s /sbin/nologin ftp2
修改//etc/vsftpd/vsftpd.conf文件,添加如下几行
pam_service_name=vsftpd ###配置vsftpd 使用的PAM 模块为vsftpd
user_config_dir=/etc/vsftpd/vuserconfig ###设置虚拟帐号权限配置的主目录
userlist_enable=YES
guest_enable=yes ####允许使用虚拟用户登陆FTP
guest_username=ftp2 ####虚拟用户所对应的系统用户为ftp2
tcp_wrappers=YES
内容选项解释:
max_clients=1:设置FTP 服务器最大接入客户端数为1个
max_per_ip=1:设置每个IP 地址最大连接数为1个
在/etc/vsftpd/下建立vuserconfig 目录,用于存放用户的权限配置文件,以便为各个用户分配不同的权限,
ü 创建vuserconfig目录,并在目录下创建以用户名为名字的文件,进行用户权限设置
[root@linux-node2 vuserconfig]# cat vuserconfig /ftpuser1
write_enable=yes
anon_mkdir_write_enable=yes
anon_world_readable_only=no
参数详解:
anon_world_readable_only=no 允许匿名用户浏览器整个服务器的文件系统
write_enable=yes 允许在文件系统写入权限
anon_mkdir_write_enable=yes 允许创建文件夹
anon_other_write_enable=yes 允许用户改名和删除文件的权限
anon_upload_enable=yes 开启匿名帐号的上传功能
登录测试:
[root@linux-node2 ~]# ftp 172.16.1.10
Connected to 172.16.1.10.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (172.16.1.10:root): ftpuser1 ##虚拟用户1可以登录,设置了部分权限
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
227 Entering Passive Mode (172,16,1,10,141,141)
150 Here comes the directory listing.
drwx------ 2 3007 3007 4096 Sep 07 02:33 123
drwx------ 2 3007 3007 4096 Sep 07 02:20 abc
226 Directory send OK.
ftp>
[root@linux-node2 ~]# ftp 172.16.1.10
Connected to 172.16.1.10.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (172.16.1.10:root): ftpuser2 ##虚拟用户2可以登录,但没设置权限
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
227 Entering Passive Mode (172,16,1,10,80,208)
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).
ftp> cd /
250 Directory successfully changed.
ftp> dir
227 Entering Passive Mode (172,16,1,10,136,246)
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).
ftp> mkdir aaa
550 Permission denied.
ftp>
1.1.1.1.8 配置实例五、(实现部分用户访问控制)
默认在/etc/vsftpd/ftpusers文件中的用户无法登录ftp
[root@linux-node2 vsftpd]# cat ftpusers
# Users that are not allowed to login via ftp
root
bin
......
nobody
[root@linux-node2 vsftpd]#
这是通过系统安全机制pam模块配置的,
[root@haproxy01 vsftpd]# cat /etc/pam.d/vsftpd
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include system-auth
account include system-auth
session include system-auth
session required pam_loginuid.so
其中/lib/security/pam_listfile.so 是调用这个模块用来检测登陆进来的用户是不是记记载在/etc/ftpusers 中的用户
而item=user 很明显是说明要检测的是用户
sense=deny 则是处理方法deny 就是就是拒绝的意思了
若要修改为只有在ftpusers文件中的用户才能访问ftp,则把sense=deny修改为allow即可。
要达到只允许部分用户登陆ftp 的方法还有一种:
通过修改配置文件,添加下面两行,这样就只有userlist 文件中的用户才可以登陆系统
userlist_enable=YES
userlist_deny=NO