iptables na węźle wyjściowym Tor


9

Chcę uruchomić otwarty router Tor .

Moje zasady wyjścia będą podobne do ReducedExitPolicy .

Ale chcę również utrudnić sieci torom nadużycie moich zasobów.

Przypadki, które chcę uniemożliwić klientom za pośrednictwem Tora:

  • Wbijanie jednej strony z bardzo dużą liczbą pakietów.
  • Agresywne skanowanie sieci całych bloków IP

Przypadki, których NIE chcę uniemożliwiać klientom za pośrednictwem Tora:

  • przesyłanie kilku setek plików graficznych do chmury
  • wysiewając torrent

Moje pytanie brzmi: czy w ogóle można to zrobić i jak?

Moją pierwszą myślą była zapora ogniowa (Linux / iptables lub * BSD / ipfw / pf) - ale prawdopodobnie będzie to bezużyteczne z powodu nieodłącznych właściwości routera Onion.

Czy jest jakiś ciągły rozwój zespołu torproject na ten temat?

Proszę również o ogólne wskazówki na temat zabezpieczania węzłów wyjściowych Tora.

Aktualizacja (wrz 2012)

Na podstawie pomocnych odpowiedzi i innych badań sądzę, że nie da się tego zrobić.

Najlepsze, co możesz zrobić, aby powstrzymać ludzi od nadużywania węzła wyjściowego do udziału w DDOS, to wykrywanie bardzo częstych pakietów kierowanych do jednego adresu IP.

Próg „bardzo częstej” zależy od całkowitej przepustowości węzła ... Jeśli jest niepoprawny, wystąpią fałszywe alarmy, blokujące legalny ruch aplikacji TCP w czasie rzeczywistym oraz ruch pochodzący od bardzo wielu klientów do jednego miejsca docelowego.

Aktualizacja (grudzień 2014)

Moje przewidywania były oczywiście prawdziwe - miałem kilka skarg dotyczących nadużyć sieciowych od mojego dostawcy Internetu.

Aby uniknąć zamknięcia usługi, musiałem zastosować następujący zestaw iptablesreguł ( ONEWjest to łańcuch wychodzących pakietów TCP SYN (inaczej NOWOŚĆ):

Nie jestem pewien, czy to wystarczy, ale oto:

-A ONEW -o lo -j ACCEPT
-A ONEW -p udp --dport 53 -m limit --limit 2/sec --limit-burst 5 -j ACCEPT
-A ONEW -m hashlimit --hashlimit-upto 1/second --hashlimit-mode dstip --hashlimit-dstmask 24 --hashlimit-name ONEW -j ACCEPT
-A ONEW -m limit --limit 1/sec -j LOG --log-prefix "REJECTED: "
-A ONEW -j REJECT --reject-with icmp-admin-prohibited

Odpowiedzi:


2

Weź pod uwagę, że:

  • Klienci Tor zmieniają wirtualne obwody co około 10 minut według mojego obecnego zrozumienia. Oznacza to, że źródłowy adres IP zmienia się w tym czasie. Jest mało prawdopodobne, aby zapobiegać wszelkim zachowaniom, które uważasz za złośliwe dłużej niż przez ten czas.

  • Zauważ, że fakt, że Tor jedynie proxy ruchu TCP, a nie żaden inny protokół dość mocno ogranicza możliwości nadużyć.

iptablespozwala traktować nowe wychodzące połączenia TCP inaczej niż istniejące. Wszystko, co ESTABLISHED,RELATEDpowinno być ACCEPTEDlub przechodzi przez „istniejące połączenia TCP”, a wychodzący TCP, który nie jest przez to złapany, może być ograniczony. Każdy wychodzący ruch Tora powinien podlegać temu.

Uważam, że między powyższym a korzystaniem z „Polityki ograniczonego opuszczania” byłoby najlepsze, co możesz zrobić.

Idealnie, nie uruchamiaj niczego innego na swoim urządzeniu Tor poza:

  • Prawdopodobnie będziesz mieć przynajmniej SSH, ustaw go na innym porcie niż 22.
  • Prawdopodobnie będziesz chciał uruchomić prosty serwer WWW, aby wyświetlić tę stronę . mini-httpdInstancja chroot powinna zrobić. Nie używać inetd.

Nie uruchamiaj Tora na polu używanym do czegokolwiek innego. Upewnij się, że przeczytałeś sekcję „Wyjścia przekaźników” FAQ prawnych Tor i w pełni rozumiesz ich konsekwencje. Przeczytaj także i zrób to wszystko .


1

Zapobieganie tym atakom będzie trudniejsze niż zwykle, ponieważ źródłowy adres IP nie jest stały. Jednak, o ile mi wiadomo, trasy są zmieniane co kilka minut.

Możesz nadal wdrożyć niektóre standardowe reguły ograniczania / filtrowania, ale z wyższym progiem, ponieważ musisz założyć, że za źródłowymi adresami IP kryje się cała sieć.

Możesz filtrować:

  • złe lub typowe pakiety do pobierania / skanowania odcisków palców (złe flagi TCP / IP, XMAS, większość typów ICMP itp.)
  • NIEPRAWIDŁOWE pakiety, które nie pasują do trwających lub nowych połączeń (stan -m)
  • NOWE połączenia zaczynają się od jakiegoś dość wysokiego progu

Należy jednak pamiętać, że takie rzeczy są zwykle wykonywane w ruchu przychodzącym. Nie wiesz, jakie protokoły będą działać Twoi „klienci” i możesz je ograniczyć w sposób, który może być denerwujący / niejasny.

Również w przypadku ograniczających szybkość pakietów NEW (lub bezstanowych) możesz rozważyć bardziej zaangażowany schemat, w którym odrzucone (nigdy DROP, chyba że oczywiście jest to atak!) Losowe. W ten sposób zwykły użytkownik może po prostu spróbować przeładować i mieć szczęście, mimo że ogólna szybkość jest obecnie na granicy, podczas gdy skaner portów równoległych nie będzie w stanie ominąć limitu prędkości.

Zapytaj także na listach dyskusyjnych Tora, prawdopodobnie nie jesteś pierwszym, który ma takie myśli: https://lists.torproject.org/cgi-bin/mailman/listinfo


1

Po pierwsze, nie sugeruję, aby iptables rozwiązało to wszystko, naprawdę idealne wyjście węzeł Tora ładowałby ruch równoważący przez kilka tuneli VPN, aby oderwać wzrok od pakietów i prawdziwego miejsca docelowego i / lub użyć buforującego serwera proxy, aby utrzymać wychodzące powtarzające się żądania do popularnych treści statycznych do minimum ... patrząc na te opcje, oto pomoc zespołu w przypadku problemów związanych z reklamacją;

Wykorzystane źródła informacji

http://www.ossramblings.com/using_iptables_rate_limiting_to_prevent_portscans

http://blog.nintechnet.com/how-to-block-w00tw00t-at-isc-sans-dfind-and-other-web-vulnerability-scanners/

Łączenie dwóch linków źródłowych w reguły, które mogą być użyte do udaremnienia botów próbujących użyć twojego węzła wyjściowego Tora do skanowania portów. Uwaga: może to spowodować, że hakerzy używający twojego węzła wyjściowego będą bardzo niezadowoleni, ponieważ reguły te powodują zawieszanie się nmap.

#!/bin/bash
## Network interface used by Tor exit daemon
_tor_iface="eth1"
## Ports that Tor exit daemon binds to, maybe comma or space sepperated.
_tor_ports="9050,9051"
## Time to ban connections out in secconds, default equates to 10 minutes, same as default Tor cercut.
_ban_time="600"
## How long to monitor conections in seconds, default equates to 10 minutes.
_outgoing_tcp_update_seconds="600"
## How many new connections can be placed to a server in aloted update time limits. May nead to increes this depending on exit node usage and remote servers usages.
_outgoing_tcp_hitcount="8"
## How long to monitor connections for in minuets, default is 15 minutes but could be lessoned.
_outgoing_tcp_burst_minute="15"
## Hom many connections to accept untill un-matched
_outgoing_tcp_burst_limit="1000"

iptables -N out_temp_ban -m comment --comment "Make custom chain for tracking ban time limits" || exit 1
iptables -A out_temp_ban -m recent --set --name temp_tcp_ban -p TCP -j DROP -m comment --comment "Ban any TCP packet coming to this chain" || exit 1

iptables -N out_vuln_scan -m comment --comment "Make custom chain for mitigating port scans originating from ${_tor_iface}" || exit 1
for _tor_port in ${_tor_ports//,/ }; do
    iptables -A out_vuln_scan -p TCP -o ${_tor_iface} --sport ${_tor_port} -m recent --name temp_tcp_ban --update --seconds ${_ban_time} -j DROP -m comment --comment "Update ban time if IP address is found in temp_tcp_ban list" || exit 1
    iptables -A out_vuln_scan -p TCP -o ${_tor_iface} --sport ${_tor_port} -m state --state NEW -m recent --set -m comment --comment "Monitor number of new conncetions to ${_server_iface}" || exit 1
    iptables -A out_vuln_scan -p TCP -o ${_tor_iface} --sport ${_tor_port} -m state --state NEW -m recent --update --seconds 30 --hitcout 10 -j out_temp_ban -m comment --comment "Ban address when to many new connections are attempted on ${_tor_iface}" || exit 1
done
iptables -A out_vuln_scan -j RETURN -m comment --comment "Return un-matched packets for further processing" || exit 1

## Add rules to accept/allow outbound packets
iptables -N tor_out -m comment --comment "Make custom chain for allowing Tor exit node services" || exit 1
for _tor_port in ${_tor_ports//,/ }; do
    iptables -A tor_out -p TCP -o ${_tor_iface} --sport ${_tor_port} -m state --state NEW -m recent --set --name limit_${_tor_port} -m comment --comment "Track out-going tcp connections from port ${_tor_port}" || exit 1
    iptables -A tor_out -p TCP -o ${_tor_iface} --sport ${_tor_port} -m state --state NEW -m recent --update --seconds ${_outgoing_tcp_update_seconds:-60} --hitcount ${_outgoing_tcp_hitcount:-8} --rttl --name limit_${_tor_port} -j LOG --log-prefix "TCP flooding port ${_tor_port}" -m comment --comment "Log atempts to flood port ${_tor_port} from your server" || exit 1
    iptables -A tor_out -p TCP -o ${_tor_iface} --sport ${_tor_port} -m state --state NEW -m recent --update --seconds ${_outgoing_tcp_update_seconds:-60} --hitcount ${_outgoing_tcp_hitcount:-8} --rttl --name limit_${_tor_port} -j DROP -m comment --comment "Drop attempts to flood port ${_tor_port} from your server" || exit 1
    iptables -A tor_out -p TCP -o ${_tor_iface} --sport ${_tor_port} -m limit --limit ${_outgoing_tcp_burst_minute:-15}/minute --limit-burst ${_outgoing_tcp_burst_limit:-1000} -j ACCEPT -m comment --comment "Accept with conditions new connections from port ${_tor_port} from your server" || exit 1
done
iptables -A tor_out -j RETURN -m comment ---comment "Reurn un-matched packets for further filtering or default polices to take effect." || exit 1
## Activate jumps from default output chain to new custom filtering chains
iptables -A OUTPUT -p TCP -o ${_tor_iface} -j out_vuln_scan -m comment --comment "Jump outbound packets through vulnerability scaning mitigation" || exit 1
iptables -A OUTPUT -p TCP -o ${_tor_iface} -j tor_out -m comment --comment "Jump outbound packets through conditional acceptance" || exit 1

Uruchom powyżej, bashaby mieć magię uformowaną na zmiennych z ,cammas, tj.

user@host~# bash iptables_limit_tor.sh

Oto znowu lista zmiennych

_tor_iface="eth1"
_tor_ports="9050,9051"
_ban_time="600"
_outgoing_tcp_update_seconds="600"
_outgoing_tcp_hitcount="8"
_outgoing_tcp_burst_minute="15"
_outgoing_tcp_burst_limit="1000"

Uwaga może również chcieć filtrować nowe połączenia wychodzące do -m state NEW ! --synrodzaju śmieszne buisness wykorzystywana przez niektóre boty do znajdowania serwerów do eksploatacji oto przykład łańcuch, który można mieć prefice powyższych dwóch do dalszego filtrowania takiego zniekształconego gadać

iptables -N out_bad_packets -m comment --comment "Make new chain for filtering malformed packets" || exit 1
iptables -A out_bad_packets -p TCP --fragment -j out_temp_ban -m comment --comment "Drop all fragmented packets" || exit 1
iptables -A out_bad_packets -p TCP -m state --state INVALID -j out_temp_ban -m comment --comment "Drop all invalid packets" || exit 1
iptables -A out_bad_packets -p TCP ! --syn -m state --state NEW -j out_temp_ban -m comment --comment "Drop new non-syn packets" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags ALL NONE -j out_temp_ban -m comment --comment "Drop NULL scan" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags ALL ALL -j out_temp_ban -m comment --comment "Drop XMAS scan"|| exit 1
iptables -A out_bad_packets -p TCP --tcp-flags ALL FIN,URG,PSH -j out_temp_ban -m comment --comment "Drop stealth scan 1" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags ALL SYN,RST,ACK,FIN,URG -j out_temp_ban -m comment --comment "Drop pscan 1"|| exit 1
iptables -A out_bad_packets -p TCP --tcp-flags SYN,FIN SYN,FIN -j out_temp_ban -m comment --comment "Drop pscan 2" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags FIN,RST FIN,RST -j out_temp_ban -m comment --comment "Drop pscan 3" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags SYN,RST SYN,RST -j out_temp_ban -m comment --comment "Drop SYN-RST scan" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags ACK,URG URG -j out_temp_ban -m comment --comment "Drop URG scans" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags ALL SYN,FIN -j out_temp_ban -m comment --comment "Drop SYNFIN scan" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags ALL URG,PSH,FIN -j out_temp_ban -m comment --comment "Drop nmap Xmas scan" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags ALL FIN -j out_temp_ban -m comment --comment "Drop FIN scan" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags ALL URG,PSH,SYN,FIN -j out_temp_ban -m comment --comment "Drop nmap-id scan" || exit 1
iptables -A out_bad_packets -p TCP --tcp-flags RST RST -o ${_tor_iface} --sport ${_tor_port} -m limit --limit 2/second --limit-burst 3 -j out_temp_ban -m comment --comment "Mitigate Smurf attacks from excesive RST packets"
iptables -A out_bad_packets -p TCP --tcp-flags RST RST -o ${_tor_iface} --sport ${_tor_port} -m limit --limit 2/second --limit-burst 2 -j RETURN -m comment --comment "Ban Smurf attacks using excesive RST packets"
iptables -A out_bad_packets -j RETURN -m comment --comment "Return un-matched packets for further processing." || exit 1

Jednak powyższy łańcuch byłby bardzo restrykcyjny, ponieważ każdy dopasowany pakiet będzie miał zablokowany adres IP (być może zmiana -j out_temp_banna -j DROPlub w -j REJECTcelu testowania) na dowolną liczbę sekund wybraną w regułach tego łańcucha. Ten zestaw reguł może również powodować fałszywe alarmy, gdy źle zakodowane aplikacje po stronie klienta ponownie połączą się przez nowy odcinek Tora.

~~~~~

Oprogramowanie, które należy wziąć pod uwagę w celu dalszego kształtowania ruchu Sprawdź firejailw Linuxie, źródło znajduje się na Github i Source forge, a strony podręcznika man można znaleźć na starej stronie głównej, subdomenie wordpress, a DigitalOcean ma przewodnik dla Nginx z PHP i Firejail, które z niewielką modyfikacją może znacznie podniecić cię do tego, gdzie sieć powinna zostać zdławiona z powrotem. Istnieją również inne narzędzia, takie jak te, KVMktóre mogą być używane do utrzymywania szczególnych usług w granicach operacyjnych, więc rób zakupy, aby znaleźć takie, które najlepiej pasuje do twojego systemu.

Jeszcze inną opcją byłoby uruchomienie fail2banw taki sposób, że gdy szalony administrator systemu podejmie połączenie http lub ssl z twoim adresem IP, dodawana jest reguła do usunięcia-m state --state NEWpołączenia z osobami żądającymi strony powiadomienia o wyjściu. To w połączeniu z rozsądnymi ograniczeniami czasowymi un-ban może pozwolić zdalnemu serwerowi na przerwę, podczas gdy ich sys-admin mruczy o zanieczyszczeniu logów ;-) Jest to jednak poza zakresem obecnej odpowiedzi i zależy od oprogramowania, którego używasz do obsługi strony z powiadomieniem o wyjściu; wskazówka, że ​​zarówno nginx, jak i apache będą obsługiwały pierwszy blok vhosta lub serwera w twoich konfiguracjach, jeśli teraz zażądano adresu URL. Jeśli używasz czegoś innego niż apache lub nginx, powinieneś zajrzeć na strony podręcznika, ale dla mnie było to tak proste, jak ustawienie pierwszego vhosta na logowanie się do innego pliku i zlecenie fail2ban dodania adresów IP z tego dziennika do listy tymczasowych banów ; działa to również świetnie do blokowania botów na serwerach publicznych, ponieważ zwykle używają adresu IP i brak podania żądania domeny powoduje, że serwer obsługuje pułapkę na bot,

Opierałbym się na twistach z ograniczoną polityką wyjścia z Tora (wygląda na to, że już sobie z tym poradziłeś), a następnie przepychałem ruch przez tunele VPN, dodatkowe punkty kredytowe za równoważenie obciążenia między tunelami wieloskładnikowymi. Ponieważ spowodowałoby to mniej zakłóceń w ruchu sieciowym Tor i utrzymywało oczy w oczach twojego dostawcy usług internetowych na fakt, że prowadzisz węzeł wyjściowy ... chyba, że ​​oni chcą przyznać się do wąchania i krakowania twojego ruchu VPN. Wynika to z faktu, że uruchamianie reguł, które tymczasowo blokują lub zezwalają zdalnemu hostowi na samozbanowanie, mogą prowadzić do naruszenia prywatności klientów twojego węzła, ponieważ wypychanie ruchu do VPN (lub kilku) poprawiłoby prywatność twojego klienta i utrzymało Dostawcy usług internetowych przed prześladowaniem żądań dzienników ruchu sieciowego przez dowolny rząd zdolny do działania whois www.some.domain.

~~~~

Edycje / Aktualizacje

~~~~

Wziąłem podróż do moich obszernych notatek i wyciągnąłem konfiguracje dla serwerów publicznych, których używam

Oto fail2ban jail.localstansa

[apache-ipscan]
enabled  = true
port = http,https
filter = apache-ipscan
logpath = /var/log/apache*/*error_ip*
action = iptables-repeater[name=ipscan]
maxretry = 1

A oto apache-ipscan.confplik filtru

[DEFAULT]
_apache_error_msg = \[[^]]*\] \[\S*:error\] \[pid \d+\] \[client <HOST>(:\d{1,5})?\]
[Definition]
failregex = \[client <HOST>\] client denied by server .*(?i)/.*
#^<HOST>.*GET*.*(?!)/.*
#   ^%(_apache_error_msg)s (AH0\d+: )?client denied by server configuration: (uri )?.*$
#            ^%(_apache_error_msg)s script '\S+' not found or unable to stat(, referer: \S+)?\s*$
ignoreregex = 
# DEV Notes: 
# the web server only responds to clients with a valid Host: 
# header. anyone who tries using IP only will get shunted into 
# the dummy-error.log and get a client-denied message
#
# the second regex catches folks with otherwise valid CGI paths but no good Host: header
#
# Author: Paul Heinlein

A oto iptables-repeater.confplik akcji

# Fail2Ban configuration file
#
# Author: Phil Hagen <phil@identityvector.com>
# Author: Cyril Jaquier
# Modified by Yaroslav Halchenko for multiport banning and Lukas Camenzind for persistent banning
# Modified by S0AndS0 to combine features of previous Authors and Modders
#
[Definition]
# Option:  actionstart
# Notes.:  command executed once at the start of Fail2Ban.
# Values:  CMD
#
actionstart = iptables -N fail2ban-BADIPS-<name>
              iptables -A fail2ban-BADIPS-<name> -j RETURN
          iptables -I INPUT -j fail2ban-BADIPS-<name>
          ## Comment above line and uncomment bello line to use multiport and protocol in addition to named jails
          #iptables -I INPUT -p <protocol> -m multiport --dports <port> -j fail2ban-BADIPS-<name>
          # set up from the static file
          #cat /etc/fail2ban/ip.blocklist.<name> |grep -v ^\s*#|awk '{print $1}' | while read IP; do iptables -I fail2ban-BADIPS-<name> 1 -s $IP -j DROP; done
          cat /etc/fail2ban/ip.blocklist.<name> |grep -v ^\s*#|awk '{print $1}' | while read IP; do iptables -I fail2ban-BADIPS-<name> 1 -d $IP -j DROP; done
          ## Comment above line and uncomment bellow line to check if there are blacklist files to load before attempting to load them
          # if [ -f /etc/fail2ban/ip.blacklist.<name> ]; then cat /etc/fail2ban/ip.blacklist.<name> | grep -e <name>$ | cut -d "," -s -f 1 | while read IP; do iptables -I fail2ban-BADIPS-<name> 1 -s $IP -j DROP; done; fi
# Option:  actionstop
# Notes.:  command executed once at the end of Fail2Ban
# Values:  CMD
#
actionstop = iptables -D INPUT -p <protocol> -m multiport --dports <port> -j fail2ban-BADIPS-<name>
         iptables -F fail2ban-BADIPS-<name> 
         iptables -X fail2ban-BADIPS-<name>
# Option:  actioncheck
# Notes.:  command executed once before each actionban command
# Values:  CMD
#
#actioncheck = iptables -n -L INPUT | grep -q fail2ban-BADIPS-<name>
actioncheck = iptables -n -L OUTPUT | grep -q fail2ban-BADIPS-<name>
# Option:  actionban
# Notes.:  command executed when banning an IP. Take care that the
#          command is executed with Fail2Ban user rights.
# Tags:    <ip>  IP address
#          <failures>  number of failures
#          <time>  unix timestamp of the ban time
# Values:  CMD
#
#actionban = if ! iptables -C fail2ban-BADIPS-<name> -s <ip> -j DROP; then iptables -I fail2ban-BADIPS-<name> 1 -s <ip> -j DROP; fi
actionban = if ! iptables -C fail2ban-BADIPS-<name> -d <ip> -j DROP; then iptables -I fail2ban-BADIPS-<name> 1 -d <ip> -j DROP; fi
# Add offenders to local blacklist, if not already there
        if ! grep -Fxq '<ip>,<name>' /etc/fail2ban/ip.blocklist.<name>; then echo "<ip>,<name> # fail2ban/$( date '+%%Y-%%m-%%d %%T' ): auto-add for BadIP offender" >> /etc/fail2ban/ip.blocklist.<name>; fi
# Report offenders to badips.com
#        wget -q -O /dev/null www.badips.com/add/<name>/<ip>
# Option:  actionunban
# Notes.:  command executed when unbanning an IP. Take care that the
#          command is executed with Fail2Ban user rights.
# Tags:    <ip>  IP address
#          <failures>  number of failures
#          <time>  unix timestamp of the ban time
# Values:  CMD
#
#actionunban = iptables -D fail2ban-REPEAT-<name> -s <ip> -j DROP
actionunban = iptables -D fail2ban-REPEAT-<name> -d <ip> -j DROP
# Disabled clearing out entry from ip.blacklist (somehow happens after each stop of fail2ban)
#sed --in-place '/<ip>,<name>/d' /etc/fail2ban/ip.blacklist.<name>
[Init]
# Defaut name of the chain
# 
# Defaut name of the chain
name = BADIPS
# Option:  port
# Notes.:  specifies port to monitor
# Values:  [ NUM | STRING ]  Default:
# 
#port = ssh
# Option:  protocol
# Notes.:  internally used by config reader for interpolations.
# Values:  [ tcp | udp | icmp | all ] Default: tcp

Uwaga: powyższy filtr został zmodyfikowany w celu blokowania OUTPUTakcji start / stop, ale nadal będziesz chciał dodać -p TCP -m state --state NEWkonfiguracje do każdej linii, aby zablokować tylko nowe połączenia wychodzące z zarejestrowanego adresu IP.

Ostatnim jest konfiguracja Apache vHost, która kieruje osoby nie żądające domeny do określonego dziennika dostępu i błędów oraz ustawianie dozwolonego lub odmowy dostępu tak, aby zawsze występował błąd, nawet pętla zwrotna nie powinna być w stanie podciągnąć strony bez wyskakiwania błędów . Ostatnim, ale nie mniej ważnym jest ustawienie strony błędu dla Apache'a na domyślne powiadomienie o wyjściu z Tora, tak aby było wyświetlane zamiast 503lub404nijakie wiadomości. Lub jeśli dodałeś linie stanu do akcji iptables dla fail2ban, możesz łatwo wskazać ten sam plik dziennika, który jest używany w powiadomieniu o wyjściu. W rezultacie Twój serwer nie byłby w stanie nawiązywać nowych połączeń z adresem IP serwera, który sprawdziłby Twój adres IP, ale nawiązane i powiązane połączenia byłyby nadal dozwolone, tzn. Nadal mogłyby przeglądać twoje inne strony, ale nie możesz przeglądać ich .


Najbardziej mile widziane, jeśli podobało ci się, że właśnie wysłałem dużą liczbę skryptów / notatek do GitHub, które możesz rzucić okiem. Rozpocząłem ten projekt prywatnie ponad rok temu, ale teraz, gdy zdrowie jest problemem, upubliczniłem go w celu debugowania i dodawania funkcji na wypadek, gdy nie mogę go ukończyć; i utrzymuję działania podejmowane lokalnie i globalnie przez innych, zmusiły mnie do zajęcia stanowiska w sprawie ułatwienia zmiany osobistej prywatności.
S0AndS0

Napisałem inny projekt i wysłałem go do GitHub . Ma to na celu pomóc administratorom serwerów w ochronie dzienników serwera za pomocą szyfrowania asymetrycznego GnuPG. Tak długo, jak twój węzeł wyjściowy lub usługa ukryta nie posiada powiązanego klucza prywatnego, powyższy projekt powinien zapobiegać wyciekom z poprzednich dzienników adresów IP innych węzłów łączących się z twoim własnym węzłem.
S0AndS0

0

Ograniczona przepustowość reszty sieci Tor rozwiąże te problemy za Ciebie. Jeśli się martwisz, uruchom tylko przekaźnik, a nie węzeł wyjściowy.


0

Mam lepsze rozwiązanie: serwer pamięci podręcznej kałamarnicy. Squid serwer cache dostępny do konfigurowania definiowania acli denyczy acceptkażda acl. To bardzo ciekawe, że squid zespół tworzący zestaw reguł w swojej wiki, że kwestia znaleziono tam iptables,PF ani inni nie mogą wykonywać swoją pracę, bo tylko pracować w innym warstwach.


Nie widzę żadnego sensownego sposobu połączenia Squid (które znam i lubię) z Torem ...
filiprem

spróbuj z Zebra route.
PersianGulf

Czy masz na myśli przekierowywanie ruchu wyjściowego z Tor, który trafia do portu 80, i przepuszczanie go przez kałamarnicę, aby dodać trochę kontroli? To rozwiązuje tylko niewielką część problemu. Prawdziwą przyczyną jest zapobieganie nadużyciom Tora dla dowolnego DDOS opartego na IP.
filiprem

Możesz użyć projektu sieci w trzech warstwach: 1. warstwa zewnętrzna 2. warstwa procesowa. 3. warstwa użytkownik / serwer ====> Powoduje to zwiększenie bezpieczeństwa.
PersianGulf
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.