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. 【BZOJ 1207】[HNOI2004]打鼹鼠

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 时间是按顺序的. 所以就有单调性啦. 写个DP就好. 设f[i]表示打第i只鼹鼠,最多能打几只鼹鼠. 则如果i和j的距离不超过它们的 ...

  2. CorePlot学习六---点击scatterPlot中的symbol点时弹出对应的凝视

    因为项目须要用到用户点击 symbol时,弹出对应的具体信息,发现国内解说的比較少,经过一番搜索验证最终解决,先看效果图: 详细须要改动的代码例如以下: 首先要引用托付方法:CPTScatterPlo ...

  3. ACdream 1139(Sum-逆元)

    J - Sum Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) SubmitStatu ...

  4. 10.Intellij IDEA svn的使用详解

    转自:https://www.2cto.com/kf/201703/614858.html 首先提一句,IDEA对各种的版本控制工具的支持是非常好的,打开系统设置界面,就可以看到他有专门的一栏 Ver ...

  5. vue --- 路由传参的几种方式

    方案一: getDescribe(id) { // 直接调用$router.push 实现携带参数的跳转 this.$router.push({ path: `/describe/${id}`, }) ...

  6. Objects are mutable

    We can change the state of an object by making an assignment to one of its attributes. For example, ...

  7. Deleting elements

    There are several ways to delete elements from a list. If you know the index of the element you want ...

  8. SharePoint 修改完或制作完一定要发布

    设置了匿名访问但是网站就是需要登录,找了很多问题. 首先想到的映射问题,然后努力检查,最后把代码删掉,然后把站删掉,最后测试出来问题. 点击上方[网站设置] 把修改过的文件发布. 母版也和布局页 一定 ...

  9. 使用HANDLECOLLISIONS的几个场景

    使用HANDLECOLLISIONS的几个场景: 1.target丢失delete记录(missing delete),忽略该问题并不记录到discardfile 2.target丢失update记录 ...

  10. js文字的无缝滚动(上下)

    使用scrolltop值的递增配合setInterval与setTimeout实现相关效果,左右无缝滚动使用scrollLeft即可 Dom内容 <div id="container& ...