Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2023-02-18 01:47:33

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Ukrycie zasobu w apache2 i zwrócenie 404 nawet jeśli istnieje

Tak się bawię ostatnio serwerem i chciałem sobie wyprowadzić panel phpmyadmin'a  poza serwer ale przez tunel SSH.No i w konfiguracji apache mam dodane takie coś:

Kod:

...
<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php
    Require local

     <IfModule mod_apparmor.c>
           AAHatName phpmyadmin
     </IfModule>

    # limit libapache2-mod-php to files and directories necessary by pma
    <IfModule mod_php7.c>
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/usr/share/doc/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/:/usr/share/javascript/
    </IfModule>

</Directory>
...

Chodzi głównie o Require local, który dopuszcza do tego katalogu jedynie zapytania lokalne (z interfejsu lo). No i wszystko działa fajnie, panel phpmyadmina jest dostępny tylko z tunelu SSH ale jest problem, bo jak ktoś by podał alias do tego katalogu w URL (jest i tak inny niż ten domyślny, ale szansa, że ktoś zgadnie jest większa od 0 xD), to zostanie zwrócony błąd 403, czyli brak uprawnień.

Jak to przepisać, tak by zwróciło 404 ale tylko, gdy zapytania nie są lokalne?

Offline

 

#2  2023-02-18 09:06:11

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Ukrycie zasobu w apache2 i zwrócenie 404 nawet jeśli istnieje

Czytał?
https://httpd.apache.org/docs/2.4/custom-error.html

Może lepiej zamiast localnost i SSH, zrób sobie certa pkcs#12, wtedy albo pacjent ma poprawny cert,
albo wypad na stronę błędu.

W Nignxie byłoby tak:

Kod:

 # ssl on;
        ssl_verify_client optional;
        ssl_verify_depth 5;
        if ($ssl_client_verify != SUCCESS) { return 404; }

W Apachu możesz zrobić tak samo, choć nie mam teraz pod ręką gotowego konfigu,
ale w dokumentacji mod-ssl masz wszystko co trzeba.

Tu masz instrukcję.
xD

Ostatnio edytowany przez Jacekalex (2023-02-20 08:38:22)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2023-02-18 09:11:21

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Ukrycie zasobu w apache2 i zwrócenie 404 nawet jeśli istnieje

Gdybym tylko ja z tego korzystał, to bym sobie zrobił. Póki co jest potrzebny ten 404 na ścieżce tylko dla nielokalnych zapytań. xD

No ja szukałem jak to zrealizować ale albo miałem dostęp lokalny albo 404 dla wszystkich. Nie potrafię tego połączyć. Więc jak masz jakaś sugestię, to napisz. xD

Offline

 

#4  2023-02-18 22:05:47

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Ukrycie zasobu w apache2 i zwrócenie 404 nawet jeśli istnieje

Vhost apache osobny dla PHPMyadmina i listen na adresie lokalnym?

Możesz też dla spokoju go dozbroić w Access Control:
https://httpd.apache.org/docs/2.4/howto/access.html
jeśli nie możesz zasnąć przez obawy....
xD

Ostatnio edytowany przez Jacekalex (2024-02-02 20:28:04)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5  2023-02-18 22:08:24

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Ukrycie zasobu w apache2 i zwrócenie 404 nawet jeśli istnieje

Mam profil apparmor'a dla każdego zasobu (katalogu/vhosta) -- nawet działa całkiem przyzwoicie, choć jeszcze testuje. xD

Ale naprawdę chciałbym by ten 404 był zwracany wszystkim poza lokalnymi zapytaniami.

Ostatnio edytowany przez morfik (2023-02-18 22:12:21)

Offline

 

#6  2023-02-19 08:04:45

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: Ukrycie zasobu w apache2 i zwrócenie 404 nawet jeśli istnieje

A coś najprostszego w stylu:

Kod:

RewriteCond %REMOTE_ADDR !^192\.168\.
RewriteCond %REQUEST_URI costam [OR]
RewriteCond %REQUEST_URI cosinnego
RewriteRule (.*) - [R=404,L]

Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
Zespół Adwokacki Dyskrecja

Offline

 

#7  2023-02-20 04:41:10

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Ukrycie zasobu w apache2 i zwrócenie 404 nawet jeśli istnieje

Próbowałem ale ciągle jest zwracane 403.

Offline

 

#8  2023-02-20 08:32:32

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Ukrycie zasobu w apache2 i zwrócenie 404 nawet jeśli istnieje

morfik napisał(-a):

Próbowałem ale ciągle jest zwracane 403.

To wystaw tego PHPmyadmina nie na Apachu, tylko doinstaluj tam Lighttpd, PHpMYadmina wystaw na Lighttpd,
a Apache nie musi w ogóle o nim wiedzieć,  będzie wtedy 404 jak chcesz.

Jest to w miarę stabilne, szybkie i skuteczne obejście strasznego problemu.
Zwłaszcza, jak Lighttpd będzie miał osobny profil AA.

Oczywiście konfigurację PhpMyadmin z Apacha usuniesz w tej sytuacji.

Poza tym wszystkim nie musisz dodawać konfiguracji PhpMyadmina do Apacha,
tylko podlinkować folder PhpMyadmina w dowolnym miejscu i też będzie działał.
Zwłaszcza, jak zrobisz Vhost administracyjny chroniony, wystawisz na nim Phpmyadmin, Roundcube,
staty Awstats, Webalizer i co tam jeszcze chcesz w osobnych folderach,
a sam Vhost będzie miał zupełnie inną nazwę.

Pozdro

EDIT:
Nginx:

Kod:

        ssl_verify_client optional;
        ssl_verify_depth 5;
        if ($ssl_client_verify != SUCCESS) { return 404; }

Kod:

curl -Ivk https://domek/www/ 
*   Trying 127.0.0.1:443...
* Connected to domek (127.0.0.1) port 443 (#0)
* ALPN: offers h2
* ALPN: offers http/1.1
* [CONN-0-0][CF-SSL] TLSv1.3 (OUT), TLS handshake, Client hello (1):
* [CONN-0-0][CF-SSL] TLSv1.3 (IN), TLS handshake, Server hello (2):
* [CONN-0-0][CF-SSL] TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* [CONN-0-0][CF-SSL] TLSv1.3 (IN), TLS handshake, Certificate (11):
* [CONN-0-0][CF-SSL] TLSv1.3 (IN), TLS handshake, CERT verify (15):
* [CONN-0-0][CF-SSL] TLSv1.3 (IN), TLS handshake, Finished (20):
* [CONN-0-0][CF-SSL] TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* [CONN-0-0][CF-SSL] TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=domek
*  start date: Feb 15 02:58:42 2023 GMT
*  expire date: May 16 02:58:41 2023 GMT
*  issuer: C=US; O=Let's Encrypt; CN=R3
*  SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway.
* Using HTTP2, server supports multiplexing
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* h2h3 [:method: HEAD]
* h2h3 [:path: /www/]
* h2h3 [:scheme: https]
* h2h3 [:authority: domek]
* h2h3 [user-agent: curl/7.87.0]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x5e7e199c9eb0)
> HEAD /www/ HTTP/2
> Host: domek
> user-agent: curl/7.87.0
> accept: */*
> 
* [CONN-0-0][CF-SSL] TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* [CONN-0-0][CF-SSL] TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 404 
HTTP/2 404 
< server: nginx
server: nginx
< date: Mon, 20 Feb 2023 07:49:08 GMT
date: Mon, 20 Feb 2023 07:49:08 GMT
< content-type: text/html
content-type: text/html
< content-length: 146
content-length: 146
< vary: Accept-Encoding
vary: Accept-Encoding
< set-cookie: uid=fwAAAWPzJfRKngO0AwMIAg==; expires=Tue, 20-Feb-24 07:49:08 GMT; domain=domek; path=/
set-cookie: uid=fwAAAWPzJfRKngO0AwMIAg==; expires=Tue, 20-Feb-24 07:49:08 GMT; domain=domek; path=/
< p3p: policyref="/w3c/p3p.xml", CP="CUR ADM OUR NOR STA NID"
p3p: policyref="/w3c/p3p.xml", CP="CUR ADM OUR NOR STA NID"

< 
* Connection #0 to host domek left intact

Czyli cel postawiony przez Morfika został w Nginx osiągnięty...
xD

Dowód obrazkowy:
https://i.postimg.cc/zGCBpVHS/Chrome404.png

Ostatnio edytowany przez Jacekalex (2023-02-20 08:56:19)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#9  2023-02-20 20:04:17

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Ukrycie zasobu w apache2 i zwrócenie 404 nawet jeśli istnieje

Ja myślę, że tutaj coś z tymi zwrotkami od Require local jest nie tak. Bo domyślnie jak nie ma żadnej (bo tak było chyba standardowo), to nikt nie ma dostępu do phpmyadmin, bo tam chyba jak nie ma żadnego Require, to jest Require all denied. I pewnie stąd się bierze ten błąd 403 cały czas. I pewnie wystarczy jakoś tutaj coś przepisać, żeby nie zwracało błędu uprawnień tylko 404.

Ostatnio edytowany przez morfik (2023-02-20 20:05:00)

Offline

 

#10  2023-02-21 18:55:01

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Ukrycie zasobu w apache2 i zwrócenie 404 nawet jeśli istnieje

Tu masz jakąś gimnastykę do tego:
https://dannyda.com/2022/03/08/how-to-replace-redir … uration-file/

Ostatnio edytowany przez Jacekalex (2023-02-21 18:55:11)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#11  2023-02-22 08:18:54

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Ukrycie zasobu w apache2 i zwrócenie 404 nawet jeśli istnieje

Chyba trochę za bardzo ten gościu z linka kombinuje/ xD

Offline

 

#12  2023-02-22 09:07:06

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Ukrycie zasobu w apache2 i zwrócenie 404 nawet jeśli istnieje

morfik napisał(-a):

Chyba trochę za bardzo ten gościu z linka kombinuje/ xD

tu jest trochę mniej kombinacji:
https://geekflare.com/404-instead-of-403/


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#13  2023-02-22 10:04:00

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Ukrycie zasobu w apache2 i zwrócenie 404 nawet jeśli istnieje

No to nie jest takie proste, bo ja chciałbym 404 tylko w przypadku phpmyadmin, a nie w przypadku pozostałych zasobów. Dlatego właśnie skończyły mi się pomysły i założyłem ten wątek. xD Najwyraźniej musi tak zostać jak jest. xD

Offline

 

#14  2023-02-22 14:33:50

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Ukrycie zasobu w apache2 i zwrócenie 404 nawet jeśli istnieje

Na Vhoście osobnym dla PhpMyadmin powinno ruszyć.

Po prostu część dyrektyw Apacha działa tylko w kontekście Virtualhosta.

Z resztą w Nginxie jest tak samo.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#15  2023-02-22 21:24:35

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: Ukrycie zasobu w apache2 i zwrócenie 404 nawet jeśli istnieje

A może mała kombinacja:

Osobny vhost dla phpmyadmina na 127.0.0.1:jakisport

I rewrite w stylu:

Kod:

RewriteCond %REMOTE_ADDR ^192\.128\.
RewriteRule ^/phpmyadmin/(.*) http://127.0.0.1:jakisport/$1 [P,L]

O tyle  ciekawe, że możesz dodać dostęp do phpmyadmina z jakiegoś innego IP (np. z domu) dodając tylko jedną linijkę...
Uwaga na RewriteBase, ja z reguły robię coś w stylu:

Kod:

RewriteRule ^/?cośtam

żeby było uniwersalnie :)

Ostatnio edytowany przez ethanak (2023-02-22 21:47:17)


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
Zespół Adwokacki Dyskrecja

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)