iptables学习2

Firewall:工作在主机或网络边缘,对进出的报文按事先定义的规则进行检查,

并且由匹配到的规则进行处理的一组硬件或软件,甚至可能是两者的组合

隔离用户访问,只允许访问指定的服务    通过ADSL拨号连入互联网

放一个硬件防火墙在网络前  这样的主机 CPU通常都是特制的  这就是硬件防火墙

 

 

 

主机防火墙:工作于主机边缘, 只能对一台主机起到保护作用 

网络防火墙:工作于网络边缘, 对多台主机起到保护作用  这是一个硬件 有CPU内存 不需要硬盘  

对数据报文进行分析 但是必须打开所有功能,也可以严格定向

 

工作在内核空间中, 相当于在TCP/IP协议栈前面加一道墙  

网卡--->防火墙----->TCP/IP协议栈 这种是针对主机

 

网络层防火墙:工作在网络层  网络防火墙  需要拆掉物理层和链路层 仅能检查源和目标的端口、源和目标IP  内容不能检查。

                         没问题就可以进行转发。

 

应用层防火墙:工作在网关  拆掉TCP和IP首部对内容进行分析 ,  

                         没问题就进行转发 相当于路由器  这个网管被称为代理服务器

 

 

分别是:网络层防火墙  应用层防火墙 内部主机

 

但是仍然有可能精心设计报文  怎么办?

 

IDS:入侵检测系统 相当于监控器也需要规则 结合防火墙一起使用

   HIDS:主机入侵检测系统,作用于主机    例如:OSSEC 

   NIDS:网络入侵检测系统 例如:snort

   Filesystem:文件系统级别入侵检测  例如修改配置文件等行为   tireware

 

IPS(IDS+防火墙):入侵防御系统  IDS结合防火墙一起工作 及时减低损失

honeypot:蜜罐  诱捕黑客 有漏洞吸引你

 

系统评估安全工具:全方面扫描检测        例如: Nessus    nmap

  

rootkit攻击                 乌云平台

 

iptables/netfilter:基于网络层的防火墙, 支持连接追踪(状态检测)

          netfilter提供钩子函数

 

ipfw ----> ipchains-----> iptables  Linux防火墙是参考 openBSD的防火墙

 

 

 

iptables:本身只是防火墙规则编写工具

netfiter:让规则生效的网络过滤器,是一个框架  规则放在这个上面工作

        hook_function  钩子函数       转发不会经过用户空间,只是在内核空间

 

    INPUT  到本机内部

    OUTPUT  到本机出去

    FORWARD 转发

    POSTROUTING  路由之后  做原地址转换成公网的IP才能出去         私有地址是不能进行路由的

    PRERROUTING  路由之前  报文回来的时候就需要转发,否则就交给自己本机处理了  目标地址转换

 

每个网卡都有自己的发送队列

防火墙功能:

过滤:做报文筛选

NATNetwork Address Transltion 网络地址转换

     DNAT  转换目标地址

     SNAT  转换源地址

mangle:  修修补补 改变IP信息等 在这五个位置上都行

raw: 先不管 用的不多

 

FORWARD:

    filter

    mangle

INPUT

    filter

    mangle

OUT

    filter

    mangle

    nat

PREROUTING

     mangle

     nat

POSTOUTING

     mangle

     nat

 

规则优化:将控制强的放在前面, 应用访问频繁的也要放在前面

 

四表:

   fileter  net  mangle  raw

五链

   PREROUTING  INPUT  FOREARD  OUTPUT  POSTROUTING

  目标主机不是本机才会转发  本机进出都不会经过FORWARD

 

表和链的对应关系

     filerINPUT FORWARD.OUTPUT

     natPREROUTING OUTPUT POSTROUTING

     maglePREROUTING FORWARD POSTROUTING INPUT OUTPUT

 

规则:检查条件, 处理机制

默认策略: 只针对filter

通:白名单,默认为堵,只对能识别的进行放行

堵:黑名单,默认为通,只对能识别的进行阻截

 

检查条件:网络层

   IPSIP,DIP

   TCPSPORT,DPORT,FLags(标志位) 例如:syn ack

   UDPSPORT,DPORT

   ICMPICMP-TYPE(报文类型)  ping出去和回来是不同的  ping用的协议

 

扩展机制:

  Time、string、state(connection-tracking)连接追踪

 

处理机制:

    DROP(丢弃)        REJECT(拒绝,并返回)

    ACCEPT(允许)       SNAT   DNAT  目标转换

    RETURN(返回)       REDIRECT(端口转发)

    LOG(只记录日志)

 

mangle:做防火墙标记

 

 

如何写规则

   -t 表 -L 列出 -n 以数值方式显示

  iptables [-t table] -N chain

     创建一条自定义的空规则链

  iptables [-t table] -X chain

     删除一条自定义的空规则链

  iptables [-t table] -E old-chin-name new-chain-name

    为链修改名

iptables [-t table] -P chain—name target

    为链指定默认策略,修改默认的属性

iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]

   -F 清空链中的规则

     规则由编号,在链中自上而下,从1开始

  -L list 列出表中的所有规则

     -n:数字格式显示ip和port  否则会反解成名字  速度很慢

     -v:显示信息,

        pkts:packets,被本规则所有匹配到的报文的个数

        baytes:被本规则所匹配到的所有报文的大小子和,单位是字节,会执行单位换算

        target:目标,即处理机制

        port:协议一般为(TCP|UDP|ICMP)

        opt:可选项

        in:数据包的流入接口

        out:数据包的流出接口

        scource:源地址

        destination:目标地址

      -vv

      -vvv

      -x:exactly:精确值,不执行单位换

      --line-nambers:显示各规则的行号

 

  -Z:zero,清零:

    把规则的计数器清零

 

iptables [-t table] {-A|-D} chain rule-specification

  -A:append,附加一条规则

     rule-specification     匹配条件 -j 处理机制

    匹配条件:

      通用匹配

     -s  匹配源地址,可以IP,也可以网络地址:可以使用!操作符取反,!172.168.0.0/16   -s相当于 --src,或 --source

     -d  匹配目标地址,可以IP,也可以网络地址:可以使用!操作符取反,!172.168.0.0/16

     -p  匹配协议,通常只能使用{TCP|UDP|ICMP}三者之一

     -i  数据报文流入的接口,通常只用于INPUT   FORWARD和PREROUTING

     -o  数据报文流出的接口,通常只用OUTPUT    FORWARD和POSTROUTING

 

     保存规则: iptables不是服务 不会监听端口 定义成服务 只是为了开机自动运行

       service iptables save

        规则会被保存至/etc/sysconfig/iptables文件中:

        默认,start时也会读取该文件中的内容以设置规则

        # iptables-save > /path/to/some_rulefile 保存iptables至别的位置

        # iptables-restore < /path/to/some_rulefile 从自定义的位置读取并使之生效

规则命令:

  -A:添加

  -D:删除

  iptables [-t table] -D chain rulenum

    当一条被删除,另外的一条会被补上

  

  插入规则

  iptables [-t table] -I chain [rulenum] rule-specification

   

  替换规则(覆盖指定规则)

  iptables [-t table] -R chain rulenum rule-specification

 

  显示指定链上的规则添加命令

  iptables [-t table] -S [chain [rulenum]]

 

扩展匹配

    隐含扩展:使用-p {tcp|udp|icmp}指定某特定协议后,自动能够对协议进行的扩展

       -p tcp

          --dport m[-n],匹配的目标端口,可以是连续的多个端口

          --sportm[-n],匹配的源端口,可以是连续的多个端口

          --tcp-flags

           URG PSH PST SYN ACK FIN

       -p udp

          --dport m[-n],匹配的目标端口,可以是连续的多个端口

          --sportm[-n],匹配的源端口,可以是连续的多个端口

       -p icmp

           icmp-type

    显式扩展:必须要明确指定的扩展模块

      -m 扩展模块名称 --专用选项1 --专用选项2

 

      multiport:多端口匹配,一次指定多个离散端口

        --source-ports --sport ports{port1 port2}

        --destination-ports, --dports

        --ports

 

     iprange:ip地址服务

       [!] --src-range from [-to]

       [!] --dst-range from [-to]

 

     time 指定时间范围

        --datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]

        --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]

 

        --timestart hh:mm[:ss]

        --timestart hh:mm[:ss]

 

        [!] --weekdays day[,day....]

 

     string 字符串匹配

        --alog {bm|kmp} :字符匹配查找时使用的算法

        --string STRING” :要查找的字符串

        --hex-string "HEX-STRING" 要查找的字符,先编码成16进制格式

 

      connlimit:每IP对指定服务的最大并发连接数

       [!] --connlimit-above

 

      limit:报文速率控制

        --limit #[/second|/minute|/hour|/day]

        --limit-burst #

        hping3:安装此包,做测试

 

      state:状态追踪

          ip_conntrack,nf_conntrack

 

          netfilter:会话

           

         --state

             NEW

             ESTABLISHED

             RELATED

             INVALID

             

      调整连接追踪功能所能容纳的最大连接数

          cat /proc/sys/net/nf_conntrack_max

              定义了连接追踪的最大值,因此,建议按需调大此值

          cat /proc/net/nf_conntrack

             记录了当前追踪的所有连接

          cat /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established

          超时时间

 

          法则:

          1.对于进入状态为ESTABLISHED都应该放行

          2.对于返回状态为ESTABLISHED都应该放行

          3.严格检查进入的状态为NEW的链接

          4.所有状态为INVALID都应该拒绝

 

 

      -j target

            RETURN:返回调用链

 

如何放行工作与被动模式的ftp服务

   1、确保iptables加载ftp协议支持的模块,ip_nat_ftp,ip_conntrack_ftp

      编辑/etc/syconfig/iftables-config文件,定义如下参数:

      IPTABLES_MIDULES="ip_nat_ftp ip_conntrack_ftp"

    2。放行请求报文的RELATEDESTABLISHED状态,放行响应报文的ESTABLISHED状态

 

 

回顾:开机流程

  POST--> BootSequence(MBR:bootloader) -->GRUB -->kernel(initramfs) --> /sbin/init (/etc/inittab,/etc/init/*.conf)

 

  启动服务时的最后一个服务通常是/etc/rc.d/rc.local/etc/rc.local,这事实上是一个脚本,但凡写在脚本的命令到或脚本调用都在系统运行至此服务被执行

 

posted @   escapist  阅读(219)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示