linux搭建一台外网使用的FTP服务器

Posted 金峰老王

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux搭建一台外网使用的FTP服务器相关的知识,希望对你有一定的参考价值。

上上个月,帮客户搭建了一台FTP服务器。

系统环境:redhat 8,可以上外网

服务使用:vsftpd

数据:无任何数据

要求:(1)FTP用户仅可以访问指定的FTP文件目录,ftp终端软件界面中不能切换到其他目录,ftp账号不可以登录系统shell界面

   (2)防火墙要开启 

步骤一:用CRT,root账号登录服务器,进行配置,账号名称,安装vsftpd服务

    grep ftptest /etc/passwd          确认该服务器无该账号
    cd /
    mkdir FTP                进入根目录, 创建FTP目录
    useradd -d /FTP -s /sbin/nologin ftptest       指定/FTP目录创建ftptest 用户账号,不能登录   
    passwd ftptest        设置密码
    chown -R ftptest:ftptest /FTP      设置/FTP 目录归属账号及用户组
在FTP目录下创建大文件
    dd if=/dev/zero of=150G_1.rar bs=1M count=150000  ----创建大文件
 
这台服务器安装时估计没有勾选FTP,没有FTP服务;但确定可以连外网,因此,还是选择联网方式yum安装vsftpd。
    yum install vsftpd -y
    发现问题:无法解析yum源
    再次尝试: ping www.baidu.com
 
    ping: www.baidu.com: Name or service not known
 
测试外网,ping百度,提示无法解析。
好吧,dns需要配一下,查找dns专有配置文件,不存在。
处理如下:
    新建resolv.conf 文件
    vi /etc/resolv.conf
    nameserver 223.5.5.5            ---加入一条阿里提供的公网可用dns服务器地址                                                                                                                                                                                                                                                                                                                       

[root@localhost etc]# ping baidu.com       
PING baidu.com (220.181.38.148) 56(84) bytes of data.
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=1 ttl=50 time=29.8 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=2 ttl=50 time=29.8 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=3 ttl=50 time=29.8 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=4 ttl=50 time=29.7 ms
 
--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 9ms
rtt min/avg/max/mdev = 29.735/29.777/29.811/0.213 ms
 
###这里注意一下:yum源需要对应服务器安装的系统,本系统redhat8  ,找了个centos8的repo,可以用。
[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/redhat.repo  https://mirrors.aliyun.com/repo/Centos-8.repo
--2020-05-27 11:59:27--  https://mirrors.aliyun.com/repo/Centos-8.repo
正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 116.153.35.249, 116.153.35.242, 116.153.35.245, ...
正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|116.153.35.249|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2595 (2.5K) [application/octet-stream]
正在保存至: “/etc/yum.repos.d/redhat.repo”
 
/etc/yum.repos.d/redhat.repo               100%[======================================================================================>]   2.53K  --.-KB/s  用时 0s      
 
2020-05-27 11:59:28 (135 MB/s) - 已保存 “/etc/yum.repos.d/redhat.repo” [2595/2595])
 
 
###yum安装vsftpd
[root@localhost yum.repos.d]# yum install vsftpd -y  
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
CentOS-8 - Base - mirrors.aliyun.com                                                                                                       11 MB/s | 2.2 MB     00:00    
CentOS-8 - Extras - mirrors.aliyun.com                                                                                                     72 kB/s | 6.5 kB     00:00    
CentOS-8 - AppStream - mirrors.aliyun.com                                                                                                  15 MB/s | 7.0 MB     00:00    
依赖关系解决。
==========================================================================================================================================================================
软件包                                架构                                  版本                                          仓库                                      大小
==========================================================================================================================================================================
安装:
vsftpd                                x86_64                                3.0.3-28.el8                                  AppStream                                180 k
 
事务概要
==========================================================================================================================================================================
安装  1 软件包
 
总下载:180 k
安装大小:359 k
下载软件包:
vsftpd-3.0.3-28.el8.x86_64.rpm                                                                                                            1.0 MB/s | 180 kB     00:00    
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总计                                                                                                                                      1.0 MB/s | 180 kB     00:00     
警告:/var/cache/dnf/AppStream-a5e033d33ad24141/packages/vsftpd-3.0.3-28.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 8483c65d: NOKEY
CentOS-8 - AppStream - mirrors.aliyun.com                                                                                                  47 kB/s | 1.6 kB     00:00    
导入 GPG 公钥 0x8483C65D:
Userid: "CentOS (CentOS Official Signing Key) <security@centos.org>"
指纹: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
导入公钥成功
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                                                                                                           1/1
  安装    : vsftpd-3.0.3-28.el8.x86_64                                                                                                                                1/1
  运行脚本: vsftpd-3.0.3-28.el8.x86_64                                                                                                                                1/1
  验证    : vsftpd-3.0.3-28.el8.x86_64                                                                                                                                1/1
Installed products updated.
 
已安装:
  vsftpd-3.0.3-28.el8.x86_64                                                                                                                                              
 
完毕!
[root@localhost yum.repos.d]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

修改vsftpd配置文件
    vi /etc/vsftpd/vsftpd.conf
    chroot_list_enable=YES 
    chroot_list_file=/etc/vsftpd/chroot_list
    最后一行,增加信息:  allow_writeable_chroot=YES
    
    保存退出,然后在当前目录创建文件chroot_list,将ftptest账号名增加进去 
    

    systemctl stop firewalld   关闭服务器 防火墙(先关闭,ftp测试正常再开启)

    sed -i \'s/SELINUX=enforcing/SELINUX=disabled/g\' /etc/selinux/config     禁用开机自启动selinux
    getenforce
    setenforce 0        关闭selinux
    getenforce

    systemctl start vsftpd       然后启动vsftpd服务

    启动状态ok

    但发现终端不能连接成功,根据错误信息,网上找了类似的情况,最后是通过将    /sbin/nologin   信息增加到/etc/shells里面解决 

 

 

 

 

步骤二:开启防火墙,加策略:增加ftp服务和21端口开放

    1.备份/etc/firewalld/zones 下面的public.xml文件
    2.修改该文件,增加以下内容(红框):
3.重启防火墙
    systemctl restart firewalld
查看防火墙默认区域设置
     firewall-cmd --list-all


扩展其他:如果是防火墙开启的状态下:可以逐条使用命令增加策略:

先查看:firewall-cmd --list-all
临时生效:
       firewall-cmd --add-port=21/tcp 
       firewall-cmd --add-port=21/udp 
       firewall-cmd --reload    ---这个一定要做的,不然上面2条不生效
       firewall-cmd --add-service="ftp" 
 
带上--permanent 会存储到配置文件/etc/firewalld/zones/public.xml
       firewall-cmd --add-port=21/tcp --permanent
       firewall-cmd --add-port=21/udp --permanent
       firewall-cmd --add-service="ftp" --permanent
 
最后,重启防火墙  systemctl restart firewalld
 
再次FTP测试,状态OK
动态查看网口数据交互信息:sar -n DEV 1

 

至此,完成FTP服务的搭建,如果数据上传下载量很大,那么还需要考虑对CPU和网卡绑定优化,这里暂时不做延伸。 

 

以上是关于linux搭建一台外网使用的FTP服务器的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统搭建FTP服务器

Linux下FTP服务器搭建

XAMPP本地服务器搭建好了,就是不会访问

自己搭建的DNS服务器解析不了外网ip

Socket编程如何搭建一个外网可以访问的服务器

FTP服务器的搭建及简单应用