保护 cPanel 服务器的 15 个简单技巧

已发表: 2017-06-27

保护 cPanel 服务器的 15 个简单技巧
服务器安全是一个复杂且多方面的主题,可能需要数年时间才能完全理解和掌握。

大多数管理员必须努力在其服务器上开发和部署大量安全措施,以防止攻击和破坏。

有问题的安全措施可以简单到需要更安全的密码,也可以复杂到为存储的数据部署更新的加密协议。

然而,幸运的是,cPanel 服务器安全性更倾向于服务器安全范围的“简单”端。

这里有 15 种简单的方法,可以在几分钟内显着提高服务器的安全性。

1. 保护 SSH

虽然 SSH 是一种加密协议,但它并非不可渗透。 这意味着,作为管理员,您必须在配置过程中进行尽职调查。

以下是提高 SSH 安全性的三个简单步骤。

1.更改SSH端口

将 SSH 保持在默认端口 22 上会使其容易受到暴力攻击。 为了防止这些攻击,您应该为 SSH 选择一个随机端口,以使潜在的攻击者更难识别其位置。

以下是更改 SSH 端口的步骤。

  1. 通过 SSH 登录到您的服务器。
  2. 通过发出以下命令编辑位于/etc/ssh/sshd_config的 SSH 配置文件:
    纳米 /etc/ssh/sshd_config
  3. 在下面这行设置一个随机的SSH连接端口。原文:Port 22
    新线路:端口 2468
  4. 现在,通过执行以下命令重新启动 SSH 服务:
    服务 sshd 重启

2.禁用root登录

要添加额外的安全层并进一步加强您的 SSH,您可以禁用 root 用户并创建一个单独的用户来访问服务器。

方法如下:

  1. 通过 SSH 登录到您的服务器。 在禁用 root 登录之前,我们将创建一个用户来访问服务器:
    adduser new_username_name
    passwd new_username_name
  2. 系统将要求您为此新用户设置密码。 确保密码尽可能强(至少 10 个字符,带有多个数字和符号),然后使用以下代码行将新用户添加到轮组中,授予其访问服务器的权限。
    # usermod -aG wheel new_username_name
  3. 现在,禁用 root 用户。 编辑位于/etc/ssh/sshd_config的 SSH 配置文件。
    纳米 /etc/ssh/sshd_config
  4. 将行:“PermitRootLogin yes”更改为“PermitRootLogin no”
  5. 现在,通过执行以下命令重新启动 SSH 服务。
    服务 sshd 重启

3.禁用SSH V1

随着 SSHv2 的出现,其前身 SSHv1 几乎已经过时,强烈建议您禁用不太安全且过时的 SSH 以提高服务器的安全性。

  1. 通过 SSH 登录到您的服务器并编辑位于/etc/ssh/sshd_config的 SSH 配置文件。
  2. 取消注释以下行。
    协议 2,1
  3. 并将其更改为:
    协议 2
  4. 现在,通过执行以下命令重新启动 SSH 服务:
    # 服务 sshd 重启

2. 启用 cPHulk 保护

蛮力攻击是一种黑客方法,它依赖于自动化系统来猜测您的 Web 服务器的密码。

cPHulk 是一项易于使用的服务,可以保护您的服务器免受大多数暴力攻击。

要启用 cPHulk,请登录 WHM→ Security CentercPHulk Brute Force Protection ,然后单击Enable

您现在可以根据 cPanel 用户名、IP 地址和其他参数设置自定义规则。

一旦达到设定的失败登录尝试次数,cPHulk 将阻止来自正在使用的 IP 地址的任何进一步尝试。

注意:如果您有静态 IP,那么强烈建议您将其添加到白名单管理中,这样您就不会将自己锁定在服务器之外。

3. 设置 ConfigServer 防火墙 (CSF)

CSF(ConfigServer 安全和防火墙)是 cPanel 服务器最流行的防火墙之一。

它不仅通过扫描各种身份验证日志文件充当防火墙,而且还定期扫描您的服务器,并为您提供个性化的建议以提高服务器的安全性。

除了其主要功能外,CSF 还允许您访问许多有用的功能,例如“查看系统日志”、IPTable 日志、IFD 统计信息等等。

安装 ConfigServer 防火墙

使用 cPanel 在您的服务器中安装 CSF 非常容易。 请参阅我们的分步指南,了解如何将 ConfigServer 防火墙安装到 cPanel/WHM?

遵循我们上述指南中的说明后,您可以直接从 WHM 管理 CSF。

为此,请登录您的WHM,导航至插件 → ConfigServer 安全和防火墙。

在这里,您将看到一些可用于进一步加强安全性的选项和措施。

4. 设置 ClamAV 杀毒软件

虽然 Linux 服务器比基于 Windows 的服务器具有更“自然”的病毒抵御能力,但安装额外的防病毒应用程序仍然被认为是明智的。

ClamAV 很容易作为插件安装在您的服务器上,是 cPanel 服务器上最流行的开源防病毒插件之一,它允许个人用户扫描他们的主目录和电子邮件以查找潜在的恶意文件。

同样,为简洁起见,请参阅我们的分步指南如何从 WHM 安装 ClamAV 插件

安装 ClamAV 后,您可以扫描具有 cPanel 用户级别访问权限的任何特定 cPanel 帐户。 这是我们关于如何从 cPanel 运行 ClamAV 病毒扫描的指南。

5. 切换到 CloudLinux

CloudLinux 是免费 CentOS 的付费替代品,被认为是 cPanel 服务器最安全的操作系统之一。

使用 CloudLinux,您可以通过保持 cPanel 帐户彼此隔离来提高服务器密度和稳定性。

它通过使用 LVE(轻量级虚拟化环境)来实现这一壮举,该环境限制了每个用户的处理、内存和连接等服务器资源,从而确保单个用户不会危及服务器稳定性并导致所有站点变慢。

操作系统将用户相互“关押”以避免任何安全漏洞。 任何不稳定或受感染的脚本或恶意软件都不能通过任何受感染的帐户在服务器上传播。

以下是 CloudLinux 操作系统的主要安全特性:

  1. CageFS
  2. 强化PHP
  3. 安全链接

CageFS

CageFS 对每个用户进行封装,防止用户看到对方和读取敏感信息。 它还可以防止大量攻击,包括大多数权限提升和信息泄露攻击。

→ 使用 CageFS,用户只能访问安全文件。
→ 用户看不到服务器配置文件,例如 Apache 配置文件。
→ 用户无法查看其他用户,也无法检测其他用户的存在。
→ 用户看不到其他用户的进程。

强化PHP

旧的 PHP 版本 5.2、5.3、5.4 虽然被广泛使用,但存在 PHP.net 社区未修补的漏洞。
CloudLinux 中的 HardenedPHP 修复了这些漏洞并保护了旧版本和不受支持的版本。

→ 它通过修补所有 PHP 版本来确保应用程序和服务器的安全。
→ 它为所有用户提供安全性和灵活性。
→ 它通过不强制升级到较新的 PHP 版本来提高客户保留率
→ 通过 PHP 选择器选项从安装在同一 Web 服务器上的多个版本中选择 PHP 版本

安全链接

SecureLinks 是内核级技术,它通过防止所有已知的符号链接 (symlink) 攻击来加强服务器,同时防止恶意用户创建符号链接文件。
→ 使用 SecureLinks,您可以通过阻止恶意用户创建指向他们不拥有的文件的符号链接和硬链接来防止攻击。
→ 它可以防止恶意用户创建符号链接文件。
→ 增强服务器的安全级别,防止符号链接攻击。

6.禁用Ping请求

ping 是 ICMP(Internet 控制消息协议)请求,应禁用它以避免“Ping of Death”和“Ping Flood”攻击。

死亡之平

Ping of Death 是攻击者故意发送大于 IP 协议允许的 IP 数据包而导致的拒绝服务攻击。

结果,很多操作系统在收到超大数据包时不知道该怎么办,机器会死机、死机或重启。

平洪水

Ping Flood 是一种简单的拒绝服务攻击,攻击者使用 ICMP 数据包淹没受害者,希望受害者以打包的 ICMP 回复进行响应,从而消耗传入和传出带宽。

如果目标机器速度较慢,则可能会消耗其 CPU 周期,从而显着降低系统的处理能力。

要禁用 ping 响应,请以 root 用户身份运行以下命令:
回声“1”> /proc/sys/net/ipv4/icmp_echo_ignore_all
回声“1”> /proc/sys/net/ipv4/icmp_echo_ignore_all
要使用 IPtables 防火墙禁用 ping 响应,请以 root 用户身份运行以下命令:
iptables -A INPUT -p icmp -j DROP

7.配置主机访问控制

在某些情况下,您可能希望仅允许对一个 IP 提供特定服务。 为了实现这个目标,您需要做的就是正确配置您的主机访问控制,它允许您根据用户的 IP 地址创建允许或拒绝服务器访问的规则。

拒绝所有连接并仅允许您希望进行的连接是提高服务器安全性以防止针对特定端口的暴力攻击的最安全做法。

为了使用主机访问控制配置规则,您需要三件事。

  1. 您要为其创建规则的服务
  2. 您要允许或拒绝权限的 IP 地址
  3. 以及您想要采取的行动(例如允许或拒绝)

要在主机访问控制中设置规则,请登录您的 WHM,导航到安全中心主机访问控制

以下是锁定 SSH 服务的示例:

守护进程访问列表行动评论
sshd 192.168.3.152 允许允许本地 SSH 访问
sshd 1xx.6x.2xx.2xx 允许允许来自我的特定 IP 的 SSH
sshd 全部否定拒绝所有其他 IP 的访问

注意:规则有优先顺序。 如果您选择使用少数人的允许,则必须将“允许”规则放在“拒绝”规则之前,然后从所有技术中拒绝。

8. 设置 Mod_Security

2017 年,超过 70% 的恶意服务器攻击是在 Web 应用程序级别执行的。
为了降低与您的特定服务器相关的风险,行业最佳实践是部署 WAF 或 Web 应用程序防火墙以提高外部安全性并在攻击到达 Web 应用程序之前检测/防止攻击。

ModSecurity 是最古老和最流行的 Web 应用程序防火墙之一,旨在防止:

  1. SQL 注入
  2. iFrame 攻击
  3. Webshel​​l/后门检测
  4. 僵尸网络攻击检测
  5. HTTP 拒绝服务 (DoS) 攻击

安装 mod_security 可以在几分钟内完成,只需对现有基础架构进行少量更改。

您可以从 Easy Apache 配置中启用它。

要创建 Mod_Security 规则,请转到ModSeurity 工具并单击规则列表。

在新窗口中,它将显示所有规则。 您可以单击Add Rule来创建新规则。 请注意,您需要重新启动 Apache 才能部署新规则。

要了解有关 ModSecurity 工具的更多信息,请单击此处。

9. 使用 RootKit Hunter 扫描您的系统

Rootkit Hunter 或 rkhunter 是一个基于 UNIX 的工具,用于扫描 rootkit、后门和可能的本地漏洞。

它将重要文件的 SHA-1 哈希值与在线数据库中的文件进行比较,以确保文件的完整性。

它还会搜索默认的 rootkit 目录、过多的权限、隐藏文件、内核模块中的可疑字符串以及大量其他可能危及服务器安全的事物。

安装 RootKit Hunter

将当前工作目录更改为所需的安装目录。
cd /usr/local/src
使用 wget 命令下载 rkhunter 包。
wget http://dfn.dl.sourceforge.net/sourceforge/rkhunter/rkhunter-1.4.2.tar.gz
解压下载的 rkhunter 存档。
tar -zxvf rkhunter-1.4.2.tar.gz
将当前工作目录更改为 rkhunter 目录。 确保将目录名称替换为实际的目录名称。 在我们的例子中,它是“rkhunter-1.4.2”,可以在发布新更新时进行更改。
cd rkhunter-1.4.2
通过执行安装脚本来安装 rkhunter 包。
./installer.sh –layout default –install
这将在服务器中安装 rkhuter 工具。

配置 rkhunter

您可以在路径/etc/rkhunter.conf找到 rkhunter 的配置文件。 通过更改该文件中的参数值,我们可以修改 rkhunter 的属性来保护服务器。 允许通过 SSH 登录
ALLOW_SSH_ROOT_USER = 是
rkhunter 安装目录
INSTALLDIR=/路径/的/安装/目录
rkhunter 数据库目录
DBDIR=/var/lib/rkhunter/db
rkhunter 脚本目录
SCRIPTDIR=/usr/local/lib64/rkhunter/scripts
rkhunter 临时目录
TMPDIR=/var/lib/rkhunter/tmp

使用 rkhunter 手动扫描

要使用 rkhunter 运行手动扫描,请运行以下命令。
/usr/local/bin/rkhunter -c
默认情况下,rkhunter 以交互模式运行。 rkhunter 执行一系列扫描,在每组扫描之后,您需要按 Enter 键继续扫描。

要跳过交互模式运行,并扫描所有设置,请使用以下命令。 请注意,-c 是检查本地系统,-sk 是跳过按键。
/usr/local/bin/rkhunter -c -sk
要扫描整个文件系统,请运行以下命令。
rkhunter –检查

使用 Rkhunter 安排自动扫描

要创建计划的自动扫描,请创建一个执行 rkhunter 扫描并通过电子邮件发送扫描结果的脚本。

如果您想每天运行 rkhunter 扫描,请将脚本上传到/etc/cron.daily目录和/etc/cron.weekly以进行每周扫描。

在编辑器中打开一个文件并编写以下脚本以每天安排它。
vi /etc/cron.daily/rkhunter.sh
安排每日扫描的脚本

#!/bin/sh

(

/usr/local/bin/rkhunter --versioncheck

/usr/local/bin/rkhunter --update

/usr/local/bin/rkhunter --cronjob --report-warnings-only

) | /bin/mail -s 'rkhunter Daily Run (HostnameOfServer)' youremail@address

注意:确保将HostnameOfServeryourremail@address更改为实际的服务器主机名和脚本中要发送通知的电子邮件地址。

rkhunter 更新和选项

检查 rkhunter 当前版本。
/usr/local/bin/rkhunter –版本检查
更新 rkhunter 版本。
/usr/local/bin/rkhunter –更新
如果数据库文件被更新,检查并保存更新的值和属性。
/usr/local/bin/rkhunter –propupd
rkhunter 日志存储应用程序完成的所有活动和遇到的错误。 检查 rkhunter 日志。
/var/log/rkhunter.log
您可以参考其他 rkhunter 选项。
/usr/local/bin/rkhunter –帮助

10. 使用 Maldet 扫描您的系统

Maldet,也称为 Linux Malware Detect (LMD) 是一种适用于 Linux 系统的恶意软件扫描程序,旨在有效检测 php 后门程序、暗邮件程序以及可能存在于受感染网站上的许多其他恶意文件。

安装 Maldet

  1. SSH 到服务器并下载 tar 文件。
    wget href=”http://www.rfxn.com/downloads/maldetect-current.tar.gz”>
  2. 提取文件。
    tar -xzf maldetect-current.tar.gz
  3. 转到maldet文件夹。
    cd 恶意检测-*
  4. 要安装 maldet,请运行以下命令。
    sh ./install.sh

在 Linux 服务器中使用 Maldet

您应该始终打开一个新的屏幕会话并运行扫描,因为根据系统的磁盘空间使用情况,扫描可能需要数小时。 要运行扫描,请使用以下命令。
maldet -a /path/to/scan 或

maldet –scan-all /path/to/scan
您也可以简单地运行以下命令来扫描整个系统
马尔代特-a /
服务器扫描完成后,您将在最后获得 SCAN ID。 要查看扫描的报告,请使用以下命令。 请注意,您需要将 SCAN ID 替换为实际 ID。
maldet – 报告扫描 ID
例如:maldet——报告 062617-2220.1771

要隔离先前扫描的所有恶意软件结果,请运行以下命令。
maldet -q 扫描 ID
前任。 maldet-检疫 062617-2220.1771

自动化 Maldet

您可以编辑 maldet 配置文件conf.maldet以自动化流程,例如,

  1. email_alert设置1以将报告发送到配置的电子邮件帐户。
  2. email_addr中,设置您要接收扫描报告的电子邮件帐户。
  3. 将 quar_hits更改1 ,以便将发现的任何恶意软件移动到目录“ /usr/local/maldetect/quarantine ”,并且您会收到有关配置的电子邮件地址的通知。
  4. quar_susp更改1 ,这将启用 cPanel 用户的帐户暂停或将非 cPanel 用户的外壳访问权限设置为“ /bin/false ”。

11. 设置 Cron 作业以每天运行 ClamAV

由于添加、更新和删除操作对驻留在服务器上的文件进行迅速,因此确保所有新更改都安全并使用防病毒应用程序正确扫描至关重要。

您可以使用 ClamAV 扫描程序 cron 作业运行每周扫描,这些扫描将在“非工作时间”期间自动启动。

使用以下命令运行此 cron。
for i in awk '!/nobody/{print $2 | "sort | uniq" }' /etc/userdomains | sort | uniq awk '!/nobody/{print $2 | "sort | uniq" }' /etc/userdomains | sort | uniq awk '!/nobody/{print $2 | "sort | uniq" }' /etc/userdomains | sort | uniq ; 做 /usr/local/cpanel/3rdparty/bin/clamscan -i -r /home/$i 2>>/dev/null; 完成 >> /root/infections&
此命令递归搜索主目录中的垃圾邮件和受感染文件。

12.禁用Apache头信息

由于您的服务器签名包含 Apache 和操作系统版本等信息,因此使用 WHM 登录隐藏此信息以防止公众窥探是很重要的。

  1. 登录 WHM 后。 导航到服务配置Apache 配置全局配置
  2. 设置以下值。
    服务器签名 = 关闭
    服务器令牌 = 仅限产品

13.隐藏PHP版本信息

与 Apache 标头一样,您也不应该公开 PHP 版本信息。 以下是隐藏此信息的步骤。

  1. 登录 WHM 后。 导航到服务配置PHP 配置编辑器
  2. 设置以下值。
    暴露_php =“关闭”

14.禁用FTP并改用SFTP

尽管您不会从它们的名称中猜到它,但 FTP 和 SFTP 协议彼此之间的区别再大不过了。

使用标准 FTP,客户端和服务器之间传输的所有数据都是纯文本。 这使得窃听者可以检索您的机密信息,包括登录凭据和其他“私人”消息。

与标准 FTP 不同,SFTP(SSH 文件传输协议)对命令和数据进行加密,防止密码和敏感信息以纯文本形式通过网络传输。

单击此处了解生成 SSH 密钥并通过 SFTP 客户端连接到服务器的步骤。

如果您只想允许 SFTP 连接并禁用计划 FTP,请按照 WHM/cPanel 中的以下步骤操作。

  1. 以 root 用户身份登录到您的 WHM/cPanel。
  2. 导航到FTP 服务器配置。 在TLS Encryption Support中将其更改为Required (Command) 并单击Save button

15. 保护 cPanel 和 WHM 访问

强制 HTTPS URL 访问 cPanel/WHM

要使用基于 SSL 的加密保护您的 cPanel 或 WHM 登录,请执行以下两个简单步骤。

  1. 登录 WHM 并导航HomeServer ConfigurationTweak Settings
  2. 滚动右侧到重定向选项卡并使用下图所示的设置。

禁用 cPanel-ID 登录

cPanel 服务器允许两种类型的登录。

第一个是默认/标准用户名和密码登录,第二个是使用cPanel ID 登录服务器。

cPanel ID 允许用户部署单个用户名和密码来访问各种 cPanel 服务。

虽然此方法非常适合管理大型数据中心并经常雇用新技术人员的组织,但如果您只有一台服务器,则应使用以下步骤禁用它。

  1. 登录 WHM 并导航到HomeSecurity Center → Manage External Authentication
  2. 将 cPanel-ID 登录更改为禁用,如下图所示。

结论

通过在您的 VPS 或专用服务器上实施这 15 条简单的技巧,您将立即减少对内部和外部攻击的脆弱性,并在几个小时内提高系统的安全性。

虽然这些技巧会减少对您服务器的威胁数量,但它们并不是万能的。

为了优化系统的安全性,您需要尽职调查并定期更新自己在服务器安全领域的最新动态。

但是,每月只需进行几个小时的研究,您就可以保持在 cPanel 安全性的最前沿,并确保您和您的公司在未来几年内保持安全。

您对上面列出的 15 个提示有任何疑问吗? 您是否找到了想要分享的 cPanel 服务器的任何新安全功能? 请在下面的评论中告诉我们。