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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
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ś:
... <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
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:
# 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)
Offline
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
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)
Offline
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
A coś najprostszego w stylu:
RewriteCond %REMOTE_ADDR !^192\.168\. RewriteCond %REQUEST_URI costam [OR] RewriteCond %REQUEST_URI cosinnego RewriteRule (.*) - [R=404,L]
Offline
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:
ssl_verify_client optional; ssl_verify_depth 5; if ($ssl_client_verify != SUCCESS) { return 404; }
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)
Offline
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
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)
Offline
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/
Offline
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
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.
Offline
A może mała kombinacja:
Osobny vhost dla phpmyadmina na 127.0.0.1:jakisport
I rewrite w stylu:
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:
RewriteRule ^/?cośtam
żeby było uniwersalnie :)
Ostatnio edytowany przez ethanak (2023-02-22 21:47:17)
Offline
Strony: 1