Linux系统安全:安全技术和防火墙

目录

一、安全技术和防火墙

1.安全技术

2.防火墙的分类

二、防火墙

1.iptables四表五链

2.黑白名单

3.iptables基本语法

4.iptables选项

5.控制类型

6.隐藏扩展模块

7.显示扩展模块

8.iptables规则保存

9.自定义链使用


一、安全技术和防火墙

1.安全技术

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

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

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

2.防火墙的分类

①按保护范围划分

主机防火墙:服务范围为当前一台主机。

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

②按实现方式划分

硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现,华为、深信服等。

软件防火墙:运行于通用硬件平台之上的防火墙的应用软件,Windows 防火墙 ISA --> Forefront。

③按网络协议划分

包过滤防火墙:只对osi模型下四层生效,速度快拆包少。

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

应用层防火墙/代理服务器:proxy 代理网关,OSI模型七层。

二、防火墙

1.iptables四表五链

1.四表  (优先级排序)

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

2 mangle表:为数据包设置标记

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

4 filter表:确定是否放行该数据包,起到过滤的作用,是最常用的一个表项

2.五链

 PREROUTING链: 在进行路由选择前处理数据包,用来修改目的地址。

   INPUT: 匹配进入了本机的数据包

   OUTPUT: 处理出本机的数据包,一般不在此链上做配置

   FORWARD: 处理转发数据包,匹配流经本机的数据包

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

Linux系统安全:安全技术和防火墙_第1张图片

2.黑白名单

①黑名单:默认全部允许通过,添加谁才不允许谁通过。

②白名单:默认全部不允许通过,添加谁允许谁通过。

3.iptables基本语法

基本语法:表中有链,链中有规则

iptables  [ -t  表名 ]  管理选项 [ 链名 ]  [ 匹配条件 ] [ 控制类型 ]

表名、链名用来指定 iptables 命令所操作的表和链,未指定表名时将默认使用 filter 表

管理选项:表示iptables规则的操作方式,如插入、增加、删除、查看等

匹配条件:用来指定要处理的数据包的特征,不符合指定条件的数据包将不会处理

控制类型指的是数据包的处理方式,如ACCEPT允许、REJECT拒绝、DROP丢弃等

4.iptables选项

 -A :在指定链末尾追加一条

 -I  :在指定行前插入一条,未指定序号默认作为第一条。-I INPUT 1表示在第一行前添加。

 -P :表示修改默认规则,默认允许流量通过,使用黑名单。

         iptables -P INPUT DROP或REJECT (白名单)

         iptables -P INPUT ACCEPT  (黑名单)

 -R :修改、替换某一条规则,-R INPUT 1表示修改第一条规则

 -D :表示删除单个,-D INPUT 1表示删除第一条规则

 -F :清除链中所有规则,清空iptables

 -vnL  -t  表名:查看指定 iptables规则列表,filter表可以省略-t

 -vnL -line-num :加上行号查看iptables规则列表

5.控制类型

控制类型需要使用 -j 跳转到某类型处理数据包。

①ACCEPT:允许通过

②REJECT :拒绝通过

③DROP:丢弃,会接受但是将数据包丢弃不处理6、隐藏扩展模块

④SNAT:源地址转换

⑤DNAT:目的地址转换

6.隐藏扩展模块

-sport  :匹配报文源端口

[root@localhost ~]#iptables -A INPUT -p tcp -s 192.168.21.0/24  --sport 80 -j ACCEPT
[root@localhost ~]#    允许所有源地址在192.168.21.0/24网段源端口为80的访问

--dport  :匹配报文目的端口

[root@localhost ~]#iptables -A INPUT -p tcp -s 192.168.21.0/24 --dport 8 -j ACCEPT
[root@localhost ~]#   允许所有源地址在192.168.21.0/24网段且目的端口为80的访问

7.显示扩展模块

扩展模块使用格式:  -m  {模块名}   [选项]

1.multiport模块

--dports端口1,端口2 ,等 使用,隔开最多指定15个不连续端口

[root@localhost ~]#iptables -A INPUT -p tcp -m multiport --sport 80,433 -j ACCEPT
[root@localhost ~]#    允许tcp协议源端口号为80、433的访问

--sports 端口1,端口2 ,等 使用,隔开最多指定15个不连续端口

[root@localhost ~]#iptables -A INPUT -p tcp -m multiport --sport 80,22 -j ACCEPT
[root@localhost ~]#    允许tcp协议目的端口号为80、22访问

2. iprange模块

iprange模块可以指定连续的(一般不是整个网络)ip地址范围

3.mac地址模块

指明源MAC地址,适用INPUT链,PREOUTING,POSTROUTING链。

--mac-source    源mac地址,只能指定源mac地址。

4.

string字符串模块

可以使用string模块指定字符串范围。

--from offset 字符串开始查询的地方。

--to offset     字符串结束查询的地方  。

例如:iptables -A OUTPUT -p tcp --sport 80 -m string --algo bm --from 62 --string "bilibili" -j REJECT

5.connlimit模块

据每客户端IP做并发连接数数量匹配,可防止Dos(Denial of Service,拒绝服务)攻击。

--connlimit-upto N     #连接的数量小于等于N时匹配

--connlimit-above N   #连接的数量大于N时匹配

例如:iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 2 -j REJECT

6.stat模块

stat模块可以根据连接状态控制数据包。

NEW:新发出的请求;第一次发出的请求。

ESTABLISHED:new之后的正常连接状态。

例如:ipatables -A INPUT -m state --state NEW -j REJECT

           ipatables -A INPUT -m state --state ESTABLISHED -j ACCEPT

7.控制流量模块

limit控制流量模块,可以控制通过的包数以及每分钟或每小时通过的包数。

--limit     10/minute(1分钟之内只允许10个包通过)

--limit-burs    数字    例如: --limit-burst 5(允许通过前5个包,5个包不受影响)

8.iptables规则保存

将写好的规则导入一个文件中  iptables-save >文件名。

永久保存保存规则的文件重新写入   iptables-restore <保存规则的文件名。

[root@localhost ~]#iptables-save >/save
[root@localhost ~]#cat /save
# Generated by iptables-save v1.4.21 on Mon Feb 19 18:48:07 2024
*nat
:PREROUTING ACCEPT [15:1708]
:INPUT ACCEPT [1:52]
:OUTPUT ACCEPT [1:72]
:POSTROUTING ACCEPT [1:72]
:OUTPUT_direct - [0:0]
:POSTROUTING_ZONES - [0:0]
:POSTROUTING_ZONES_SOURCE - [0:0]
:POSTROUTING_direct - [0:0]
:POST_public - [0:0]
:POST_public_allow - [0:0]
:POST_public_deny - [0:0]
:POST_public_log - [0:0]
:PREROUTING_ZONES - [0:0]
:PREROUTING_ZONES_SOURCE - [0:0]
:PREROUTING_direct - [0:0]
:PRE_public - [0:0]
:PRE_public_allow - [0:0]
:PRE_public_deny - [0:0]
:PRE_public_log - [0:0]
-A PREROUTING -j PREROUTING_direct
-A PREROUTING -j PREROUTING_ZONES_SOURCE
-A PREROUTING -j PREROUTING_ZONES
-A OUTPUT -j OUTPUT_direct
-A POSTROUTING -s 192.168.122.0/24 -d 224.0.0.0/24 -j RETURN
-A POSTROUTING -s 192.168.122.0/24 -d 255.255.255.255/32 -j RETURN
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
-A POSTROUTING -j POSTROUTING_direct
-A POSTROUTING -j POSTROUTING_ZONES_SOURCE
-A POSTROUTING -j POSTROUTING_ZONES
-A POSTROUTING_ZONES -o ens33 -g POST_public
-A POSTROUTING_ZONES -g POST_public
-A POST_public -j POST_public_log
-A POST_public -j POST_public_deny
-A POST_public -j POST_public_allow
-A PREROUTING_ZONES -i ens33 -g PRE_public
-A PREROUTING_ZONES -g PRE_public
-A PRE_public -j PRE_public_log
-A PRE_public -j PRE_public_deny
-A PRE_public -j PRE_public_allow
COMMIT
# Completed on Mon Feb 19 18:48:07 2024
# Generated by iptables-save v1.4.21 on Mon Feb 19 18:48:07 2024
*mangle
:PREROUTING ACCEPT [1421:90360]
:INPUT ACCEPT [1421:90360]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [813:66803]
:POSTROUTING ACCEPT [820:68809]
:FORWARD_direct - [0:0]
:INPUT_direct - [0:0]
:OUTPUT_direct - [0:0]
:POSTROUTING_direct - [0:0]
:PREROUTING_ZONES - [0:0]
:PREROUTING_ZONES_SOURCE - [0:0]
:PREROUTING_direct - [0:0]
:PRE_public - [0:0]
:PRE_public_allow - [0:0]
:PRE_public_deny - [0:0]
:PRE_public_log - [0:0]
-A PREROUTING -j PREROUTING_direct
-A PREROUTING -j PREROUTING_ZONES_SOURCE
-A PREROUTING -j PREROUTING_ZONES
-A INPUT -j INPUT_direct
-A FORWARD -j FORWARD_direct
-A OUTPUT -j OUTPUT_direct
-A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
-A POSTROUTING -j POSTROUTING_direct
-A PREROUTING_ZONES -i ens33 -g PRE_public
-A PREROUTING_ZONES -g PRE_public
-A PRE_public -j PRE_public_log
-A PRE_public -j PRE_public_deny
-A PRE_public -j PRE_public_allow
COMMIT
# Completed on Mon Feb 19 18:48:07 2024
# Generated by iptables-save v1.4.21 on Mon Feb 19 18:48:07 2024
*security
:INPUT ACCEPT [1424:90752]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [876:76517]
:FORWARD_direct - [0:0]
:INPUT_direct - [0:0]
:OUTPUT_direct - [0:0]
-A INPUT -j INPUT_direct
-A FORWARD -j FORWARD_direct
-A OUTPUT -j OUTPUT_direct
COMMIT
# Completed on Mon Feb 19 18:48:07 2024
# Generated by iptables-save v1.4.21 on Mon Feb 19 18:48:07 2024
*raw
:PREROUTING ACCEPT [1421:90360]
:OUTPUT ACCEPT [813:66803]
:OUTPUT_direct - [0:0]
:PREROUTING_ZONES - [0:0]
:PREROUTING_ZONES_SOURCE - [0:0]
:PREROUTING_direct - [0:0]
:PRE_public - [0:0]
:PRE_public_allow - [0:0]
:PRE_public_deny - [0:0]
:PRE_public_log - [0:0]
-A PREROUTING -j PREROUTING_direct
-A PREROUTING -j PREROUTING_ZONES_SOURCE
-A PREROUTING -j PREROUTING_ZONES
-A OUTPUT -j OUTPUT_direct
-A PREROUTING_ZONES -i ens33 -g PRE_public
-A PREROUTING_ZONES -g PRE_public
-A PRE_public -j PRE_public_log
-A PRE_public -j PRE_public_deny
-A PRE_public -j PRE_public_allow
COMMIT
# Completed on Mon Feb 19 18:48:07 2024
# Generated by iptables-save v1.4.21 on Mon Feb 19 18:48:07 2024
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [152:11732]
:FORWARD_IN_ZONES - [0:0]
:FORWARD_IN_ZONES_SOURCE - [0:0]
:FORWARD_OUT_ZONES - [0:0]
:FORWARD_OUT_ZONES_SOURCE - [0:0]
:FORWARD_direct - [0:0]
:FWDI_public - [0:0]
:FWDI_public_allow - [0:0]
:FWDI_public_deny - [0:0]
:FWDI_public_log - [0:0]
:FWDO_public - [0:0]
:FWDO_public_allow - [0:0]
:FWDO_public_deny - [0:0]
:FWDO_public_log - [0:0]
:INPUT_ZONES - [0:0]
:INPUT_ZONES_SOURCE - [0:0]
:INPUT_direct - [0:0]
:IN_public - [0:0]
:IN_public_allow - [0:0]
:IN_public_deny - [0:0]
:IN_public_log - [0:0]
:OUTPUT_direct - [0:0]
-A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j INPUT_direct
-A INPUT -j INPUT_ZONES_SOURCE
-A INPUT -j INPUT_ZONES
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -s 192.168.21.0/24 -p tcp -m tcp --sport 80 -j ACCEPT
-A INPUT -s 192.168.21.0/24 -p tcp -m tcp --dport 8 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -m multiport --sports 80,433 -j ACCEPT
-A INPUT -p tcp -m multiport --sports 80,22 -j ACCEPT
-A FORWARD -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i lo -j ACCEPT
-A FORWARD -j FORWARD_direct
-A FORWARD -j FORWARD_IN_ZONES_SOURCE
-A FORWARD -j FORWARD_IN_ZONES
-A FORWARD -j FORWARD_OUT_ZONES_SOURCE
-A FORWARD -j FORWARD_OUT_ZONES
-A FORWARD -m conntrack --ctstate INVALID -j DROP
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -o virbr0 -p udp -m udp --dport 68 -j ACCEPT
-A OUTPUT -j OUTPUT_direct
-A FORWARD_IN_ZONES -i ens33 -g FWDI_public
-A FORWARD_IN_ZONES -g FWDI_public
-A FORWARD_OUT_ZONES -o ens33 -g FWDO_public
-A FORWARD_OUT_ZONES -g FWDO_public
-A FWDI_public -j FWDI_public_log
-A FWDI_public -j FWDI_public_deny
-A FWDI_public -j FWDI_public_allow
-A FWDI_public -p icmp -j ACCEPT
-A FWDO_public -j FWDO_public_log
-A FWDO_public -j FWDO_public_deny
-A FWDO_public -j FWDO_public_allow
-A INPUT_ZONES -i ens33 -g IN_public
-A INPUT_ZONES -g IN_public
-A IN_public -j IN_public_log
-A IN_public -j IN_public_deny
-A IN_public -j IN_public_allow
-A IN_public -p icmp -j ACCEPT
-A IN_public_allow -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
COMMIT
# Completed on Mon Feb 19 18:48:07 2024
[root@localhost ~]#iptables -F
[root@localhost ~]#iptables-restore 

9.自定义链使用

①自定义链添加:iptables -N web(链名) 创建链

②自定义链改名:iptabels -E web(原来名称) (新名称) 自定义链改名

③创建自定义链规则:iptables -t filter -I web -p icmp -j REJECT 创建自定义规则,iptables的链中添加一条对应到自定义链中才能生效

④iptabales创建对应链规则然后跳转自定义链web:iptables -t filter -I INPUT -p icmp -j web

⑤删除自定义规则链:先删除iptables INPUT链中的对应关系,然后删除自定义链中的规则。

你可能感兴趣的:(安全,linux,系统安全)