网站搜索

20 个 CentOS 服务器强化安全提示 - 第 1 部分


本教程仅涵盖CentOS 8/7的一般安全提示,可用于加固系统。检查表提示主要用于各种类型的裸机服务器或提供网络服务的计算机(物理或虚拟)。

然而,一些技巧也可以成功应用于通用机器,例如台式机、笔记本电脑和卡片大小的单板计算机(Raspberry Pi)。

要求

  • CentOS 8 最小安装
  • CentOS 7 最小安装

1. 实物保护

锁定服务器机房的访问权限,使用机架锁定和视频监控。请考虑到对服务器机房的任何物理访问都可能使您的计算机面临严重的安全问题。

BIOS 密码可以通过重置主板上的跳线或断开 CMOS 电池来更改。此外,入侵者可以窃取硬盘或直接将新硬盘连接到主板接口(SATA、SCSI 等),使用 Linux live 发行版启动,克隆或复制数据,而不会留下任何软件痕迹。

2. 减少间谍活动的影响

如果数据高度敏感,您可能应该使用先进的物理保护,例如将服务器放置并锁定到法拉第笼中,或使用军用 TEMPEST 解决方案,以尽量减少通过无线电或漏电辐射监视系统的影响。

3. 安全 BIOS/UEFI

通过保护 BIOS/UEFI 设置开始强化计算机,尤其是设置 BIOS/UEFI 密码并禁用启动媒体设备(CD、DVD、禁用 USB 支持)为了防止任何未经授权的用户修改系统 BIOS 设置或更改启动设备优先级以及从备用介质启动计算机。

为了将这种类型的更改应用到您的机器,您需要查阅主板制造商手册以获取具体说明。

4. 安全引导加载程序

设置GRUB密码,以防止恶意用户篡改内核启动顺序或运行级别、编辑内核参数或将系统启动到单用户模式以危害您的系统并重置root密码以获得特权控制。

5.使用单独的磁盘分区

在用作生产服务器的系统上安装 CentOS 时,请为系统的以下部分使用专用分区或专用硬盘:

/(root) 
/boot  
/home  
/tmp 
/var 

6. 使用 LVM 和 RAID 实现冗余和文件系统增长

/var 分区是将日志消息写入磁盘的位置。在公开网络服务(例如 Web 服务器或文件服务器)的大流量服务器上,系统的这一部分的大小可能会呈指数级增长。

因此,为 /var 使用一个大分区,或者考虑使用逻辑卷 (LVM) 设置此分区,或者将多个物理磁盘组合成一个更大的虚拟 RAID 0 设备以支持大容量磁盘。数据量。对于数据,冗余考虑在RAID 1级别之上使用LVM布局。

要在磁盘上设置 LVM 或 RAID,请遵循我们的有用指南:

  1. 在 Linux 中使用 LVM 设置磁盘存储
  2. 使用 vgcreate、lvcreate 和 lvextend 创建 LVM 磁盘
  3. 将多个磁盘合并为一个大型虚拟存储
  4. 在 Linux 中使用两个磁盘创建 RAID 1

7. 修改 fstab 选项以保护数据分区

通过将以下选项添加到 fstab 文件中,分离用于存储数据的分区并防止在这些类型的分区上执行程序、设备文件或 setuid 位,如下所示摘抄:

/dev/sda5 	 /nas          ext4    defaults,nosuid,nodev,noexec 1 2

为了防止权限提升和任意脚本执行,为 /tmp 创建一个单独的分区,并将其挂载为 nosuidnodevnoexec

/dev/sda6  	/tmp         ext4    defaults,nosuid,nodev,noexec 0 0

8. 使用 LUKS 在块级别加密硬盘

为了保护敏感数据在物理访问机器硬盘的情况下被窥探。我建议您阅读我们的文章《使用 LUKS 进行 Linux 硬盘数据加密》来学习如何加密磁盘。

9. 使用 PGP 和公钥加密技术

为了加密磁盘,请使用 PGP 和公钥加密或 OpenSSL 命令通过密码加密和解密敏感文件,如本文配置加密的 Linux 系统存储中所示。

10.仅安装所需的最少数量的软件包

避免安装不重要或不必要的程序、应用程序或服务,以避免软件包漏洞。这可以降低软件受到损害可能导致其他应用程序、系统部分甚至文件系统受到损害的风险,最终导致数据损坏或数据丢失。

11.经常更新系统

定期更新系统。通过发出以下命令,使 Linux 内核与最新的安全补丁保持同步,并使所有已安装的软件保持最新版本:

yum update

12.禁用Ctrl+Alt+Del

为了防止用户在物理访问键盘或通过远程控制台应用程序或虚拟化控制台(KVM,虚拟化软件界面)后重新启动服务器,您应该禁用 Ctrl+Alt通过执行以下命令 +Del 键序列。

systemctl mask ctrl-alt-del.target 

13.删除不需要的软件包

安装您的机器所需的最少软件。切勿安装额外的程序或服务。仅安装来自受信任或官方存储库的软件包。如果计算机注定要作为服务器运行其整个生命周期,请使用最少的系统安装。

使用以下命令之一验证已安装的软件包:

rpm -qa

制作所有已安装软件包的本地列表。

yum list installed >> installed.txt

查看无用软件列表并通过发出以下命令删除软件包:

yum remove package_name

14. 守护进程更新后重新启动 Systemd 服务

使用以下命令示例重新启动 systemd 服务以应用新更新。

systemctl restart httpd.service

15.删除不需要的服务

使用以下 ss 命令识别正在侦听特定端口的服务。

ss -tulpn

要列出所有已安装的服务及其输出状态,请发出以下命令:

systemctl list-units -t service

例如,CentOS 默认最小安装附带默认安装的 Postfix 守护进程,该守护进程以主机名称在端口 25 下运行。删除 Postfix 网络服务,以防您的计算机不用作邮件服务器。

yum remove postfix

16. 加密传输的数据

请勿使用不安全的协议进行远程访问或文件传输,例如 TelnetFTP 或其他纯文本高级协议,例如 SMTP、HTTP、NFS 或 SMB,这些协议默认情况下,不加密身份验证会话或发送的数据。

仅使用 sftp、scp 进行文件传输,使用 SSH 或基于 SSH 隧道的 VNC 进行远程控制台连接或 GUI 访问。

为了通过 SSH 建立 VNC 控制台隧道,请使用以下示例,将 VNC 端口 5901 从远程计算机转发到本地计算机:

ssh -L 5902:localhost:5901 remote_machine

在本地计算机上运行以下命令以虚拟连接到远程端点。

vncviewer localhost:5902

17. 网口扫描

使用 Nmap 工具从 LAN 上的远程系统执行外部端口检查。这种类型的扫描可用于验证网络漏洞或测试防火墙规则。

nmap -sT -O 192.168.1.10

18. 包过滤防火墙

使用firewalld实用程序保护系统端口,打开或关闭特定服务端口,尤其是众所周知的端口(<1024)。

通过发出以下命令来安装、启动、启用和列出防火墙规则:

yum install firewalld
systemctl start firewalld.service
systemctl enable firewalld.service
firewall-cmd --list-all

19. 使用 Tcpdump 检查协议数据包

使用 tcpdump 实用程序在本地嗅探网络数据包并检查其内容是否存在可疑流量(源-目标端口、TCP/IP 协议、第二层流量、异常 ARP 请求)。

为了更好地分析tcpdump捕获的文件,请使用更高级的程序,例如Wireshark

tcpdump -i eno16777736 -w tcpdump.pcap

20. 防止 DNS 攻击

检查解析器的内容,通常是 /etc/resolv.conf 文件,该文件定义了用于查询域名的 DNS 服务器的 IP 地址,以避免人为攻击-中间攻击、根 DNS 服务器不必要的流量、欺骗或创建 DOS 攻击。

这只是第一部分。在下一部分中,我们将讨论 CentOS 8/7 的其他安全提示。