Hvernig á að tryggja NGINX með sérsniðnum Fail2ban síum

Fail2Ban er frábær öryggisráðstöfun til að nota fyrir vefforritaþjóninn þinn. Það kemur með ýmsum eiginleikum, sjálfgefnum síum og aðgerðum sem geta strax haft áhrif á að banna slæma vefvélmenni, tæma kerfisauðlindir þínar og stöðva árásir, sem er mikilvægasti hluti hvers vefsíðu.

Hins vegar eru flestir kerfisstjórar og vefsíðueigendur að leita að stundum meira auka en fail2ban hefur upp á að bjóða. Í eftirfarandi kennslu muntu læra hvernig á að búa til og nota sérsniðnar síur á Nginx netþjóninum þínum, sem hægt er að fínstilla að þínum þörfum og stækka síðar.

Gakktu úr skugga um að prófa og nota allar nýjar fail2ban síur með varúð. Athugaðu að stilla þarf stillingar að þínum þörfum.

Bæta við nýjum Fail2Ban fangelsi

Kennslan gerir ráð fyrir að þú hafir Fail2ban uppsett og þekkir hvernig á að stilla fangelsi og stillingar. Hér að neðan eru nokkur viðbótarfangelsi sem þú þarft að fínstilla að þínum óskum ef þú ert að nota frekari bannaðgerðir eins og Cloudflare eða tilkynna til AbuseIPDB.org o.s.frv.

Bættu við eftirfarandi fangelsum sem þú vilt nota í /fail2ban/jail.local skránni þinni.

sudo nano /etc/fail2ban/jail.local
[nginx-403]
 enabled = true
 port     = http,https
 filter = nginx-403
 action = iptables-allports
 logpath = %(nginx_access_log)s
 bantime = 1440m # 1 day
 findtime = 1440m # 1 day
 maxretry = 4

[nginx-noagent]
 enabled = true
 port     = http,https
 filter = nginx-noagent
 action = iptables-allports
 logpath = %(nginx_access_log)s
 bantime = 1440m # 1 day
 findtime = 1440m # 1 day
 maxretry = 3

[nginx-noauth]
 enabled = true
 filter = nginx-noauth
 action = iptables-allports
 logpath = %(nginx_error_log)s
 bantime = 1440m # 1 day
 findtime = 1440m # 1 day
 maxretry = 5

[nginx-nologin]
 enabled = true
 filter = nginx-nologin
 action = iptables-allports
 logpath = %(nginx_access_log)s
 bantime = 1440m # 1 day
 findtime = 1440m # 1 day
 maxretry = 5

[nginx-noscript]
 enabled = true
 action = iptables-allports
 filter = nginx-noscript
 logpath = %(nginx_access_log)s
 bantime = 1440m # 1 day
 findtime = 1440m # 1 day
 maxretry = 3

[nginx-noproxy]
 enabled = true
 action = iptables-allports
 filter = nginx-noproxy
 logpath = %(nginx_access_log)s
 bantime = 1440m # 1 day
 findtime = 1440m # 1 day
 maxretry = 0

[nginx-nowordpress]
 enabled = true
 action = iptables-allports
 filter = nginx-nowordpress
 logpath = %(nginx_access_log)s
 bantime = 1440m # 1 day
 findtime = 1440m # 1 day
 maxretry = 3

[portscan-block]
 enabled = true
 action = iptables-allports
 filter = portscan-block
 logpath = %(ufw_log)s
 bantime = 1440m # 1 day
 findtime = 1440m # 1 day
 maxretry = 5

Fáðu


Búðu til nýjar Fail2Ban síur

Næst þarftu að búa til nýja síuskrá fyrir hverja af þessum síum og setja .conf í lok skráarinnar.

Athugaðu, búa til skrá er eitthvað sem þú þarft að gera sjálfur.

create file /location/fail2ban/filter.d/nginx-403.conf

 [Definition]
 failregex = ^ -."(GET|POST|HEAD).HTTP.*" 403
 ignoreregex =

create file /location/fail2ban/filter.d/nginx-noagent.conf

 [Definition]
 failregex = ^ -."-" "-"$             ^ -."-" "curl.*"$
 ignoreregex =

create file /location/fail2ban/filter.d/nginx-noauth.conf

 [Definition]
 failregex = no user/password was provided for basic authentication.client:              user . was not found in.client:              user . password mismatch.*client: 
 ignoreregex =

create file /location/fail2ban/filter.d/nginx-nologin.conf
 [Definition]
 failregex = ^ -.*POST /sessions HTTP/1.." 200
 ignoreregex =

create file /location/fail2ban/filter.d/nginx-noscript.conf
 [Definition]
 failregex = ^ -.GET.(.php|.asp|.exe|.pl|.cgi|\scgi)
 ignoreregex =

 create file /location/fail2ban/filter.d/nginx-noproxy.conf
 [Definition]
 failregex = ^ -.GET http.
 ignoreregex =

create file /location/fail2ban/filter.d/nginx-nowordpress.conf

 [Definition]
 failregex = ^ .* "(GET|POST|HEAD) /+(?i)(wp(-|/)|xmlrpc.php|\?author=1)
             ^ .* "(GET|POST|HEAD|PROPFIND) /+(?i)(a2billing|admin|apache|axis|blog|cfide|cgi|cms|config|etc|.git|hnap|inc|jenkins|jmx-|joomla|lib|linuxsucks|msd|muieblackcat|mysql|myadmin|n0w|owa-autodiscover|pbxip|pma|recordings|sap|sdk|script|service|shell|sqlite|vmskdl44rededd|vtigercrm|w00tw00t|webdav|websql|wordpress|xampp|xxbb)
             ^ .* "(GET|POST|HEAD) /[^"]+.(asp|cgi|exe|jsp|mvc|pl)( |\?)
             ^ .*(?i)(/bash|burger-imperia|changelog|hundejo|hvd-store|jorgee|masscan|pizza-imperia|pizza-tycoon|servlet|testproxy|uploadify)
 ignoreregex =
 journalmatch = _SYSTEMD_UNIT=nginx.service + _COMM=nginx

create file /location/fail2ban/filter.d/portscan-block.conf

 [Definition]
 failregex = .[UFW BLOCK] IN=. SRC=
 ignore common multicast device discovery calls on LOCAL IPv4/IPv6 networks
 still ban non-local (WAN) calls to any associated ports
 ignoreregex = SRC=(10.|172.1[6-9].|172.2[0-9].|172.3[0-1].|192.168.|fe\w:). DST=(static.ip.address.here|224.0.0.). PROTO=(2|UDP)(\s+|.* DPT=(1900|3702|5353|5355) LEN=\d*\s+)$

Prófaðu ný Fail2ban fangelsi/síur

Til að klára það skaltu ganga úr skugga um að endurræsa fail2ban í stýrikerfinu þínu með skipun þess.

Fyrir flestar Linux dreifingar ætti eftirfarandi skipun að virka ef systemd er keyrt.

sudo systemctl restart fail2ban

Aðrar dreifingar sem ekki eru kerfisbundnar eða önnur kerfi endurræsa kerfið þitt eða fail2ban þjónustu.

Þegar fail2ban hefur verið endurræst skaltu keyra eftirfarandi fail2ban-client status skipun til að skoða fangelsið.

sudo fail2ban-client status nginx-noscripts

Dæmi úttak:

Status for the jail: nginx-noscripts
 |- Filter
 | |- Currently failed: 0
 | |- Total failed: 0
 | - File list: /var/log/nginx/access.log - Actions
 |- Currently banned: 95
 |- Total banned: 107
 `- Banned IP list:

Eins og framleiðslan hér að ofan hefur sýnt hefurðu 95 IP vistföng bönnuð, með samtals 107 með virkum og óvirkum sögulegum bönnum.


Fáðu


Athugasemdir og niðurstaða

Þú hefur lært hvernig á að stilla nokkur viðbótarfangelsi við fail2ban stillingarnar þínar fyrir Nginx netþjóninn þinn í kennslunni. Á heildina litið geturðu náð frábæru öryggi á netþjóni, hægt er að stilla og fínstilla síur og það sem var sýnt er aðeins brot af því sem meira er hægt að gera til að henta sérstökum aðstæðum og þörfum.

Eini gallinn við fail2ban er að keyra þyrpingar af netþjónum, í augnablikinu er þetta ekki hagkvæmt nema þú notir Cloudflare og lokar á þá á öfugri umboði, til dæmis, en fyrir rekstraraðila staka netþjóna geturðu nánast læst netþjóninum þínum eins og Fort Knox.

15 hugsanir um „Hvernig á að tryggja NGINX með sérsniðnum Fail2ban síum“

  1. Hæ hæ! Væri þér sama ef ég deili blogginu þínu með myspaceinu mínu
    hópur? Það er fullt af fólki sem ég held að kunni mjög vel að meta þig
    efni. Gerðu það láttu mig vita. Takk

    Svara
    • Halló Mortaring,

      Jú félagi engin vandamál. Bara vinsamlegast settu hlekk á greinarnar í lokin (bakslag) ef þú getur til að hjálpa mér það er allt sem ég bið um í staðinn ef hægt er 🙂

      Takk fyrir skilaboðin.

      Svara
  2. Halló,
    hafa bereits Fail2Ban laufen mit 13 Jails.
    Gefðu þér Deinen nginx-nowordpress fangelsi í meine Jail.local hinzugefügt og auch die nginx-nowordpress erstellt.
    Nach þjónusta fail2ban endurræsa hefur ich aber auf einmal nur noch 12 Jails, eigentlich müssten es aber 14 sein.

    2 fangelsi deyja ekki í Jail.local synd, utan í xy.local og xyz.local eru líka á leið...

    Svara
    • Halló,

      Þegar fangelsi birtist ekki þýðir það að eitthvað er rangt við síuna/fangelsið.

      Hvaða útgáfu af fail2ban ertu að keyra og á hvaða vettvangi? Kennsluefnið var gert með einni af nýjustu útgáfunum af fail2ban, en eldri útgáfur geta spilað aðeins upp ef þú getur látið mig vita að ég mun prófa á endanum mínum.

      Í öðru lagi, fjarlægðu journalmatch = _SYSTEMD_UNIT=nginx.service + _COMM=nginx, það fer hugsanlega eftir útgáfunni þinni, ertu að búa til aðskilin fangelsi frá því sem ég skil? Það gæti bara verið röng setningafræði einhvers staðar.

      Láttu mig vita og ég mun kanna það, þar sem það virkar fínt hjá mér með endurskoðun með því að nota eina af nýjustu útgáfunum.

      Takk

      Þýðing: https://www.linuxcapable.com/de/So-sichern-Sie-Nginx-mit-benutzerdefinierten-fail2ban-Filtern/

      Svara
      • Hæ,

        Ég kíkti aftur á No-wordpress fangelsið. Fjarlægði „journalmatch = _SYSTEMD_UNIT=nginx.service + _COMM=nginx“ úr síunni. => Eftir það virkar eitt af þegar núverandi fangelsum mínum ekki lengur. Slökktu á no-wordpress fangelsinu þínu => öll fangelsin mín vinna aftur.

        Prófaði portscan-block jailið þitt incl. sían. => Fail2ban endurræsir sig ekki lengur. Verð að slökkva á fangelsinu þínu aftur.

        Svara
      • Prófaði aftur án wordpress fangelsið þitt, fjarlægði „journalmatch = _SYSTEMD_UNIT=nginx.service + _COMM=nginx“ úr síunni. => eitt af fangelsinu mínu sem þegar er til virkar ekki lengur. Slökktu á orðpressu fangelsinu þínu, öll fangelsin mín vinna aftur.

        Reyndi líka portscan-block jail => fail2ban byrjar ekki lengur. Verð að slökkva á fangelsinu þínu aftur og allt er í lagi aftur

        Svara
        • Hæ, Michael,

          Geturðu sent mér Fail2ban stillingarskrárnar þínar einhvern veginn? Ég er ekki viss um hvort þú ert með Github reikning til að búa til skyndipróf útibú einkaaðila eða eitthvað. Ég vil grípa uppsetninguna þína og prófa hana á endanum.

          Ef það er of mikil vinna eða ekki viss, vinsamlegast sendu mér bara jail.local, + bættar síur til contact@linuxcapable.com, takk. Við erum með sama uppsetningu, eitthvað er að gerast ef ég fæ þessar skrár, kannski get ég hjálpað aðeins meira og séð hvað er í gangi 🙂

          EF þú ert með einhverjar viðkvæmar upplýsingar eins og IP tölu eða tölvupóst í stillingarskránum, vinsamlegast fjarlægðu þær. Ég er samt sá eini með aðgang.

          Svara
  3. Vá, þetta var fljótt svar, takk.
    Ég er á Ubuntu 20.4 LTS með Fail2Ban V 1.57 (síðasta sem þú færð með viðeigandi uppfærslu).
    Nei, ég er með 11 af 13 fangelsum í jail.local. Aðeins 2 fangelsi eru í aðskildum fangelsum af hvaða ástæðu sem er...

    Takk fyrir að athuga

    Michael

    Svara
    • Hæ michael,

      Ég notaði sömu distro/fail2ban útgáfuna til að athuga. Skoðaðirðu fail2ban loginn þinn?

      grep fail /var/log/fail2ban.log

      eða grep villa /var/log/fail2ban.log

      Ef þetta virkar ekki skaltu endurhlaða fangelsin þín, opnaðu síðan skrána handvirkt og athugaðu hvers vegna fangelsið er ekki að hlaðast, ætti að gefa þér ástæðu fyrir því að þú ættir að sýna eitthvað gagnlegt, þar sem þegar fangelsin hlaðast ekki er það venjulega setningafræðivandamál, og við getum útilokað að það sé ekki samhæft við útgáfuna þína, þú ert að nota það með Nginx?

      Takk.

      Svara
  4. Já með Nginx, ég mun reyna að breyta setningafræði fyrir síuna eins og lagt er til í fyrstu tilvitnun þinni ...

    En núna þarf ég að fara að sofa :)

    Takk fyrir skjóta hjálp hingað til :)

    Svara

Leyfi a Athugasemd