如何确保服务器的安全性?

如何确保服务器的安全性?

保护您的服务器以防止数据丢失或安全危害非常重要。因为安全对许多人来说是一个极具挑战性的主题,所以它常常被忽视。当问题出现时,许多人都没有意识到。通过遵循这些最佳实践,您可以显着降低被恶意行为者破坏的风险。

如何确保服务器的安全性?-美联科技

服务器安全最佳实践

1.服务器管理

正确的服务器管理可确保所有活动继续满足组织标准并保持服务器运营的最佳性能。这包括聘请合格的系统管理员和实施物理和内部安全措施。

2. 人身安全

实施物理安全控制有助于防止未经授权的人员物理访问路由器、配线柜和服务器等组件。通过物理访问控制 (PAC) 进行的受控访问,例如锁、生物识别身份验证和徽章等其他设备,在任何组织中都是必不可少的。

传统门和锁是物理访问控制系统的最基本形式,但企业级物理访问控制系统更进一步。访问控制在建筑物的某些区域可能更严格,例如具有公共访问区域和限制访问区域的组织。

维护凭证数据库并删除任何已停用的用户是一种安全最佳做法。此外,添加不同类型的 PAC 是一个很好的公式,可以更安全地控制对企业中易受攻击或重要部门的物理访问。

3.更新软件和操作系统

保持软件和操作系统 (OS) 的更新周期是您可以为服务器采取的最重要的安全预防措施。更新范围从关键漏洞补丁到小错误修复。许多软件漏洞在公开时都会被修补,这增加了用户安装更新的紧迫性。

由于服务器系统往往与软件环境有着复杂的关系,因此故障可能会被忽视。未能及时更新服务器上的操作系统和任何其他软件将不可避免地使其面临常见漏洞。企业必须计划在合理的时间内执行定期更新和补丁以维护安全。

如何确保服务器的安全性?-美联科技

4. 安全连接

SSH

当需要通过命令行(终端)访问服务器时,请使用安全外壳 (SSH)连接。SSH 为数据传输创建安全管道。此连接仅保护通过终端从计算机发送到服务器的信息。

其他需要考虑的是SSH 端口。SSH 默认端口是#22。最佳实践建议避免使用此端口并使用 32768 到 61000 的端口范围以获得额外的完整性。此更改可防止对连接和主要黑客雷达的自动攻击。

SSH 密钥

不要使用 SSH 密码访问服务器,而是使用SSH 密钥。他们禁用以 root 用户身份访问服务器所需的 SSH 功能,从而无需使用 root 密码。与单独使用密码相比,它在连接到服务器时提供了额外的安全层。

使用 SSH 密钥还允许我们创建加密安全密钥对,将唯一的连接信息本地存储在您的计算机和服务器上。由于 SSH 密钥对以加密方式生成,因此密钥大小越大,越安全。

代理服务器是作为附加安全措施的一种选择,因为它们将任何网络用户隐藏在代理的 IP 地址和主机防火墙之后。此设置使黑客更难以针对特定设备进行访问。

多重身份验证 (MFA)

SSH 密钥主要是一种单因素身份验证方法。双重或多重身份验证将要求用户提供不同类型的信息(电话号码、电子邮件、政府 ID)以访问敏感数据。

虚拟专用网络

虚拟专用网络 (VPN)是从远程位置到本地专用网络的专用连接。它确保私人数据保持安全并维护该信息的机密性和完整性。VPN 为在线通信和浏览提供隐私和保护,使您的设备和 Internet 之间的连接保密。

如何确保服务器的安全性?-美联科技

Fail2Ban

Fail2ban是一种服务器软件,它通过惩罚或阻止尝试暴力访问的远程连接来防止入侵者。它允许您监控攻击的影响和频率,并发布防火墙规则更新以在指定时间内阻止可疑 IP 地址。Fail2Ban 可以监控多种协议,包括 HTTP、SSH 和 SMTP。默认情况下,Fail2Ban 仅监控 SSH,但对任何服务器来说都是一种有用的安全威慑。

SSL/TLS

另一个有效的保护措施是服务器安全证书,例如安全套接字层 (SSL) 和传输层安全 (TLS)。这些安全证书是用于身份验证和加密的加密协议,其中 TLS 是 SSL 的更新版本。TLS 修复了旧 SSL 协议中的一些安全漏洞,这些证书是用户身份验证所必需的。

服务器安全证书通过对通过 Internet 发送的敏感数据(例如密码、用户名和信用卡信息)进行加扰来保护网络通信,从而允许服务器验证实体。

限制根访问

SSH 应该仅限于有限的用户子集。为此,请将以下信息添加到/etc/ssh/sshd_config文件。

PermitRootLogin no
Protocol 2

然后,将 SSH 用户组添加到/etc/ssh/sshd_config文件。

AllowGroups sshusers

5.禁用不必要的服务

审计服务

服务审计探索服务器上正在运行的服务、它们使用的协议以及它们交互的端口。意识到这些因素将有助于减少系统中的任何攻击向量。

大多数服务器都默认启用某些服务,允许您使用服务器上可用的多种功能。如果不使用这些额外的服务,最好禁用它们。在基于 Red Hat 的系统上运行特定命令可帮助您查找和禁用不必要的服务。

如何确保服务器的安全性?-美联科技

支持 Red Hat/CentOS 的服务

要查看 Red Hat 或 CentOS 中启用的服务,请运行以下命令。

systemctl list-unit-files | grep enabled

这是输出。

[root@host ~]# systemctl list-unit-files | grep enabled
var-lib-snapd-snap-core-7917.mount            enabled 
var-lib-snapd-snap-hello\x2dworld-29.mount    enabled 
var-lib-snapd-snap-snapcraft-3440.mount       enabled 
acpid.service                                 enabled 
auditd.service                                enabled 
autovt@.service                               enabled 
crond.service                                 enabled 
dbus-org.fedoraproject.FirewallD1.service     enabled 
firewalld.service                             enabled 
getty@.service                                enabled 
irqbalance.service                            enabled 
microcode.service                             enabled 
NetworkManager-wait-online.service            enabled 
postfix.service                               enabled 
qemu-guest-agent.service                      enabled 
rhel-autorelabel.service                      enabled 
rhel-configure.service                        enabled 
rhel-dmesg.service                            enabled 
rhel-domainname.service                       enabled 
rhel-import-state.service                     enabled 
rhel-loadmodules.service                      enabled 
rhel-readonly.service                         enabled 
rsyslog.service                               enabled 
sonarpush.service                             enabled 
sshd.service                                  enabled 
systemd-readahead-collect.service             enabled 
systemd-readahead-drop.service                enabled 
systemd-readahead-replay.service              enabled 
tuned.service                                 enabled 
snapd.socket                                  enabled 
default.target                                enabled 
multi-user.target                             enabled 
remote-fs.target                              enabled 
runlevel2.target                              enabled 
runlevel3.target                              enabled 
runlevel4.target                              enabled 
[root@host ~]#

以下命令显示正在运行的服务。

systemctl | grep running

输出如下。

[root@host ~]# systemctl | grep running
session-2969.scope                  loaded active running   Session 2969 of user root
acpid.service                       loaded active running   ACPI Event Daemon
auditd.service                      loaded active running   Security Auditing Service
crond.service                       loaded active running   Command Scheduler
dbus.service                        loaded active running   D-Bus System Message Bus
firewalld.service                   loaded active running   firewalld - dynamic firewall daemon
getty@tty1.service                  loaded active running   Getty on tty1
irqbalance.service                  loaded active running   irqbalance daemon
polkit.service                      loaded active running   Authorization Manager
postfix.service                     loaded active running   Postfix Mail Transport Agent
rsyslog.service                     loaded active running   System Logging Service
serial-getty@ttyS0.service          loaded active running   Storm management console on Serial Getty ttyS0
snapd.service                       loaded active running   Snappy daemon
sonarpush.service                   loaded active running   LiquidWeb Sonarpush Monitoring Agent
sshd.service                        loaded active running   OpenSSH server daemon
systemd-journald.service            loaded active running   Journal Service
systemd-logind.service              loaded active running   Login Service
systemd-udevd.service               loaded active running   udev Kernel Device Manager
tuned.service                       loaded active running   Dynamic System Tuning Daemon
dbus.socket                         loaded active running   D-Bus System Message Bus Socket
snapd.socket                        loaded active running   Socket activation for snappy daemon
systemd-journald.socket             loaded active running   Journal Socket
systemd-udevd-control.socket        loaded active running   udev Control Socket
systemd-udevd-kernel.socket         loaded active running   udev Kernel Socket
[root@host ~]#

要禁用服务,例如蓝牙,请使用此命令。

systemctl disable bluetooth

Debian/Ubuntu 运行服务

以下命令向您显示在基于 Debian 或 Ubuntu 的服务器上运行的服务。

service --status-all |grep '+'

这是输出。

root@host ~# service --status-all |grep '+'
 [ + ]  apache-htcacheclean
 [ + ]  apache2
 [ + ]  apparmor
 [ + ]  apport
 [ + ]  atd
 [ + ]  binfmt-support
 [ + ]  cron
 [ + ]  dbus
 [ + ]  ebtables
 [ + ]  grub-common
 [ + ]  irqbalance
 [ + ]  iscsid
 [ + ]  lvm2-lvmetad
 [ + ]  lvm2-lvmpolld
 [ + ]  lxcfs
 [ + ]  procps
 [ + ]  rsyslog
 [ + ]  ssh
 [ + ]  udev
 [ + ]  ufw
 [ + ]  unattended-upgrades
root@host ~#

此命令列出由systemV管理的服务的状态。加号 (+) 和减号 (-) 表示服务是否处于活动状态。

systemctl | grep running

下面显示了输出。

root@host ~# systemctl | grep running
  proc-sys-fs-binfmt_misc.automount        loaded active running   Arbitrary Executable File Formats File System Automount Point
  init.scope                               loaded active running   System and Service Manager
  session-1726.scope                       loaded active running   Session 1726 of user root
  accounts-daemon.service                  loaded active running   Accounts Service
  apache2.service                          loaded active running   The Apache HTTP Server
  atd.service                              loaded active running   Deferred execution scheduler
  cron.service                             loaded active running   Regular background program processing daemon
  dbus.service                             loaded active running   D-Bus System Message Bus
  getty@tty1.service                       loaded active running   Getty on tty1
  irqbalance.service                       loaded active running   irqbalance daemon
  lvm2-lvmetad.service                     loaded active running   LVM2 metadata daemon
  lxcfs.service                            loaded active running   FUSE filesystem for LXC
  networkd-dispatcher.service              loaded active running   Dispatcher daemon for systemd-networkd
  polkit.service                           loaded active running   Authorization Manager
  rsyslog.service                          loaded active running   System Logging Service
  serial-getty@ttyS0.service               loaded active running   Storm management console on Serial Getty ttyS0
  snapd.service                            loaded active running   Snappy daemon
  ssh.service                              loaded active running   OpenBSD Secure Shell server
  systemd-journald.service                 loaded active running   Journal Service
  systemd-logind.service                   loaded active running   Login Service
  systemd-networkd.service                 loaded active running   Network Service
  systemd-resolved.service                 loaded active running   Network Name Resolution
  systemd-timesyncd.service                loaded active running   Network Time Synchronization
  systemd-udevd.service                    loaded active running   udev Kernel Device Manager
  unattended-upgrades.service              loaded active running   Unattended Upgrades Shutdown
  user@0.service                           loaded active running   User Manager for UID 0
  dbus.socket                              loaded active running   D-Bus System Message Bus Socket
  lvm2-lvmetad.socket                      loaded active running   LVM2 metadata daemon socket
  snapd.socket                             loaded active running   Socket activation for snappy daemon
  syslog.socket                            loaded active running   Syslog Socket
  systemd-journald-audit.socket            loaded active running   Journal Audit Socket
  systemd-journald-dev-log.socket          loaded active running   Journal Socket (/dev/log)
  systemd-journald.socket                  loaded active running   Journal Socket
  systemd-udevd-control.socket             loaded active running   udev Control Socket
  systemd-udevd-kernel.socket              loaded active running   udev Kernel Socket
root@host ~#

要禁用服务,请使用以下命令。

systemctl disable apache

从系统中删除 X Windows。

X 窗口系统(也称为 X11,或简称为 X)是一种用于位图显示的窗口系统,是类 Unix 操作系统的标准配置。它为窗口图形用户界面 (GUI) 环境提供了一个基本框架。CentOS、Red Hat Enterprise Linux (RHEL) 和 Fedora Linux 中包含的 X Windows 系统称为 X.org。

大多数服务器不需要 GUI 来执行一般服务器管理任务,而其他服务器则使用管理面板。了解服务器有多少开放路径并仅启用您需要的路径会很有帮助。如果已安装 X Windows 而您的服务器不需要它,最好将其删除。

使用此命令删除 X Windows 系统。

yum groupremove "X Window System"

6. 保留备份

丢失关键信息对任何企业来说都是灾难性的。幸运的是,有许多可靠的备份解决方案可用,包括可以同时支持物理和虚拟服务器的服务器备份软件。

Liquid Web 提供多种备份选项。一些工具允许您快速执行和自动化备份和恢复率,并轻松监控备份配置文件以避免数据丢失。制定备份计划时,最佳做法是使用备份保留的 3-2-1 规则。

3-2-1 规则

如何确保服务器的安全性?-美联科技

三:创建数据的三个副本。这些副本应包括一份主副本和两份备份。

二:将数据副本存储在至少两种不同类型的存储介质上。您可以将一份副本存储在本地硬盘驱动器上,将另一份副本存储在外部驱动器、网络附加存储 (NAS) 或本地保存的存储服务器上。

一:异地存储一份数据副本。此选项可以是位于其他位置的存储服务器,也可以是托管提供商提供的云存储解决方案。

7.用户管理

监控登录尝试

主机入侵检测系统 (HIDS) 是一种监视设备和网络是否存在可疑活动的应用程序。它检查内核日志中访问的文件、使用的应用程序和数据。网络入侵检测系统 (NIDS) 是一种监控网络流量是否存在可疑活动的应用程序。它评估网络内设备之间的数据流。HIDS 用于更全面的解决方案,NDIS 用于基于局域网 (LAN) 的解决方案。

这是 HIDS 的列表:

  • 奥赛克
  • Wazuh(OSSEC 的一个分支,提供更高的可靠性和可扩展性)
  • 绊线
  • 萨温
  • 安全洋葱

NIDS 和 HIDS 可以结合使用,形成一个坚实而全面的入侵检测系统策略。一些建议包括:

  • 打鼾
  • 最小值
  • 泽克
  • OpenWIPS-ng
  • 学校b

限制用户权限

为确保只有需要的用户才能访问关键系统,请将他们拥有的权限集限制为 644 或 444(文件)和 755(文件夹)。

如何确保服务器的安全性?-美联科技

执行用户测试

设置一个特定的日期来执行安全审计,并在它到来之前通知用户。定义您的期望,并让他们对任何发现的缺陷负责。

持续的安全培训

发送每月提醒并每三个月进行一次培训,在多个领域(电子邮件、网络和物理)进行为期六个月的试运行,并跟踪失败以改进这些领域并增加额外的培训。

旅行安全

安全不仅仅止于您企业的前门。为出差的员工设置安全参数培训在当今世界是一个明智的选择,在许多公司完全远程或为某些部门安排远程周的情况下更是如此。

8. 使用 SELinux

SELinux 是一个基于内核的安全模块,它提供了一种机制来支持访问控制安全策略,包括强制访问控制 (MAC)。它主要用作调整访问控制要求的手段。

使用 SELinux,您可以指定进程或用户可以做什么。它可以将操作限制在其域内,因此操作只能从允许的域与特定文件类型或其他进程进行交互。

SELinux 可以存在于以下三种可能模式中的任何一种:

  • 执行 - SELinux 主动执行定义的策略。
  • 许可 - 主要用于测试。未应用执行但已记录。
  • 禁用 - 系统处于非活动状态。

9. 意识和教育

如果您不知道要寻找什么或不知道要问什么问题,那么重要的事情就会被忽视。虽然您无需成为安全专家也能受到保护,但您必须意识到试图损害您的业务的危险。

一个常见的误解是完全托管的服务器产品是您需要的所有安全性。但是,托管服务提供商会与您和您的团队合作以确保您的环境安全。托管提供商确保硬件、网络和设施的安全,但您的数据是您的责任。您和您的团队必须就常见的安全问题以及如何保护您的网站和应用程序免受这些问题进行自我教育。

10. 保护文件系统

有几个步骤可以保护服务器文件系统。对于初学者,始终将具有用户可写目录的文件系统挂载在单独的分区上。此外,使用您选择的文本编辑器在/etc/fstab文件中使用nosuid、nodev和noexec 。

以下是一些需要注意的附加设置:

将/boot设置为只读

确保/boot文件夹默认设置为 RW 模式,尽管仅用于读取或加载模块和内核。使用以下命令来完成此操作。

/dev/sda1 /boot ext2 defaults ro 1 2

另外,在/etc/fstab文件中将/boot设置为只读。

禁用从可移动媒体启动

此设置是可选的,具体取决于您的服务器使用情况。要禁用从可移动媒体启动,您需要修改 bios 设置以禁用从可移动媒体(如 U 盘)启动。

设置 GRUB 引导加载程序密码

如果有人可以物理访问服务器,他们就可以进入它。攻击者和服务器访问之间的另一堵墙是在 GRUB 引导加载程序上设置密码。您可以通过设置密码来限制访问来实现此目的。首先,备份当前的grub.conf文件。

root@host ~# cp /etc/grub.conf /etc/grub.conf.bak

接下来,生成安全密码。创建一个文件,然后使用grub-md5-crypt命令创建密码。然后系统将提示您输入密码两次。然后,将创建的密码从安全文件复制到grub.conf文件中。

root@host ~# touch secure
root@host ~# grub-md5-crypt > secure

在此之后,复制密码并将其粘贴到grub.conf文件中第一行之后(在 RedHat 中),如下所示。然后,保存并退出文件。

splashimage=(hd0,0)/grub/splash.xpm.gz 
password --md5 JnK!xdBep53lt1NVk@K6wb!js%!HEI#^

您将需要重新启动服务器以使更改生效。

进入单用户模式前提示输入根密码

如果恶意行为者可以物理访问服务器,则他们可以通过按e键从 GRUB 菜单项中选择要引导到的特定内核。此操作允许某人编辑第一个引导选项以启用引导到单用户模式而无需输入密码。

您的系统应该配置为在进入单用户模式之前提示输入 root 密码,以限制可能的利用。按照设置 GRUB 引导加载程序密码部分中概述的说明完成此任务。

最后的想法

安全是一个共同的问题。遵循这些服务器安全最佳实践并与您的托管服务提供商合作。所有这些都为您的服务器环境提供了蓬勃发展所需的安全性。虽然本文有助于您结束安全交易,但寻找可靠的托管服务提供商是另一个挑战。

客户经理