linux防火墙详解

来源:互联网 发布:生产成本管控数据来源 编辑:程序博客网 时间:2024/05/12 13:14


防火墙:硬件or软件

核心:规则=匹配标准+处理办法;


防火墙框架历史:

移植BSD

      v

linux-2.0

ipfw/firewall

      v

linux-2.2

ipchain/firewall

      v

linux-2.4

iptables/netfilter



netfilter:frame

iptables:数据报文过滤,NAT,mangle等规则生成的工具;

iptables不是服务,但有服务脚本,服务脚本的主要作用是管理保存的生效的规则;

装载以及移除iptables/netfilter相关的内核模块:

iptables_nat, iptables_filter, iptables_mangle, iptables_raw, ip_nat, ip_conntrack



linux网络协议栈中存在五个hook点

———————————————————

hook function:钩子函数

1、prerouting

2、input

3、output

4、forward

5、postrouting

————————————————————


I、从不同的角度可以把规则分成五条链和四张表:

五条链:代表数据包达到的不同位置:

PREROUTING

INPUT

FORWARD

OUTPUT

POSTROUTING


四个表:代表实现不同功能

filter(过滤)表:

INPUT

OUTPUT

FORWARD


nat(地址转换)表

       PREROUTING:DNAT

       POSTROUTING:SNAT


mangle(拆开、修改、封装)表

PREROUTING

   INPUT

OUTPUT

FORWARD

POSTROUTING


raw(原始)表

PREROUTING

OUTPUT


II、表和链结合起来表示不同位置可以实现的功能及其优先级

PREROUTING: raw->mangle->nat

INPUT: mangle->filter

FORWARD: mangle->filter

OUTPUT: raw->mangle->nat->filter

POSTROUTING: mangle->nat


III、自定义链

1、可以使用但只能被基本链调用

2、用户可以删除自定义的空链,默认链无法删除


每个规则都有两个计数器,分别代表被匹配的报文个数和大小


IV、规则书写:

规则=匹配标准+处理动作


iptables [-t TABLE] SUBCOMMAND CHAIN [num] 匹配标准 -j 处理办法

注意:重启iptables会导致清空规则链,然后读取/etc/sysconfig/iptables, 所以需要使用service iptables save保存规则,默认保存在/etc/sysconfig/iptables下,可以使用重定向保存到其他自定义文件,下次启动时使用service -restore 自定义的文件生效。



—————匹配标准—————

通用匹配:自身支持

-s, sip

-d, dip

-p, 4thprotocol

-i interface, 指定流入接口,一般只能用在PREROUTING、INPUT、FORWARD链

-o interface, 指定流出接口,一般只能用于OUTPUT、POSTROUTING、FORWARD链



SUBCOMMAND:

管理规则

-A:append,在链的尾部附加一条规则

-I CHAIN [num]:insert,插入为对应CHAIN上得第num条

-D CHAIN [num]:delete,删除指定链中的第num条规则

-R CHAIN [num]:replace,替换指定的规则


管理链

-F [CHAIN]:flush,清空指定规则链,如果省略CHAIN,则可以删除对应表中所有链

-P CHAIN:policy,设定指定链的默认策略

-N:自定义一条空链

-X:删除一个自定义的空链

-Z:清空计数器

-E:重命名自定义链

查看类:

-L:list,显示指定表中的所有规则

-n:numeric,以数字格式显示主机地址和端口号

-v:verbose,显示规则链详细信息

-x:exact,显示计数器的精确值

--line-number:显示规则号码


处理办法(target)

ACCEPT:放行

DROP:丢弃

REJECT:拒绝

DNAT:目标地址转换

SNAT:源地址转换

REDIRECT:端口重定向

MASQUERADE:地址伪装,源地址转换

MARK:打标记

LOG:日志



扩展匹配:需要额外扩展模块支持

隐含扩展:不用特别指明由哪个模块进行的扩展,因为此时使用了-p{tcp|udp|icmp}

-p tcp 

--sport PORT [-PORT]:

--dport PORT [-PORT]:

--tcp-flags mask comp: 只检查mask指定的标志位,是逗号分隔的标志位列表;comp:此列表中出现的标志位必须为1,其他标记位为0;如 - -tcp-flgs SYN, FIN, ACK, RST  SYN表示第一次握手报文;

  --syn:表示第一次握手报文;

————————-

-p icmp

--icmp-type  (0->request, 8->reply)

—————————-

-p udp

- -sport/dport:


显示拓展:使用额外的匹配机制,必须指明由哪个模块进行的拓展,使用-m选项即可完成此功能

-m EXTENSTION  - -spe-opt

———————————————-

state:状态扩展,结合ip_conntrack追踪会话的状态 

NEW(新连接请求)、ESTABLISHED(已建立的链接)、INVALID(非法攻击报文)、RELATED(FTP)

————————————————

multiport:离散的多端口匹配

—source-ports

—destination-ports

—ports

—————————————————

iprange:连续多个ip地址匹配

—src-range ip-ip

—dst-range ip-ip

—————————————————-

connlimit:链接数限制

—connlimit-above n

——————————————————

limit: 令牌桶限速

—limit:平均速率

—limit-burst:突发流量

————————————————————

string:内容字符串匹配限制

—algo:bm|kmp

—from:

—to:

—string pattern:


/proc/net/ip_conntrack

/proc/sys/net/ipv4/ip_conntrack_max

cat /proc/slabinfo

iptstate

ip_conntrack_tcp_timeout_established默认情况下timeout是5天(432000s),该文件在目录/proc/sys/net/ipv4/netfilter中。


0 0
原创粉丝点击