文件服务器之一:ftp服务器的搭建及配置详解(二)

服务器 struggling 1053次浏览 0个评论

下面是关于ftp限制登录及禁锢用户在根目录下的设置方法:
vsftpd使用PAM身份认证,/etc/vsftpd/ftpusers是PAM模块的阻挡访问设置
/etc/vsftpd/user_list是vsftpd的自定义阻挡访问项目。

<code>
[root@localhost vsftpd]# cat  /etc/pam.d/vsftpd    #关于vsftpd的pam模块
#%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   #file后面的文件为拒绝登录的用户
auth       required	pam_shells.so
auth       include	password-auth
account    include	password-auth
session    required     pam_loginuid.so
session    include	password-auth

关于vsftpd自身的阻挡设置。

userlist_enable=YES和userlist_file=/etc/vsftpd/user_list设置时,会禁止etc/vsftpd/user_list里的用户登陆。
userlist_enable=YES,userlist_file=/etc/vsftpd/user_list和userlist_deny=NO都设置时,允许etc/vsftpd/user_list里的用户登陆。

对于禁锢用户在自己的家目录的设置:

当chroot_local_user=YES时,chroot_list_enable=YES,
chroot_list_enable=YES,没有设置时,
chroot_list_file=/etc/vsftpd/chroot_list,所有用户会禁锢,
当chroot_local_user=YES,chroot_list_enable=YES,
chroot_list_file=/etc/vsftpd/chroot_list都设置时,chroot_list里的明单不会被禁锢。


实体用户登录不了ftp,是由于selinux的原因,取消禁止实体用户登录的方法:
[root@struggle ~]# getsebool -a |grep  ftp_home
ftp_home_dir --> off
[root@struggle ~]# setsebool -P ftp_home_dir=1
[root@struggle vsftpd]# service vsftpd restart
Shutting down vsftpd:                                      [  OK  ]
Starting vsftpd for vsftpd:                                [  OK  ]

</code>

ftp有两种工作方式:
独立守护(stand alone):使用于户访问量大,在线时间较长的
瞬时守护(super daemon):相反的,由超级守护(xinetd)进程代为管理的
自行设定以 super daemon 来启动 (有必要再进行,不用实作)
如果你的 FTP 是很少被使用的,那么利用 super daemon 来管理不失为一个好主意。 不过若你想要使用 super daemon 管理的话,那就得要自行修改一下配置文件了。其实也不难啦,你应该要这样处理的:

<code>
[root@www ~]# vim /etc/vsftpd/vsftpd.conf
# 找到 listen=YES 这一行:大约在 109 行左右啦,并将它改成:
listen=NO
接下来修改一下 super daemon 的配置文件,底下这个档案你必须要自行建立的,原本是不存在的喔:

[root@www ~]# yum install xinetd   <==假设 xinetd 没有安装时
[root@www ~]# vim /etc/xinetd.d/vsftpd
service ftp
{
        socket_type             = stream
        wait                    = no
        user                    = root
        server                  = /usr/sbin/vsftpd
        log_on_success          += DURATION USERID
        log_on_failure          += USERID
        nice                    = 10
        disable                 = no
}

然后尝试启动看看呢:

[root@www ~]# /etc/init.d/vsftpd stop
[root@www ~]# /etc/init.d/xinetd restart
[root@www ~]# netstat -tulnp| grep 21
tcp  0  0 0.0.0.0:21  0.0.0.0:*   LISTEN   32274/xinetd
</code>

有趣吧!两者启动的方式可不一样啊!管理的方式就会差很多的呦!不管你要使用哪种启动的方式,切记不要两者同时启动,否则会发生错误的!你应该使用 chkconfig –list 检查一下这两种启动的方式,然后依据你的需求来决定用哪一种方式启动。鸟哥底下的设定都会以 stand alone 这个 CentOS 默认的启动模式来处理,所以赶紧将刚刚的动作给他改回来喔!

SFTP 为 SSH的一部份,这个是ssh软件自带的功能,用法与ftp的用法相同,在此不再讲述。
下面详细讲解一下ftps的实现。
Openssl是SSL的开源实现(可以免费下载应用程序),是一种安全机密程序,主要用于提高远程登录访问的安全性。也是目前加密算法所使用的工具之一,功能很强大。
Openssl为网络通信提供安全及数据完整性的一种安全协议,包括了主要的密码算法、常用的密钥和证书封装管理功能(CA)以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用,下面我们将会使用Openssl实现私有CA,并实现证书颁发。

<code>
一,先打开openssl的配置文件,里面改为特定路径执行
[root@localhost vsftpd]# vim  /etc/pki/tls/openssl.cnf 
 40 [ CA_default ]
 41  
 42 dir             = /etc/pki/CA           # Where everything is kept         --->此行改为/etc/pki/CA 
 43 certs           = $dir/certs            # Where the issued certs are kept
 44 crl_dir         = $dir/crl              # Where the issued crl are kept	

二,生成自签证书

1,[root@localhost tmp]# cd  /etc/pki/CA/
2,[root@localhost CA]#(umask 077;openssl genrsa -out private/cakey.pem 2048)  生成私钥保存在private目录下
3,[root@localhost CA]#openssl req -new -x509 -key private/cakey.pem -out cacert.pem  生成自签证书 
 You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN		
string is too long, it needs to be less than  2 bytes long
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:shanxi
Locality Name (eg, city) [Default City]:xian
Organization Name (eg, company) [Default Company Ltd]:RUANXIE
Organizational Unit Name (eg, section) []:tech
Common Name (eg, your name or your server's hostname) []:www.tianfeiyu.com
Email Address []:xupt@.com
4,[root@localhost CA]# ls                                        在CA目录下创建好这几个文件
cacert.pem  certs  crl  index.txt  newcerts  private  serial            									
5,[root@localhost CA]# echo  01>serial			申请用户起始数

三,证书申请

1,[root@localhost httpd]# mkdir ssl;cd  ssl        在/etc/httpd创建ssl目录
2,[root@localhost ssl]# (umask 077;openssl genrsa -out vsftpd.key 1024)  申请生成私钥
3,[root@localhost ssl]# openssl req -new -key vsftpd.key  -out vsftpd.csr  证书签署请求(主机单位保持一致)  不需要-x509,其为生成                                     自签证书用的,其他都一样
4,[root@localhost ssl]#openssl rsa -in vsftpd.key  -pubout  提取公钥

四,签署请求

1,[root@localhost ssl]# openssl  ca -in httpd.csr -out vsftpd.crt -days  365	5.[root@localhost ssl]# openssl  ca -in httpd.csr -out httpd.crt -days  365	#再来一次签署
2,[root@localhost vsftpd]# vim  vsftpd.conf  #编辑添加ssl相关功能
ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt
rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key

此部分不懂的朋友请看后面的。

做好上述认证以后,就可以使用加密的功能,防止被人抓包。

</code>

DevOps-田飞雨 》》转载请注明源地址
喜欢 (0)or分享 (0)
发表我的评论
取消评论
*

表情 贴图 加粗 链接 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址