Il-Gwida Ultimate biex Tiżgura, Tibbies u Ttejjeb il-Prestazzjoni ta 'Nginx Web Server
Ibbażat fuq l-affarijiet mill-isbaħ li smajt dwar Nginx, forsi ddeċidejt li tipprovaha. Jista 'jkollok għoġobha tant li qed tikkunsidra li tissostitwixxi l-installazzjonijiet Apache tiegħek b'Nginx wara li għaddejt minn xi wħud mill-artikoli dwar is-suġġett li ppublikajna fuq dan is-sit.
Jekk iva, jien ċert li int se tilqa’ din il-gwida b’idejha miftuħa peress li se nkopru 12-il tip biex tiżdied is-sigurtà tas-servers Nginx tiegħek (li jvarjaw minn iż-żamma ta’ Nginx aġġornata sa l-użu ta’ TLS u direzzjoni mill-ġdid ta’ HTTP għal HTTPS), u tinnota li xi wħud minnhom huma simili ħafna għal dak li tagħmel b'Apache.
Titlifx:
Se nużaw l-ambjent li ġej f'din il-gwida:
- Debian GNU/Linux 8.1 (jessie).
- indirizz IP: 192.168.0.25 (tecmintlovesnginx.com) u 192.168.0.26 (nginxmeanspower.com), kif deskritt fit-taqsima tal-hosts virtwali bbażati fuq IP fi
- “Kif Tissettja Hosts Virtwali bbażati fuq ismijiet u bbażati fuq IP (Blokki tas-Server) b'Nginx“
B'dan f'moħħna, ejja nibdew.
TIP #1: Żomm Nginx aġġornat
Fiż-żmien ta 'din il-kitba, l-aħħar verżjonijiet ta' Nginx fiċ-Repożitorji CentOS (f'EPEL) u Debian huma 1.6.3 u 1.6.2-5, rispettivament.
Għalkemm l-installazzjoni tas-softwer mir-repożitorji hija aktar faċli milli tikkumpila l-programm mill-kodiċi tas-sors, din l-aħħar għażla għandha żewġ vantaġġi: 1) tippermettilek tibni moduli żejda f'Nginx (bħal mod_security), u 2) dejjem tipprovdi verżjoni aktar ġdida. mir-repożitorji (1.9.9 mil-lum). In-noti ta 'rilaxx huma dejjem disponibbli fis-sit web ta' Nginx.
Titlifx:
TIP #2: Neħħi l-Moduli mhux meħtieġa f'Nginx
Biex tneħħi b'mod espliċitu moduli minn Nginx waqt l-installazzjoni mis-sors, agħmel:
# ./configure --without-module1 --without-module2 --without-module3
Pereżempju:
# ./configure --without-http_dav_module --withouthttp_spdy_module
Kif probabilment taħsbu, it-tneħħija tal-moduli minn installazzjoni preċedenti ta 'Nginx mis-sors teħtieġ li terġa' titwettaq il-kumpilazzjoni.
Kelma ta' kawtela: Direttivi ta' konfigurazzjoni huma pprovduti minn moduli. Kun żgur li ma tiddiżattivax modulu li fih direttiva li ser ikollok bżonn fit-triq! Għandek tiċċekkja n-nginx docs għal-lista ta 'direttivi disponibbli f'kull modulu qabel tieħu deċiżjoni dwar id-diżattivazzjoni tal-moduli.
TIP #3: Iddiżattiva d-Direttiva server_tokens f'Nginx
Id-direttiva
server_tokens
tgħid lil Nginx biex juri l-verżjoni attwali tiegħu fuq paġni ta 'żball. Dan mhux mixtieq peress li ma tridx taqsam dik l-informazzjoni mad-dinja sabiex tipprevjeni attakki fuq is-server tal-web tiegħek ikkawżati minn vulnerabbiltajiet magħrufa f'dik il-verżjoni speċifika.Biex tiddiżattiva d-direttiva
server_tokens
, issettja jekk tridx tintefa' ġewwa blokka server:server { listen 192.168.0.25:80; server_tokens off; server_name tecmintlovesnginx.com www.tecmintlovesnginx.com; access_log /var/www/logs/tecmintlovesnginx.access.log; error_log /var/www/logs/tecmintlovesnginx.error.log error; root /var/www/tecmintlovesnginx.com/public_html; index index.html index.htm; }
Ibda mill-ġdid nginx u vverifika l-bidliet:
TIP #4: Iċħad l-Aġenti tal-Utenti HTTP f'Nginx
Aġent tal-utent HTTP huwa softwer li jintuża għan-negozjar tal-kontenut kontra server tal-web. Dan jinkludi wkoll bots u crawlers tal-malware li jistgħu jispiċċaw jaffettwaw il-prestazzjoni tas-server tal-web tiegħek billi jaħlu r-riżorsi tas-sistema.
Sabiex iżżomm aktar faċilment il-lista tal-aġenti tal-utent mhux mixtieqa, oħloq fajl (
/etc/nginx/blockuseragents.rules
pereżempju) bil-kontenut li ġej:map $http_user_agent $blockedagent { default 0; ~*malicious 1; ~*bot 1; ~*backdoor 1; ~*crawler 1; ~*bandit 1; }
Sussegwentement, poġġi l-linja li ġejja qabel id-definizzjoni tal-blokk tas-server:
include /etc/nginx/blockuseragents.rules;
U dikjarazzjoni if biex tirritorna tweġiba 403 jekk is-sekwenza tal-aġent tal-utent tkun fil-lista sewda definita hawn fuq:
Ibda mill-ġdid nginx, u l-aġenti kollha tal-utent li s-sekwenza tagħhom taqbel ma 'hawn fuq se jiġu mblukkati milli jaċċessaw is-server tal-web tiegħek. Ibdel 192.168.0.25 bl-IP tas-server tiegħek u tħossok liberu li tagħżel string differenti għas-swiċċ
--user-agent
ta’ wget:# wget http://192.168.0.25/index.html # wget --user-agent "I am a bandit haha" http://192.168.0.25/index.html
TIP #5: Iddiżattiva Metodi HTTP mhux mixtieqa f'Nginx
Magħruf ukoll bħala verbi, il-metodi HTTP jindikaw l-azzjoni mixtieqa li għandha tittieħed fuq riżors moqdi minn Nginx. Għal siti web u applikazzjonijiet komuni, għandek tippermetti biss GET, POST, u HEAD u tiddiżattiva l-oħrajn kollha.
Biex tagħmel dan, poġġi l-linji li ġejjin ġewwa blokka server. Reazzjoni HTTP 444 tfisser rispons vojt u spiss tintuża f'Nginx biex iqarraq bl-attakki malware:
if ($request_method !~ ^(GET|HEAD|POST)$) { return 444; }
Biex tittestja, uża curl biex tibgħat talba DELETE u qabbel l-output ma' meta tibgħat GET regolari:
# curl -X DELETE http://192.168.0.25/index.html # curl -X POST http://192.168.0.25/index.html
TIP #6: Issettja Limitazzjonijiet tad-Daqs tal-Buffer f'Nginx
Biex tipprevjeni attakki ta' buffer overflow kontra s-server tal-web Nginx tiegħek, issettja d-direttivi li ġejjin f'fajl separat (oħloq fajl ġdid bl-isem
/etc/nginx/conf.d/buffer.conf
, pereżempju):client_body_buffer_size 1k; client_header_buffer_size 1k; client_max_body_size 1k; large_client_header_buffers 2 1k;
Id-direttivi t'hawn fuq jiżguraw li t-talbiet li jsiru lis-server tal-web tiegħek ma jikkawżawx buffer overflow fis-sistema tiegħek. Għal darb'oħra, irreferi għad-doks għal aktar dettalji dwar dak li jagħmel kull wieħed minnhom.
Imbagħad żid direttiva tal-inklużjoni fil-fajl tal-konfigurazzjoni:
include /etc/nginx/conf.d/*.conf;
TIP #7: Illimita n-numru ta’ Konnessjonijiet bl-IP f’Nginx
Sabiex tillimita l-konnessjonijiet bl-IP, uża d-direttivi
limit_conn_zone
(f'kuntest http jew għall-inqas barra mill-blokk tas-server) u limit_conn (f'kuntest http, blokk tas-server, jew kuntest tal-lokazzjoni).Madankollu, żomm f'moħħok li mhux il-konnessjonijiet kollha jingħaddu - iżda dawk biss li għandhom talba pproċessata mis-server u l-header kollu tat-talba tiegħu inqrat.
Pereżempju, ejja nissettjaw in-numru massimu ta' konnessjonijiet għal
1
(iva, hija esaġerazzjoni, iżda se tagħmel ix-xogħol tajjeb f'dan il-każ) f'żona msemmija addr (tista' tissettja dan għal kwalunkwe isem li tixtieq):limit_conn_zone $binary_remote_addr zone=addr:5m; limit_conn addr 1;
Test sempliċi b'Apache Benchmark (Perform Nginx Load) fejn isiru
10
konnessjonijiet totali b'2
talbiet simultanji se jgħinna nuru l-punt tagħna:# ab -n 10 -c 2 http://192.168.0.25/index.html
Ara l-ponta li jmiss għal aktar dettalji.
TIP #8: Setup Monitor Logs għal Nginx
Ladarba tkun għamilt it-test deskritt fil-ponta preċedenti, iċċekkja r-reġistru tal-iżbalji li huwa definit għall-blokk tas-server:
Tista' tkun trid tuża grep biex tiffiltra r-reġistri għal talbiet falluti li saru fiż-żona addr definita fit-TIP #7:
# grep addr /var/www/logs/tecmintlovesnginx.error.log --color=auto
Bl-istess mod, tista' tiffiltra r-reġistru tal-aċċess għal informazzjoni ta' interess, bħal:
- IP tal-Klijent
- Tip ta' browser
- Tip ta' talba HTTP
- Riżorsi mitluba
- Blokk tas-server li jwieġeb it-talba (utli jekk diversi hosts virtwali qed jidħlu fl-istess fajl).
U ħu azzjoni xierqa jekk tiskopri xi attività mhux tas-soltu jew mhux mixtieqa.
TIP #9: Ipprevjeni l-Hotlinking tal-Immaġni f'Nginx
Il-hotlinking tal-immaġni jiġri meta persuna turi f'sit ieħor immaġini ospitata fuq tiegħek. Dan jikkawża żieda fl-użu tal-bandwidth tiegħek (li tħallas għaliha) filwaqt li l-persuna l-oħra turi l-immaġni bil-ferħ bħallikieku kienet il-proprjetà tiegħu jew tagħha. Fi kliem ieħor, huwa telf doppju għalik.
Pereżempju, ejja ngħidu li għandek sottodirettorju jismu
img
ġewwa l-blokk tas-server tiegħek fejn taħżen l-immaġini kollha użati f'dak il-host virtwali. Biex tipprevjeni siti oħra milli jużaw l-immaġini tiegħek, ser ikollok bżonn daħħal il-blokka tal-lokazzjoni li ġejja ġewwa d-definizzjoni tal-host virtwali tiegħek:location /img/ { valid_referers none blocked 192.168.0.25; if ($invalid_referer) { return 403; } }
Imbagħad immodifika l-fajl
index.html
f'kull host virtwali kif ġej:Issa bbrawżja għal kull sit u kif tistgħu taraw, l-immaġni hija murija b'mod korrett f'192.168.0.25 iżda hija sostitwita b'rispons 403 f'192.168.0.26:
Innota li din il-ponta tiddependi fuq il-browser remot li jibgħat il-qasam tar-Referer.
TIP #10: Iddiżattiva SSL u Ippermetti TLS biss f'Nginx
Kull meta jkun possibbli, agħmel dak kollu li hemm bżonn biex tevita SSL fi kwalunkwe mill-verżjonijiet tagħha u uża TLS minflok. Il-
ssl_protocols
li ġejjin għandhom jitqiegħdu f'kuntest ta' server jew http fil-fajl host virtwali tiegħek jew huwa fajl separat permezz ta' direttiva include (xi nies jużaw fajl bl-isemssl.conf
, iżda huwa kompletament f'idejk):ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
Pereżempju:
TIP #11: Oħloq Ċertifikati f'Nginx
L-ewwelnett, iġġenera ċavetta u ċertifikat. Ħossok liberu li tuża tip differenti ta' encryption jekk trid:
# openssl genrsa -aes256 -out tecmintlovesnginx.key 1024 # openssl req -new -key tecmintlovesnginx.key -out tecmintlovesnginx.csr # cp tecmintlovesnginx.key tecmintlovesnginx.key.org # openssl rsa -in tecmintlovesnginx.key.org -out tecmintlovesnginx.key # openssl x509 -req -days 365 -in tecmintlovesnginx.csr -signkey tecmintlovesnginx.key -out tecmintlovesnginx.crt
Imbagħad żid il-linji li ġejjin ġewwa blokka server separata bi tħejjija għall-ponta li jmiss (
http --> https
direzzjoni mill-ġdid) u ċċaqlaq id-direttivi relatati mal-SSL għall-blokk il-ġdid ukoll:server { listen 192.168.0.25:443 ssl; server_tokens off; server_name tecmintlovesnginx.com www.tecmintlovesnginx.com; root /var/www/tecmintlovesnginx.com/public_html; ssl_certificate /etc/nginx/sites-enabled/certs/tecmintlovesnginx.crt; ssl_certificate_key /etc/nginx/sites-enabled/certs/tecmintlovesnginx.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; }
Fil-ponta li jmiss se nivverifikaw kif is-sit tagħna issa qed juża ċertifikat u TLS iffirmat minnu nnifsu.
TIP #12: Idderieġi mill-ġdid it-traffiku HTTP għal HTTPS f'Nginx
Żid il-linja li ġejja mal-ewwel blokk tas-server:
return 301 https://$server_name$request_uri;
Id-direttiva ta 'hawn fuq se tirritorna tweġiba 301 (Imċaqlaq b'mod permanenti), li tintuża għal direzzjoni mill-ġdid tal-URL permanenti kull meta ssir talba lejn il-port 80 tal-host virtwali tiegħek, u se terġa' tindirizza t-talba lejn il-blokk tas-server li żidna fil-ponta preċedenti.
L-immaġni hawn taħt turi d-direzzjoni mill-ġdid u tikkonferma l-fatt li qed nużaw TLS 1.2 u AES-256 għall-encryption:
Sommarju
F'dan l-artikolu qsamna ftit suġġerimenti biex niżguraw is-server tal-web Nginx tiegħek. Nixtiequ nisimgħu x'taħseb u, jekk għandek pariri oħra li tixtieq taqsam mal-bqija tal-komunità, tħossok liberu li tgħarrafna billi tibgħatilna nota billi tuża l-formola tal-kummenti hawn taħt.