iptables 防火墙概述介绍
iptables其实不是真正的防火墙,是一个配置 Linux 内核 防火墙 的命令行工具,可以理解成一个客户端代理,
用户通过iptables这个代理,将用户的安全设定执行到对应的“安全框架中” 这个“安全框架 ”才是真正的防火墙,
这个框架的名字叫netfitre,它只是 netfilter 项目的一部分。术语 iptables 也经常代指该内核级防火墙。
iptables 可以直接配置,也可以通过许多 前端[broken link: invalid section] 和 图形界面[broken link: invalid section] 配置。iptables 用于 ipv4,ip6tables 用于 ipv6。
nftables 已经包含在 Linux kernel 3.13 中,以后会取代 iptables 成为主要的 Linux 防火墙工具。
用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。
而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。
目前市面上比较常见的有3、4层的防火墙,叫网络层的防火墙,还有7层的防火墙,其实是代理层的网关。
网络知识 OSI 【2(根据 mac 地址进行控制) 3(根据 IP 地址进行控制) 4(利用端口进行访问)】
对于TCP/IP的七层模型来讲,我们知道第三层是网络层,三层的防火墙会在这层对源地址和目标地址进行检测。
但是对于七层的防火墙,不管你源端口或者目标端口,源地址或者目标地址是什么,都将对你所有的东西进行检查。
所以,对于设计原理来讲,七层防火墙更加安全,但是这却带来了效率更低。
所以市面上通常的防火墙方案,都是两者结合的。而又由于我们都需要从防火墙所控制的这个口来访问,
所以防火墙的工作效率就成了用户能够访问数据多少的一个最重要的控制,配置的不好甚至有可能成为流量的瓶颈。
所以说,虽然我们使用systemctl 启动"服务",但是其实准确的来说,iptables并没有一个守护进程
,所以并不能算是真正意义上的服务,而应该算是内核提供的功能。
防火墙的相关概念
概念:防火墙将不安全得网络流量信息进行隔离
实现: 硬件实现(思科/华为/) 或 软件实现(iptable firewalld)
从逻辑上讲:防火墙可以大体分为主机防火墙和网络防火墙
主机防火墙:针对于单个主机进行防护
网络防火墙:往往处于网络入口或边缘,针对于网络入口进行防护, 服务于 防火墙背后的本地局域网
网络防火墙和主机防火墙并不冲突,可以理解为,网络防火墙主外(集体)主机防火墙主内(个人)
从物理上讲,防火墙可以分为硬件防火墙和软件防火墙
硬件防火墙:在硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高,成本高
软件防火墙:应用软件处理逻辑运行于通用硬件平台智商的防火墙,性能低,成本低
1. 详述iptables工作流程以及规则过滤顺序
工作流程小结:
防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
如果匹配上规则,即明确表示是阻止还是通过,数据包就不再向下匹配新的规则。
如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,
直到匹配默认规则得到明确的阻止还是通过。
防火墙的默认规则是所有规则执行完才执行的。
2.iptales四表五链
iptables防火墙总共有4表5链 ,具体每个表拥有的相应链参照上表信息,其中企业生产中主要经常使用的是Filter表和NAT表。
3.iptables表和链关系详细说明:
filter表: 真正起到防火墙功能
INPUT链: 流量在进入时进行访问控制
OUTPUT链: 流量在出去是进行访问控制
forward链: 流量是否可以经过防火墙
nat表: 实现访问映射/流量转发 实现内网访问外网/外网访问映射到指定内网主机
filter表企业应用场景:主机防火墙
NAT表企业应用场景:
用于企业路由(zebra)或网关(iptables),共享上网(POSTROUTING)
做内部外部IP地址一对一映射(dmz),硬件防火墙映射IP到内部服务器,ftp服务(PREROUTING)
WEB,单个端口的映射,直接映射80端口(PREROUTING)
4.iptables命令常用参数说明
查询参数
--list -L [chain [rulenum]] List the rules in a chain or all chains
列出链上规则配置信息(默认查看filter表上信息)
--table -t table table to manipulate (default: `filter')
指定操作处理哪张表 默认处理 filter表
--verbose -v verbose mode
显示详细规则配置信息
--numeric -n numeric output of addresses and ports
查询信息中 地址和端口以数字形式显示
清除参数:
--flush -F [chain] Delete all rules in chain or all chains
清除链上所有规则信息
--zero -Z [chain [rulenum]] Zero counters in chain or all chains
清除计数器信息(排查)
pkts: 匹配了几个包 5个包 每个包1500字节
bytes: 匹配数据包总共尺寸/访问流量 5*1500字节
-X [chain] Delete a user-defined chain
删除用户自定义链 ???
添加规则参数:
--append -A chain Append to chain
指定规则添加到哪个链上
-I ???
--protocol -p proto protocol: by number or name, eg. `tcp'
指定规则匹配的协议: tcp udp icmp ???
--dport 端口 规则匹配的目标端口信息
--sport 端口 规则匹配的源端口信息
--source -s address[/mask][...] source specification
指定规则匹配的源地址信息
--destination -d address[/mask][...] destination specification
指定规则匹配的目标地址信息
--in-interface -i input name[+] network interface name ([+] for wildcard)
根据进入流量,在网卡进行规则配置
--out-interface -o output name[+] network interface name ([+] for wildcard)
根据流出流量,在网卡进行规则配置
--jump -j target target for rule (may load target extension)
指定处理策略动作: ACCEPT * DROP * REJECT
修改默认策略:
--policy -P chain target Change policy on chain to target
修改指定链上默认策略
策略处理方法:
ACCEPT 允许接收
DROP 丢弃 * 更安全
REJECT 拒绝
5.iptables数据包匹配流程