首先来讲一讲数据库

进入2020年,大数据(big data)一词越来越多地被提及,人们用它来描述和定义信息爆炸时代产生的海量数据,并命名与之相关的技术发展与创新。它已经上过《纽约时报》《华尔街日报》的专栏封面,进入美国白宫官网的新闻,现身在国内一些互联网主题的讲座沙龙中,甚至被嗅觉灵敏的证券公司等写进了投资推荐报告。

数据正在迅速膨胀并变大,它决定着企业的未来发展,虽然现在企业可能并没有意识到数据爆炸性增长带来问题的隐患,但是随着时间的推移,人们将越来越多的意识 到数据对企业的重要性。

数据库安全事故的层出不穷,诸如银行内部数据泄漏造成资金失密、信用卡信息被盗用导致的系用卡伪造、企业内部机密数据泄漏引起的竞争力下降、医疗患者信息泄漏导致患者被“监控”……,这些情况无不说明了应用系统审计的重要性。

我们来分析一下现今数据库面临的主要威胁:

威胁 1 - 滥用过高权限

当用户(或应用程序)被授予超出了其工作职能所需的数据库访问权限时,这些权限可能会被恶意滥用。例如,一个大学管理员在工作中只需要能够更改学生的联系信息,不过他可能会利用过高的数据库更新权限来更改分数。

威胁 2 - 滥用合法权

用户还可能将合法的数据库权限用于未经授权的目的。假设一个恶意的医务人员拥有可以通过自定义 Web 应用程序查看单个患者病历的权限。通常情况下,该 Web应用程序的结构限制用户只能查看单个患者的病史,即无法同时查看多个患者的病历并且不允许复制电子副本。但是,恶意的医务人员可以通过使用其他客户端(如MS-Excel)连接到数据库,来规避这些限制。通过使用 MS-Excel 以及合法的登录凭据,该医务人员就可以检索和保存所有患者的病历。

威胁 3 - 权限提升

攻击者可以利用数据库平台软件的漏洞将普通用户的权限转换为管理员权限。漏洞可以在存储过程、内置函数、协议实现甚至是 SQL语句中找到。例如,一个金融机构的软件开发人员可以利用有漏洞的函数来获得数据库管理权限。使用管理权限,恶意的开发人员可以禁用审计机制、开设伪造的帐户以及转帐等。

威胁 4 - SQL 注入

在SQL注入攻击中,入侵者通常将未经授权的数据库语句插入(或“注入”)到有漏洞的SQL数据信道中。通常情况下,攻击所针对的数据信道包括存储过程和Web应用程序输入参数。然后,这些注入的语句被传递到数据库中并在数据库中执行。使用SQL注入,攻击者可以不受限制地访问整个数据库。

威胁 5 – 日志记录不完善

自动记录所有敏感的和/或异常的数据库事务应该是所有数据库部署基础的一部分。如果数据库审计策略不足,则组织将在很多级别上面临严重风险。

威胁 6 - 身份验证不足

薄弱的身份验证方案可以使攻击者窃取或以其他方法获得登录凭据,从而获取合法的数据库用户的身份。攻击者可以采取很多策略来获取凭据。

威胁 7 - 备份数据暴露

经常情况下,备份数据库存储介质对于攻击者是毫无防护措施的。因此,在若干起著名的安全破坏活动中,都是数据库备份磁带和硬盘被盗。防止备份数据暴露所有数据库备份都应加密。实际上,某些供应商已经建议在未来的 DBMS产品中不应支持创建未加密的备份。建议经常对联机的生产数据库信息进行加密,但是由于性能问题和密钥管理不善问题,这一加密方法通常是不现实的,并且一般被公认为是上文介绍的细化的权限控制的不理想的替代方法。

那么服务器的安全我们都需要注意一些什么内容呢??

首先我们经常用的linux系统为例子

1、更新你的服务器

保护服务器安全的第一件事是更新本地存储库,并通过应用最新的修补程序来升级操作系统和已安装的应用程序。

在 Ubuntu 和 Debian 上:

$ sudo apt update && sudo apt upgrade -y

在 Fedora、CentOS 或 RHEL:

$ sudo dnf upgrade

2、创建一个新的特权用户

接下来,创建一个新的用户帐户。永远不要以 root 身份登录服务器,而是创建你自己的帐户(用户),赋予它 sudo 权限,然后使用它登录你的服务器。

首先创建一个新用户:

$ adduser

通过将 sudo 组(-G)附加(-a)到用户的组成员身份里,从而授予新用户帐户 sudo 权限:

$ usermod -a -G sudo

3、上传你的 SSH 密钥

你应该使用 SSH 密钥登录到新服务器。你可以使用 ssh-copy-id 命令将 预生成的 SSH 密钥 上传到你的新服务器:

$ ssh-copy-id @ip_address

现在,你无需输入密码即可登录到新服务器。

4、安全强化 SSH

接下来,进行以下三个更改:

禁用 SSH 密码认证

限制 root 远程登录

限制对 IPv4 或 IPv6 的访问

使用你选择的文本编辑器打开 /etc/ssh/sshd_config 并确保以下行:

PasswordAuthentication yes

PermitRootLogin yes

改成这样:

PasswordAuthentication no

PermitRootLogin no

接下来,通过修改 AddressFamily 选项将 SSH 服务限制为 IPv4 或 IPv6。要将其更改为仅使用 IPv4(对大多数人来说应该没问题),请进行以下更改:

AddressFamily inet

重新启动 SSH 服务以启用你的更改。请注意,在重新启动 SSH 服务之前,与服务器建立两个活动连接是一个好主意。有了这些额外的连接,你可以在重新启动 SSH 服务出错的情况下修复所有问题。

在 Ubuntu 上:

$ sudo service sshd restart

在 Fedora 或 CentOS 或任何使用 Systemd 的系统上:

$ sudo systemctl restart sshd

5、启用防火墙

现在,你需要安装防火墙、启用防火墙并对其进行配置,以仅允许你指定的网络流量通过。(Ubuntu 上的) 简单的防火墙 (UFW)是一个易用的 iptables 界面,可大大简化防火墙的配置过程。

你可以通过以下方式安装 UFW:

$ sudo apt install ufw

默认情况下,UFW 拒绝所有传入连接,并允许所有传出连接。这意味着服务器上的任何应用程序都可以访问互联网,但是任何尝试访问服务器的内容都无法连接。

首先,确保你可以通过启用对 SSH、HTTP 和 HTTPS 的访问来登录:

$ sudo ufw allow ssh

$ sudo ufw allow http

$ sudo ufw allow https

然后启用 UFW:

$ sudo ufw enable

你可以通过以下方式查看允许和拒绝了哪些服务:

$ sudo ufw status

如果你想禁用 UFW,可以通过键入以下命令来禁用:

$ sudo ufw disable

你还可以(在 RHEL/CentOS 上)使用 firewall-cmd ,它已经安装并集成到某些发行版中。

6、安装 Fail2ban

Fail2ban 是一种用于检查服务器日志以查找重复或自动攻击的应用程序。如果找到任何攻击,它会更改防火墙以永久地或在指定的时间内阻止攻击者的 IP 地址。

你可以通过键入以下命令来安装 Fail2ban:

$ sudo apt install fail2ban -y

然后复制随附的配置文件:

$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

重启 Fail2ban:

$ sudo service fail2ban restart

这样就行了。该软件将不断检查日志文件以查找攻击。一段时间后,该应用程序将建立相当多的封禁的 IP 地址列表。你可以通过以下方法查询 SSH 服务的当前状态来查看此列表:

$ sudo fail2ban-client status ssh

7、移除无用的网络服务

几乎所有 Linux 服务器操作系统都启用了一些面向网络的服务。你可能希望保留其中大多数,然而,有一些你或许希望删除。你可以使用 ss 命令查看所有正在运行的网络服务:(LCTT 译注:应该是只保留少部分,而所有确认无关的、无用的服务都应该停用或删除。)

$ sudo ss -atpu

ss 的输出取决于你的操作系统。下面是一个示例,它显示 SSH(sshd)和 Ngnix(nginx)服务正在侦听网络并准备连接:

tcp LISTEN 0 128 *:http *:* users:(("nginx",pid=22563,fd=7))

tcp LISTEN 0 128 *:ssh *:* users:(("sshd",pid=685,fd=3))

删除未使用的服务的方式因你的操作系统及其使用的程序包管理器而异。

要在 Debian / Ubuntu 上删除未使用的服务:

$ sudo apt purge

要在 Red Hat/CentOS 上删除未使用的服务

服务器和数据库哪一个更重要相关推荐

  1. sqlserver审计 —— 服务器与数据库审核规范

    4.2 服务器审核 4.2.1 服务器审核 SQL Server 2008 引入了服务器审核功能,可以对服务器级别和数据库级别事件组和事件进行审核. SQL Server 的审核级别有若干种,具体取决 ...

  2. 网站上传到服务器mysql数据库,网站上传到服务器mysql数据库吗

    网站上传到服务器mysql数据库吗 内容精选 换一换 安装MySQL本文档以"CentOS 6.5 64bit(40GB)"操作系统为例,对应MySQL版本为5.1.73.Cent ...

  3. 安卓怎么连接服务器的数据库文件,安卓怎么连接服务器的数据库文件

    安卓怎么连接服务器的数据库文件 内容精选 换一换 文档数据库服务支持开启公网访问功能,通过弹性IP进行访问.您也可通过弹性云服务器的内网访问文档数据库.要将已有的MongoDB数据库迁移到文档数据库, ...

  4. 计算机服务器和数据库的关系,服务器到底是什么?和电脑又有什么区别?

    对于大部分的用户来说,我们购买或者使用电脑的时候,都知道选购方向大致可分为三类:台式机.一体机.笔记本,偶尔还看见过有工作站,而在企业工作的员工还知道有服务器.从本质上来说,不管是台式机还是笔记本.一 ...

  5. 修改数据库服务器日期命令,服务器上数据库用命令修改

    服务器上数据库用命令修改 内容精选 换一换 本教程旨在演示使用GDS(Gauss Data Service)工具将远端服务器上的数据导入GaussDB(for openGauss)中的办法,帮助您学习 ...

  6. phpmyadmin同时连接多个服务器的数据库

    一.使用场景 一般来说,我们开发都会有测试环境和正式环境之分.当然,数据库也是要分开的.如果能用phpmyadmin直接访问两台服务器上的mysql就好了.这就是需求. 二.解决方案 1.找到phpm ...

  7. linux服务器mysql数据库新建数据库并配置数据库用户

    linux服务器mysql数据库新建数据库并配置数据库用户 第一步:进入数据库 mysql -uroot -p 提示输入密码,输入你的root用户密码(默认不显示) 如下图: 第二步:创建一个数据库 ...

  8. 为什么文件上传不了服务器上,文件上传存在服务器还是数据库

    文件上传存在服务器还是数据库 内容精选 换一换 本章介绍如何在管理控制台购买GaussDB(for openGauss)实例,并通过内网使用弹性云服务器连接GaussDB(for openGauss) ...

  9. java连服务器mysql报错_tomcat程序连接服务器mysql数据库报错

    tomcat程序连接服务器mysql数据库,报 错误,后来用java程序直接连接数据库,发现可以连得上,可以操作数据库, 在网上查了设置数据库连接等待时间(wait_timeout)设置,也没用. 奇 ...

最新文章

  1. 玩转“网上邻居”之网络配置(二)
  2. 重要通知 | WanaCrypt0r 2.0及Onion等勒索软件安全建议
  3. 负载均衡探测器lbd
  4. [Spark][Flume]Flume 启动例子
  5. 企业:怎样的渗透测试频率是合适的?
  6. java--Hibernate添加数据save
  7. Dockerfile和Dockerfile-dev
  8. ldr加载指令,ldr伪指令
  9. 圣诞抽奖 | 2018年的开发者,经历了裁员、加班种种不堪,2019年的你如何获得升职加薪的机会?...
  10. php框架--php框架的连贯查询实现原理
  11. 在Laravel中使用数据库事务以及捕获事务失败后的异常
  12. Java学习笔记2.1.1 Java基本语法 - Java代码基本格式
  13. Flask常见问题记录
  14. 7.微服务设计 --- 测试
  15. 批处理(bat)文件中输出中文乱码怎么办?
  16. 论文中的三线表绘制(word)
  17. 自用推荐【浏览器网页监控插件 Distill Web Monitor】
  18. MATLAB:简单GUI的设计流程
  19. 软件测试的正向思维,反向思维
  20. Android开发工具类 Utils

热门文章

  1. opencv双目视觉标定,激光结构光提取,指定特征点获取世界坐标
  2. 电路PCB制板原理图基本流程
  3. 1960-2020年中国气温线性趋势变化的时空差异及影响因素
  4. microbit 串口通讯设置方法
  5. 《一碗阳春面的故事》
  6. NVIDIA显卡硬编码调研
  7. 建付支付即时到账源码免签支付支持支付宝微信拉卡拉等
  8. 污水处理项目,西门子300项目,带wincc画面全套项目,程序是step7v5.5
  9. 联系我们代码php语言,[PHP与MySQL]①④--关于我们 联系我们
  10. 二叉树的基本概念与例题(一学就会)