网站免费安全加固- LNMP环境


环境介绍:
系统版本: CentOS Linux release 7.7.1908 (Core)
WordPress: 5.4–zh_CN
nginx版本: nginx/1.16.1
PHP版本: PHP 7.2.26
数据库版本: mysql 3.28.0
在这里插入图片描述

一、加固原因(真实经历)

血的教训!!!

  • LNMP环境搭建的个人网页,本以为个人网页没必要做安全,安全离遥不可及,直到每天收到阿里云的短信,个人小网页在也没法使用时,可气的删除了我的所有学习笔记,我才知道安全中有多重要
  • 你不解决一些教科书级的漏洞,总有熊孩子折腾你

在这里插入图片描述

二、整体加固方法介绍

1、关闭不需要的端口

只打开如下端口

服务 端口
ssh 443(限制IP)
http 80
https 443
ftp 21,20000-30000

2、配置https

尽量使用https防止被指持,这个的详细配置,从证书的申请到配置有详细的一期介绍:点击这里查看

3、设置目录权限

将网站的根目录权限,取消执行权限(chmod命令调整)

三、基于nginx加固

  1. 升级nginx的版本到最新版,隐藏nginx的版本信息
#vim nginx的配置文件
#yum安装nginx路径 /etc/nginx/nginx.conf

#在http括号中任意位置添加以下命令
server_tokens off;

在这里插入图片描述
在这里插入图片描述
2. nginx配置中的其他加固
配置nginx的配置文件 nginx.conf
你也可以将需要的模块加载单个网页配置文件中

# 设置timeout设低来防御DOS攻击
http
{
client_body_timeout   10;
client_header_timeout  30;
 keepalive_timeout     30  30;
 send_timeout          10;

}

#限制访问的方法
server
{
if($request_method !~ ^(GET|HEAD|POST)$) {        
                     return404;
              }
}

在原来的编译参数的首行加入--add-module=/root/install/naxsi-core-0.51-1/naxsi_src
nbs.rules文件

server{

limit_req zone=one burst=5;

limit_conn two 15;

}

自定义nginx版本号

http://purplegrape.blog.51cto.com/1330104/1291871

#封杀各种user-agent

if ($http_user_agent ~* "java|python|perl|ruby|curl|bash|echo|uname|base64|decode|md5sum|select|concat|httprequest|httpclient|nmap|scan" ) {

    return 403;
}

if ($http_user_agent ~* "" ) {
    return 403;
}

# 封杀特定的url

location ~ ^/(\.user.ini|\.ht|\.git|\.svn|\.project|LICENSE|README.md) {
      deny all;
    }

# 封杀特定的http方法和行为

if ($request_method !~ ^(GET|POST|HEAD)$ ) {

    return 405;

}

if ($http_range ~ "\d{9,}") {

    return 444;

}
# 强制网站使用域名访问,可以逃过IP扫描

if ( $host !~* 'abc.com' ) {

    return 403;

}

url 参数过滤敏感字

if ($query_string ~* "union.*select.*\(") { 

    rewrite ^/(.*)$  $host  permanent;

} 

if ($query_string ~* "concat.*\(") { 

    rewrite ^/(.*)$  $host  permanent;

}

#必须携带 referer

if ($http_referer = "" ) {

    return 403;

}

以上 的模块都可以单独添加在nginx.conf的 sever{ }中
你还可以点击这里查看 nginx配置文件介绍

四、基于PHP加固

隐藏php版本信息
在header中隐藏php版本信息,修改php配置文件如下:
我的编译安装位置 /usr/local/php72/etc (路径可以自定义可能不同)

cd /usr/local/php72/etc
vim  php.ini 
380行中的 expose_php = On
修改为 expose_php = off

:vim 命令中输入 set number显示行数

五、基于mysql加固

  • phpMyAdmin管理数据库限制
    进入 phpMyAdmin 目录,找到 config.inc.php,如果没有,可以将根目录下的config.sample.inc.php 复制为 config.inc.php。
    编辑 config.inc.php,添加下面两行代码,其中 111.18.89.174 是允许访问 phpMyAdmin 的 IP,Access denied 是未经授权访问时的提示信息:
?$ip_prefix = '111.18.89.174';
if (substr($_SERVER['REMOTE_ADDR'], 0, strlen($ip_prefix)) != $ip_prefix ) die('Access denied');
  • 修改phpmyadmin的端口号访问mysql数据库:
    修改phpmyadmin目录下libraries下配置文件config.default.php。
$cfg['Servers'][$i]['port'] = ''
#上面是默认语句,默认端口为3306
$cfg['Servers'][$i]['port'] = '3310';
#我们修改端口,指定为3301,这个可以自由指定

六、安全建议

  • 建议大家搭建个人网页时,尽量去官网,如果国外的官网太慢,使用国内的软件安装更新源一定要选择权威的一些源,如国内的阿里源、中科源等
  • 配置千万条,安全第一条
    在这里插入图片描述
posted @ 2020-04-24 12:11  ASQW234  阅读(147)  评论(0编辑  收藏  举报