您的位置:首頁 > 服務器硬件技術

                                            為 Nginx Web 服務器保駕護航的若干要點

                                            發布時間:2022-04-11 15:15:55  來源:IT資訊網    采編:author  背景:

                                            【51CTO.com快譯】Nginx是全球發展勢頭最猛的開源輕量級高性能Web服務器系統。Nginx可在Linux、 Windows、Mac OS和Solaris等操作系統上運行。Nginx繼續人氣激增,意味著越來越多的Nginx部署環境需要加以保護。

                                            我們在本教程中將介紹幾個常見的Nginx服務器安全要點。

                                            要求

                                            運行Ubuntu 18.04或Debian 9的服務器 你的服務器上已設置了root密碼

                                            1.安裝Nginx

                                            首先要把Nginx安裝到系統上。運行下列命令來安裝它:

                                            apt-getinstallnginx-y

                                            一旦Nginx安裝完畢,可以用下列命令檢查Nginx的狀態:

                                            systemctlstatusnginx

                                            你應該會看到下列輸出:

                                            ?nginx.service-AhighperformancewebserverandareverseproxyserverLoaded:loaded(/lib/systemd/system/nginx.service;enabled;vendorpreset:enabled)Active:active(running)sinceSun2019-03-1002:43:14UTC;4min40sagoDocs:man:nginx(8)Process:2271ExecStop=/sbin/start-stop-daemon--quiet--stop--retryQUIT/5--pidfile/run/nginx.pid(code=exited,status=0/SUCCESS)Process:2281ExecStart=/usr/sbin/nginx-gdaemonon;master_processon;(code=exited,status=0/SUCCESS)Process:2274ExecStartPre=/usr/sbin/nginx-t-q-gdaemonon;master_processon;(code=exited,status=0/SUCCESS)MainPID:2285(nginx)Tasks:2(limit:1111)CGroup:/system.slice/nginx.service??2285nginx:masterprocess/usr/sbin/nginx-gdaemonon;master_processon;??2290nginx:workerprocessMar1002:43:14ubuntu1804systemd[1]:StartingAhighperformancewebserverandareverseproxyserver...Mar1002:43:14ubuntu1804systemd[1]:nginx.service:FailedtoparsePIDfromfile/run/nginx.pid:InvalidargumentMar1002:43:14ubuntu1804systemd[1]:StartedAhighperformancewebserverandareverseproxyserver.

                                            2.更新Nginx

                                            你需要更新Nginx Web服務器系統,因為許多性能上的改進、新的功能和安全補丁在不斷添加。大多數現代Linux發行版不會在默認軟件包列表中隨帶新版的Nginx。所以你需要通過軟件包管理器來更新新版的Nginx??梢杂孟铝忻顏砀翹ginx Web服務器系統:

                                            apt-getupdate-yapt-getinstallnginx--reinstall-y

                                            3.防止信息透露

                                            首先需要防止Nginx透露其版本信息。

                                            默認情況下,Nginx在HTTP報頭中顯示其名稱和版本。

                                            你可以用下列命令來檢查:

                                            curl-Ihttp://localhost

                                            應該會看到下列輸出:

                                            HTTP/1.1200OKServer:nginx/1.14.0(Ubuntu)Date:Sat,09Mar201915:28:01GMTContent-Type:text/htmlContent-Length:10918Last-Modified:Fri,01Feb201916:05:17GMTConnection:keep-aliveETag:"5c546e3d-2aa6"Accept-Ranges:bytes

                                            在上述輸出中,應該會看到Nginx和操作系統的版本。

                                            可以編輯/etc/nginx/nginx.conf文件,隱藏這部分信息:

                                            nano/etc/nginx/nginx.conf

                                            在http配置部分里面添加server_tokens off這一行:

                                            http{###BasicSettings##server_tokensoff;

                                            完成之后保存并關閉文件。然后重啟Nginx Web服務器系統使變更生效:

                                            systemctlrestartnginx

                                            現在再次運行curl命令:

                                            curl-Ihttp://localhost

                                            應該會看到下列輸出:

                                            HTTP/1.1200OKServer:nginxDate:Sat,09Mar201915:33:31GMTContent-Type:text/htmlContent-Length:10918Last-Modified:Fri,01Feb201916:05:17GMTConnection:keep-aliveETag:"5c546e3d-2aa6"Accept-Ranges:bytes

                                            4.限制IP被訪問

                                            Nginx隨帶一個名為ngx_http_access_module的簡單模塊,允許或拒絕某個特定的IP地址。

                                            如果你想允許從172.16.0.0/16訪問Nginx,但拒絕來自其他子網的訪問,那么打開/etc/nginx/sites-enabled/default文件:

                                            nano/etc/nginx/sites-enabled/default

                                            在server block里面進行下列更改:

                                            server{listen80default_server;listen[::]:80default_server;allow172.16.0.0/16;denyall;

                                            完成后保存并關閉文件。然后重啟Nginx使這些變更生效:

                                            systemctlrestartnginx

                                            現在,試著從192.168.0.102之類的其他IP地址范圍來訪問Nginx服務器。

                                            下一步,用下列命令檢查Nginx日志:

                                            tail-f/var/log/nginx/error.log

                                            你應該會在下列輸出中看到訪問被禁止:

                                            2019/03/0916:13:01[error]11589#11589:*1accessforbiddenbyrule,client:192.168.0.102,server:_,request:"GET/test/HTTP/1.1",host:"172.16.0.122"

                                            5.用TLS保護Nginx

                                            傳輸層安全(TLS)是安全套接層(SSL)的后續技術。它提供更強大更高效的HTTPS,含有更多的改進,比如Forward Secrecy、與現代的OpenSSL密碼組以及HSTS。本教程介紹如何在Nginx中啟用自簽名的SSL證書。如果你想改而使用let's Encrypt證書,不妨參閱:https://www.howtoforge.com/tutorial/nginx-with-letsencrypt-ciphersuite/。

                                            先用下列命令為SSL創建目錄:

                                            mkdir/etc/nginx/ssl/

                                            接下來,用下列命令創建密鑰和證書:

                                            cd/etc/nginx/ssl/

                                            先用下列命令創建密鑰:

                                            opensslgenrsa-aes256-outnginx.key1024

                                            你會看到下列輸出:

                                            GeneratingRSAprivatekey,1024bitlongmodulus...++++++.............................++++++eis65537(0x010001)Enterpassphrasefornginx.key:Verifying-Enterpassphrasefornginx.key:

                                            接下來用下列命令創建csr:

                                            opensslreq-new-keynginx.key-outnginx.csr

                                            提供所有信息,如下所示:

                                            GeneratingRSAprivatekey,1024bitlongmodulus...++++++.............................++++++eis65537(0x010001)Enterpassphrasefornginx.key:Verifying-Enterpassphrasefornginx.key:root@ubuntu1804:~#opensslreq-new-keynginx.key-outnginx.csrEnterpassphrasefornginx.key:Youareabouttobeaskedtoenterinformationthatwillbeincorporatedintoyourcertificaterequest.WhatyouareabouttoenteriswhatiscalledaDistinguishedNameoraDN.TherearequiteafewfieldsbutyoucanleavesomeblankForsomefieldstherewillbeadefaultvalue,Ifyouenter'.',thefieldwillbeleftblank.-----CountryName(2lettercode)[AU]:INStateorProvinceName(fullname)[Some-State]:GujaratLocalityName(eg,city)[]:JunagadhOrganizationName(eg,company)[InternetWidgitsPtyLtd]:ITOrganizationalUnitName(eg,section)[]:ITCommonName(e.g.serverFQDNorYOURname)[]:HITESHEmailAddress[]:admin@example.comPleaseenterthefollowing'extra'attributestobesentwithyourcertificaterequestAchallengepassword[]:adminAnoptionalcompanyname[]:IT

                                            接下來用下列命令簽名證書:

                                            opensslx509-req-days365-innginx.csr-signkeynginx.key-outnginx.crt

                                            你會看到下列輸出:

                                            Signatureoksubject=C=IN,ST=Gujarat,L=Junagadh,O=IT,OU=IT,CN=HITESH,emailAddress=admin@example.comGettingPrivatekeyEnterpassphrasefornginx.key:

                                            接下來打開Nginx默認虛擬主機文件,定義證書:

                                            nano/etc/nginx/sites-enabled/default

                                            進行下列更改:

                                            server{listen192.168.0.100:443ssl;root/var/www/html;indexindex.htmlindex.htmindex.nginx-debian.html;server_name_;ssl_certificate/etc/nginx/ssl/nginx.crt;ssl_certificate_key/etc/nginx/ssl/nginx.key;ssl_protocolsTLSv1TLSv1.1TLSv1.2;

                                            完成后保存并關閉文件。然后重啟Nginx服務器使這些變更生效:

                                            systemctlrestartnginx

                                            6.用密碼保護目錄

                                            創建Nginx Web服務器時,還可以用密碼來保護特定的目錄??梢允褂?htpasswd文件來做到這一點。

                                            為此用下列命令創建passwd文件,并為它添加用戶:

                                            mkdir/etc/nginx/.htpasswdhtpasswd-c/etc/nginx/.htpasswd/passwdadmin

                                            你會看到下列輸出:

                                            Newpassword:Re-typenewpassword:Addingpasswordforuseradmin

                                            接下來用下列命令在Nginx Web root里面創建測試目錄。

                                            mkdir/var/www/html/test

                                            接下來用下列命令為www-data user賦予所有權:

                                            chown-Rwww-data:www-data/var/www/html/test

                                            接下來用下列命令打開Nginx默認虛擬主機文件:

                                            nano/etc/nginx/sites-enabled/default

                                            接下來保護測試目錄,如下所示:

                                            location/test{auth_basic"Restricted";auth_basic_user_file/etc/nginx/.htpasswd/passwd;

                                            完成后保存并關閉文件。然后重啟Nginx服務使這些變更生效:

                                            systemctlrestartnginx

                                            接下來打開Web瀏覽器,輸入URL http://your-server-ip/test。系統會提示你輸入用戶名和密碼,訪問測試目錄,如下所示:

                                            恭喜你!你已成功保護了Ubuntu 18.04服務器上的Nginx服務器系統。但愿本文可保護你放在Nginx Web服務器上的應用程序。想了解更多信息,可以查閱Nginx安全文檔(https://docs.nginx.com/nginx/admin-guide/security-controls/)。

                                            原文作者:Hitesh Jethva

                                            【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

                                              聲明:本文僅為傳遞更多網絡信息,不代表IT資訊網觀點和意見,僅供參考了解,更不能作為投資使用依據。


                                            返回網站首頁 本文來源:IT資訊網

                                            本文評論
                                            用物聯網重塑新冠肺炎后的酒店生活
                                            新冠肺炎已經影響到全球的各個行業,其中酒店業是受影響
                                            日期:03-19
                                            揭秘!服務器機房都有哪些重要的系統?
                                            大家會常常聽到“數據中心”、“服務器機房”這些詞匯
                                            日期:04-04
                                            東華網智幫助內蒙農村信用社構建科學的IT運維體系
                                            內蒙古農村信用社(以下簡稱“內蒙農信”)創建于1951年
                                            日期:03-20
                                            物聯網僵尸網絡如何通過DDoS攻擊并感染設備
                                            為了應對物聯網僵尸網絡不斷增長的威脅,IT管理員必須了
                                            日期:01-23
                                            云轉型當道:如何借力基礎架構在顛覆中幸存?
                                            近年來,云技術的應用成為大勢所趨。企業應用云平臺加速
                                            日期:03-13
                                            9月信息通信展前瞻 見證5G第三階段測試結果公布
                                            5G不僅是新一代的移動通訊技術,更是未來實現萬物互聯的
                                            日期:10-02
                                            如何搞定 TB 級數據上云備份保護
                                            多備份從目前10萬多用戶中發掘的大型客戶分析得出,很多
                                            日期:03-09
                                            Java進階之深入理解負載均衡的五種算法實現原理
                                            什么是負載均衡:指由多臺服務器以對稱的方式組成一個服
                                            日期:02-10
                                            基于欺騙的勒索軟件檢測:它是什么以及為什么需要它
                                            您希望有機會加密網絡數據存儲和存儲在其中的關鍵任務
                                            日期:04-02
                                            同一性是解鎖物聯網真正潛力的關鍵
                                            2015年將成為物聯網元年。從牙刷可以安排體檢到瑜伽墊
                                            日期:03-19
                                            性能強勁:聯想ThinkPad X 與P1隱士在京發布 全面開售
                                            (原標題:15.6寸的高性能超便攜 ThinkPad X1隱士&P1隱士
                                            日期:10-02
                                            Moto:hello lenovo
                                            去年9月,當摩托羅拉移動(以下簡稱摩托羅拉)發布Moto 360
                                            日期:03-16
                                             

                                            精品无码久久午夜福利