安全技术与防火墙

目录

安全技术

防火墙

分类

防火墙功能:

防火墙工具

Netfilter组件

firewalld

nftables

iptables

iptables组成

规则表

规则链

防火墙工作原理

内核中数据包的传输过程

iptables命令语法:

规则

跳转命令

查看iptables的规则列表

将规则加上序号

添加规则

删除规则

修改默认规则(默认是允许通过,黑名单)

替换规则

扩展模块

扩展匹配条件

命令格式


安全技术

  • 入侵检测系统:特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全决策依据,类 似于监控系统一般采用旁路部署(默默的看着你)方式。

  • 入侵防御系统:以透明模式工作,分析数据包的内容如:溢出攻击、拒绝服务攻击、木马、蠕虫、系统漏洞等进行准确的分析判断,在判定为攻击行为后立即予以 阻断,主动而有效的保护网络的安全,一般采用在线部署方式。(必经之路)

  • 防火墙:隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一组功能的组件,基本上的实现都是默 认情况下关闭所有的通过型访问,只开放允许访问的策略,会将希望外网访问的主机放在DMZ (demilitarized zone)网络中

  • 防水墙:与防火墙相对,是一种防止内部信息泄漏的安全产品。网络、外设接口、存储介质和打印机构成信息泄漏的全部途径。防水墙针对这四种泄密途径,在事前、事 中、事后进行全面防护。其与防病毒产品、外部安全产品一起构成完整的网络安全体系。

防火墙
分类

按保护范围划分:

  • 主机防火墙:服务范围为当前本机

  • 网络防火墙:服务范围为防火墙一侧的局域网

按实现方式划分:

  • 硬件防火墙:在硬件级别实现部分功能的防火墙

  • 软件防火墙:运用于通用硬件平台的防火墙的应用软件

按网络协议划分:

  • 网络防火墙:OSI模型下四层,又称为包过滤防火墙

    • 网络层对数据包进行选择,选择的依据是系统内设置的过滤逻辑,被称为访问控制列表(ACL),通过检查数据流中每个数据的源地址,目的地址,所用端口号和协议状态等因素,或他们的组合来确定是否允许该数据包通过

    • 优点:对用户来说透明,处理速度快且易于维护

    • 缺点:无法检查应用层数据,如病毒等

  • 应用层防火墙:代理服务器,OSI模型七层,代理网关,可控制真实数据

    • 将所有跨越防火墙的网络通信链路分为两段

    • 内外网用户的访问都是通过代理服务器上的“链接”来实现

    • 优点:在应用层对数据进行检查,比较安全

    • 缺点:增加防火墙的负载

提示:现实生产环境中所使用的防火墙一般都是二者结合体,即先检查网络数据,通过之后再送到应用层去检查

防火墙功能:
  • 收包

  • 拆包

  • 检查

    • 没问题——装包发送

    • 有问题——隔离或丢弃

防火墙工具

Netfilter组件

Netfilter防火墙机制,是搭载于内核的子系统

属于“内核态”又称内核空间(kernel space)的防火墙功能体系

Netfilter与IP协议栈是无缝契合,并允许对数据报进行过滤、地址转换、处理等操作

Netfilter采用模块化设计,具有良好的可扩充性,提供扩展各种网络服务的结构化底层框架

firewalld

centos7引入的前端管理工具

操作简单,易上手,具有图形化管理界面

软件包:

  • firewalld

  • firewalld-config

管理工具:

  • firewalld-cmd:命令行工具

  • firewalld-config:图形工具

nftables

是centos8的新特性,包含了netfilter、iptables及ebtables中的大部分功能,更加全面,是未来的发展趋势

iptables

Linux的防火墙工作在网络层,针对 TCP/IP 数据包实施过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙)

由软件包iptables提供的命令行工具,工作在用户空间,用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信息包

是一种用来管理Linux防火墙的命令程序,它使插入、修改和删除数据包过滤表中的规则变得容易,通常位于/sbin/iptables目录下

iptables是基于内核的防火墙,其中内置了raw、mangle、 nat和filter四个规则表。表中所有规则配置后,立即生效,不需要重启服务。

iptables组成
  • 五个表table

  • 五个链chain

  • 以及一些规则

表的作用是存放链

链决定了在什么地方控制流量

表中有链,链中有规则

规则表
  • 表的作用:容纳各种规则链

  • 表的划分依据:防火墙规则的作用相似

默认包括4个规则表

  • raw表:确定是否对该数据包进行状态跟踪

    • 包含两个规则链:OUTPUT、PREROUTING

  • mangle表:为数据包设置标记,包括优先级等

    • 包含五个规则链:INPUT、 OUTPUT、 FORWARD、 PREROUTING、 POSTROUTING

  • nat表:地址转换,修改数据包中的源、目标IP地址或端口

    • 包含三个规则链,OUTPUT、PREROUTING、POSTROUTING

  • filter表:确定是否放行该数据包(过滤)

    • 包含三个链:PREROUTING、POSTROUTING、OUTPUT

  • security表:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现,基本不用

优先级security——raw——mangle——nat——filter

规则链
  • 规则的作用:对数据包进行过滤或处理

  • 链的作用:容纳各种防火墙规则

  • 链的分类依据:处理数据包的不同时机

默认包括5种规则链

  • INPUT:处理进入本机的数据包

  • OUTPUT:处理从本机出去的数据包

  • FORWARD:处理转发数据包

  • POSTROUTING链:在进行路由选择后处理数据包

  • PREROUTING链:在进行路由选择前处理数据包

防火墙工作原理

内核中数据包的传输过程
  1. 当一个数据包进入网卡时,数据包首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去

  2. 如果数据包是进入本机的,数据包就会沿着图向下移动,到达INPUT链。数据包到达INPUT链后, 任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包经过OUTPUT链,然后到达

  3. 如果数据包是要转发出去的,且内核允许转发,数据包就会向右移动,经过FORWARD链,然后到达POSTROUTING链输出

三种报文流向

  • 流入本机:PREROUTING ——> INPUT——>用户空间进程

  • 流出本机:用户空间进程 ——>OUTPUT——> POSTROUTING

  • 转发:PREROUTING——> FORWARD——> POSTROUTING

iptables命令语法:

iptables -t 指定表 子命令 指定链 规则

命令选项作用
-A在指定链末尾追加一条,例:iptables -A INPUT(操作)
-I在指定链中插入一条新的,未指定序号默认作为第一条,例:iptables -I INPUT(操作)
-P指定默认规则链,例:iptables -P OUTPUT ACCEPT(操作)
-D删除,例:iptables -t nat -D INPUT 2(操作)
-p服务名称:icmp、tcp
-R修改、替换某一条规则,例:iptables -t nat -R INPUT(操作)
-L查看,例:iptables -t nat -L (查看)
-n所有字段以数字形式显示(比如任意ip地址是0.0.0.0而不是anywhere,比如显示协议端口号而不是服务名),例:iptables -L -n,iptables -nL,iptables -vnL(查看)
-v查看时显示更详细信息,常跟-L一起使用(查看)
--line-number规则带编号,例:iptables -t nat -L -n --line-number / iptables -t nat -L --line-number
-F清除链中所有规则,例:iptables -F(操作)
-N新加自定义链
-X清空自定义链的规则,不影响其他链,例: iptables -X
-Z清空链的计数器(匹配到的数据包的大小和总和),例:iptables -Z
-S看链的所有规则或者某个链的规则/某个具体规则后面跟编号

规则
规则选项作用
-s指定源地址
-d指定目的地址
-i指定进口的网卡
-o指定出口的网卡
-p指定协议,例:tcp、udp、icmp
--sport指定源端口,使用端口必须同时使用协议-p
--dport指定目的端口

跳转命令
操作命令说明
DROP丢弃数据包
REJECT拒绝通过
ACCEPT允许通过
LOG记录日志
SNAT源地址转换
DNAT目的地址转换
MASQUERADE伪装成非固定公网IP

查看iptables的规则列表

iptables -vnL

  • -v:详细

  • -n:数字

  • -L:防火墙列表

默认为fliter表,如果查询其他表,需指明表,命令后跟上[-t 表名]

将规则加上序号

iptables  [-t 表名]   -vnL  --line-num

添加规则

iptables  [-t 表名]  -A  链  规则  操作

[root@localhost ~]# iptables [-t 表名] -A INPUT -s 192.168.190.0/24 -j ACCEPT或REJECT或DROP
-A:在末尾追加
-I(大写的i):需要指明序号
-I INPUT:在INPUT链的规则的第一条前添加
#对网段添加规则
#注意:谨慎操作,如果执行拒绝或丢弃操作,但本机在此网段中,会直接死机
[root@localhost ~]# iptables -A INPUT -s 192.168.190.0/24 -j REJECT

#需使用-I命令,指定本机允许通过的规则位于第一条
[root@localhost ~]# iptables -I INPUT 1 -s 192.168.190.1 -j ACCEPT
注意:此处允许通过的IP必须是真机地址,即本机的IPV4协议固定的地址,如果设置当前设备的IP,如:192.168.190.130,规则不会生效

[root@localhost ~]# iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  133  7744 ACCEPT     all  --  *      *       192.168.190.1        0.0.0.0/0           
    0     0 REJECT     all  --  *      *       192.168.190.0/24     0.0.0.0/0            reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 5 packets, 732 bytes)
 pkts bytes target     prot opt in     out     source               destination 
#或者也可以直接添加网卡,指定添加网卡名称

[root@localhost ~]# iptables -I INPUT 2 -i lo -j ACCEPT
#添加规则,指定名为lo的网卡允许通过
[root@localhost ~]# iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  219 12937 ACCEPT     all  --  *      *       192.168.190.1        0.0.0.0/0           
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
    0     0 REJECT     all  --  *      *       192.168.190.0/24     0.0.0.0/0            reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 4 packets, 480 bytes)
 pkts bytes target     prot opt in     out     source               destination         

删除规则

iptables [-t 表名] -F:删除所有规则

iptables  [-t 表名]  -D  链  规则序号:删除指定链,优先级序号的规则

例:删除filter表中INPUT链中的第二条规则
[root@localhost ~]# iptables -t filter -D INPUT 2

修改默认规则(默认是允许通过,黑名单)

iptables  [-t 表名]  -P   INPUT   DROP

iptables  [-t 表名]  -P  INPUT   ACCEPT

替换规则

iptables  [-t 表名]  -R  链  优先级序号  规则   -j   操作

[root@localhost ~]# iptables -R INPUT 4 -s 192.168.190.129 -j DROP
[root@localhost ~]# iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  615 36462 ACCEPT     all  --  *      *       192.168.190.1        0.0.0.0/0           
    8   672 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
    0     0 REJECT     all  --  *      *       192.168.190.0/24     0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 DROP       all  --  *      *       192.168.190.129      0.0.0.0/0           

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 4 packets, 552 bytes)
 pkts bytes target     prot opt in     out     source               destination

扩展模块

扩展匹配条件
  • 隐式扩展

  • 显式扩展

注意:需要加载扩展模块(/usr/lib64/xtables/*.so),方可生效

查看帮助命令man iptables-extensions

命令格式

iptables  [-t 表名]  选项  链  [-m   扩展机制(协议)]  -p  协议  规则  指定端口   -j   转跳操作

[root@localhost ~]# iptables -A INPUT -p tcp --sport 1000:3000 -j REJECT
#指定tcp协议源端口是1000-3000的数据包都拒绝
#-p已经指定了协议,-m可以省略

[root@localhost ~]# iptables -A INPUT -p tcp --dport 80 -s 192.168.190.129 -j REJECT 
#指定tcp协议的目的80端口,拒绝主机129的访问

[root@localhost ~]# iptables -A INPUT -i ens33 -p tcp --sport 1000:3000 -j REJECT
#丢弃SYN请求包,允许其他包通过

--tcp-flags SYN,ACK,FIN,RST SYN
等同于[!] --syn
#表示要检查的标志位为SYN,ACK,FIN,RST四个,其中SYN必须为1,余下的必须为0,第一次握手

端口号表示范围
--tcp-flags ALL ALL   6个位置全为1,检测错误包
--tcp-flags ALL NONE  6个位置全为0
--sport 1000          匹配源端口是1000的数据包
--sport 1000:3000     匹配源端口是1000-3000的数据包
--sport :3000         匹配源端口是3000及以下的数据包
--sport 1000:         匹配源端口是1000及以上的数据包
注意: --sport和--dport 必须配合-p <协议类型>使用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值