iptables上课内容-创新互联

                                                  iptables

长安网站建设公司成都创新互联,长安网站设计制作,有大型网站制作公司丰富经验。已为长安上千多家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的长安做网站的公司定做!

全称Packets Filter Firewall; iptables/netfilter:包过滤型防火墙;带状态检测的包过滤型防火墙;连接追踪(connection tracking);

   Firewall:隔离工具;工作于主机或网络的边缘,对经由的报文根据预先定义的规则(识别条件)进行检测,对于能够被规则匹配到的报文实行某预定义的处理机制的一套组件;
       硬件防火墙:在硬件级别能部分防火墙,另一部分功能基于软件实现;
       软件防火墙:应用软件处理逻辑运行通用硬件实现的防火墙;

       主机防火墙:服务范围为当前主机;
       网络防火墙:服务范围为局域网;

   获取帮助:
           CentOS 7:man iptables-extensions
           CentOS 6:man iptables

   iptables/netfilter:软件实现的主机或网络防火墙;
netfilter:位于内核中tcp/ip协议栈上的一个framework;5个钩子函数;
       iptables:位于用户空间的命令行程序,用于生成规则送往内核中的netfilter之上;
           hook function钩子函数:
               prerouting
               input
               forward
               output
               postrouting
           chain链:
               PREROUTING
               INPUT
               FORWARD
               OUTPUT
               POSTROUTING
           四表
               filter:过滤,防火墙;
               nat:network address translation;用于修改报文的源地址或目标地址,甚至是端口;
               mangle:拆解报文,做出修改,并重新封装起来;
               raw:关闭nat表上启用的连接追踪机制;
           优先级次序(由高而低):
               raw --> mangle --> nat --> filter

       4个表中,每个表多对应的链分别为(功能<-->钩子):
           raw:PREROUTING,OUTPUT
           mangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
           nat:PREROUTING,INPUT,OUTPUT,POSTRUTING
           filter:INPUT,FORWARD,OUTPUT

       报文流向:
           到本机某进程的报文:PREROUTING --> INPUT
           由本转发的报文:PREROUTING --> FORWARD --> POSTROUTING
           由本某进程发出的:OUTPUT --> POSTROUTING

       规则的组成的部分:
           匹配条件:
               网络层首部属性值;
               传输层首部属性值;
               附加的条件;
           处理动作:

       TCP/IP协议栈:
           数据链接层:物理到物理设备之间的通信;(MAC,Media Access Control)
           网络层:源主机到目标主机之间的通信;
           传输层:进程到进程之间的通信;

       CentOS 5/6:iptables命令编写规则;
       CentOS 7:firewalld;
           systemctl disable firewalld.service

   iptables命令:
       规则:根据指定的匹配条件来尝试匹配每个流经此处的报文,一旦匹配成功,就由规则后面指明的处理动作进行处理;
           匹配条件:
               基本匹配条件:简单检查IP、TCP、UDP等报文的某属性进行匹配的
               扩展匹配条件:需要借助于扩展模块进行的匹配条件指定即为扩展匹配;
           处理动作:
               基本动作:ACCEPT,DROP, ...
               扩展动作:需要借助扩展模块进行的动作;
       添加规则之时需要考量的问题:
           (1) 报文的流经路径,判断添加规则至哪个链上;
           (2) 确定要实现的功能,判断添加规则至哪个表上;
           (3) 要指定的匹配条件,以用于匹配目标报文;

   规则的编写格式:iptables [-t table] COMMAND chain [-m matchname [per-match-options]] [-j targetname [per-target-options]]
       -t table:
           默认为filter;其它可用的有raw, mangle, nat;
       COMMAND:
           链:
           -P:policy,策略,定义默认策略; 一般有两种选择,ACCEPT和DROP;
           -N:new,新建一条自定义的规则链;被内建链上的规则调用才能生效;[-j chain_name];
           -X:drop,删除自定义的引用计数为0的空链;
           -F:flush,清空指定的链;
           -E:重命名自定义的引用计数和为0的链;
       规则:
           -A:append,追加,在指定链的尾部追加一条规则;
           -I:insert,插入,在指定的位置(省略位置时表示链首)插入一条规则
           -D:delelte,删除,删除指定的规则;
           -R:replace,替换,将指定的规则替换为新规则;不能仅修改规则中的部分,而是整条规则完全替换;
       查看:
           -L:list,列出表中的链上的规则;
               -n:numeric,以数值格式显示;
               -v:verbose,显示详细格式信息;
                   -vv, -vvv
               -x:exactly,计数器的精确结果;
               --line-numbers:显示链中的规则编号;

       计数器:
           规则,以及默认策略有专用的计数器;
           记录被当前规则所匹配到的:
               (1) 报文个数;
               (2) 字节总数;

           重置规则计数器:
               -Z:zero,置0;

       chain:
           (1) 内建链;
           (2) 自定义链;

       匹配条件:
           多重条件:逻辑关系为“与”;
           基本匹配条件:
               [!] -s, --source address[/mask][,...]:检查报文中的源IP地址是否符合此处指定的地址或范围;
               [!] -d, --destination address[/mask][,...]:检查报文中的目标IP地址是否符合此处指定的地址或范围;
               [!] -p, --protocol protocol:
               protocol:{tcp|udp|icmp}
               [!] -i, --in-interface name:数据报文的流入接口;INPUT, FORWARD and PREROUTING
               [!] -o, --out-interface name:数据报文的流出接口; FORWARD, OUTPUT and POSTROUTING
       扩展匹配条件
           隐式扩展:不用-m选项指出matchname即可使用此match的专用选项进行匹配;
           -p tcp:隐含了-m tcp;
               [!] --source-port,--sport port[:port]:匹配报文中传输层的源端口;
               [!] --destination-port,--dport port[:port]:匹配报文中传输层的目标端口;
               [!] --tcp-flags mask comp
                   SYN,ACK,FIN,RST,URG,PSH;

                   mask:要检查的标志位列表,以逗号分隔;
                   comp:必须为1的标志位,余下的出现在mask列表中的标志位则必须为0;

           --tcp-flags SYN,ACK,FIN,RST SYN
               [!] --syn:
                   相当于--tcp-flags SYN,ACK,FIN,RST SYN
           -p udp:隐含了-m udp:
               [!] --source-port,--sport port[:port]:匹配报文中传输层的源端口;
               [!] --destination-port,--dport port[:port]:匹配报文中传输层的目标端口;
           -p icmp:隐含了-m icmp:
                [!] --icmp-type {type[/code]|typename}
                   8:echo-request
                   0:echo-reply

       显式扩展:必须使用-m选项指出matchname,有的match可能存在专用的选项;

   1、multiport扩展
       以离散或连续的方式定义多端口匹配条件;

            [!] --source-ports,--sports port[,port|,port:port]...:指定多个源端口;
            [!] --destination-ports,--dports port[,port|,port:port]...:指定多个目标端口
            [!] --ports port[,port|,port:port]...:指定多个端口;

   2、iprange扩展
           以连续的ip地址范围指明连续的多地址匹配条件;
           [!] --src-range from[-to]:源IP地址;
           [!] --dst-range from[-to]:目标IP地址;

   3、string扩展
           对报文中的应用层数据做字符串匹配检测;

           [!] --string pattern:要检测字符串模式;
           [!] --hex-string pattern:要检测的字符串模式,16进制编码;
               --algo {bm|kmp}

4、time扩展
       根据报文到达的时间与指定的时间范围进行匹配度检测;

           --datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]:起始日期时间;
           --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]:结束日期时间;
           --timestart hh:mm[:ss]
           --timestop hh:mm[:ss]
            [!] --monthdays day[,day...]
            [!] --weekdays day[,day...]

           ~]# iptables -I INPUT -d 172.16.100.67 -p tcp --dport 23 -m time --timestart 09:00:00 --timestop 18:00:00 --weekdays Tue,Thu,Sat -j ACCEPT

5、connlimit扩展
       根据每客户端IP做并发连接数匹配;
--connlimit-upto n:连接数数量小于等于n,此时应该允许;
       --connlimit-above n:连接数数量大于n,此时应该拒绝;

       ~]# iptables -A INPUT -d 172.16.100.67 -p tcp --dport 23 -m connlimit --connlimit-upto 2 -j ACCEPT

   6、limit扩展
       基于收发报文的速率进行匹配;
--limit rate[/second|/minute|/hour|/day]:平均速率
           --limit-burst number:峰值速率

   7、state扩展
       状态检测;连接追踪机制(conntrack);
           INVALID:无法识别的状态;
           ESTABLISHED:已建立的连接;
           NEW:新连接;
           RELATED:相关联的连接;
           UNTRACKED:未追踪的连接;

           nf_conntrack内核模块;
               追踪到的连接:/proc/net/nf_conntrack文件中;
               能追踪的大连接数量定义在:/proc/sys/net/nf_conntrack_max
                   此值可自行定义,建议必要时调整到足够大;

               不同的协议的连接追踪的时长:
                   /proc/sys/net/netfilter/

                    [!] --state STATE

   如何开放被模式的ftp服务:
        (1) 装载追踪ftp协议的模块;
           # modprobe nf_conntrack_ftp

        (2) 放行命令连接
           ~] # iptables -A INPUT -d 172.16.100.67 -p tcp -m state --state ESTABLISHED -j ACCEPT
           ~] # iptables -A INPUT -d 172.16.100.67 -p tcp --dport 21 -m state --state NEW -j ACCEPT

        (3) 放行数据连接
           ~] iptables -A INPUT -d 172.16.100.67 -p tcp -m state --state RELATED -j ACCEPT

   处理动作(目标)
       -j targetname [per-target-options]
targetname:
           ACCEPT:接受;
           DROP:丢弃;
           REJECT:拒绝;

   保存和重载规则:
       iptables-save > /PATH/TO/SOME_RULE_FILE
       iptables-restore < /PATH/FROM/SOME_RULE_FILE

       CentOS 6:
           保存规则:
               service iptables save
                   自动保存规则至/etc/sysconfig/iptables文件中;
           重载规则:
               server iptables restore
                   从/etc/sysconfig/iptables文件中重载规则;
   规则优化:
       (1) 可安全放行所有入站及出站,且状态为ESTABLISHED的连接;
       (2) 服务于同一类功能的规则,匹配条件严格的放前面,宽松放后面;
       (3) 服务于不同类功能的规则,匹配报文可能性较大扩前面,较小放后面;
       (4) 设置默认策略;
           (a) 最后一条规则设定;
           (b) 默认策略设定;

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文题目:iptables上课内容-创新互联
本文路径:http://scyanting.com/article/dscpge.html