Ochrana přístupu k webové aplikaci

CPU

  • *****
  • 613
    • Zobrazit profil
    • E-mail
Ochrana přístupu k webové aplikaci
« kdy: 16. 01. 2023, 12:40:41 »
Ahoj,

mám více mizerných webových aplikací, některé jsou....fakt hnus...které musím provozovat a zároveň je nechci mít přímo vystrčené do internetu. Ochrana VPN není možná.

Moje představa:
Linuxová mašina s WWW ->> uživatel se přihlásí nějakým univerzálním heslem ->> společné heslo je ok a sedí ->> přes proxy se dostane k přihlášení do dalších služeb.

Cílem je setřást roboty, zmrdulínky a zvědavá děcka, která by neměla prostřelit tu první bránu.

Nejde mi nic vygooglovat, všechno mele o cloudu...jak zadám web app gw, nabízí mi to Azure nebo cloudové věci... přednost bych dal něčemu placenému a pravidelně záplatovanému.


Re:Ochrana přístupu k webové aplikaci
« Odpověď #1 kdy: 16. 01. 2023, 13:09:58 »
Tady pomůže klasická reverzní proxy a nastavení základní HTTP autentizace. Umí to například Nginx, viz dokumentaci. Uživatel se pak připojí k Nginx, který je vystrčený do internetu, přihlásí se jménem a heslem a pak dostane přístup ke skutečné webové službě. Pokud nezná heslo k Nginx, nemůže bušit do služby.

CPU

  • *****
  • 613
    • Zobrazit profil
    • E-mail
Re:Ochrana přístupu k webové aplikaci
« Odpověď #2 kdy: 16. 01. 2023, 13:15:42 »
Ano, to je určitě možnost, ale nechci to bastlit sám. Raději bych něco hotového out of the box.

alex6bbc

  • *****
  • 1 432
    • Zobrazit profil
    • E-mail
Re:Ochrana přístupu k webové aplikaci
« Odpověď #3 kdy: 16. 01. 2023, 13:18:13 »
Ano, to je určitě možnost, ale nechci to bastlit sám. Raději bych něco hotového out of the box.

tohle prave nemusis vubec bastlit sam, je to nekolikaradkova konfigurace v nginx nebo apache.

https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/

Re:Ochrana přístupu k webové aplikaci
« Odpověď #4 kdy: 16. 01. 2023, 15:17:40 »
No právě když máš hodně webových aplikací, tak přidávat n krát sadu pravidel bude šichta na dlouho.

je potřeba odpovědět si:
-je to jen pro tebe, bude se tam hlásit víc lidí
- taky u jednotlivé aplikace je rozdělit to na frontend (robotické sscanování,XSS, kommentáře) a administraci(pokusy o login,denial), jiná pravidla

Příklad-
Kód: [Vybrat]
if ($request_uri ~* fromcharcode) {return 429 ;}
if ($http_user_agent ~* (bbar|hrefs|seorush|petal|censy|jinsp)) {return 403;}
f ($request_uri ~* web/comment.asp ) { return 410; }

administrace (lze poupravit)
Kód: [Vybrat]
if ($request_uri ~* admin.php ) { set $c  1; }

                if ($http_user_agent ~ nejakyretezec) { set  $c 0; }
                if ($cookie_magicky = klic) { set  $c 0; }
                if ($c = 1) {   return 403      ;       }


tohle řeší jen oblast xss a zranitelnosti. Na zaměstnání robotů je potřeba nějaký javascript, cookie, detekce chování, jako má cloudflare,wedos... (a neskutečně mě to štve, narážím na to denně) (cgi-bin/challenge , /akam/13)



proxy:
Kód: [Vybrat]
server {
        proxy_set_header   "Connection" ""; #
        proxy_set_header Host test.cz;
        proxy_set_header Accept-Encoding ""; #mozna kvuli non-utf)
proxy_http_version 1.1;
client_max_body_size 4000000;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header  X-Real-IP       $remote_addr;
        location / {
             proxy_pass http://255.1.2.3:80;
        }
}
Jinak pozor, konfigurace nginx je taky magie,:
-match patterny, pořadí
-ify se mohou chovat nějak divně v kombinaci s location
- proxy set _header vs add
- proxy_ pass je důležité co je na konci, jak to skládá cestu (nahrazuje nebo  přidává)

K cchytrému WAF to má daleko, ten sleduje víc věcí a rozhoduje se dle nějakých metrik...
« Poslední změna: 16. 01. 2023, 15:21:31 od Ħαℓ₸℮ℵ ␏⫢ ⦚ »


Re:Ochrana přístupu k webové aplikaci
« Odpověď #5 kdy: 16. 01. 2023, 15:19:53 »
Jak píšou ostatní, je to pár řádků do konfigurace reverzní proxy. Předkonfigurované tak, že by někdo napsal těch pár řádků konfigurace za vás, to těžko někde najdete. Možná by to šlo udělat třeba přes Cloudflare, ale to stejně budete muset nakonfigurovat a stejně byste musel nakonfigurovat vaše weby tak, aby se k nim dostalo jen Cloudflare – to už je jednodušší rovnou nakonfigurovat tu reverzní proxy chráněnou heslem.

Já mám v oblibě Caddy server, ten se sám postará o HTTPS a výměnu certifikátů, reverzní proxy je možné nakonfigurovat rovnou při startu z příkazové řádky, autentizace jménem a heslem se zapne pár řádky konfigurace a dá se najít příklad konfigurace s reverzní proxy chráněné heslem.

Jose D

  • *****
  • 850
    • Zobrazit profil
Re:Ochrana přístupu k webové aplikaci
« Odpověď #6 kdy: 16. 01. 2023, 15:32:18 »
Já mám v oblibě Caddy server, ten se sám postará o HTTPS a výměnu certifikátů, reverzní proxy je možné nakonfigurovat rovnou při startu z příkazové řádky, autentizace jménem a heslem se zapne pár řádky konfigurace a dá se najít příklad konfigurace s reverzní proxy chráněné heslem.

(nejsem OP)

díky za tip. Je to basicauth který je podobný třeba tý nginx implementaci, že na tebe browser vybafne modální?) dialog, nebo to má v sobě už nějakou trošku user-friendly stránku, kam jde cosi napsat?

Nejsem OP, ale s tohle potřebou jsem se už taky potkal, ale basicauth používá ten "ošklivý" dialog browseru, který některé password managery nepodporují, a ani to nevypadá moc důvěryhodně.. (mám rád, když je velice zřejmé, kam user zadává své kredence)

Takže třeba mě by se moc líbil "něco jako captive portal", který useru nastaví (třeba) nějakou správnou auth sušenku, a po přihlášení by ho nginx pustil dál.

Jose D

  • *****
  • 850
    • Zobrazit profil
Re:Ochrana přístupu k webové aplikaci
« Odpověď #7 kdy: 16. 01. 2023, 15:34:07 »
No právě když máš hodně webových aplikací, tak přidávat n krát sadu pravidel bude šichta na dlouho.

(nejsem OP)
noo, tak na to se napíše ansible (nebo jiný configuration management tool). to není ten hlavní problém IMO..

Re:Ochrana přístupu k webové aplikaci
« Odpověď #8 kdy: 16. 01. 2023, 15:34:12 »
No právě když máš hodně webových aplikací, tak přidávat n krát sadu pravidel bude šichta na dlouho.

Žijeme v době automatizace, tohle přece už nemůže být problém.

Kód: [Vybrat]
if ($request_uri ~* fromcharcode) {return 429 ;}
if ($request_uri ~* web/comment.asp ) { return 410; }

Ne, ne a ne. Takhle se Nginx nekonfiguruje.

Re:Ochrana přístupu k webové aplikaci
« Odpověď #9 kdy: 16. 01. 2023, 16:41:57 »
(nejsem OP)
Pokud nejste Op ale Dev, Caddy se vám bude líbit, protože se dá krásně ovládat přes REST API :-)

díky za tip. Je to basicauth který je podobný třeba tý nginx implementaci, že na tebe browser vybafne modální?) dialog, nebo to má v sobě už nějakou trošku user-friendly stránku, kam jde cosi napsat?

Nejsem OP, ale s tohle potřebou jsem se už taky potkal, ale basicauth používá ten "ošklivý" dialog browseru, který některé password managery nepodporují, a ani to nevypadá moc důvěryhodně.. (mám rád, když je velice zřejmé, kam user zadává své kredence)

Takže třeba mě by se moc líbil "něco jako captive portal", který useru nastaví (třeba) nějakou správnou auth sušenku, a po přihlášení by ho nginx pustil dál.
Ano, BASIC auth je HTTP autentizace, tj. to samé, co odkazovali ostatní u Nginxu. Ano, bohužel jsou to ta ošklivá a divná modální okna v prohlížečích. Z hlediska implementace to má tu výhodu, že se prostě proxy podívá do hlaviček, zda tam jsou přihlašovací údaje, a když ne, vrátí stavový kód, prohlížeč si vyžádá jméno a heslo a pak už všechny požadavky posílá spolu s nimi. Takže to původní aplikaci nemůže nijak ovlivnit.

Když budete chtít dělat captive portál, musíte uživatele buď přesměrovávat jinam, nebo na té původní adrese zpřístupnit přihlašovací stránku. V obou případech to může způsobit nějaký konflikt s tou původní aplikací – třeba zvolíte název souboru, který používá ta původní aplikace apod.

Ale pokud se do toho chcete pustit, třeba pro Caddy jsou pluginy, které umožňují napojit do Caddy různé formy autentizace. Třeba Caddy Security.

CPU

  • *****
  • 613
    • Zobrazit profil
    • E-mail
Re:Ochrana přístupu k webové aplikaci
« Odpověď #10 kdy: 16. 01. 2023, 19:49:53 »
Děkuji za postřehy.
TMG (Microsoft Forefront Threat Management Gateway) už není.
Další podobné řešení už taky pošlo.
Pfff...
FortiWeb si s tím umí poradit, ale to zase stojí nehorázný kotel.