zoukankan      html  css  js  c++  java
  • linux搭建ftp服务器

    Linux中搭建一个ftp服务器。

    原文转自linux公社

    ftp工作是会启动两个通道:

    控制通道数据通道

    在ftp协议中,控制连接均是由客户端发起的,而数据连接有两种模式:port模式(主动模式)和pasv(被动模式)

    PORT模式:

    在客户端需要接收数据时,ftp_client(大于1024的随机端口)-PORT命令->ftp_server(21) 发送PORT命令,这个PORT命令包含了客户端是用什么端口来接收数据(大于1024的随机端口),在传送数据时,ftp_server将通过自己的TCP 20 端口和PORT中包含的端口建立新的连接来传送数据。

    PASV模式:

    传送数据时,ftp_client--PASV命令-->ftp_server(21) 发送PASV命令时,ftp_server自动打开一个1024--5000之间的随机端口并且通知ftp_client在这个端口上传送数据,然后客户端向指定的端口发出请求连接,建立一条数据链路进行数据传输。

    安装ftp

    #rpm -qa vsftpd  #查看是否已经安装
    
    #yum install -y vsftpd #安装
    
    #rpm -ql vsftpd  
    /etc/logrotate.d/vsftpd.            vsftpd的日志文件 
    /etc/pam.d/vsftpd                    PAM认证文件 
    /etc/rc.d/init.d/vsftpd              启动脚本 
    /etc/vsftpd                          vsftpd的配置文件存放的目录 
    /etc/vsftpd/ftpusers                禁止使用vsftpd的用户列表文件 
    /etc/vsftpd/user_list                禁止或允许使用vsftpd的用户列表文件 
    /etc/vsftpd/vsftpd.conf              主配置文件 
    /etc/vsftpd/vsftpd_conf_migrate.sh  vsftpd操作的一些变量和设置 
    /usr/sbin/vsftpd                    vsftpd的主程序 
    

    其他一些说明文档和手册文件略!

    /var/ftp                            匿名用户主目录 
    /var/ftp/pub                        匿名用户的下载目录
    
    #service vsftpd start 
    #chkconfig --level vsftpd 
    #chkconfig --level 2345 vsftpd on
    

    匿名用户的登录名:ftp(anonymous) 密码空 ,登录的目录为/var/ftp
    用匿名用户登录的时候默认是只有下载的权限,没有上传,创建和删除的权限:

    #vim  /etc/vsftpd/vsftpd.conf  
    anon_upload_enable=YES      上传 
    anon_mkdir_write_enable=YES    创建 
    anon_other_write_enable=YES    删除 
    #service vsftpd restart
    

    为了安全应该禁止匿名用户的登录:

    123456 #vim  /etc/vsftpd/vsftpd.conf 
    anonymous_enable=NO 
    #anon_upload_enable=YES      上传 
    #anon_mkdir_write_enable=YES    创建 
    #anon_other_write_enable=YES    删除 
    #service vsftpd restart
    

    创建一个直接登录系统用户来登录ftp:

    #useradd -s /sbin/nologin viong 
    #passwd viong
    

    用户具有 上传 创建 下载 切换目录

    加强vsftp安全设置:

    限制系统用户锁定在家目录:

    #vim  /etc/vsftpd/vsftpd.conf 
    chroot_list_enable=YES 
    chroot_list_file=/etc/vsftpd/chroot_list  限制更多的系统用户,把需要限制的用户加入/etc/vsftpd/chroot_list中即可 
    #touch /etc/vsftpd/chroot_list 
    #cut -d: -f 1 /etc/passwd >>/etc/vsftpd/chroot_list 将本地用户都加入到chroot_list
    

    限制重要系统用户不能登录ftp:

    #cat /etc/vsftpd/ftpusers  默认已经添加了系统中一些比较重要的用户 
    #echo "viong" >>/etc/vsftpd/ftpusers  此时viong不能登录ftp
    

    利用ftp用户策略允许登录ftp的系统用户:

    etc/vsftpd/user_list 只有在这个文件中的用户才能登录系统: 
    #vim /etc/vsftpd/vsftpd.conf 
    #在userlist_enable=YES 的后面添加 
    userlist_deny=NO 
    userlist_file=/etc/vsftpd/user_list
    

    设置登录ftp目标ip地址:用iptables设置

    搭建支持SSL加密传输的vsftpd:

    #openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem    生成证书 
    #vim /etc/vsftpd/vsftpd.conf 
    ssl_enable=YES 
    allow_anon_ssl=NO 
    force_local_data_ssl=YES 
    force_local_logins_ssl=YES 
    ssl_tlsv1=YES 
    ssl_sslv2=YES 
    ssl_sslv3=YES 
    rsa_cert_file=/etc/vsftpd/vsftpd.pem
    

    下面是ssl参数一些定义,根据自己需求去修改:

    ssl_enable=yes/no            //是否启用 SSL,默认为no
    allow_anon_ssl=yes/no        //是否允许匿名用户使用SSL,默认为no
    rsa_cert_file=/path/to/file      //rsa证书的位置
    dsa_cert_file=/path/to/file      //dsa证书的位置
    force_local_logins_ssl=yes/no    //非匿名用户登陆时是否加密,默认为yes
    force_local_data_ssl=yes/no    //非匿名用户传输数据时是否加密,默认为yes
    force_anon_logins_ssl=yes/no    //匿名用户登录时是否加密,默认为no
    force_anon_data_ssl=yes/no    //匿名用户数据传输时是否加密,默认为no
    ssl_sslv2=yes/no              //是否激活sslv2加密,默认no
    ssl_sslv3=yes/no                //是否激活sslv3加密,默认no
    ssl_tlsv1=yes/no                //是否激活tls v1加密,默认yes
    ssl_ciphers=加密方法            //默认是DES-CBC3-SHA
    
    
    #service vsftpd restart
    

    ftp命令详解:

    ftp命令用来设置文件系统相关功能。ftp服务器在网上较为常见,Linux ftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件,这里详细介绍Linux ftp命令的一些经常使用的命令,相信掌握了这些使用Linux进行ftp操作将会非常容易。

    语法:

    ftp(选项)(参数)
    

    选项:

    -d:详细显示指令执行过程,便于排错或分析程序执行的情况;
    -i:关闭互动模式,不询问任何问题; 
    -g:关闭本地主机文件名称支持特殊字符的扩充特性;
    -n:不使用自动登录; -v:显示指令执行过程。
    

    参数:

    ip地址
    

    实例:

    FTP>ascii: 设定以ASCII方式传送文件(缺省值) 
    FTP>bell: 每完成一次文件传送,报警提示. 
    FTP>binary: 设定以二进制方式传送文件. 
    FTP>bye: 终止主机FTP进程,并退出FTP管理方式. 
    FTP>case: 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母. 
    FTP>cd: 同UNIX的CD命令. 
    FTP>cdup: 返回上一级目录. 
    FTP>chmod: 改变远端主机的文件权限. 
    FTP>close: 终止远端的FTP进程,返回到FTP命令状态, 所有的宏定义都被删除. 
    FTP>delete: 删除远端主机中的文件. 
    FTP>dir [remote-directory] [local-file] 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件. 
    FTP>get [remote-file] [local-file] 从远端主机中传送至本地主机中. FTP>help [command] 输出命令的解释. 
    FTP>lcd: 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录. 
    FTP>ls [remote-directory] [local-file] 同DIR. 
    FTP>macdef: 定义宏命令. 
    FTP>mdelete [remote-files] 删除一批文件. 
    FTP>mget [remote-files] 从远端主机接收一批文件至本地主机. FTP>mkdir directory-name 在远端主机中建立目录. 
    FTP>mput local-files 将本地主机中一批文件传送至远端主机. 
    FTP>open host [port] 重新建立一个新的连接. 
    FTP>prompt: 交互提示模式. 
    FTP>put local-file [remote-file] 将本地一个文件传送至远端主机中. FTP>pwd: 列出当前远端主机目录. 
    FTP>quit: 同BYE. 
    FTP>recv remote-file [local-file] 同GET. 
    FTP>rename [from] [to] 改变远端主机中的文件名. 
    FTP>rmdir directory-name 删除远端主机中的目录. 
    FTP>send local-file [remote-file] 同PUT. 
    FTP>status: 显示当前FTP的状态. 
    FTP>system: 显示远端主机系统类型. 
    FTP>user user-name [password] [account] 重新以别的用户名登录远端主机. 
    FTP>? [command]: 同HELP. [command]指定需要帮助的命令名称。如果没有指定 command,ftp 将显示全部命令的列表。 FTP>! 从 ftp 子系统退出到外壳。
    
    
  • 相关阅读:
    使用Python往手机发送短信(基于twilio模块)
    春&风
    故乡
    非常完美
    风 记忆
    风誓
    MATLAB的循环结构
    你要的快乐
    夕颜
    MATLAB的基本元素
  • 原文地址:https://www.cnblogs.com/zuoruining/p/ben-wen-zhuan-zi-linux-gong-shehttpwwwlinuxidccomL.html
Copyright © 2011-2022 走看看