本小节阐述如何保护您 Linux 服务器的安全以及在 Linux 服务器上实现 PCI DSS 合规性。

安装软件的最新版本

在您开始之前,需要时建议将您服务器上所有的软件更新到最新版本。

禁用较弱的 SSL/TLS 密码和协议

接下来,需要运行从 Plesk 安装目录获取的 PCI Compliance Resolver 工具。这将会禁用由 Plesk 管理的 web 和邮件服务器上较弱的 SSL/TLS 密码和协议,同时还会进行其它安装更改。

如下运行该工具:

登录服务器 shell。

运行以下命令:

plesk sbin pci_compliance_resolver {--enable|--disable} [<service>]

下面的值可用于 <service> 参数:

  • panel - 为 sw-cp-server (nginx for Plesk) 应用安全更改。
  • apache - 为 Apache 服务器应用安全更改。
  • courier - 为 Courier IMAP 应用安全更改。
  • dovecot - 为 Dovecot 应用安全更改。
  • qmail - 为 qmail 应用安全更改。
  • postfix - 为 Postfix MTA 应该安全更改。
  • proftpd - 为 ProFTPd 应用安全更改。
  • all - 为上述所有已安装的服务应用安全更改。这是默认值。

使用  --enable 选项运行该工具会将下面的安全更改应用到指定的服务:

  • 设置下列密码: "EECDH+AESGCM+AES128:EECDH+AESGCM+AES256:EDH+AESGCM+AES128:EDH+AESGCM+AES256:EECDH+SHA256+AES128:EECDH+SHA384+AES256:EDH+SHA256+AES128:EDH+SHA256+AES256:EECDH+SHA1+AES128:EECDH+SHA1+AES256:EDH+SHA1+AES128:EDH+SHA1+AES256:EECDH+HIGH:EDH+HIGH:AESGCM+AES128:AESGCM+AES256:SHA256+AES128:SHA256+AES256:SHA1+AES128:SHA1+AES256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!KRB5:!aECDH:!EDH+3DES".
  • 在最新的操作系统版本上,设置下面的协议:  "TLSv1.1 TLSv1.2" 。在较早的版本上(包括 CentOS 5, 、Red Hat Enterprise Linux 5、CloudLinux 5),设置下面的协议: "TLSv1 TLSv1.1 TLSv1.2" (事实上只有 TLSv1 会在这些操作系统上工作运行)。
  • 设置 DH 参数大小为 2048。
  • 禁用 SSL/TLS 压缩。
  • 为 Dovecot 设置 disable_plaintext_auth = yes
  • 不允许使用纯文本验证 Courier 的非加密连接。

使用  --disable 选项运行工具部分恢复使用  --enable 选项运行工具所做的更改。DH 参数大小和 SSL/TLS 压缩设置仍保持不变,而一系列密码和协议则恢复为默认设置(该设置包含 "TLSv1 TLSv1.1 TLSv1.2" 协议和 "HIGH:!aNULL:!MD5" 密码)。

如果您需要更改所有服务的协议和/或密码,则可以调用 server_pref 工具(可进入此处找到使用该工具的具体详情)。

如果您需要为某些服务设置指定参数,可手动调用  sslmng 工具:

plesk sbin sslmng --ciphers="EECDH+AESGCM+AES128:EECDH+AESGCM+AES256:EDH+AESGCM+AES128:EDH+AESGCM+AES256:EECDH+SHA256+AES128:EECDH+SHA384+AES256:EDH+SHA256+AES128:EDH+SHA256+AES256:EECDH+SHA1+AES128:EECDH+SHA1+AES256:EDH+SHA1+AES128:EDH+SHA1+AES256:EECDH+HIGH:EDH+HIGH:AESGCM+AES128:AESGCM+AES256:SHA256+AES128:SHA256+AES256:SHA1+AES128:SHA1+AES256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!KRB5:!aECDH:!EDH+3DES" --protocols="TLSv1.1 TLSv1.2" --strong-dh --disable-tls-compression

添加选项 "--service <some_service>" 到上述命令,如果需要可更改某服务的 SSL/TLS 设置。

Note: 通过 sslmng 工具所做的更改可被随后调用 server_pref 工具或被 Plesk 更新实现的更改所覆盖。

局限性

存在下面的局限性:

  1. 无法配置 qmail 邮件代理的协议;因此 qmail 不满足 PCI DSS 安全标准。建议使用 Postfix。
  2. 无法通过 Plesk 工具更改 qmail 的密码(尽管可以通过配置文件进行更改)。
  3. CentOS 5、Red Hat Enterprise Linux 5 和 CloudLinux 5 上不支持使用 TLSv1.1 和 TLSv1.2。
  4. 无法从操作系统供应商处 (CentOS 5、Red Hat Enterprise Linux 5、CloudLinux 5) 为 Apache 配置 DH 参数的大小。
  5. 没有在 Debian 7 上为 ProFTPd、Dovecot 和 Postfix 禁用 SSL/TLS 压缩。

禁止从外部访问 MySQL 数据库服务器

您还需要禁止从外部地址访问 MySQL 数据库服务器。要执行该操作,请使用以下命令:

plesk sbin mysqlmng --bind-address local

保护有关文件的信息

为了减少因披露有关 Apache Web 服务器的文件和其属性信息而引起的安全风险,需将 FileETag 指令添加到 Web 服务器配置文件中。

若要进行此操作,请执行下列步骤:

  1. 打开用于编辑的 Web 服务器配置文件:
    • 在 Debian 和 Ubuntu 上,该文件位于  /etc/apache2/plesk.conf.d/roundcube.htaccess.inc
    • 在其它 Linux 版本上,该文件位于  /etc/httpd/conf/httpd.conf
  2. 添加  FileETag MTime Size 一行并保存文件。
  3. 重启 Web 服务器。

在基于 Debian 包的系统上,请使用命令  /etc/init.d/apache2 restart

在基于 RPM 包的系统上,请使用命令  /etc/init.d/httpd restart

安全的 FTP 访问

若要阻止 ProFTPd 在 FTP 连接时显示有关其版本的信息,请如下操作:

  1. 打开用于编辑的 ProFTPd 配置文件  /etc/proftpd.conf
  2. 将以下行插入文件:  ServerIdent off
  3. 保存文件。

如果您允许通过 FTP 连接您的服务器,则必须要禁止除安全 FTPS 连接之外的所有 FTP 连接。

若只允许通过 FTPS 连接您的服务器,请如下操作:

  1. 进入  工具与设置 > 安全策略

  2. 勾选  仅允许安全 FTPS 连接 ( FTP 使用策略)

    image-Security-Policy-FTPS