網站免費安全加固- 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,這個可以自由指定

六、安全建議

  • 建議大家搭建個人網頁時,儘量去官網,如果國外的官網太慢,使用國內的軟件安裝更新源一定要選擇權威的一些源,如國內的阿里源、中科源等
  • 配置千萬條,安全第一條
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章