Linux防火墙简介及iptables的基本使用

时间:2021-08-21 19:57:28

一、防火墙基础知识

iptables/netfilter:网络防火墙,连接追踪(状态检测)

netfilter:工作内核中,让规则能够生效的网络框架(framework)

iptables:防火墙规则编写工具,工作与用户空间,编写规则并且发送到netfilter

所有的规则都在hook_function的函数中

PREROUTING:mangle、nat

INPUT:filter、mangle

OUTPUT:filter、nat、mangle

FORWARD:filter、mangle

POSTROUTING:mangle、nat

过滤:筛选

NAT:Network Address Translation(地址转换)

DNAT(目标地址转换)

SNAT(原地址转换)

mangle

raw

四表:filter、nat、mangle、raw

五链:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING

表和链的对应关系:

filter:INPUT、FORWARD、OUTPUT

nat:PREROUTING、OUTPUT、POSTROUTING

mangle:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING

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

防火墙的策略:通(默认为堵,只对能识别的进行放行)

堵(默认为通,只对能识别的进行阻截)

检查条件:

IP:SIP,DIP

TCP:SPORT,DPORT,Flags(ACK,SYN,FIN,RST,PSH,URG)

UDP:SPORT,DPORT

ICMP:ICMP-TYPE

扩展机制:

time,string,state(connection-tracking)连接追踪

处理机制

DROP,REJECT,ACCEPT,SNAT,DNAT,RETURN,FORWARD,REDIRECT(端口转发),LOG

二、iptables工具使用说明

iptables [-t table] -N chain

创建一条自定义的规则链

iptables [-t table] -X [chain]

删除一条自定义的空规则链,如果不为空可以先用-F清空再删除

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

修改自定义规则链的名称

iptables [-t table] -P chain target

为链指定默认策略,指定默认规则

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

-F:清空链中的规则

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

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

  -n:数字格式显示IP和Port

  -v:显示详细信息

  pkts bytes target prot opt in out source destination

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

    bytes:被本规则所匹配到的所有报文的大小之和,单位字节

    target:目标,即处理机制

    prot:协议,一般为{TCP|UDP|ICMP}

    opt:可选项

    in:数据包的流入接口

    out:数据包的流出接口

    source:源地址

    destination:目标地址

  -vv:显示更详细信息

  -vvv:显示更更详细信息

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

  --line-numbers:显示个规则的行号

-Z:zero,清零

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

-A:append,附加一条规则

  rule-specification

  匹配条件 -j 处理机制

  匹配条件:

   通用匹配:

   -s|--src|--source: 匹配原地址,可以IP,也可以网络地址;可以使用!取反, ! 192.168.1.0/24

    -d|--dst|--destination:匹配目标地址,可以IP,也可以网络地址;可以使用!取反, ! 192.168.1.0/24

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

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

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

删除规则:

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]]

保存规则:

  service iptables save

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

  start时也会读取此文件中的内容以设置规则

  保存规则

  # iptables-save > /path/to/some_rulefile

  重新生效规则

  # iptables-restore < /path/to/some_rulefile