当前位置:   article > 正文

Iptables_在本机设置iptables规则,要求允许主机222.34.156.33访问本机的tcp端口23,而来

在本机设置iptables规则,要求允许主机222.34.156.33访问本机的tcp端口23,而来
一 iptables规则原理和组成

    1.iptables:将规则组成一个列表,实现绝对详细的访问控制功能。其实就是一个定义规则工具,让在内核空间当中的netfilter(网络过滤器)读取这些规则。从而实现防火墙功能。
    监控路径:
            1.内核空间中:从一个网络接口进来,到另一个网络接口去的
            2.数据包从内核流入用户空间的
            3.数据包从用户空间流出的
            4.进入/离开本机的外网接口
            5.进入/离开本机的内网接口
    2.netfilter是Linux操作系统核心层内部的一个数据模块。
    3.Hook point (5条链)
        数据包在Netfilter中的挂载点。数据包在网络层会经过挂载点,就有机会对数据包做操作处理。
    4.规则组成
        四张表+五张链+规则
       
        1.Iptables中的4表5链
            4张表:filter表(过滤)、nat表(修改源、目标或端口)、mangle表(标记)、raw表(状态跟踪)
            5条链:PRE_ROUTING(路由前)、INPUT(数据包流入口)、FORWARD(转发关卡)、OUTPUT(数据包流出口)、POST_ROUTING(路由后)
        2.规则
            数据包访问控制:ACCEPT、DROP、REJECT、LOG
            数据包改写:SNAT、DNAT
二、iptables命令(规则)
    1.iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
   
        -P 设置默认策略:iptables -P INPUT (DROP|ACCEPT)
        -F 清空规则链
        -L 查看规则链(列出已有规则)(-n 显示IP数字 默认会反向解析成域名)
        -A 在规则链末尾加新规则
        -I INPUT/... num 在规则链头部加入新规则
        -D INPUT/... num 删除某一规则
        -s 匹配来源地址IP/MASK(!取反)
        -d 匹配目标地址
        -i 网卡名 匹配从这块网卡流入的数据
        -o 网卡名 匹配从这块网卡流出的数据
        -p 匹配协议(tcp,udp,icmp)
        --dport num 匹配目标端口
        --sport num 匹配来源端口
    注:
        1.没指定规则表默认为filter表
        2.不指定规则链则指表内所有规则链
        3.匹配会按 照顺序(由上往下)匹配规则,保证 允许 规则在 拒绝 规则之上
        4.iptables执行规则策略仅当前生效,永久生效执行service iptables save(/etc/sysconfig/iptables)
        5.设置默认的策略(iptables -L 命令显示 policy里面的默认策略的"ACCEPT" 一般不要用-P命令行来改  远程登录改后会直接掉线)
    2.iptables防攻击cc的模块
        connlimit模块(用于限制每个IP并发连接数 主要是限制内网用户的网络使用
            eg:iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT
        limit模块(限速,控制流量)
            eg: iptables -A INPUT -p icmp -m limit --limit 100/m --limit-burst 10000 -j ACCEPT (前10000个包可正常流量 之后限制每分钟100次包传输)(只有 --limit-burst 相当只允许通过10000个包 只有 --limit 100/m 相当直接限速100/m个包通过)
                iptables -A INPUT -p icmp -j DROP(必须有 因为如果默认"ACCEPT" 不加的话超限的数据包也会通过)
三 SNAT与DNAT
    SNAT:源地址转换技术,让多个内网用户通过一个外网地址上网,并能正常接受反馈数据。
    
    
  
               
   (MASQUERADE:动态伪装)
    DNAT:目的地址转换技术,让外网IP能访问局域网内不同的服务器。
   
     
四 流量均衡技术和端口转发技术
    流量均衡技术:
    iptables -A PREROUTING -i eth0 -p tcp --dorpt 80 -m state --state NEW -m nth --counter 0 --every 2 --packet() -j DNAT --to-destination 192.168.1.166:80
     iptables -A PREROUTING -i eth0 -p tcp --dorpt 80 -m state --state NEW -m nth --counter 0 --every 2 --packet() -j DNAT --to-destination 192.168.1.188:80
    端口转发功能(将原本到某主机端口的数据包转发给其他主机)
     firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口>:proto=<协议>:toport=<目标端口>:toaddr=<目标IP>  
五 iptables配置场景
    
    场景一:
        规则1:对所有地址开放本机的tcp(80,22,1-20)端口
        规则2:允许所有地址开放本机基于ICMP协议的数据包
        规则3:其他未被允许的端口禁止
    主机1(ip:192.168.1.188)(设置iptables防火墙):
    iptables -I INPUT -p tcp --dport 80 -j ACCEPT
    iptables -I INPUT -p tcp --dport 22 -j ACCEPT
    iptables -I INPUT -p tcp --dport 1:20 -j ACCEPT
    iptables -A INPUT -j REJECT
   
   
    主机二(192.168.1.166)(访问者):
   
        注:mnap是扫描显示目标主机端口指令详见《Linux系统扫描》
    注意还没完(问题来了)
    主机1(192.168.1.188):   
   
        主机不能访问本机回环和其他主机了。。(就是被访问的其他主机回包时被挡了)
        问题解决
        建立本机回环允许
        iptables -I INPUT -i lo -j ACCEPT
       
        当允许已监听状态的数据包进入
        iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
       
    补充:仅允许主机2(192.168.1.166)访问主机1(192.168.1.188)的http 80
        先删除原本允许访问80,再设置仅允许主机2访问
        iptables -D INPUT -p tcp --dport 80 -j ACCEPT
        iptables -I INPUT -p tcp -s 192.168.1.166 --dport 80 -j ACCEPT
       
       
    
    场景二:
        ftp主动模式和被动模式
 
        区别:
            FTP主动模式服务器开放20端口主动把数据送到客户端
            FTP被动模式服务器开放随机端口被客户端拉取数据

    1.iptables对于FTP主动模式允许
        ftp准备(以后搭服务器具体再说,不具体说明):
            1.主机1(服务器 192.168.1.188)和2(客户端192.168.1.166)安装ftp(yum install vsftpd(服务器)和yum install vsf(客户端))
            2.服务器允许ftp主动模式,重启服务器 (默认ftp只允许被动模式 /etc/vsftpd/vsftpd.conf connect_from_port_20=YES 前添加 port_enable=20
    客户端(主机2 192.168.1.166):       
        登录服务器(192.168.1.188)测试(使用anonymous匿名用户登录(无密码) ftp默认连接为被动模式,passive命令改为主动模式)(防火墙未开启)
      

    正式iptables测试:
    服务器:(设置防火墙 关于vsftp仅开发21端口)
    iptables -F
    iptables -I INPUT -p tcp --dport 21 -j ACCEPT
    iptables -I INPUT -p tcp --dport 22 -j ACCEPT(因使用ssh远程连接)
    iptables -I INPUT -p icmp -j ACCEPT
    iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -j REJECT
   
    客户端:(被动模式被拒,主动模式成功)     

    
    2.iptables对于ftp被动模式允许
    方法一:
    服务器(主机1):
        1.vsftp文件配置vim /etc/vsftpd/vsftpd.conf(设置被动模式的提供随机端口号范围)
            pasv_min_port=50000
            pasv_max_port=60000
        2.在主动模式iptables配置基础操作
        iptables -I INPUT -p tcp --dport 50000:60000 -j ACCEPT
      
    客户端:(主机2)
    方法二:(使用连接追踪模块  modprobe nf_conntrack_ftp加载内核连接追踪模块 
  
   (永久生效 /etc/sysconfig/iptables-config 加入 IPTABLES_MODULES="nf_conntrack_ftp"
    服务器(192.168.1.166)(在方法一基础上完成)
    iptables -D INPUT -p tcp --dport 50000:60000 -j ACCEPT
    modprobe nf_conntrack_ftp
   
    客户端:
   


   

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号