vsftpd服务与pam_mysql+mysqld+vsftpd

实验环境:windows  Vmware 11.0   CentOS6.5 X86_64


对访问ftp的所有用户进行chroot
vim /etc/vsftpd/vsftpd.conf
末行模式下找chroot,去掉前面的#,表示启用。
....
....
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_local_user=YES  //这里开启后,我们再添加任何用户(比如:hadoop)并且用户登录后是仅限制在自己家目录下,也就是所谓的chroot;
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
....
....
#如果想对个别特殊用户进行特别的限制可对如下两项去掉#来开启,前提要先把#加在chroot_local_user=YES 并创建chroot_list文件,
#在此文件中添加用户名即可,一行一个用户;
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list


ftp服务授权匿名用户读写权限要注意两点:
文件系统授权[root@centos ftp]# setfacl -m u:ftp:rwx incoming/
开启服务授权(在配置文件中去掉anon_upload_enable=YES前面的#,匿名用户就能上传;anon_other_write_enable=YES
添加此语句是用来表示删除;去掉anon_mkdir_write_enable=YES前面#,匿名用户就能创建目录了;)




1、修改其配置文件,设置登录的欢迎条幅语句,banner这个单词本身就是条幅欢迎语的意思;
ftpd_banner=Hi,furan!Welcome to blah FTP service.
这里我们可在原句的等号后面跟写路径,把登录的欢迎信息写在文件里;如下:
ftpd_banner=/etc/vsftpd/banner;vim banner 编辑此文件,写入欢迎信息即可;
此外,还有此选项dirmessage_enable=YES,默认是YES,这个也是一个banner,此banner是当我们切换
某一个目录下时候,这个目录下的.message隐藏文件的信息就是欢迎信息;


2、但凡在/etc/vsftpd/ftpusers这个文件的用户都是不允许登录ftp的;编译安装的时候,这个文件是不存在的;
3、/etc/vsftpd/user_list 
控制用户登录的机制,你可以查看此文件的注释行,有说明;默认是开启禁止用户登录,不允许登录的用户都写在此文件中;
4、连接限制:
max_clients:最大并发连接数;
max_per_ip:每IP可同时发起并发请求

anon_max_rate 匿名用户的最大传输速率,总共加一起的;单位:byte/s
 The maximum data transfer rate permitted, in bytes per second, for anonymous clients.
 Default: 0 (unlimited)
local_max_rate 本地用户...........


5、修改匿名用户上传的属主和属组
chown_uploads
If enabled, all anonymously uploaded files will have the ownership  changed  to  the  user  specified  in  the  setting
     chown_username.  This is useful from an administrative, and perhaps security, standpoint.
chown_uploads=YES
chown_username=someuser


6、用户访问控制机制:
   user_list配置文件有两种用法:
黑名单:
userlist_enable=YES //在vftpd.conf配置文件的最下面的一行;
userlist_deny=YES
白名单
userlist_enable=YES
userlist_deny=NO


7、虚拟用户
所有的虚拟用户会被映射为一个系统账号,访问时的文件目录是此系统用户的家目录;
其账户放在一个hash编码的文件:奇数行为用户名,偶数行为密码;
关系型数据库:pam-mysql实现认证


我们yum install -y vsftpd后,这里除了安装开发环境外,我们还要注意事先安装pam-devel包,否则,预配置时候会有错误提示;
yum -y install pam-devel


然后,我们进行pam_mysql的安装,这里不建议用网上的pam_mysql-0.7RC1.tar.gz二进制编译安装,最好用pam_mysql-0.7-0.12.rc1.el6.x86_64
的版本进行rpm -ivh pam_mysql-0.7-0.12.rc1.el6.x86_64


然后,我们创建数据库,授权主机,添加tom和jerry用户;
mysql> create database vsftpd;
Query OK, 1 row affected (0.23 sec)


mysql> grant all on vsftpd.* to 'vsftpd'@'127.0.0.1' identified by 'vsftpd';
Query OK, 0 rows affected (0.29 sec)


mysql> grant all on vsftpd.* to 'vsftpd'@'localhost' identified by 'vsftpd';
Query OK, 0 rows affected (0.00 sec)


mysql> flush privileges;
Query OK, 0 rows affected (0.08 sec)


mysql> create table users (id int unsigned auto_increment not null primary key,name varchar(50) not null,password char(48) not null);
Query OK, 0 rows affected (0.56 sec)


mysql> desc users;
+----------+------------------+------+-----+---------+----------------+
| Field    | Type             | Null | Key | Default | Extra          |
+----------+------------------+------+-----+---------+----------------+
| id       | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name     | varchar(50)      | NO   |     | NULL    |                |
| password | char(48)         | NO   |     | NULL    |                |
+----------+------------------+------+-----+---------+----------------+
3 rows in set (0.07 sec)


mysql> use vsftpd
Database changed
mysql> insert into users (name,password) values ('tom','tom'),('jerry','jerry');


在安装完mysql(可参照之前文章的lamp的二进制安装mysql的方式自行安装),vsftpd,pam_mysql后,进行下一步:
配置vsftpd
1.建立pam认证所需文件
#vi /etc/pam.d/vsftpd.mysql
添加如下两行
auth required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0
account required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0
注意:由于mysql的安装方式不同,pam_mysql.so基于unix sock连接mysql服务器时可能会出问题,此时,
建议授权一个可远程连接的mysql并访问vsftpd数据库的用户。
2.修改vsftpd的配置文件,使其适应mysql认证
建立虚拟用户映射的系统用户及对应的目录
# useradd -s /sbin/nologin -d /var/ftproot vuser
# chmod go+rx /var/ftproot
请确保/etc/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选项的值如下所示
pam_service_name=vsftpd.mysql


启动vsftpd服务
# service vsftpd start


此外,为安全起见,配置虚拟用户具有不同的访问权限。这样,就具有针对性的分配权限了,而不必像之前在vsftpd.conf中全局定义用户权限了;
vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。
配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。
1、配置vsftpd为虚拟用户使用配置文件目录
# vim vsftpd.conf
添加如下选项
user_config_dir=/etc/vsftpd/vusers_config 
2、创建所需要目录,并为虚拟用户提供配置文件
#在这个创建的目录中,为每一个用户创建一个与用户名同名的文件,特别强调:是创建与用户名同名的文件;
# mkdir /etc/vsftpd/vusers_config/
# cd /etc/vsftpd/vusers_config/
# touch tom jerry
3、配置虚拟用户的访问权限(在每个与用户名同名的文件中添加权限即可)
虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让tom用户具有上传文件的权限,
可以修改/etc/vsftpd/vusers/tom文件,在里面添加如下选项即可。
anon_upload_enable={YES|NO}
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}






ps:补充一点,看日志我们会使用tail -f /var/log/secure  tail -f /var/log/message,当然,ftp也有自己的传输日志:
xferlog_enable=YES
xferlog_file=/var/log/xferlog
有需要的话,可以启用这两项;记录上传和下载的日志。
此外,vstpd.mysql文件的crypt等于的数值对应不同的加密方式:
crypt (plain)


    The method to encrypt the user's password:


       0 (or "plain") = No encryption.  Passwords stored in plaintext.
                        HIGHLY DISCOURAGED.


       1 (or "Y")     = Use crypt(3) function.


       2 (or "mysql") = Use MySQL PASSWORD() function. It is possible
                        that the encryption function used by PAM-MySQL
                        is different from that of the MySQL server, as
                        PAM-MySQL uses the function defined in MySQL's
                        C-client API instead of using PASSWORD() SQL function
                        in the query.
                        
       3 (or "md5")   = Use plain hex MD5.


       4 (or "sha1")  = Use plain hex SHA1.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值