互联网和技术彻底改变了我们的世界,从支付账单到享受在线购物。显然,我们正在体验创新技术对日常生活的影响。但是,就这些冲动的趋势正在转向激烈的技术而言,我们更容易受到安全威胁。
一家网络安全公司最近遇到了 3.6 亿个被盗信用卡帐户(在网络黑市上待售)的威胁。这不是唯一的威胁;有许多攻击是以前检测到的,而且毫无疑问会发生在我们身边。因此,必须保持最大的安全性,以确保您的机密客户详细信息保持安全。此外,它还可以帮助您节省因消费者诉讼而可能给您带来的数百万美元损失。
在这篇博文中,我积累了一些事实,可以帮助您防止基于 LAMP 的服务器受到漏洞的侵害。LAMP 是最流行的 Web 开发框架之一,由四个组件组成,即Linux、Apache、My SQL和 PHP,它们以分层的方式构建。每一层都支持整个软件堆栈的关键部分。
保护您的服务器免受恶意攻击
正是出于这个原因,您的 Apache Web 服务器不可避免地得到了完美的配置、维护和监控,因此它不会暴露在漏洞之下。在此博客中,您可以看到保护专用服务器托管可以遵循的一般准则,以及为减轻此类攻击造成的损害而应考虑的重要步骤。
保护 Web 服务器安全的步骤
对于装有 Apache 的服务器
- 按照下面列出的步骤隐藏 Apache 版本号和其他敏感信息:
添加或编辑以下两个指令,它们存在于 httpd.conf 文件中
服务器签名关闭
服务器令牌产品
服务器签名出现在 Apache Web 服务器生成的页面底部,例如 404 页面、目录列表等。
Server Tokens Prod 指令基本上用于确定 Apache 将在服务器 HTTP 响应标头中放入什么。
- 确保您的 Apache 版本在其自己的用户帐户和组下运行。添加一个单独的用户“Apache”,然后修改 httpd.conf 中的给定指令以将 apache 作为自己的用户运行是最佳方式。
用户 apache组 apache
- 确保任何用户都不能访问 Web 根目录之外的文件。
<Directory /> Order Deny,Allow Deny from all Options None AllowOverride None </Directory> <Directory /html> Order Allow,Deny允许所有</Directory>
注意:当我们在上面的代码中设置“Options None”和“AllowOverride”None 时,它只会关闭服务器的所有选项和覆盖。现在,您可以为每个需要选项或覆盖的目录显式添加它们。
- 关闭目录浏览,然后跟随符号链接和CGI 执行。您可以通过 Directory 标记内的 Options 指令执行此操作。
只需使用即可关闭所有选项
选项无
尽管如此,如果您想关闭很少的几个,请在 Options 指令中用空格分隔每个选项:
选项 -ExecCGI -FollowSymLinks -Indexes
- 安装modsecurity
Modsecurity 是一个 Apache 附加模块,通过它可以检测和防止 http 攻击。如果您的 Web 开发人员忘记添加输入验证,这是防止 SQL 注入的最佳方法。如果开发人员未能识别和阻止信息泄露问题(例如泄漏详细的错误消息、社会安全号码或信用卡号码),信息也可能被泄露
按照这些方法安装 mod-security
在 CentOS 上:
百胜安装mod_security
在 Ubuntu 上:
apt-get 安装 mod_security。
服务 httpd 重新启动
- 禁用在Apache Web 服务器上启用的所有不需要的模块。
要搜索已安装的模块,您可以运行以下命令:
grep LoadModule httpd.conf
以下是一些通常启用但您甚至不需要它们的模块的列表。
mod_imap
mod_include
mod_info
mod_userdir
模组状态
mod_cgi
mod_autoindex。
要禁用它们,请在每个模块前添加一个 # 符号
- 降低默认设置为 300 秒的超时值。降低此值有助于降低拒绝服务攻击的潜在影响。
超时 45
-
限制大请求
要减轻拒绝服务攻击的影响,请限制可以在 http 请求中发送的正文数量。如果您不需要大量上传,那么您可以通过以下指令将其限制为 1MB。
限制请求正文 1048576
9. 应用程序和数据库安全对于防止 SQL 注入从编码不良的网站中提取数据至关重要。以下是如何防止它。
- 确保您的 Joomla、WordPress 和 Drupal 等 Web 应用程序是最新的。
- 订阅错误更新和漏洞报告。
- 避免对文件或文件夹的 word 可写 777 权限。
- 定期通过扫描您的网络包来检查病毒或感染。
- 如果您使用的是 MySQL 或 MariaDB,请运行 MySQL 安全安装脚本。
- 如果您的应用程序需要您存储敏感信息,如用户名、密码、信用卡数据等,请确保使用数字证书方法对所有通信进行加密。
对于带有 PHP 的服务器
1. 以独立用户而不是Apache 模块运行 PHP 。如果将 php 作为 Apache 模块安装,则 php 脚本根据 Apche 用户权限运行,并且更容易受到安全漏洞攻击。
安装 php 的一个不错的选择是使用 php-fpm 一个 fastcgi 进程管理器,它使您能够以单独的用户身份运行和管理 php 脚本。
- 始终使用 POST 方法传递重要参数,如用户名、密码、信用卡信息等。
- 始终验证表单和文本输入,因为存在跨站点脚本编写的风险,允许黑客通过简单地上传包含恶意代码的文件在您的服务器上运行恶意代码。
- 通过php.ini文件隐藏PHP版本,添加以下内容
Vim /etc/php.ini
expose_php = 关闭
- 将所有 php 错误记录到一个文件中,而不是在网站上
display_errors = 关闭
log_errors = 开
error_log = /var/log/httpd/php_error.log
使用 MySQL 或 MariaDB进行专用或VPS 托管
- 运行 MySQL 安全安装
安装 MySQL 后运行 mysql_secure_installation 脚本
sudo /usr/bin/mysql_secure_installation
此代码将提示您添加 MySQL root 密码,锁定对 localhost 的 root 访问并删除任何不需要的数据库,如测试数据库。
- 通过登录到您的 MySQL 服务器来保护 MySQL,并确保所有 MySQL 用户都有密码。此外,删除不需要的用户(如果有)。仅授予授权用户访问权限。
上述所有步骤和程序有助于确保您客户的数据保持安全并远离所有恶意行为。