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
Witam.
Uruchomiłem sobie taki mały serwer na Armbianie.
Armbian to taki Debian na procesory arm.
Na wersje serwerową zainstalowałem hostapd oraz dnsmasq i działa to jako Access point.
Do tego chciałbym dołożyć privoxy do filtrowania treści.
Privoxy miałoby działać jako przezroczyste proxy, czyli wszystko co łączy się przez wi-fi na
portach 80 i 443 jest filtrowane przez privoxy.
Zrobiłem wszystko według tego opisu: https://msfn.org/board/topic/183726-privoxy-as-ssl-filter/
Czyli W pliku konfiguracyjnym ustawiłem privoxy jako przechwytujące proxy oraz wskazałem certyfikaty wygenerowane w openssl.
Ten sam certyfikat zaimportowałem do firefoxa na komputerze.
Wprowadziłem reguły iptables które znalazłem w temacie o konfiguracji mitmproxy, ale zmieniłem port mitmproxy 8080 na
port privoxy 8018.
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8018
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8018
Po wprowadzeniu tych reguł tracę połączenie z internetem.
Offline
A jak w przeglądarkach manualnie ustawisz korzystanie z proxy, to działa bez tej gimnastyki z iptables NAT?
Moim zdaniem puszczenie przez proxy ruchu SSL w czasach, kiedy przeglądarki stosują certificate pinnning czy sprawdzają OSCP raczej mija się z celem.
Do tego zabawa z certyfikatem CA do przeglądarki jest dużo trudniejsza niż ustawienie ruchu z przeglądarki na proxy w ustawieniach.
Zwłaszcza że Privoxy to raczej kiedyś była potęga, teraz dużo mądrzejsze od DuckDuckGo Privacy Essentails, Privacy Badger czy Ublocka nie jest, nie wspominając o możliwościach Noscripta.
Powłokę Bash też można na proxy wypuścić:
https://www.cyberciti.biz/faq/linux-unix-set-proxy- … ent-variable/
Ostatnio edytowany przez Jacekalex (2023-03-02 01:21:31)
Offline
Po skonfigurowanie proxy w przeglądarce również nie działa.
Jeżeli ustawie serwer proxy tylko dla http i wejdę na
stronę 'config.privoxy.org' to przerywa połączenie ale inne strony wczytują się normalnie.
Jak ustawię dla http i https to żadna strona się nie otwiera.
Wszystko robiłem według tego opisu: https://step-tech.pl/po/jak-uzywac-raspberry-pi-jak … xy-z-privoxy/
System na moim komputerze to KDE neon (Ubuntu 22.04 LTS).
Myślę że jest coś nietak z regułami iptables bo jeżeli wprowadzę tylko tą:
$ sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8018
To strony w przeglądarce się wczytują ale 'config.privoxy.org' się nie otwiera.
Na komputerze dostaję komunikat że połączenie internetowe działa, ale łączność internetowa jest ograniczona.
Na początek chciałbym żeby chociaż http mi działało.
Ostatnio edytowany przez amin (2023-03-02 10:28:28)
Offline
Domyślny port dla privoxy to 8118, wszędzie ustawiasz 8018, nic nie piszesz, że zmieniałeś w konfiguracji. To samo dotyczy nazw interfejsów sieciowych, na pewno masz eth0 i wlan0, robiłeś coś z tym, by tak mieć (może i tak jest Armbianie, ale czy jest), sprawdzałeś to.
Offline
W pliku config mam ustawione: 'listen-address 0.0.0.0:8118'
Tu na forum zrobiłem błąd, ale normalnie używam portu 8118 a nie 8018.
Pod eth0 mam podłączony kabel LAN a wlan0 to wi-fi.
Adres eth0 to '192.168.1.11' natomiast wlan0 ma adres '172.24.1.1'
To jest stary TV Box na którym jest zainstalowany 'hostapd' oraz 'dnsmasq' i działa to jako AP.
I teraz do tego chciałbym dołożyć privoxy.
Zeby to działało jako AP dodałem takie reguły:
# iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
# iptables -A FORWARD -i eth0 -o wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# iptables-save > /etc/firewall.conf
I przy starcie te reguły są odtwarzane.
Jednak niezależnie od tego czy te reguły są, czy je wyczyszczę to dodanie tej reguły:
# iptables -t nat -A PREROUTING -i wlan0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8118
odcina połączenie http.
Zależy mi na tym żeby privoxy znajdowało się między eth0 i wlan0. (Privoxy as "intercepting proxy").
Tak samo jak mitmproxy i dlatego próbowałem użyć reguł iptables od mitmproxy.
Ostatnio edytowany przez amin (2023-03-03 01:01:28)
Offline
Nie wiem czy dobrze robię, ale w taki sposób czyszczę iptables, przed wprowadzeniem zasad od privoxy.
root@armbian:~# iptables --flush
root@armbian:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Tu wprowadzam nowe reguły dla privoxy.
Są to reguły które wczoraj znalazłem w Linux Magazine z marca 2020 (232) przeznaczone dla privoxy:
#Example Firewall Rules for an Intercepting Router
EXTERNAL_INTERFACE=eth0
INTERNAL_INTERFACE=wlan0
# Masquerade outgoing traffic.
iptables -t nat -A POSTROUTING -o $EXTERNAL_INTERFACE -j MASQUERADE
# Redirect connections that attempt to talk to external web servers without using the proxy.
iptables -t nat -I PREROUTING -i $INTERNAL_INTERFACE -p tcp ! -s 172.24.1.1 --dport 80 -j DNAT --to-destination 172.24.1.1:8118
# Permit loopback traffic, allow traffic generated by the router itself, and drop connections from the WAN.
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i $EXTERNAL_INTERFACE -j DROP
I nadal to samo, czyli http zablokowane.
Offline
Nie rób wszystkiego po omacku. Zainstaluj curl-a i sprawdź z klienta, czy masz odpowiedz z adresu konfiguracji privoxy (lub inny adres) z ustawieniami nawet od razu dla https. Przy założeniu, że privoxy jest na adresie 172.24.1.1, to wygląda tak (można bez verbose, ale tak będziesz miał pełną informację).
export https_proxy=https://172.24.1.1:8118 ; export http_proxy=http://172.24.1.1:8118 ; curl -v -I http://p.p
Offline
$ curl -v -I http://p.p
* Uses proxy env variable http_proxy == 'http://172.24.1.1:8118'
* Trying 172.24.1.1:8118...
* Connected to (nil) (172.24.1.1) port 8118 (#0)
> HEAD http://p.p/ HTTP/1.1
> Host: p.p
> User-Agent: curl/7.81.0
> Accept: */*
> Proxy-Connection: Keep-Alive
>
* Recv failure: Connection reset by peer
* Closing connection 0
curl: (56) Recv failure: Connection reset by peer
Offline
Wygląda, że namieszało się z zaporą, zresetuj ustawienia wyczyść wszystkie reguły (dla nat-a też).
iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -t nat -F iptables -F iptables -X
Ustaw tylko to, co jest niezbędne bez przekierowania na razie i sprawdź jeszcze raz czy się łączy, jak tak, to możesz ustawić sobie proxy w przeglądarce i sprawdzić, jak działa, to ustawiać dalej.
Offline
Wyczyściłem iptables na serwerze i kliencie.
Straciłem połączenie bo działanie AP opiera się na regułach iptables:
# iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
# iptables -A FORWARD -i eth0 -o wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Gdy je wprowadziłem to połączenie z siecią wróciło ale z privoxy nie idzie się połączyć.
Tak myślę że może te dwie pierwsze reguły sprawiają problem.
Ale nie wiem jak je zastąpić.
Offline
Na pewno straciłeś połączenie z internetem, ale lan powinien działać, bez tego, te reguły mogą być inne, może być ich mniej, ale one niczego nie powinny zamykać i jak widać, internet i lan działa. Mniejsza z tym, to jest to, o czym pisałem, by robić to minimum, jeżeli więcej nic nie dodawałeś ponad to co opisałeś, to miałeś i możesz pokazać, wynik tego z klienta (na serwerze też możesz to sprawdzić, z samym http).
export http_proxy=http://172.24.1.1:8118 ; curl -v -I http://p.p
A z serwera, na wszelki wypadek, możesz pokazać to.
ss -a | grep 8118
Jak dalej nic nie znajdziesz, to może zainstaluje to privoxy (tylko to dosyć proste i nie bardzo jest się gdzie pomylić z samym privoxy) i zobaczę dokładniej, gdzie mogłeś popełnić błąd.
Edycja: Literówka, nieistotna.
Ostatnio edytowany przez jawojx (2023-03-04 11:24:39)
Offline
To z serwera:
root@armbian:~# export http_proxy=http://172.24.1.1:8118
root@armbian:~# curl -v -I http://p.p
* Uses proxy env variable http_proxy == 'http://172.24.1.1:8118'
* Trying 172.24.1.1:8118...
* Connected to 172.24.1.1 (172.24.1.1) port 8118 (#0)
> HEAD http://p.p/ HTTP/1.1
> Host: p.p
> User-Agent: curl/7.74.0
> Accept: */*
> Proxy-Connection: Keep-Alive
>
* Empty reply from server
* Connection #0 to host 172.24.1.1 left intact
curl: (52) Empty reply from server
root@armbian:~# ss -a | grep 8118
tcp LISTEN 0 128 0.0.0.0:8118 0.0.0.0:*
A to z klienta:
$ export http_proxy=http://172.24.1.1:8118
$ curl -v -I http://p.p
* Uses proxy env variable http_proxy == 'http://172.24.1.1:8118'
* Trying 172.24.1.1:8118...
* Connected to (nil) (172.24.1.1) port 8118 (#0)
> HEAD http://p.p/ HTTP/1.1
> Host: p.p
> User-Agent: curl/7.81.0
> Accept: */*
> Proxy-Connection: Keep-Alive
>
* Recv failure: Connection reset by peer
* Closing connection 0
curl: (56) Recv failure: Connection reset by peer
$ ss -a | grep 8118
u_str ESTAB 0 0 * 38118 * 38920
u_str ESTAB 0 0 /run/dbus/system_bus_socket 38920 * 38118
Offline
Słucha na porcie 8118, a nie łączy się po http. Ale zapomniałem zapytać o to, myślałem, że to oczywiste, że wracamy do podstawowej konfiguracji i uciekło.
amin napisał(-a):
... Zrobiłem wszystko według tego opisu: https://msfn.org/board/topic/183726-privoxy-as-ssl-filter/
Czyli W pliku konfiguracyjnym ustawiłem privoxy jako przechwytujące proxy oraz wskazałem certyfikaty wygenerowane w openssl...
Oczywiście wycofałeś te zmiany w konfiguracji, ze zmian powinno zostać tylko to.
amin napisał(-a):
W pliku config mam ustawione: 'listen-address 0.0.0.0:8118'
I zrestartuj privoxy.
# systemctl restart privoxy.service
I sprawdź, już wystarczy z klienta.
export http_proxy=http://172.24.1.1:8118 ; curl -v -I http://p.p
Offline
Przeinstalowałem privoxy i w oryginalnym pliku 'config' zmieniłem tylko 'listen-address'
$ export http_proxy=http://172.24.1.1:8118
$ curl -v -I http://p.p
* Uses proxy env variable http_proxy == 'http://172.24.1.1:8118'
* Trying 172.24.1.1:8118...
* Connected to (nil) (172.24.1.1) port 8118 (#0)
> HEAD http://p.p/ HTTP/1.1
> Host: p.p
> User-Agent: curl/7.81.0
> Accept: */*
> Proxy-Connection: Keep-Alive
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Content-Length: 2710
Content-Length: 2710
< Content-Type: text/html
Content-Type: text/html
< Cache-Control: no-cache
Cache-Control: no-cache
< Date: Sat, 04 Mar 2023 19:30:57 GMT
Date: Sat, 04 Mar 2023 19:30:57 GMT
< Last-Modified: Sat, 04 Mar 2023 19:30:57 GMT
Last-Modified: Sat, 04 Mar 2023 19:30:57 GMT
< Expires: Sat, 17 Jun 2000 12:00:00 GMT
Expires: Sat, 17 Jun 2000 12:00:00 GMT
< Pragma: no-cache
Pragma: no-cache
<
* Connection #0 to host (nil) left intact
Skonfigurowałem w przeglądarce proxy dla http i po wejściu na 'config.privoxy.org' pokazuje, że privoxy działa.
Teraz będę powoli przywracał stary 'config' i może uda się uruchomić tryb przechwytywania.
Ostatnio edytowany przez amin (2023-03-04 20:53:05)
Offline
To do czego łączył się curl, w tych testach co podałem http://p.p, to jest to samo co config.privoxy.org. Tylko jak zrobisz przekierowania na zaporze na port 8118, to uważaj, bo będziesz miał internet tylko tam, gdzie masz ustawione proxy. Nie zapomnij że jak chcesz coś edytować w privoxy na stronie konfiguracji to potrzebujesz ustawić w config-u enable-edit-actions 1 (ale to masz opisane), zablokuj jakąś stronę i sprawdź czy działa. No i tyle.
Ostatnio edytowany przez jawojx (2023-03-04 21:22:31)
Offline
W nowym pliku 'config' ustawiłem tylko 'listen-address 0.0.0.0:8118' oraz 'accept-intercepted-requests 1'.
Przy takich ustawieniach i proxy ustawionym w przeglądarce dla http i https, strony otwierają się bez problemu.
Potem wyłączyłem proxy w przeglądarce i wprowadziłem reguły iptables.
Najpierw dla http:
iptables -t nat -I PREROUTING -i $INTERNAL_INTERFACE -p tcp ! -s 172.24.1.1 --dport 80 -j DNAT --to-destination 172.24.1.1:8118
Tu wszystko działało dobrze i 'config.privoxy.org' przechodziło.
Potem dodałem regułę dla https:
iptables -t nat -I PREROUTING -i $INTERNAL_INTERFACE -p tcp ! -s 172.24.1.1 --dport 443 -j DNAT --to-destination 172.24.1.1:8118
To wszystko zablokowało i z żadną stroną nie idzie się połączyć.
W dokumentacji piszą że tryb przechwytujący nie działa z https.
Da się to jakoś obejść lub może zastosować inne reguły iptables ?
Znalazłem takie coś : https://monklinux.blogspot.com/2020/04/installing-t … proxy_14.html
Tylko że tam trzeba instalować dodatkowy serwer squid, który na razie nie jest mi do niczego potrzebny, a poza tym
nie wiem czy poradzę sobie z konfiguracją bo kiepsko jest opisana.
Znalazłem również to: https://github.com/wheever/ProxHTTPSProxyMII
ProxHTTPSProxyMII jest prosty do uruchomienia, więc go uruchomiłem i dostałem taki komunikat:
============================================================================
ProxHTTPSProxyMII v1.4 (urllib3/1.26.14)
FrontServer : localhost:8079
RearServer : localhost:8081
ParentServer : None
Proxomitron : http://localhost:8118
============================================================================
Ostatnio edytowany przez amin (2023-03-08 15:27:16)
Offline
Metoda z ProxHTTPSProxyMII dobrze by działała w trybie przezroczystego proxy ale jest to
bardzo stary projekt i część stron https się nie otwiera.
Privoxy działa bardzo dobrze ale tylko po konfiguracji w przeglądarce otwiera strony https.
Jak ustawić go jako przezroczysty proxy na serwerze to działają tylko strony http a https są blokowane.
Dlaczego tak się dzieje ?
Źle to robię, czy może programiści privoxy celowo wprowadzili jakąś blokadę na przechwytywanie https ?
A jeżeli jest blokada, to czy da się ją jakoś obejść ?
Offline
Strony: 1