最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx 安全加固的幾種方法

 更新時間:2026年03月11日 10:06:42   作者:BullSmall  
本文詳細介紹了Nginx服務(wù)器的安全加固方案,重點圍繞權(quán)限設(shè)置、配置優(yōu)化和系統(tǒng)防護三個方面,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

Nginx 的安全加固核心圍繞最小權(quán)限原則、配置硬 ening、訪問控制審計監(jiān)控展開,權(quán)限設(shè)置則是其中最基礎(chǔ)也最關(guān)鍵的一環(huán)。下面我會分模塊給出可落地的加固方案,所有操作都提供具體命令和配置示例。

一、基礎(chǔ)權(quán)限加固(核心)

1. 創(chuàng)建專用低權(quán)限用戶 / 組

Nginx 默認可能以 rootnginx 用戶運行,需確保運行進程的用戶無登錄權(quán)限、無系統(tǒng)管理權(quán)限:

# 1. 創(chuàng)建專用用戶(禁止登錄、無家目錄)
useradd -r -s /sbin/nologin -M nginx

# 2. 驗證用戶是否創(chuàng)建成功
id nginx
# 輸出示例:uid=998(nginx) gid=996(nginx) groups=996(nginx)

2. 配置 Nginx 以低權(quán)限用戶運行

編輯主配置文件(通常 /etc/nginx/nginx.conf),確保 user 指令指向?qū)S糜脩簦?/p>

# 開頭添加/修改:指定運行用戶和組
user nginx nginx;
 
# 其他核心配置(保持默認即可)
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

3. 修復(fù)文件 / 目錄權(quán)限

遵循「最小權(quán)限」原則,不同目錄 / 文件設(shè)置不同權(quán)限,避免過度開放:

# 1. 核心目錄權(quán)限(僅 root 可寫,nginx 可讀)
# Nginx 配置目錄
chown -R root:root /etc/nginx
chmod -R 755 /etc/nginx       # 目錄:root可讀寫執(zhí)行,其他只讀執(zhí)行
chmod 644 /etc/nginx/*.conf   # 配置文件:root可讀寫,其他只讀

# 2. 日志目錄(nginx 可寫,其他無權(quán)限)
chown -R nginx:nginx /var/log/nginx
chmod -R 700 /var/log/nginx   # 僅 nginx 用戶可訪問

# 3. 運行目錄(pid/鎖文件)
chown -R nginx:nginx /var/run/nginx
chmod -R 700 /var/run/nginx

# 4. 網(wǎng)站根目錄(根據(jù)業(yè)務(wù)調(diào)整,示例為 /usr/share/nginx/html)
chown -R root:nginx /usr/share/nginx/html  # root 可寫,nginx 可讀
chmod -R 750 /usr/share/nginx/html         # 禁止其他用戶訪問

# 5. Nginx 二進制文件(僅 root 可修改)
chown root:root /usr/sbin/nginx
chmod 755 /usr/sbin/nginx                  # 禁止普通用戶修改

4. 禁止 Nginx 進程提權(quán)

  • 確保 nginx.conf 中無 user root; 配置(避免以 root 運行);
  • 禁止 nginx 用戶執(zhí)行 sudo:檢查 /etc/sudoers/etc/sudoers.d/,確保無 nginx 相關(guān)配置。

二、配置層面安全加固

1. 隱藏 Nginx 版本信息

避免暴露版本號被針對性攻擊,編輯 nginx.conf

http {
    # 隱藏版本號
    server_tokens off;
 
    # 可選:修改 Server 響應(yīng)頭(需編譯時開啟模塊,或用第三方模塊)
    # more_set_headers 'Server: WebServer';
}

2. 限制請求參數(shù)(防止攻擊)

httpserver 塊中添加:

http {
    # 限制請求體大?。ǚ乐?POST 大文件攻擊,根據(jù)業(yè)務(wù)調(diào)整)
    client_max_body_size 10M;
 
    # 限制請求頭大小
    client_header_buffer_size 1k;
    large_client_header_buffers 4 1k;
 
    # 超時設(shè)置(防止 Slowloris 攻擊)
    client_body_timeout 10s;
    client_header_timeout 10s;
    keepalive_timeout 65s 20s;
    send_timeout 10s;
 
    # 限制并發(fā)連接(可選,根據(jù)服務(wù)器性能調(diào)整)
    limit_conn_zone $binary_remote_addr zone=perip:10m;
    limit_conn perip 20;  # 單個 IP 最大 20 個并發(fā)連接
}

3. 訪問控制

限制 IP 訪問(如后臺管理頁面):

location /admin/ {
    allow 192.168.1.0/24;  # 僅允許內(nèi)網(wǎng) IP 訪問
    deny all;              # 拒絕其他所有 IP
}

禁止訪問敏感文件

# 禁止訪問 .htaccess、.env 等敏感文件
location ~ /\.(ht|env|git|svn) {
    deny all;
}
 
# 禁止訪問配置文件/日志文件
location ~* (\.conf|\.log)$ {
    deny all;
}

4. 啟用 HTTPS 并加固(必做)

server {
    listen 443 ssl http2;
    server_name yourdomain.com;

    # SSL 證書路徑
    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    # 禁用弱加密算法
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers on;

    # 會話緩存
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # HSTS(強制 HTTPS)
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    # 其他安全頭
    add_header X-Frame-Options DENY;          # 禁止iframe嵌入
    add_header X-Content-Type-Options nosniff; # 防止MIME類型嗅探
    add_header X-XSS-Protection "1; mode=block"; # 防XSS
}

# 重定向 HTTP 到 HTTPS
server {
    listen 80;
    server_name yourdomain.com;
    return 301 https://$host$request_uri;
}

三、系統(tǒng)層面加固

1. 啟用 SELinux(Linux 系統(tǒng))

# 1. 查看 SELinux 狀態(tài)
getenforce

# 2. 若為 Disabled,臨時啟用(重啟失效)
setenforce 1

# 3. 永久啟用(修改配置文件)
sed -i 's/^SELINUX=.*/SELINUX=enforcing/' /etc/selinux/config

2. 限制 Nginx 端口訪問

通過防火墻(firewalld/iptables)僅開放必要端口(如 80/443):

# firewalld 示例
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload

# 禁止其他無關(guān)端口
firewall-cmd --permanent --remove-all-ports  # 先清空(謹慎!僅新服務(wù)器)
firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp
firewall-cmd --reload

3. 定期審計日志

# 1. 配置日志輪轉(zhuǎn)(避免日志過大)
# 編輯 /etc/logrotate.d/nginx(通常已存在,檢查配置)
/var/log/nginx/*.log {
    daily
    rotate 30
    compress
    delaycompress
    missingok
    notifempty
    create 0640 nginx nginx
    postrotate
        /usr/bin/systemctl reload nginx > /dev/null 2>&1
    endscript
}

# 2. 定期檢查錯誤日志(關(guān)注權(quán)限/攻擊行為)
tail -f /var/log/nginx/error.log
grep -i "error" /var/log/nginx/error.log
grep -i "denied" /var/log/nginx/access.log

四、驗證加固效果

# 1. 檢查 Nginx 運行用戶
ps aux | grep nginx
# 輸出應(yīng)顯示 nginx 進程以 nginx 用戶運行(master 進程可能為 root,正常)

# 2. 檢查配置語法
nginx -t

# 3. 重啟 Nginx 使配置生效
systemctl restart nginx

# 4. 驗證版本號是否隱藏
curl -I http://yourdomain.com
# 響應(yīng)頭中不應(yīng)包含 "Server: nginx/1.20.1" 這類版本信息

# 5. 檢查文件權(quán)限
ls -l /etc/nginx/nginx.conf  # 應(yīng)為 -rw-r--r-- 1 root root
ls -ld /var/log/nginx        # 應(yīng)為 drwx------ 2 nginx nginx

總結(jié)

  1. 權(quán)限核心:創(chuàng)建專用 nginx 低權(quán)限用戶,配置文件歸 root 所有(只讀),日志 / 運行目錄歸 nginx 所有(僅自身可訪問);
  2. 配置加固:隱藏版本號、限制請求參數(shù)、啟用 HTTPS 并禁用弱加密、添加安全響應(yīng)頭;
  3. 系統(tǒng)層面:啟用 SELinux、防火墻僅開放必要端口、定期審計日志,形成完整安全閉環(huán)。

所有操作完成后,建議用 Nmap、OpenVAS 等工具掃描 Nginx 服務(wù),驗證加固效果。

到此這篇關(guān)于Nginx 安全加固的幾種方法的文章就介紹到這了,更多相關(guān)Nginx 安全加固內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx緩存Cache的配置方案以及相關(guān)內(nèi)存占用問題解決

    Nginx緩存Cache的配置方案以及相關(guān)內(nèi)存占用問題解決

    這篇文章主要介紹了Nginx緩存Cache的配置方案以及相關(guān)內(nèi)存占用問題解決,Cashe配置最主要的還是需要注意內(nèi)存資源的使用問題,需要的朋友可以參考下
    2016-01-01
  • nginx 429狀態(tài)碼排查與處理方式

    nginx 429狀態(tài)碼排查與處理方式

    這篇文章主要介紹了nginx 429狀態(tài)碼排查與處理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-07-07
  • nginx如何配置參數(shù)以及變量

    nginx如何配置參數(shù)以及變量

    這篇文章主要介紹了nginx如何配置參數(shù)以及變量問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • nginx禁止直接通過ip進行訪問并跳轉(zhuǎn)到自定義500頁面的操作

    nginx禁止直接通過ip進行訪問并跳轉(zhuǎn)到自定義500頁面的操作

    這篇文章主要介紹了nginx禁止直接通過ip進行訪問并跳轉(zhuǎn)到自定義500頁面的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 解讀nginx負載均衡的5種策略

    解讀nginx負載均衡的5種策略

    這篇文章主要介紹了解讀nginx負載均衡的5種策略,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Nginx反爬蟲策略,防止UA抓取網(wǎng)站

    Nginx反爬蟲策略,防止UA抓取網(wǎng)站

    目前網(wǎng)絡(luò)上的爬蟲非常多,有對網(wǎng)站收錄有益的,比如百度蜘蛛(Baiduspider),也有不但不遵守robots規(guī)則對服務(wù)器造成壓力,還不能為網(wǎng)站帶來流量的無用爬蟲,為防止網(wǎng)站有可能會被別人爬,通過配置Nginx, 我們可以攔截大部分爬蟲
    2020-09-09
  • nginx查看配置文件的操作方法

    nginx查看配置文件的操作方法

    nginx的配置放在nginx.conf文件中,一般我們可以使用以下命令查看服務(wù)器中存在的nginx.conf文件,這篇文章主要介紹了nginx查看配置文件,需要的朋友可以參考下
    2024-02-02
  • Nginx下將http改為https的操作步驟

    Nginx下將http改為https的操作步驟

    HTTPS是HTTP協(xié)議的安全版本,通過使用SSL(安全套接層)或TLS(傳輸層安全)協(xié)議加密通信,為數(shù)據(jù)傳輸提供了保密性、完整性和身份認證,本文給大家介紹了Nginx下將http改為https的操作方法,需要的朋友可以參考下
    2024-08-08
  • Nginx反向代理與緩存實現(xiàn)代碼

    Nginx反向代理與緩存實現(xiàn)代碼

    文章系統(tǒng)解析Nginx反向代理核心配置、緩存機制、性能優(yōu)化、安全防護及高級應(yīng)用場景,涵蓋負載均衡、緩存策略、限流規(guī)則、日志監(jiān)控等關(guān)鍵內(nèi)容,提供生產(chǎn)環(huán)境配置建議與云原生適配方案,助力高效部署與運維,感興趣的朋友跟隨小編一起看看吧
    2025-08-08
  • https如何通過nginx完成雙向認證轉(zhuǎn)發(fā)

    https如何通過nginx完成雙向認證轉(zhuǎn)發(fā)

    文章詳細介紹了HTTPS單向認證和雙向認證的概念,并提供了生成自簽證書、配置Nginx進行雙向認證的具體步驟,通過雙向認證,服務(wù)端和客戶端可以互相驗證身份,提升安全性,在測試過程中,使用瀏覽器訪問HTTPS接口時,需要安裝客戶端證書才能成功獲取數(shù)據(jù)
    2024-11-11

最新評論

宜丰县| 明水县| 马尔康县| 武隆县| 从江县| 务川| 抚顺市| 抚宁县| 弋阳县| 论坛| 阿勒泰市| 青冈县| 新巴尔虎左旗| 伊春市| 农安县| 龙陵县| 上饶县| 龙山县| 池州市| 个旧市| 石屏县| 安庆市| 乐都县| 长春市| 淮阳县| 清水县| 吉林省| 商水县| 广元市| 城口县| 内黄县| 海门市| 桃园县| 修水县| 安陆市| 调兵山市| 怀仁县| 石嘴山市| 卓资县| 绥德县| 上高县|