回忆之城
生命在于折腾
posts - 575,comments - 9,trackbacks - 0

FTP主动和被动模式

    主动FTP(PORT模式)

1、允许FTP客户机从大于1024的端口连接FTP服务器的21端口

2、允许FTP服务器从21端口回应FTP客户机中大于1024端口的网络连接

3、允许FTP服务器从20端口主动连接FTP客户机中大于1024的端口

4、允许FTP客户机从大于1024的端口回应来自FTP服务器20端口的网络连接

 

被动FTP(PASV模式)

1、允许FTP客户机从大于1024的端口连接FTP服务器的21端口

2、允许FTP服务器从21端口回应FTP客户机中大于1024端口的网络连接

3、允许FTP客户机从大于1024的端口连接FTP服务器中大于1024的端口

4、允许FTP服务器从大于1024的端口回应来自FTP客户机大于1024端口的网络连接

 

  下面是主动与被动FTP优缺点的简要总结:

  主动FTPFTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户 的防火墙阻塞掉。被动FTPFTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而 这个端口很有可能被服务器端的防火墙阻塞掉。

  幸运的是,有折衷的办法。既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支 持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽 然这没有消除所有针对服务器的危险,但它大大减少了危险。

 

 

二、VSFTP的简单配置

1、检查、安装VSFTP服务

2、启动VSFTP服务

   手动启动:service vsftpd start

   自动启动:chkconfig --level 35 vsftpd on

3、默认根目录/var/ftp    //默认anonymousftp用户可访问下载

4、如果要上传,要修改/etc/vsftpd/vsftpd.conf配置文件和目录权限

 

 

三、VSFTP的高级配置

1检查、安装VSFTP服务

2/etc/vsftpd/vsftpd.conf配置文件

nonymous_enable=YES          是否允许匿名ftp,如否则选择NO

local_enable=YES             是否允许本地用户登录

local_umask=022              默认的umask码

anon_upload_enable=YES       是否允许匿名ftp用户访问

anon_root=/ftp/pub          修改FTP匿名目录

anon_upload_enable=YES       是否允许匿名上传文件

anon_mkdir_write_enable=YES  是否允许匿名用户有创建目录的权利

dirmessage_enable=YES        是否显示目录说明文件,默认是YES但需要收             工创建.message文件

xferlog_enable=YES           是否记录ftp传输过程

connect_from_port_20=YES     是否确信端口传输来自20(ftp-data)

chown_upload=YES             是否改变上传文件的所有者

chown_username=username      上传文件的所有者改为谁

xferlog_file=/var/log/vsftpd.log ftp 传输日志的路径和名字默认是/var/log/vsftpd.log

xferlog_std_format=YES       是否使用标准的ftp xferlog模式

idle_session_timeout=600     设置默认的断开不活跃session的时间

data_connection_timeout=120  设置数据传输超时时间

nopriv_user=ftpsecure         运行vsftpd需要的非特权系统用户默认是nobody

async_abor_enable=YES         是否允许运行特殊的ftp命令async ABOR

 

ascii_upload_enable=YES

ascii_download_enable=YES     是否使用ascii码方式上传和下载文件

 

ftpd_banner=Welcome to chenlf FTP service.     定制欢迎信息

deny_email_enable=YES

banned_email_file=/etc/vsftpd.banned_emails    是否允许禁止匿名用户使用某些邮件地址,如果是输入禁止的邮件地址的路径和文件名

 

chroot_list_enable=YES      系统用户限制在自己/home目录中

chroot_list_file=/etc/vsftpd.chroot_list

 存放用户名的列表文件:/etc/vsftpd.chroot_list

当上面为YES时,列表中用户不受限制

 当上面为NO时,列表中用户受限制

 

max_clients=Number      最大连接客户端,默认是0不限止

message_file         设置访问一个目录时获得的目录信息文件的文件名,默认是.message

 

user_list_deny=YES      存放用户列表文件/etc/user_list_deny

    当上面为NO时,只有这个文件中用户才能访问FTP

    当上面为YES时,这个文件中用户不允许访问FTP

 

listen_address=IP      当有服务器有多块网卡时,可选择侦听哪个

listen_port=21         可更改监听端口

listen=YES             使用服务器监听模式(主动)

 

tcp_wrappers=YES       使用TCP_WRAPPERS的安全模式

 

3/etc/vsftpd.ftpusers   设定哪些用户不允许访问FTP服务器

4/etc/vsftpd.user_list   配置访问控制的文件和与/etc/vsftp/vsftpd.conf结合使用

 

例:新建用户ftp1访问测试

1、新建用户ftp1

2、客户端使用ftp1访问

   其实就是访问/home/ftp1宿主目录,并有上传,下载权限

3、默认用户可以浏览其他目录,如果要将用户禁锢在自己目录中

   修改:/etc/vsftpd/vsftpd.conf

         chroot_local_user=yes

   要重启服务

4、将用户添加到/etc/vsftpd.ftpusers/etc/vsftpd.user_list中,那么用户就不能访问FTP服务器

四、配置FTP虚拟用户

1、虚拟用户是为了保证FTP服务器的安全性,由VSFTP提供非系统用户访问服务器

 

2、建立虚拟用户口令库文件logins.txt

按以下格式添加信息:

longlei------------用户名

longlei------------密码

配置:vi /tmp/logins.txt

      ftp1      //用户名

      ftptset1   //密码

      ftp2      //用户名

      ftptest2   //密码

 

3、建立访问者的口令库文件,然后修改其权限只有root可读写

db_load  –T  –t  hash  –f  /tmp/logins.txt  /etc/vsftpd/vsftpd_login.db

chmod 600 /etc/vsftpd/vsftpd_login.db

 

4、进如/etc/pam.d/中创建vsftp.vu   (验证文件)

在此文件中添加如下信息

auth  required  /lib/security/pam_userdb.so  db=/etc/vsftpd/vsftpd_login

account  required  /lib/security/pam_userdb.so  db=/etc/vsftpd/vsftpd_login

 

5、在/var/ftp/创建虚拟用户的目录并改变其属性和它的属主

useradd  -d  /var/ftp/ftp1  ftp1

chmod  700  /var/ftp/ftp1

 

6、进入vsftpd.conf修改其中的信息

guest_enable=yes----------起用虚拟用户

guest_username=ftp1------将虚拟用户映射为本地用户

guest_username=ftp2------将虚拟用户映射为本地用户

pam_service_name=vsftpd.vu

注:在主配置文件中给的权限越低,在后面分用户管理的时候对拥护的权限划分的空间就越大,因为主配置文件最高的限制服务先读主配置文件,然后再读用户的配置文件

 

 

7、默认虚拟用户能登录,看不到任何东西,能下载;做如下修改。

   要在vsftpd.conf中添加: user_config_dir=/etc/vsftpd_user_conf

   建目录:mkdir /etc/vsftpd_user_conf

   为每个用户单独建配置文件:vi /etc/vsftpd_user_confg/ftp1

                             vi /etc/vsftpd_user_confg/ftp2

   anon_world_readable_only=no    //用户可以浏览FTP、下载

   anon_upload_enable=yes        //上传

   anon_mkdir_write_enable=yes    //建立、删除目录

   anon_other_write_enable=yes    //文件改名、删除文件

 

8、重启服务,测试

 

 

注意:如果提示db_load出错,那么默认可能只安装了db4-4.3.29-9.fc6.i386.rpm和db4-devel-4.3.29-9.fc6.i386.rpm要使用db_load需要将位其他几张光盘中的db4-java-4.3.29-9.fc6.i386.rpm\db4-tcl-4.3.29-9.fc6.i386.rpm\db4-utils-4.3.29-9.fc6.i386.rpm安装上

 

注意Selinu的保护问题。

 

 

主动模式:

配置文件有connect_from_port_20=YES,防火墙要开20和21端口,否则无法连接。

 

被动模式:

pasv_enable=YES

pasv_min_port=40000

pasv_max_port=40080

防火墙要开40000至40080的端口,和21端口。

posted on 2013-11-25 17:16 回忆之城 阅读(194) 评论(0)  编辑 收藏 引用 所属分类: unix/linux
只有注册用户登录后才能发表评论。