nginx指定配置文件启动_NGINX安全加固手册
NIGNX系統安全
基線規范
1.概述
1.1 適用范圍
?本配置標準的使用者包括:各事業部服務器負責人。
各事業部服務器負責人按規范要求進行認證、日志、協議、補丁升級、文件系統管理等方面的安全配置要求。對系統的安全配置審計、加固操作起到指導性作用。
1.2 文檔內容
?本文檔內容是nginx的安全加固操作項的詳細操作指導,并明確在加固操作過程中可能出現的風險和所遵循的標準。
1.3 加固前的準備
1.3.1 需要重新啟動驗證系統
?需要重新啟動以確定nginx的完整性、業務系統的正常性
1.3.2 備份文件
?在操作之前需要備份nginx重要的配置文件
1.3.3 加固操作注意事項
?需要手工確認系統是否需要加固,同時驗證加固效果,系統可以正常運行
1.3.4 軟件包相關
?操作系統中多余的軟件或者加固需要安裝的軟件,需要與被加固系統負責人進行確認。
2.操作指導
2.1 nginx版本統一
名稱 | nginx版本統一 |
說明 | 統一集群內的Nginx版本,避免管理混亂 |
實施目的 | 統一使用官方Stable 高版本的nignx |
問題影響 | 管理混亂,容易通過低版本漏洞被攻擊 |
實施步驟 | 通過Nignx官網下載http://nginx.org/en/download.html 最新Stable版本 |
回退方案 | 無 |
確認方法 | nginx -v 查看版本 |
實施風險 | 高 |
適用說明 |
2.2 使用普通賬戶啟動nginx
名稱 | 使用普通賬戶啟動nginx |
說明 | 使用普通賬戶啟動nginx |
實施目的 | 新建jqsoft用戶啟動nginx |
問題影響 | 特權用戶啟動引起的安全隱患 |
實施步驟 | 編輯nginx配置文件,添加如下參數: user jqsoft; 重啟Nginx(需要將Nignx目錄及相關靜態文件授權給jqsoft用戶) |
回退方案 | 恢復nginx配置文件 |
確認方法 | ps -ef |grep nginx 查看nginx進程是否是jqsoft用戶啟動 |
實施風險 | 中 |
適用說明 |
2.3 禁用autoindex
名稱 | 禁用autoindex |
說明 | 禁用autoindex,避免目錄瀏覽 |
實施目的 | 禁用autoindex,避免目錄瀏覽,減少安全隱患 |
問題影響 | 通過了解目錄結構從而攻擊系統 |
實施步驟 | 編輯nginx配置文件,在http模塊添加autoindex off; 重啟Nginx |
回退方案 | 恢復nginx配置文件 |
確認方法 | 確保nginx.conf配置文件上禁用autoindex |
實施風險 | 中 |
適用說明 |
2.4 關閉服務器標記
名稱 | 關閉服務器標記 |
說明 | 關閉服務器標記,避免顯示服務器版本信息 |
實施目的 | 關閉服務器標記,避免顯示服務器版本信息 |
問題影響 | 如果開啟的話(默認情況下)所有的錯誤頁面都會顯示服務器的版本和信息 |
實施步驟 | 在nginx.conf配置文件中,http模塊中添加 server_tokens off; 重啟Nginx |
回退方案 | 恢復配置文件 |
確認方法 | 查看錯誤頁面http 返回頭中server字段值中已經沒有了服務器版本信息 |
實施風險 | 高 |
適用說明 |
2.5 設置timeout
名稱 | 設置timeout |
說明 | 設置timeout設低來防御DOS攻擊 |
實施目的 | 設置timeout設低來防御DOS攻擊 |
問題影響 | DOS攻擊拖垮服務器 |
實施步驟 | 編輯nginx配置文件,在http模塊中添加以下參數 client_body_timeout 10; client_header_timeout 30; keepalive_timeout 30? 30; send_timeout 10; 重啟Nginx |
回退方案 | 恢復nginx配置文件 |
確認方法 | 訪問Nignx網站查看返回頭中已經包含了超時時間配置 |
實施風險 | 高 |
適用說明 |
2.6 設置NGINX緩沖區
名稱 | 設置NGINX緩沖區 |
說明 | 設置NGINX緩沖區 |
實施目的 | 防止緩沖區溢出攻擊 |
問題影響 | 緩沖區溢出 |
實施步驟 | 編輯nginx配置文件,在server模塊中需要限制的location中添加以下參數 client_body_buffer_size? 1K; client_header_buffer_size 1k; client_max_body_size 1k; large_client_header_buffers 2 1k; 重啟Nginx |
回退方案 | 恢復nginx配置文件 |
確認方法 | 查看配置文件 |
實施風險 | 高 |
適用說明 |
2.7 限制nginx請求方法
名稱 | 限制nginx請求方法 |
說明 | 限制nginx請求方法,僅允許常用的get post head |
實施目的 | 限制nginx請求方法,僅允許常用的get post head |
問題影響 | 通過請求漏洞攻擊服務器 |
實施步驟 | 編輯nginx配置文件,在每個server模塊中添加 if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 444; } |
回退方案 | 恢復Nignx配置文件 |
確認方法 | 使用put/delete等請求返回444響應碼 |
實施風險 | 高 |
適用說明 |
2.8 日志配置
名稱 | 日志配置 |
說明 | 統一使用規定好的日志格式 |
實施目的 | 統一使用規定好的日志格式 |
問題影響 | 日志不規范,問題排查難度倍增 |
實施步驟 | 編輯nginx配置文件,在http模塊中添加如下參數 log_format? main? '$remote_addr - $remote_user [$time_local] "$request" '? '$status $body_bytes_sent "$http_referer" '?? '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/host.access.log main; 重啟nginx服務即可 |
回退方案 | 恢復配置文件 |
確認方法 | 查看logs/host.access.log文件,驗證日志格式是否與如上配置的一致 |
實施風險 | 高 |
適用說明 |
2.9 Nginx日志切割
名稱 | Nginx日志切割 |
說明 | Nginx日志切割 |
實施目的 | 切割nginx日志,避免日志文件過大 |
問題影響 | 日志文件過大影響查看 |
實施步驟 | 新建日志切割腳本 如下: #!/bin/bash #設置日志文件存放目錄 logspath="/usr/local/nginx/logs/" #設置pid文件 pidpath="/usr/local/nginx/nginx.pid" #重命名日志文件 mv ${logspath}access.log ${logspath}access$(date -d "yesterday" +"%Y%m%d").log #向nginx主進程發信號重新打開日志 kill -USR1 `cat ${pidpath}` 配置定時任務每日凌晨執行腳本 |
回退方案 | 刪除定時任務 |
確認方法 | 第二天查看日志目錄,發現日志自動切割 |
實施風險 | 低 |
適用說明 |
2.10 限制訪問IP
名稱 | 限制訪問IP |
說明 | 限制訪問IP,僅允許指定ip訪問指定資源 |
實施目的 | 限制訪問IP,僅允許指定ip訪問指定資源 |
問題影響 | 服務器不安全性增加 |
實施步驟 | 編輯nging配置文件,在每個server模塊中的location添加需求的限制,示例如下 deny 192.168.1.1; allow 192.168.1.0/24; allow 10.1.1.0/16; allow 2001:0db8::/32; deny all; 執行nginx -s reload 動態更新配置文件 |
回退方案 | 恢復nginx配置文件 |
確認方法 | 使用限制的IP地址訪問nginx 提示403 |
實施風險 | 高 |
適用說明 |
2.11 限制僅允許域名訪問
名稱 | 限制僅允許域名訪問 |
說明 | 限制僅允許域名訪問 |
實施目的 | 限制僅允許域名訪問,跳過ip掃描 |
問題影響 | ip掃描到網站后會針對性攻擊 |
實施步驟 | 編輯nging配置文件,新建一個sever,示例如下 server { listen 80 default; server_name _; return 403; } 執行nginx -s reload 動態更新配置文件 (如果有其他端口,同樣加入其他端口的server) |
回退方案 | 恢復nginx配置文件 |
確認方法 | 使用IP地址訪問nginx 提示403 |
實施風險 | 高 |
適用說明 |
2.12 錯誤頁面重定向
名稱 | 錯誤頁面重定向 |
說明 | 錯誤頁面重定向 |
實施目的 | nginx默認錯誤頁面包含服務器版本信息,使用自定義錯誤頁面避免版本信息泄露 |
問題影響 | 避免通過錯誤頁面獲取服務器信息 |
實施步驟 | 新建錯誤頁面,放到靜態目錄中,編輯Nignx配置文件, 在http模塊中添加如下參數: fastcgi_intercept_errors on; errorpage 401 /401.html; errorpage 402 /402.html; errorpage 403 /403.html; errorpage 404 /404.html; errorpage 405 /405.html; errorpage 500 /500.html 重啟nginx服務 |
回退方案 | 恢復配置文件 |
確認方法 | 訪問不存在的url重定向到我們配置的的錯誤頁面 |
實施風險 | 中 |
適用說明 |
2.13 限制并發和速度
名稱 | 限制并發和速度 |
說明 | nginx客戶端并發和速度 |
實施目的 | 限制用戶連接數及速度來預防DOS攻擊 |
問題影響 | 通過連接數來攻擊nginx服務器 |
實施步驟 | 編輯Nignx配置文件,在Http模塊中添加如下參數: limit_zone one $binary_remote_addr 60m; 在server模塊的location中,需要限制的location中添加如下參數: limit_conn one 50;? limit_rate 100k; 重啟nginx服務 |
回退方案 | 恢復配置文件 |
確認方法 | 單個Ip建立嘗試建立多個連接失敗 |
實施風險 | 高 |
適用說明 |
2.14 nginx配置防盜鏈
名稱 | nginx配置防盜鏈 |
說明 | nginx配置防盜鏈 |
實施目的 | 防止第三方引用鏈接訪問我們的圖片,消耗服務器資源和網絡流量 |
問題影響 | 資源被第三放流量消耗 |
實施步驟 | 編輯nginx配置文件,在server模塊中添加如下實例: server { ? listen 80; server_name www.myine.com; ? root /usr/share/nginx/html; location ~*.(gif|jpg|jpeg|png|bmp|swf)$ { validreferers none blocked www.myine.com; ??? if ($invalidreferer) { ????? return 403; } ??? } ?} validreferers: 指定資源訪問是通過以下幾種方式為合法,即白名單。 none:允許缺失的頭部訪問。 blocked:允許referer沒有對應值的請求。 Server_names:若referer站點域名與servername中本機配的域名一樣允許訪問 |
回退方案 | 恢復配置文件 |
確認方法 | 新建個人頁面,圖片引用使用nginx中的圖片,訪問個人頁面圖片提示403 |
實施風險 | 高 |
適用說明 |
2.15 限制php執行權限
名稱 | 限制php執行權限 |
說明 | 限制php執行權限 |
實施目的 | 限制php執行權限 |
問題影響 | 通過執行php腳本入侵服務器 |
實施步驟 | 編輯nignx配置文件,在需要限制的server模塊中添加如下代碼: location ~ /(attachments|upload)/.*.(php|php5)?$ { deny all; } 以上的配置文件代碼需要放到 location ~ .php{...}上面,相關目錄需要寫相對目錄,重啟nginx |
回退方案 | 恢復配置文件 |
確認方法 | nginx網站指定目錄php文件不能執行、訪問 |
實施風險 | 高 |
適用說明 |
2.16 nginx配置WAF模塊
名稱 | nginx配置waf模塊 |
說明 | nginx配置waf模塊 |
實施目的 | nginx配置waf模塊,提升服務器的安全性 |
問題影響 | 無 |
實施步驟 | 下載waf模塊,wget https://github.com/loveshell/ngx_lua_waf/archive/master.zip 配置waf相關Lua規則、目錄、腳本等, (nginx需要加載nginx_lua_module模塊) 編輯nginx配置文件,在http模塊中添加如下參數: lua_package_path “/usr/local/nginx/conf/waf/?.lua”; lua_shared_dict limit 10m; init_by_lua_file /usr/local/nginx/conf/waf/init.lua; access_by_lua_file /usr/local/nginx/conf/waf/waf.lua; 新建攻擊日志目錄 mkdir -p /data/logs/hack/ chown -R nobody:nobody /data/logs/hack/ chmod -R 755 /data/logs/hack/ 重啟Nignx服務 |
回退方案 | 刪除配置文件的中的waf配置 |
確認方法 | 查看目錄/data/logs/hack/ 中的日志 |
實施風險 | 高 |
適用說明 |
2.17 安裝官方補丁更新
名稱 | 安裝官方補丁更新 |
說明 | 為nginx安裝最新安全補丁 |
實施目的 | 防止攻擊者利用nginx漏洞進行攻擊 |
問題影響 | 系統安全性下降 |
實施步驟 | 查看當前nginx版本 nginx -v 官網下載最新的安全補丁 |
回退方案 | 無 |
確認方法 | 登陸用戶查看nginx版本信息 |
實施風險 | 高 |
適用說明 |
總結
以上是生活随笔為你收集整理的nginx指定配置文件启动_NGINX安全加固手册的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 时间错误,PHP xdebug调
- 下一篇: 40秒直击各地考生冲出考场瞬间 考生们辛