小编已经分享了vps搭建第四部分的教程,今天小编将给大家讲解vps搭建需要的额外的安全性,也就是搭建教程的第五部分。
到目前为止,我们安装的默认设置提供了合理的安全级别,只要我们选择难以猜测的唯一密码并快速安装安全补丁(最好是自动安装)。尽管如此,我们的vps会不断受到黑客和垃圾邮件发送者的攻击,因此我们应该尽可能多地删除漏洞并定期检查日志文件。vps搭建需要额外的安全性有:
1、限制 Virtualmin 登录
Virtualmin界面是黑客获得对您服务器的root访问权限的另一种方式。我强烈建议为任何超级用户或“sudo”组成员的用户启用双重身份验证。我们可以在Webmin > Webmin Configuration > Two-Factor Authentication中启用此功能。我发现选择Google Authenticator 作为提供者是最简单的,但实际上使用Authy进行身份验证(因为它可以避免使用 API 密钥,而且如果你丢失了手机,你可以恢复你的帐户)。
我们可能需要安装 Perl 模块 Authen::OATH,这在 Ubuntu 中很容易做到:sudo apt install libauthen-oath-perl
我们可以在Webmin > Webmin 用户 > 密码限制中强制使用强密码,建议至少设置10个字符的最小长度。
我们还可以根据用户限制对某些Webmin模块的访问,并且在任何情况下删除不需要的模块以整理 Webmin 菜单都很有用。我建议创建一个名称为“管理员”的组,然后将自己添加到该组中。然后在 管理员 > 可用的 Webmin 模块 中停用“硬件”和“集群”组中的几乎所有内容,以及 左侧菜单栏中未使用的模块中显示的所有内容。我通过转到 Webmin > Webmin Configuration > Reassign Modules将“系统时间”模块移动到“系统”菜单。当你在那里时,访问系统时间中的“时间服务器同步”选项卡并配置一个时间服务器名称(我使用uk.pool.ntp。 这很重要,因为如果服务器时间偏离得太远,两因素身份验证将不起作用。
2、禁用不必要的服务
proftpd 、clamav-daemon、clamav-freshclam 和命名服务通常不是必需的,可以通过转到Webmin > Bootup and Shutdown并单击 Start at boot time > No > Save 然后 Stop Now和Delete来禁用以节省内存。您还可以在 Webmin > Networking > Firewalld中禁用 ftp 端口 20 和 FTP 。(不要为 TCP 或 UDP 禁用 DNS 端口 53,因为虽然它可能看起来有效,但如果对传出查询的响应太大,则可能会被阻止。)
3、减轻 cookie 劫持
在 Webmin > 工具 > PHP 配置中的全局 PHP 配置中,您可以通过单击左上角的设置齿轮并将列表更改为您使用的版本来设置 PHP 配置文件列表(默认值是错误的)。例如:
/etc/php/*/fpm/php.ini=配置通过 php-fpm 运行的脚本
/etc/php/*/cli/php.ini=配置命令行脚本
要减轻 cookie 劫持,请添加以下设置:
session.cookie_samesite = "宽松"
session.cookie_httponly = 1
session.cookie_secure = 1
要使站点以 php-fpm 模式运行,请转到 Virtualmin > Server Configuration > PHP Options > PHP script execution mode。要将此设置设为新站点的默认设置,请转到 Vitualmin > System Settings > Server Templates > Default settings > PHP options。重复设置子服务器。
4、限制过时的密码套件-- PCI DSS、HIPAA和NIST合规性
在Webmin > Servers > Apache Webserver > Global Configuration > Configure Apache Modules 中启用“ headers ”和“ expires ”模块。它们在下面是必需的,也经常在“.htaccess”文件中使用,以提供“友好”的 URL 并控制页面缓存超时。如果我们看到服务器的默认 Apache 页面而不是我们的网站,则可能是这些缺少模块的原因。
要限制使用过时和不安全的 SSL 密码,启用OCSP stapling 和 HTTP Strict Transport Security并在浏览器中启用跨站点脚本保护,您可以将这些语句添加到根目录中/etc/apache2/apahe2.conf文件的末尾服务器的,也可以从Webmin > Servers > Apache Webserer > Global Configuration > Edit Config Files访问。它们可以通过 ImmuniWeb和Qualys SSL Labs服务器测试进行检查,应该足以让您获得 A+ 评级。之后不要忘记单击“应用更改”(Apache Webserver 页面右上角的刷新符号)。
同样,在 Webmin > Webmin Configuration > SSL Encryption 检查所有低于 TLSv1.2 的 SSL 协议都被拒绝并选择“仅符合 PCI 的强密码”,同样在 Webmin > Usermin Configuration > SSL Encryption。
小心限制与 Postfix (/etc/postfix/main.cf) 或Dovecot (/etc/dovecot/dovecot.conf) 的电子邮件连接太多,因为那里有许多旧的电子邮件系统无法处理较新的密码和你可能会丢失消息。尽管如此,您仍应确保电子邮件登录密码不会以纯文本形式显示。对于外发邮件,请转到 Webmin > Servers > Postfix Mail Server > SMTP Authentication and Encryption 并选中Require SASL SMTP authentication并禁止通过不安全的连接进行SASL身份验证。对于传入的邮件,请转到 Webmin > 服务器 > Dovecot IMAP/POP3 服务器 > SSL 配置 并选中 Disallow plaintext authentication in non-SSL mode。
默认情况下,任何系统问题的电子邮件报告都将发送给用户“root”。您可以通过转到Webmin > 系统 > 用户和组 > root并单击“阅读电子邮件”按钮来阅读它们。将它们转发到外部电子邮件地址通常更方便。您可以通过转到Webmin > Servers > Postfix Mail Server > Mail Aliases进行配置,选择创建新别名并将地址设置为“root”,并将您的电子邮件地址设置为“别名到”、“电子邮件地址”。
5、启用防火墙和fail2ban
防火墙可能没有您期望的那么有用,因为vps上的大多数服务必须始终可以公开访问,并且无论如何都应该禁用不必要的服务。然而,防火墙有助于防止某些类型的拒绝服务(DoS)攻击。Firewalld由 Webmin 默认设置并启用,无需进一步配置,它适用于IPv6和IPv4。
Fail2ban与firewalld一起使用,自动阻止持续违规者的IP地址。它不再能够防止“暴力”密码攻击,因为僵尸网络只是不断地改变他们的 IP 地址来绕过它,但它有时仍然对减少服务器负载很有用。它可以在 Webmin > Networking > Fail2ban Intrusion Detector进行配置。默认设置往往弊大于利,因此需要进行一些调整。
请注意,Webmin 目前存在一个错误,该错误会阻止fail2ban在重新启动后自动启动。输入以下命令来解决这个问题:
sudo systemctl 启用 fail2ban
首先,我建议去 Filter Action Jails 并将postfix和dovecot jails 设置为较大的值(例如每天 10,000 次尝试),因为合法用户有时会错误配置他们的电子邮件客户端,如果他们触发了对共享 IP 地址的禁令,他们可以结束阻止整个建筑物的电子邮件。默认的ssh和webmin-auth 监狱可以保留。
接下来,建议添加WP Fail2Ban Redux插件中所述的wordpress-hard和wordpress-soft过滤器和监狱, 以及此处所述的apache-404 过滤器和监狱。
最后,fail2ban 将几乎完全无效,除非到期时间从 10 分钟增加到 20 天左右(这似乎是可以达到的最大值)。
在/etc/fail2ban/fail2ban.conf 我更改此设置:
[默认]
dbpurage = 20d
在/etc/fail2ban/jail.conf 我更改了这些设置:
[默认]
bantime = 20d
findtime = 20d
maxretry = 9
在/etc/fail2ban/jail.local 我添加这些设置:
我使用以下内容创建了一个新文件 /etc/fail2ban/paths-overrides.local :
[默认]
apache_error_log = /var/log/virtualmin/*_error_log
apache_access_log = /var/log/virtualmin/*_access_log
6、病毒扫描程序
不幸的是,Linux的病毒扫描程序往往非常昂贵或非常无效。ImunifyAV 的免费版本是我找到的最好的。它可以按此处所述进行安装,也可以按此处所述进行配置。我们将需要为其创建一个虚拟主机,它可以是一个子域,也可以是我们已经拥有的站点上的一个页面。然后,我们需要创建一个配置文件来告诉 Imunify 该站点在哪里,以及所有者和组是谁。您可以使用以下命令执行此操作:
sudo mkdir /etc/sysconfig/imunify360
sudo nano /etc/sysconfig/imunify360/integration.conf
该文件应包含 UI 路径和 UI 路径所有者,如下所示:
[路径]
ui_path = /home /[所有者]/domains/[imav.domain]/public_html
ui_path_owner = [所有者]:[组]
保存文件并使用 Ctrl+O 然后 Ctrl+X 退出。接下来,下载并执行部署脚本:
sudo wget https://repo.imunify360.cloudlinux.com/defence360/imav-deploy.sh -O imav-deploy.sh
sudo bash imav-deploy.sh
我们可能需要将一个或多个管理员(sudo 用户)的名称添加到 auth.admin 文件中:
须藤纳米/etc/sysconfig/imunify360/auth.admin
(您可以在Webmin > System> Users and Groups中创建或提升其他 sudo 用户, 方法 是将他们的 Shell设置 为“/bin/bash”并从 Secondary groups添加组“sudo” 。)保存此文件,然后将 Web 浏览器指向您在上面创建的用于查看 Imunify 仪表板的虚拟主机。
我们可能需要配置通知电子邮件,以便在发现恶意软件时通知。ImunifyAV(免费版)默认没有设置任何东西。详细说明在这里 ,但简单的版本是您首先需要下载一个示例“挂钩脚本”并使其可由“_imunify”组执行。
cd /etc/imunify360 &&
curl https://docs.imunify360.com/hook_script.sh -O &&
chown root:_imunify hook_script.sh &&
chmod g+x hook_script.sh
编辑此文件以启用发送到您所需地址的电子邮件。
MAIL_ENABLE=yes # 默认否,更改为 "yes" 启用
MAIL_TO=" your-email@domain " # 对于多个电子邮件地址,使用逗号
在 Imunify 仪表板中,单击“设置”齿轮并选择“通知”选项卡。在“自定义扫描:检测到恶意软件”和“用户扫描:检测到恶意软件”下,选择“启用脚本执行”,粘贴挂钩脚本的位置(本例中为/etc/imunify360/hook_script.sh)并保存更改。
重新启动通知服务并安装“jq”包。
systemctl restart imunify-notifier
sudo apt install jq
单击“全部扫描”按钮,几天后回来查看结果。这会检查所有用户文件,包括电子邮件。
可以使用这个简单的命令安装另一个有用的扫描程序,它不会造成太大的伤害并且可以检测到对系统文件的不需要的更改:
sudo apt install rkhunter
以上就是vps搭建教程的第五部分介绍,内容会比较多,希望能帮助到大家参考!
全部0条评论
快来发表一下你的评论吧 !