IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux 7通过防火墙安全策略修补安全漏洞 -> 正文阅读

[系统运维]Linux 7通过防火墙安全策略修补安全漏洞

背景:

安全中心扫描数据库服务器,扫描出大量MySQL数据库安全漏洞:

针对扫描的安全漏洞,有三种解决方案。

方案一:

根据漏扫报告提供的解决方案,去Oracle官网下载相应补丁进行处理,打补丁解决漏洞。

在实际操作过程中发现下载补丁时如下图提示,也就是没有购买Oracle服务的话无法下载补丁。

方案二:

升级数据库来修复漏洞,目前数据库版本为5.7.22,将数据库升级到8版本以后,大部分漏洞可以修复;升级过程考虑到数据问题未采用该方案。

mysql数据库版本及系统服务器版本如下:

[root@localhost ~]# cat /proc/version
Linux version 3.10.0-957.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC 2018
[root@localhost ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core) 
[root@localhost ~]# mysql -V
mysql  Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using  EditLine wrapper
[root@city-auto-monet-01 ~]# 

方案三:(实战)

安装iptables防火墙,通过防火墙安全策略,限定指定的IP地址才可以访问数据库,以该方式屏蔽漏洞。

由于我的Linux版本为7.6,系统默认自带的防火墙为firewalld,需要进行如下几步工作:

1.停止并禁止firewalld开启启动,彻底关停firewalld服务。

2.安装iptables(linux 7版本的系统一般带了),安装iptables -service服务(不安装这个的话无法启动iptables)。

3.配置防火墙安全策略。

1.关闭firewalld服务

# 停止 friewalld 服务systemctl stop firewalld? 并查看firewalld 状态systemctl status firewalld

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: dead since Tue 2022-05-17 02:41:16 PDT; 1h 49min ago
     Docs: man:firewalld(1)
 Main PID: 30311 (code=exited, status=0/SUCCESS)

May 17 02:39:46 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
May 17 02:39:46 localhost.localdomain firewalld[30311]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure con...t now.
May 17 02:41:16 localhost.localdomain systemd[1]: firewalld.service start operation timed out. Terminating.
May 17 02:41:16 localhost.localdomain systemd[1]: Failed to start firewalld - dynamic firewall daemon.
May 17 02:41:16 localhost.localdomain systemd[1]: Unit firewalld.service entered failed state.
May 17 02:41:16 localhost.localdomain systemd[1]: firewalld.service failed.
Hint: Some lines were ellipsized, use -l t

# 禁止开机启动systemctl disable firewalld

[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

2.下载安装iptables

有两种安装方式,如果服务器可以联网的话,可以采用在线安装方式,如果服务器没有联网的话,可以采用离线安装方式,将rpm包放到服务器上,然后进行安装。

2.1离线安装

查看是否已经安装iptables软件:rpm -qa |grep iptables

linux7自带了 iptables-1.4.21-35.el7.x86_64,我们需要安装35版本的iptables-services服务。

注:iptables 和 iptables-service要安装同一个版本的。

[root@localhost ~]# rpm -qa |grep iptables
iptables-1.4.21-35.el7.x86_64
[root@localhost ~]# 

1.上传rpm包到服务器上

下图中多个版本的,因为我系统自带的第二行35版本的ptables,所以我需要安装35版本的iptables-service

[root@localhost~]# ll
总用量 972
-rw-r--r-- 1 root root 442656 5月  12 17:00 iptables-1.4.21-35.el7.x86_64.rpm
-rw-r--r-- 1 root root  53128 5月  12 17:11 iptables-services-1.4.21-28.el7.x86_64.rpm
-rw-r--r-- 1 root root  53704 5月  12 17:09 iptables-services-1.4.21-35.el7.x86_64.rpm

安装iptables-services-1.4.21-35.el7.x86_64?? rpm -ivh iptables-services-1.4.21-35.el7.x86_64

如果系统没有iptables的话,也是相同的办法安装即可。

[root@localhost ~]# rpm -ivh iptables-services-1.4.21-35.el7.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:iptables-services-1.4.21-35.el7  ################################# [100%]
[root@localhost ~]# 

如果要卸载的话可以使用以下指令:

卸载iptables指令:rpm -e iptables-services-1.4.21-35.el7.x86_64

[root@localhost ~]# rpm -e iptables-1.4.21-35.el7.x86_64
error: Failed dependencies:
	iptables = 1.4.21-35.el7 is needed by (installed) iptables-services-1.4.21-35.el7.x86_64
	libxtables.so.10()(64bit) is needed by (installed) iproute-4.11.0-30.el7.x86_64
[root@localhost ~]# 

如果有依赖关系卸载不掉的话(如上图):

rpm -e --nodeps iptables-services-1.4.21-35.el7.x86_64

[root@localhost ~]# rpm -e --nodeps iptables-1.4.21-35.el7.x86_64
warning: /etc/sysconfig/iptables-config saved as /etc/sysconfig/iptables-config.rpmsave
[root@localhost ~]# rpm -e --nodeps iptables-services-1.4.21-35.el7.x86_64
warning: /etc/sysconfig/iptables saved as /etc/sysconfig/iptables.rpmsave
[root@localhost ~]# 

2.2在线安装

# 检查系统中是否已经安装了 iptables rpm -qa |grep iptables(下图是安装了)

[root@localhost ~]# rpm -qa |grep iptables
iptables-1.4.21-35.el7.x86_64
iptables-services-1.4.21-35.el7.x86_64

或者systemctl status iptables.service 查看iptables状态;如下图也是安装了

[root@localhost ~]# systemctl status iptables.service
● iptables.service - IPv4 firewall with iptables
   Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled)
   Active: inactive (dead) since Tue 2022-05-17 02:39:47 PDT; 2h 6min ago
 Main PID: 5364 (code=exited, status=0/SUCCESS)

May 13 18:59:22 localhost.localdomain systemd[1]: Stopped IPv4 firewall with iptables.
May 13 18:59:22 localhost.localdomain systemd[1]: Starting IPv4 firewall with iptables...
May 13 18:59:22 localhost.localdomain iptables.init[5364]: iptables: Applying firewall rules: [  OK  ]
May 13 18:59:22 localhost.localdomain systemd[1]: Started IPv4 firewall with iptables.
May 17 02:39:46 localhost.localdomain systemd[1]: Stopping IPv4 firewall with iptables...
May 17 02:39:46 localhost.localdomain iptables.init[30312]: iptables: Setting chains to policy ACCEPT: security raw mangle nat fil...OK  ]
May 17 02:39:47 localhost.localdomain iptables.init[30312]: iptables: Flushing firewall rules: [  OK  ]
May 17 02:39:47 localhost.localdomain systemd[1]: Stopped IPv4 firewall with iptables.
Hint: Some lines were ellipsized, use -l to show in full.

# 安装 iptables

yum install -y iptables

[root@localhost ~]# yum -y install iptables 
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package iptables.x86_64 0:1.4.21-35.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==========================================================================================================================================
 Package                          Arch                           Version                               Repository                    Size
==========================================================================================================================================
Installing:
 iptables                         x86_64                         1.4.21-35.el7                         base                         432 k

Transaction Summary
==========================================================================================================================================
Install  1 Package

Total download size: 432 k
Installed size: 1.5 M
Downloading packages:
iptables-1.4.21-35.el7.x86_64.rpm                                                                                  | 432 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
** Found 6 pre-existing rpmdb problem(s), 'yum check' output follows:
firewalld-0.6.3-13.el7_9.noarch has missing requires of iptables
iproute-4.11.0-30.el7.x86_64 has missing requires of libxtables.so.10()(64bit)
libvirt-daemon-driver-network-4.5.0-36.el7.x86_64 has missing requires of iptables
libvirt-daemon-driver-nwfilter-4.5.0-36.el7.x86_64 has missing requires of iptables
2:postfix-2.10.1-9.el7.x86_64 has missing requires of libmysqlclient.so.18()(64bit)
2:postfix-2.10.1-9.el7.x86_64 has missing requires of libmysqlclient.so.18(libmysqlclient_18)(64bit)
  Installing : iptables-1.4.21-35.el7.x86_64                                                                                          1/1 
  Verifying  : iptables-1.4.21-35.el7.x86_64                                                                                          1/1 

Installed:
  iptables.x86_64 0:1.4.21-35.el7                                                                                                         

Complete!

# 升级 iptables????????

yum update iptables 我这个是最新的了,无需更新

[root@localhost ~]# yum update iptables
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
No packages marked for update
[root@localhost ~]#

# 安装 iptables-services?

yum install iptables-services 我已经用离线方式安装过了,所以提示已经存在。

[root@localhost ~]# yum install iptables-services
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Package iptables-services-1.4.21-35.el7.x86_64 already installed and latest version
Nothing to do
[root@localhost ~]# 

3.安全策略配置

iptables安全策略有两种配置方式。

方式一:在Linux命令行模式直接输入命令,该方式命令加载在内存中,防火墙规则会立即生效,但是如果不保存的话防火墙安全策略会在重启防火墙后丢失。切记:使用该方式务必进行保存。

方式二:直接配置/etc/sysconfig/iptables文件,配置完成后重启防火墙生效。

iptables默认配置(安装防火墙后自带配置,文件目录/etc/sysconfig/iptables)

重要规则,当请求进来或出去时,匹配到第一条符合要求的规则后,就不再走后面的规则,后面规则不生效。

通过以下两个案例进行说明,我配置两条规则。

案例一、

1.允许IP 196.128.11.2访问3306端口

2.拒绝所有IP访问3306端口

案例二、

1.拒绝所有IP访问3306端口

2.允许IP 196.128.11.2访问3306端口

案例说明:

案例一的话 先走第一条,第二条就不生效了,因此IP196.128.11.2是可以访问3306端口。

案例二先走拒绝所有IP访问3306端口,第二条允许IP196.128.11.2访问就不生效了,因此即使配置了允许,196.128.11.2也无法访问3306端口。

案例一实际上实现的功能为限定指定IP访问指定端口196.128.11.2IP可以访问3306端口

参数说明:

-A? 在指定链的末尾添加(append)一条新的规则

-D? 删除(delete)指定链中的某一条规则,可以按规则序号和内容删除

-I? 在指定链中插入(insert)一条新的规则,默认在第一行添加

-R? 修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换

-L? 列出(list)指定链中所有的规则进行查看

-E? 重命名用户定义的链,不改变链本身

-F? 清空(flush)

-N? 新建(new-chain)一条用户自己定义的规则链

-X? 删除指定表中用户自定义的规则链(delete-chain)

-P? 设置指定链的默认策略(policy)

-Z 将所有表的所有链的字节和数据包计数器清零

-n? 使用数字形式(numeric)显示输出结果

-v? 查看规则表详细信息(verbose)的信息

-V? 查看版本(version)

-h? 获取帮助(help)

INPUT为入站规则——进来的数据包应用此规则链中的策略

OUTPUT为出站规则——外出的数据包应用此规则链中的策略?

FORWARD  ——转发数据包时应用此规则链中的策略

PREROUTING? ——对数据包作路由选择前应用此链中的规则

(记住!所有的数据包进来的时侯都先由这个链处理)

POSTROUTING ——对数据包作路由选择后应用此链中的规则

(所有的数据包出来的时侯都先由这个链处理)

-j后面跟的是规则:放行(accept)、拒绝(reject)和丢弃(drop)

3.1以命令行方式配置防火墙规则

?可以先在命令行中执行清空指令,清空系统自带的安全策略,执行以下操作可以将现有规则清空。
#清空所有默认规则iptables -F
#清空所有自定义规则iptables -X
#所有计数器归0iptables -Z
#保存上述规则service iptables save

iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
[root@localhost sysconfig]# iptables -F
[root@localhost sysconfig]# iptables -X
[root@localhost sysconfig]# iptables -Z
[root@localhost sysconfig]# service iptables save
[root@localhost sysconfig]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@localhost sysconfig]# 

查看/etc/sysconfig/iptables配置文件,保存是生效的。

命令行执行以下指令:

实现限制仅IP 196.128.1.1可以访问3306端口,这样就漏扫的时候就扫描不到了。

iptables -I INPUT -s 196.128.1.1 -p tcp --dport 3306 -j ACCEPT

iptables -A OUTPUT -d 196.128.1.1 -p tcp --sport 3306 -j ACCEPT

iptables -A INPUT -p tcp --dport 3306 -j DROP

[root@localhost ~]# iptables -I INPUT -s 196.128.1.1 -p tcp --dport 3306 -j ACCEPT
[root@localhost ~]# iptables -A OUTPUT -d 196.128.1.1 -p tcp --sport 3306 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp --dport 3306 -j DROP
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  196.128.1.1          anywhere             tcp dpt:mysql
DROP       tcp  --  anywhere             anywhere             tcp dpt:mysql

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             196.128.1.1          tcp spt:mysql

三条指令说明:

第一条:允许IP 196.128.1.1访问3306端口,入站

第二条:允许反馈

第三条:禁止所有IP访问3306端口

第四条:iptables -L 查看防火墙规则

以上安全策略实现的功能是 限定指定IP访问指定端口。仅允许IP 196.128.1.1访问3306端口

切记,以该方式实现的话,务必保存,不然会在服务器或防火墙重启后,安全策略规则丢失。

#保存上述规则service iptables save

3.2直接修改配置文件(推荐该方式)

直接编辑/etc/sysconfig/iptables配置文件,添加以下配置

系统自带的这些配置可以注释掉。

-I INPUT -s 196.128.1.1 -p tcp --dport 3306 -j ACCEPT

-A OUTPUT -d 196.128.1.1 -p tcp --sport 3306 -j ACCEPT

-A INPUT -p tcp --dport 3306 -j DROP

?systemctl restart iptables.service –重启使得配置生效

本机 telnet IP 端口测试下,防护成功

修复规程中遇到的问题:

问题一:本机服务器需要访问数据库,同时我的电脑也需要访问数据库,配置我的电脑的IP允许访问3306端口,结果telnet一直不通;想了一下,是因为我是用VPN跳转访问的,所以访问数据库服务器的IP不是我本机的IP,但是我不知到跳转后的IP是什么,通过以下指令确定

可以过滤出,目前有哪些IP正在访问服务器的3306端口:

[root@localhost 7]# netstat -ntu|grep 3306 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
2 192.168.122.1

需要先允许所有IP访问服务器3306端口,确定好IP后,后面再加限制即可。

问题二:我以直接修改/etc/sysconfig/iptables配置文件方式,重启防火墙之后,安全策略规则会生效,但是持续二十秒左右之后,再次用iptables -L查看,安全策略被清除,查找了半天资料都没搞定。

原因:服务器为云主机,云主机有安全防御策略,把我的策略清除了,需要云主机去掉安全防御策略就解决了。

拓展:

通过本次修复漏洞,了解了相关ipables知识。

iptalbes五链

INPUT, 进站(包含:filter,mangle)
OUTPUT, 出站(包含:filter,nat,mangle,raw)
FORWARD, 转发(包含:filter,mangle)
PREROUTING,前置路由检查(包含:nat,mangle,raw)
POSTROUTING 后置路由检查(包含:nat,mangle,raw)

security -->raw-->mangle-->nat-->filter

iptables四表:

filter:过滤规则表,根据预定义的规则过滤符合条件的数据包,默认表

我们配置的ipables文件,属于filter表;
nat:network address translation 地址转换规则表
mangle:修改数据标记位规则表
raw:关闭启用的连接跟踪机制,加快封包穿越防火墙速度
--security:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现

报文流向

流入本机:PREROUTING --> INPUT–>用户空间进程

流出本机:用户空间进程 -->OUTPUT–> POSTROUTING

转发:PREROUTING --> FORWARD --> POSTROUTING

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-21 19:18:51  更:2022-05-21 19:19:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:34:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码