CentOS6/7/8 搭建vsftp服务器
<h1>搭建设备接入网关FTP</h1>
<p>==================================================================
【需求】
为设备接入网关配置ftp用户,给多媒体POS机升级程序及下发广告时使用,指定一个ftp用户,访问指定ftp目录,可上传下载文件;
用户名(密码):dev_ftpuser(310012)
设备接入服务: </p>
<p>==================================================================</p>
<h3>1、创建用户,出于安全考虑,不允许ftp用户登录本地系统</h3>
<pre><code class="language-bash">[root@RHEL65 ~]# useradd easytong #创建此用户用来运行易通程序;
[root@RHEL65 ~]# passwd easytong
[root@RHEL65 ~]# useradd -s /sbin/nologin -g easytong dev_ftpuser
[root@RHEL65 ~]# passwd dev_ftpuser</code></pre>
<h3>2、FTP工作目录(此ftp目录在设备接入服务启动时会自动生成,也可以手工先创建)</h3>
<pre><code class="language-bash">/usr/local/ET_EquipmentGateWayService/ftp</code></pre>
<h3>3、安装并配置ftp</h3>
<h4>3.1、安装ftp</h4>
<pre><code class="language-bash">[root@RHEL65 ~]# rpm -qa vsftpd #没有返回说明vsftpd未安装;
[root@RHEL65 ~]# yum install vsftpd ftp</code></pre>
<h4>3.2、备份配置文件</h4>
<pre><code class="language-bash">[root@RHEL65 ~]# mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak</code></pre>
<h4>3.3、创建vsftpd.conf文件</h4>
<pre><code class="language-bash">[root@RHEL65 ~]# vi /etc/vsftpd/vsftpd.conf</code></pre>
<h4>3.4、把下面内容添加到/etc/vsftpd/vsftpd.conf文件,并保存退出:</h4>
<pre><code class="language-bash">anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
connect_from_port_20=YES
pasv_enable=YES
#pasv_address=60.191.37.211 #内外映射时,需要添加此行;
xferlog_enable=YES
xferlog_std_format=YES
userlist_enable=NO
chroot_local_user=YES
chroot_list_enable=YES
allow_writeable_chroot=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
#listen_port=5521 #修改ftp端口(/etc/services)时,需添加此行;否则报错:500 OOPS: tcp_wrappers is set to YES but no tcp wrapper support compiled in。
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES # CentOS 8 中,需要注销此行。
user_config_dir=/etc/vsftpd
pasv_min_port=61001 #内外网映射时,路由器的NAS上需要打开这些端口(61001-61011);
pasv_max_port=61011 #端口映射时,注意:内外端口要相同,否则在ftp登录后,用ls查看时,无法使用;
max_clients=300
max_per_ip=3
reverse_lookup_enable=NO
#allow_writeable_chroot=YES #vsftpd版本从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,
#就会报该错误:500 OOPS: vsftpd: refusing to run with writable root inside chroot()。
# CentOS 8 不需要此行。</code></pre>
<h3>4、手工创建文件chroot_list,限制用户在指定目录</h3>
<pre><code class="language-bash">[root@RHEL65 ~]# touch /etc/vsftpd/chroot_list</code></pre>
<h3>5、创建用户文件并添加指定目录</h3>
<pre><code class="language-bash">[root@RHEL65 ~]# vi /etc/vsftpd/dev_ftpuser #添加如下内容:
local_root=/usr/local/ET_EquipmentGateWayService/ftp</code></pre>
<h3>6、关闭防火墙、SELinux调试FTP</h3>
<h4>6.1、查看selinux状态:</h4>
<pre><code class="language-bash">[root@RHEL65 ~]# /usr/sbin/sestatus -v
SELinux status: enabled
Current mode: enforcing
......</code></pre>
<h4>6.2、关闭防火墙、SELinux</h4>
<pre><code class="language-bash">[root@RHEL65 ~]# service iptables stop
[root@RHEL65 ~]# setenforce 0 #关闭不需重启系统;</code></pre>
<h3>7、启动ftp并验证ftp可正常工作</h3>
<pre><code class="language-bash">[root@RHEL65 ~]# service vsftpd start
分别以icbc_ftpuser、bc_ftpuser、bog_ftpuser、psbc_ftpuser、dev_ftpuser登录验证
访问目录是否为指定的目录,可以上传、下载数据;</code></pre>
<h3>8、开启SELinux、防火墙</h3>
<h4>8.1、开启并设置SELinux</h4>
<pre><code class="language-bash">[root@RHEL65 ~]# setenforce 1
[root@RHEL65 ~]# setsebool -P ftp_home_dir on
[root@RHEL65 ~]# setsebool -P allow_ftpd_full_access on
## CentOS7设置如下:
[root@CentOS7 ~]# setsebool -P tftp_home_dir on
[root@CentOS7 ~]# setsebool -P ftpd_full_access on
[root@CentOS7 ~]# getsebool -a |grep ftp
关注下面两个开关是否打开:
allow_ftpd_full_access --> on
ftp_home_dir --> on</code></pre>
<h4>8.2、查看防火墙运行情况</h4>
<pre><code class="language-bash">[root@RHEL65 ~]# service iptables status
[root@RHEL65 ~]# iptables -nL #查看防火墙打开的端口;</code></pre>
<h3>9、打开ftp所需端口,添加如下内容,再重启防火墙</h3>
<pre><code class="language-bash">[root@RHEL65 ~]# vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 61001:61010 -j ACCEPT
#-A INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
[root@RHEL65 ~]# service iptables restart</code></pre>
<h3>10、验证ftp是否按需求设置成功;</h3>
<p>分别以不同用户进行验证。</p>
<h3>11、设置ftp随机启动</h3>
<pre><code class="language-bash">[root@RHEL65 ~]# chkconfig vsftpd on
#RHEL7.x的随机启动有所变化,如下:
[root@RHEL75 ~]# systemctl enable vsftpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.</code></pre>
<h3>12、reboot验证ftp</h3>
<h3>13、其它需求:更改 vsftpd 的端口号</h3>
<pre><code class="language-bash">vsftpd启动后,默认的ftp端口是21,现在我想把ftp端口改成 801 ,修改后能保证用户上传下载不受影响
(1)编辑 /etc/vsftpd/vsftpd.conf 文件,在该配置文件中添加此行:listen_port=801
(21 编辑 /etc/services 文件,将其中的 ftp 21/tcp 改为 ftp 801/tcp,ftp 21/udp 改为 ftp 801/udp
(3) 执行 /etc/init.d/vsftpd restart 重新启动 vsftpd 服务。启动完成后可以使用 netstat -ntpl | grep vsftpd 命令可以查看到系统现监听的 vsftpd 的端口为 801
(4) 使用 lftp 192.168.0.1:801(192.168.0.1 是 vsftpd 服务器的地址 ),这样就可以访问到 ftp 服务器了。</code></pre>
<h3>14、报错处理:vsftpd 530 login incorrect,密码是正确的</h3>
<pre><code class="language-bash">vim /etc/pam.d/vsftpd
注释掉
#auth required pam_shells.so</code></pre>
<p>OK,验证通过。</p>
<p>==================================================================
浙江正元 田世明 2016/5/7
-----------修订说明:
修改内容:</p>
<pre><code class="language-bash">allow_writeable_chroot=YES
#vsftpd版本从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录(即ftp配置文件中指定的主目录)不能再具有写权限了!
如果检查发现还有写权限,就会报该错误:500 OOPS: vsftpd: refusing to run with writable root inside chroot()。
https://www.cnblogs.com/wi100sh/p/4542819.html
或者chmod 500 /raf/ftp</code></pre>
<p>修订时间:2018.06.21</p>
<p>-----------修订说明:
客户使用过程中发现,多媒体POS升级时间过久,速度不够快。
修改内容:增加参数项:max_clients=300 最大客户端连接数为300<br />
修证时间:2018.08.24</p>
<p>-----------修订说明:
CentOS7.6安装vsftpd并正确配置后,ftp ip 输入用户名登录时报错:vsftpd 530 login incorrect 的N中情况
解决办法:
vim /etc/pam.d/vsftpd
注释掉</p>
<pre><code class="language-bash">#auth required pam_shells.so</code></pre>
<p>重启
systemctl restart vsftpd
来源:<a href="https://blog.csdn.net/wlchn/article/details/50855447">https://blog.csdn.net/wlchn/article/details/50855447</a>
修证时间:2019.02.28</p>
<p>FTP连接报错530 Permission denied解决方法
vsftpd.user_list:位于/etc/vsftpd目录下。该文件里的用户账户在默认情况下也不能访问FTP服务器,仅当vsftpd .conf配置文件里启用userlist_enable=NO选项时才允许访问。
<a href="https://blog.csdn.net/weiyuefei/article/details/51285765">https://blog.csdn.net/weiyuefei/article/details/51285765</a>
修证时间: 2019.11.06</p>