zoukankan      html  css  js  c++  java
  • 解决iptables和vsftpd设置的问题

    解决iptables和vsftpd设置的问题 

    修改 
    vi /etc/sysconfig/iptables-config 
    IPTABLES_MODULES="ip_conntrack_ftp" 

    iptables -P INPUT DROP 
    iptables -A INPUT -p tcp --dport 20 -j ACCEPT 
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
    iptables -A INPUT -i lo -j ACCEPT 
    iptables -A INPUT -p tcp --dport 21 -j ACCEPT 
    service iptables save 
    service iptables restart 



    附件 
    FTP两种方式的工作原理: 
    Port模式 

    FTP 客户端首先动态的选择一个端口(一般是1024以上的)和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。 
    Passive模式 
    在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。 
    很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作
     
    1.安装vsftpd软件
    
    yum install vsftpd -y
    
    2.开启匿名访问和被动模式端口
    
    vim /etc/vsftpd/vsftpd.conf
    
    anonymous_enable=YES              --开启匿名用户访问
    
    anon_upload_enable=YES              --匿名用户名可以上传文件
    
    anon_mkdir_write_enable=YES        --匿名用户可以创建文件
    anon_other_write_enable=YES        --匿名用户可以重命名文件
    
     
    
    pasv_enable=YES                        --开启被动模式
    pasv_min_port=30000                    --被动模式最小端口
    pasv_max_port=31000                  --被动模式最大端口
    
    3.加载ftp模块
    
    vim /etc/modprobe.d/vsftpd.conf
    
    alias ip_conntrack ip_conntrack_ftp ip_nat_ftp    --加载ftp模块
    
    vim /etc/rc.local
    
    /sbin/modprobe ip_conntract                --开机加载模块
    /sbin/modprobe ip_conntrack_ftp
    /sbin/modprobe ip_nat_ftp
    
    4.端口过滤
    
    vim /etc/sysconfig/iptables
    
    -A INPUT -p tcp -m multiport --dport 20,21  -m state --state NEW -j ACCEPT  --开启20,21端口
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT            --开启21主动端口
    -A INPUT -p tcp --dport 30000:31000 -j ACCEPT            --开启被动端口
    
    5.登陆测试

    ftp连接方式有两种,一种是PORT,也就是主动连接,一种是PASV,也就是被动模式。两者的具体区别就不讲了,网上资料很多。

    我们采用客户端PASV被动模式

    首先我们配置linux系统的防火墙iptables(防火墙一定要配好,不然会导致连接不上报227 Entering Passive Mode (182,92,150,235,145,19).错误)

    1、编辑/etc/sysconfig/iptables-config文件,添加以下两行:

    1
    2
    IPTABLES_MODULES="ip_conntrack_ftp"
    IPTABLES_MODULES="ip_nat_ftp"

          请一定注意两行内容的位置关系不要搞反了。如果将"ip_nat_ftp"放到前面是加载不到的。如果你的ftp服务是过路由或者防火墙(即内网映射方式一定需要此模块)。以上等同于在加载iptables之前运行modprobe命令加载"ip_nat_ftp"和"ip_conntrack_ftp"模块。

    2、iptables文件添加如下两行:

    1
    2
    3
    4
     [root@a ~]# 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 --sport 21 -j ACCEPT
    -A -INPUT -P tcp --dport 20 -j ACCEPT

    3、检查iptables文件是否存在以下行(默认是有的),如没有则添加;

    1
     -A -INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    现在我们开始配置vsftp

    安装vsftpd

    1、以管理员(root)身份执行以下命令(yum安装vsftp)

    1
    yum install vsftpd

    2、设置开机启动vsftpd ftp服务

    1
    chkconfig vsftpd on

    3、启动vsftpd服务

    1
    service vsftpd start

    管理vsftpd相关命令:

    停止vsftpd:  service vsftpd stop

    重启vsftpd:  service vsftpd restart

    配置vsftpd服务器

    默认的配置文件是/etc/vsftpd/vsftpd.conf,你可以用文本编辑器打开。

    1
    vi /etc/vsftpd/vsftpd.conf

    添加ftp用户

    下面是添加user用户,设置根目录为/home/wwwroot/user,禁止此用户登录SSH的权限,并限制其访问其它目录。

    1、修改/etc/vsftpd/vsftpd.conf

    将底下三行

    1
    2
    3
    #chroot_list_enable=YES
    # (default follows)
    #chroot_list_file=/etc/vsftpd.chroot_list

    改为

    1
    2
    3
    4
    5
    6
    7
    chroot_list_enable=YES
     
     
    # (default follows)
     
     
    chroot_list_file=/etc/vsftpd/chroot_list

    修改以下参数

    1
    2
    3
    4
     anonymous_enable=NO //禁用匿名用户登陆 
     local_enable=YES //开启本地用户登陆
     userlist_enable=NO
     userlist_deny=YES

    禁止用户登录目录userlist_file=/etc/vsftpd.user_list 若上面userlist_deny=YES 这样/etc/vsftpd.user_list就无法登陆了

    3、增加用户ftpuser,指向目录/home/wwwroot/ftpuser,禁止登录SSH权限。

    1
    useradd -d /home/wwwroot/user -g ftp -s /sbin/nologin user

    4、设置用户口令

    1
    passwd ftpuser

    5、编辑文件chroot_list:(用来禁止访问用户根目录的上级目录)

    1
    vi /etc/vsftpd/chroot_list
      1. peter

    1. john

    6、重新启动vsftpd

    1
    service vsftpd restart

    详细参数设置请看 http://vsftpd.beasts.org/vsftpd_conf.html

  • 相关阅读:
    jquery ui draggable,droppable 学习总结
    VSCode设置网页代码实时预览
    ionic3-修改APP应用图标(icon)和APP启动界面(Splash)
    Ionic3页面的生命周期
    videogular2 在ionic3项目里报错(rxjs_1.fromEvent is not a function)
    IDEA的maven项目的netty包的导入(其他jar同)
    maven的安装与项目的创建
    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
    使用二分法查询二维整型数组的值(找到返回其坐标)
    乐观锁以及悲观锁
  • 原文地址:https://www.cnblogs.com/archoncap/p/5000877.html
Copyright © 2011-2022 走看看