下面是关于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>