1.下载rpm包,如vsftpd-3.0.2-21.el7.x86_64.rpm。可在系统盘里面找到或者下载
2.参考如下步骤。或者见链接http://blog.csdn.net/uq_jin/article/details/51684722
 
开放21端口(默认是不需要配置的)
firewall-cmd --zone=public --add-port=21/tcp --permanent firewall-cmd --reload
 
ftp支持匿名登录是不安全,所以要禁止匿名ftp登录
在/etc/vsftpd/vsftpd.conf修改以下三项
anonymous_enable=NO #anon_upload_enable=YES #anon_mkdir_write_enable=YES
 
 
新建一个不能登录系统用户. 只用来登录ftp服务 ,这里如果没设置用户目录。默认是在home下
useradd ftpuser -s /sbin/nologin
修改密码:
passwd ftpuser
 
发现还是不能上传文件,需要配置selinux 允许ftb访问home和外网访问:
setsebool -P allow_ftpd_full_access on setsebool -P ftp_home_dir on
 
 
开启PASV(被动模式)
在 /etc/vsftpd/vsftpd.conf 的最下面加入
pasv_enable=YES pasv_min_port=30000 pasv_max_port=30999
开启防火墙:
firewall-cmd --zone=public --add-port=30000-30999/tcp --permanent firewall-cmd --reload
这样我们就可以使用ftp了
 
 
 
下面是实践配制好的/etc/vsftpd/vsftpd.conf
vsftpd.conf文件内容如下,可参考(注意配制文件中的内容不能有空格)
listen=YES
background=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=NO
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to hao32 FTP servers
pam_service_name=vsftpd
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
 
 
1.关闭匿名用户登录
ftp支持匿名登录是不安全,所以要禁止匿名ftp登录
在/etc/vsftpd/vsftpd.conf修改以下三项
anonymous_enable=NO
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
 
[root@red-hat-5 ~]# service vsftpd restart
关闭vsftpd:                                             [确定]
为vsftpd启动vsftpd:                                     [确定]
[root@red-hat-5 ~]# ftp 127.0.0.1
Connected to 127.0.0.1.
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 (127.0.0.1:root): anonymous
331 Please specify the password. ------>提示登录失败,说明已经禁
                                用匿名登录
Password:
530 Login incorrect.
Login failed.
 
2.创建一个系统用户来登录ftp
 
[root@red-hat-5 ~]# useradd -s /sbin/nologin viong
建设一个不能登录系统用户. 只用来登录ftp服务 ,这里如果没设置用户目录。默认是在home下
 
[root@red-hat-5 ~]# passwd viong
Changing password for user viong.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@red-hat-5 ~]# ftp 127.0.0.1
Connected to 127.0.0.1.
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 (127.0.0.1:root): viong
331 Please specify the password. ------>提示登录成功
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
 
接下来测试权限
 
ftp> put viong.txt 上传viong.txt文件成功
local: viong.txt remote: viong.txt
227 Entering Passive Mode (127,0,0,1,98,115)
150 Ok to send data.
226 File receive OK.
ftp> mkdir hong 创建hong目录文件成功
257 "/home/viong/hong" created
ftp> rmdir hong 删除hong目录文件成功
250 Remove directory operation successful.
ftp> pwd  显示家目录
257 "/home/viong"
ftp> cd /etc 切换/etc成功
250 Directory successfully changed.
ftp> mget passwd 下载passwd
mget passwd?
227 Entering Passive Mode (127,0,0,1,220,77)
150 Opening BINARY mode data connection for passwd (1429 bytes).
226 File send OK.
1429 bytes received in 5.9e-05 seconds (2.4e+04 Kbytes/s)
ftp> !ls 显示下载passwd成功
anaconda-ks.cfg  install.log  install.log.syslog  passwd  viong.txt
 
3.加强vsftp安全设置
从以上可以看出ftp家目录存在安全漏洞,所以要修改以下设置:
(1)限制系统用户锁定在家目录
 
Vi /etc/vsftpd/vsftpd.conf
 
去掉前面#号
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list 限制更多系统用户
 
然后把所有用户加入/etc/vsftpd/chroot_list即可

  • chroot_local_user #是否将所有用户限制在主目录,YES为启用 NO禁用.(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的)
  • chroot_list_enable #是否启动限制用户的名单 YES为启用  NO禁用(包括注释掉也为禁用)
  • chroot_list_file=/etc/vsftpd/chroot_list #是否限制在主目录下的用户名单,至于是限制名单还是排除名单,这取决于chroot_local_user的值,我们可以这样记忆: chroot_local_user总是一个全局性的设定,其为YES时,全部用户被锁定于主目录,其为NO时,全部用户不被锁定于主目录。那么我们势必需要在全局设定下能做出一些“微调”,即,我们总是需要一种“例外机制",所以当chroot_list_enable=YES时,表示我们“需要例外”。而”例外“的含义总是有一个上下文的,即,当”全部用户被锁定于主目录“时(即chroot_local_user=YES),"例外"就是:不被锁定的用户是哪些;当"全部用户不被锁定于主目录"时(即chroot_local_user=NO),"例外"“就是:要被锁定的用户是哪些。这样解释和记忆两者之间的关系就很清晰了!

对于chroot_local_user与chroot_list_enable的组合效果,可以参考下表:

  chroot_local_user=YES chroot_local_user=NO
chroot_list_enable=YES 1.所有用户都被限制在其主目录下 2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,不受限制 1.所有用户都不被限制其主目录下 2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,受到限制
chroot_list_enable=NO 1.所有用户都被限制在其主目录下 2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户 1.所有用户都不被限制其主目录下 2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户
[root@red-hat-5 ~]# ls /etc/vsftpd/ chroot_list
默认是不存在,需要我们手动建立
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
 
[root@red-hat-5 ~]# touch /etc/vsftpd/chroot_list
[root@red-hat-5 ~]# cut -d : -f  1 /etc/passwd>>/etc/vsftpd/chroot_list
把本地用户都加入到chroot_list
 
cut命令是切去某一列,-d是每列的分隔符,-f 是切取第几列,然后重定向到chroot文件
 
[root@red-hat-5 ~]# ll /etc/vsftpd/
总计 24
-rw-r--r-- 1 root root  197 12-25 19:57 chroot_list
-rw--------1 root root 125 2007-12-13 ftpusers
 ftpusers指的是阻止这个文件中的用户登陆
-rw------- 1 root root  361 2007-12-13 user_list
-rw------- 1 root root 4396 12-25 19:19 vsftpd.conf
-rwxr--r-- 1 root root  338 2007-12-13 vsftpd_conf_migrate.sh
 
(2)限制重要系统用户不能登录ftp权限
 
[root@red-hat-5 ~]# cat /etc/vsftpd/ftpusers
默认会加入一些比较重要系统用户
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
 
 [root@red-hat-5 ~]# echo viong >> /etc/vsftpd/ftpusers
 把之前建的viong账号加进去测试
 
[root@red-hat-5 ~]# ftp 127.0.0.1
Connected to 127.0.0.1.
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 (127.0.0.1:root): viong
331 Please specify the password.  ----->提示登录失败,说明生效了
Password:
530 Login incorrect.
Login failed.
 
(3)利用ftp用户策略允许登录ftp的系统用户
 
系统添加一个用户也默认有ftp的登陆权限,是不安全,要一个个设置,有点繁琐。利用ftp用户策略解决这个问题,即user_list文件设置,只有user_list中存在的用户才能登录系统
 
修改配置文件:vi  /etc/vsftpd/vsftpd.conf
 
在userlist_enable=YES文件后面添加
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
 
[root@red-hat-5 ~]# service vsftpd restart
关闭vsftpd:                                             [确定]
为vsftpd启动vsftpd:                                     [确定]
 
[root@red-hat-5 ~]# ftp 127.0.0.1
Connected to 127.0.0.1.
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 (127.0.0.1:root): viong
530 Permission denied.   ------------->提示登录失败
Login failed.
[root@red-hat-5 ~]# echo viong >> /etc/vsftpd/user_list
把viong账号加入到 user_list
 
[root@red-hat-5 ~]# ftp 127.0.0.1
Connected to 127.0.0.1.
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 (127.0.0.1:root): viong
331 Please specify the password.  ------------->提示登录成功
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
 
(4)设置登录ftp目标ip地址
 
为了让ftp更安全,我们设置ftp目标ip地址访问
 
C:\Users\Administrator>ipconfig 查看本地ip
 
...................................
 
以太网适配器 VMware Network Adapter VMnet1:6
 
   连接特定的 DNS 后缀 . . . . . . . :
   IPv4 地址 . . . . . . . . . . . . : 192.168.184.1
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :
 
只允许这个ip地址访问ftp ssh,可以写条iptable做限制.
如下:
 
[root@red-hat-5 ~]# iptables -A INPUT -p tcp -s 192.168.184.1 --dport 22 -j ACCEPT
允许192.168.184.1访问本地 22端口
[root@red-hat-5 ~]# iptables -A INPUT -p tcp -s 192.168.184.1 --dport 21 -j ACCEPT
允许192.168.184.1访问本地 21端口
[root@red-hat-5 ~]# iptables -A INPUT -p tcp -s 192.168.184.1 --dport 65341:65351 -j ACCEPT
允许192.168.184.1访问本地 PASV端口
 
[root@red-hat-5 ~]# iptables -P INPUT DROP  禁止任何输入的数据包
[root@red-hat-5 ~]# service iptables save 保存iptables设置
将当前规则保存到 /etc/sysconfig/iptables:                 [确定]
[root@red-hat-5 ~]# service iptables status 检查iptables的设置
表格:filter
Chain INPUT (policy DROP)
num  target     prot opt source               destination        
1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0          
2    ACCEPT     tcp  --  192.168.184.1        0.0.0.0/0           tcp dpt:22
3    ACCEPT     tcp  --  192.168.184.1        0.0.0.0/0           tcp dpt:21
4    ACCEPT    tcp -192.168.184.1        0.0.0.0/0      tcp dpts:65341:65351

FTP配置说明的更多相关文章

  1. 【T电商 3】Nginx的Http(图片)服务器配置+ftp上传使用说明

    在前两篇博客中提到了搭建Nginx和Ftp服务器,在本篇博客,主要是介绍Nginx的配置文件的使用,怎样修改配置文件使其成为一个图片服务器. 一.Nginx图片服务器配置 <span style ...

  2. 【RL-TCPnet网络教程】第37章 RL-TCPnet之FTP客户端

    第37章      RL-TCPnet之FTP客户端 本章节为大家讲解RL-TCPnet的FTP客户端应用,学习本章节前,务必要优先学习第35章的FTP基础知识.有了这些基础知识之后,再搞本章节会有事 ...

  3. 【RL-TCPnet网络教程】第36章 RL-TCPnet之FTP服务器

    第36章      RL-TCPnet之FTP服务器 本章节为大家讲解RL-TCPnet的FTP服务器应用,学习本章节前,务必要优先学习第35章的FTP基础知识.有了这些基础知识之后,再搞本章节会有事 ...

  4. 【Ts 3】Nginx的Http(图片)服务器配置+ftp上传使用说明

    在前两篇博客中提到了搭建Nginx和Ftp服务器,在本篇博客,主要是介绍Nginx的配置文件的使用,怎样修改配置文件使其成为一个图片服务器. 一.Nginx图片服务器配置 <span style ...

  5. CentOS下安装vsftpd

    因为FTP的端口是 两个,一个是固定21端口,还有一个任意端口的数据通道.关键是任意端口不好搞. 首先在vsftpd的配置文件中设置 任意端口的范围 [root@localhost root]# vi ...

  6. CruiseControl.NET/CCNET配置(SVN+MSBuild+BAT+FTP)

    CCNET目前最新版本为1.8.5,官方很久没更新过了,如果投入生成环境使用,建议全部转到Jenkins上. 可以直接在这里下载:http://www.cnblogs.com/EasonJim/p/5 ...

  7. 最简洁粗暴版的虚拟用户配置FTP

    最简洁粗暴版的虚拟用户配置FTP yum安装FTP: yum install vsftpd pam* db4* -y 设置为系统服务:chkconfig –level 35 vsftpd on 2.v ...

  8. ubuntu上搭建vsftpd且通过mysql来管理FTP账号

    参考文章:http://wiki.ubuntu.org.cn/Vsftpd%E5%92%8Cmysql%E9%85%8D%E7%BD%AE 请各位先按照这篇文章一步一步操作,我这里是记录一些其间遇到的 ...

  9. centos 服务器配置(二) 之ftp配置

    Centos配置vsftpd服务器 1.通过yum来安装vsftpd [root@localhost ~]# yum -y install vsftpd 加-y是因为出现提示默认直接按Y.这里yum安 ...

随机推荐

  1. [HAOI2009]毛毛虫(树形dp)

    [HAOI2009]毛毛虫 题目描述 对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大.例如下图左边的树(图 1 )抽出一部分就变成了右边的一个毛毛虫 ...

  2. 通过案例快速学会Picasso图片缓存库

    picasso是Square公司开源的一个Android图形缓存库,官网地址http://square.github.io/picasso/,可以实现图片下载和缓存功能.        下载地址:ht ...

  3. 【Oracle】Exadata虚拟机配置(一)

    Exadata是Oracle软硬结合的一体机.通过自己的机子不可能全然模拟出来,这里搭建的虚拟机仅仅是一个简单的.能够供我们学习Exadata的环境. 最简单能够模拟的Exadata虚拟机须要两个节点 ...

  4. Angry IP Scanner 获取设备的IP

    给大家介绍一款软件Angry IP scanner,这款软件最大的用处就是能够扫描某一网段的各个主机的ip.通过使用发现,原理就是通过高速的ping每一个ip,假设有主机存在.就获取这个主机的user ...

  5. Linux系统编程——进程间通信:共享内存

    概述 url=MdyPihmS_tWLwgWL5CMzaTrwDFHu6euAJJUAjKvlzbJmRw7RfhmkBWwAloo7Y65hLY-kQdHsbqWYP2wc2fk8yq"& ...

  6. angularjs 表单校验

    <!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...

  7. WinRar 设置默认的压缩格式为zip

    By default, WinRar uses the RAR archive format for compressing files. You may prefer using the more ...

  8. thinkPHP的模板是做什么用的

    thinkPHP的模板是做什么用的 问题 为什么PHP中ThinkPHP有做类似模板引擎的东西?smarty也是?这些到底有何用? 我是真没发现它们的用处在哪里?分离了前端和PHP的依赖?HTML文件 ...

  9. BZOJ 3223 Splay区间翻转

    思路: 区间翻转的裸题 终于tm理解splay了-- //By SiriusRen #include <cstdio> #include <cstring> #include ...

  10. html页面全屏化显示

    <html><head><script>// toggle full screen function toggleFullScreen() { if (!docum ...