linux 安全 iptables防火墙 (一)

Linux包过滤防火墙概述

Linux 系统的防火墙 :IP信息包过滤系统,它实际上由两个组件netfilter 和 iptables组成。
主要工作在网络层,针对IP数据包。体现在对包内的IP地址、端口、协议等信息的处理上。

两大组件 netfilter内核组件 iptables应用组件

netfilter :属于内核态的功能体系,是一个内核模块,由多个数据包过滤表组成,其中包含数据包的过滤处理规则集,并根据规则过滤处理IP数据包
iptables :属于用户态的管理工具,如同firewalld、ufw,是一个防火墙应用管理程序,用来实现防火墙规则集的增删改查

四表五链

四表:raw(数据包状态跟踪)     mangle(修改数据包内容,设置标记)      nat(数据包地址转换)       filter(过滤数据包)


五链:INPUT(处理入站数据)   OUTPUT(处理出战数据)   FORWARD(处理转发数据)   PREROUTING(修改目的地址)    POSTROUTING(修改源地址)

raw 表包含 OUTPUT、PREROUTING

mangle 表包含 INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING

nat 表包含 OUTPUT、PREROUTING、POSTROUTING

filter 表包含 INPUT、FORWARD、OUTPUT

数据包过滤的匹配流程

表的匹配顺序: raw -> mangle -> nat -> filter

链的匹配顺序:入站数据 PREROUTING -> INPUT -> 本机的应用程序
              出站数据 本机的应用程序 -> OUTPUT -> POSTROUTING
              转发数据 PREROUTING -> FORWARD -> POSTROUTING

规则的匹配顺序:从上往下依次匹配链中的规则,匹配到即停止;若没有匹配的规则,则按照链的默认规则处理

过滤入站数据包  filter(INPUT)
过滤出站数据包  filter(OUTPUT)
过滤转发数据包  filter(FORWARD)
修改内网转发到外网数据包 的源IP地址    nat(POSTROUTING)
修改外网转发到内网数据包的目的IP地址  nat(PREROUTING)

iptables的安装


CentOS 7默认使用firewalld防火墙,没有安装 iptables,若想使用iptables防火墙。必须先关闭firewalld防火墙,再安装 iptables
systemctl stop firewalld.service
systemctl disable firewalld.service

yum -y install iptables iptables-services
systemctl start iptables.service

iptables操作管理


命令格式: iptables -t  表名    操作选项   链名         匹配条件选项   -j  控制类型
                                     filter                     INPUT                                     ACCEPT
                                     nat                      OUTPUT                                REJECT
                                  mangle                 FORWARD                                DROP
                                     raw                  PREROUTING                             SNAT
                                                            POSTROUTING                             DNAT


注意事项:
不指定表名时,默认指filter表
不指定链名时,默认指表内的所有链
除非设置链的默认策略,否则必须指定匹配条件
控制类型和链名使用大写字母,其余均为小写

常用的控制类型:
ACCEPT:允许数据包通过。
DROP:直接丢弃数据包,不给出任何回应信息。
REJECT:拒绝数据包通过,会给数据发送端一个响应信息。
SNAT:修改数据包的源地址。
DNAT:修改数据包的目的地址。
REDIRECT:重定向改变目的端口,将接受的包转发至本机的不同端口
MASQUERADE:伪装成一个非固定公网IP地址。
LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。LOG只是一种辅助动作,并没有真正处理数据包。

常用的管理选项:
-A :在指定链的末尾追加(--append)一条新的规则
-I :在指定链的开头插入(--insert)一条新的规则,未指定序号时默认作为第一条规则
-R :修改、替换(--replace)指定链中的某一条规则,可指定规则序号或具体内容
-P :设置指定链的默认策略(--policy)
-D :删除(--delete)指定链中的某一条规则,可指定规则序号或具体内容
-F :清空(--flush)指定链中的所有规则,若未指定链名,则清空表中的所有链
-L :列出(--list)指定链中所有的规则,若未指定链名,则列出表中的所有链
-n :使用数字形式(--numeric)显示输出结果,如显示 IP 地址而不是主机名
-v :显示详细信息,包括每条规则的匹配包数量和匹配字节数
--line-numbers:查看规则时,显示规则的序号

iptables 命令图解

添加规则

iptables -t 表名 -A 链名 匹配条件 -j 控制类型

iptables -t 表名 -I 链名 序号 匹配条件 -j 控制类型

ping命令是使用icmp传输协议

给他指定一个规则 拒绝数据包通过

删除规则

iptables -t 表名 -D 链名 序号/内容
iptables -t 表名 -F [链名]              #如果不指定链名则删除清空所有链的规则

改变规则

iptables -t 表名 -R 链名 序号 新规则内容
iptables -t 表名 -P 链名 ACCEPT/DROP/REJECT

查看规则

iptables -t 表名 -L -n -v --line-numbers [链名] 
                    -nvL

生产环境中通常使用白名单方式设置规则  


   iptables -t 表名 -A 链名 匹配条件 -j ACCEPT                               #先配置需要放行的规则
   ....
   iptables -t 表名 -A 链名 -j DROP  或  iptables -t 表名 -P 链名 DROP       #最后配置默认禁止所有的规则

iptables -t filter -A INPUT -p tcp -m multiport --dport 22,80,443 -j ACCEPT

规则的匹配条件


通用匹配:条件选项可直接使用
-p 协议        
-s 源IP/网段/域名        
-d 目的IP/网段/域名            
-i 入站网卡接口
-o 出站网卡接口    

隐含匹配:需要使用 -p 指定协议作为前提                    
-p tcp/udp --dport 目的端口/端口范围
-p tcp/udp --sport 源端口/端口范围
-p icmp --icmp-type 8(请求)/0(回显)/3(目标不可达)

显式匹配:需要使用 -m 指定模块
-m multiport --sport/--dport 端口列表


-m iprange --src-range(源)/--dst-range (目的) IP范围
-m mac --mac-source 源MAC地址
-m state --state RELATED,ESTABLISHED[,NEW,INVALID]          #RELATED,ESTABLISHED 用于放行返回的应答包进站

常见的连接状态:
NEW :主机连接目标主机,在目标主机上看到的第一个想要连接的包
ESTABLISHED :主机已与目标主机进行通信,判断标准只要目标主机回应了第一个包,就进入该状态
RELATED :主机已与目标主机进行通信,目标主机发起新的链接方式,一般与ESTABLISHED 配合使用
INVALID :无效的封包,例如数据破损的封包状态

iptables规则修改后会立即生效

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值