iptables auf dem Ausgangsknoten

9

Ich möchte einen offenen Tor- Router betreiben .

Meine Exit-Richtlinie ähnelt ReducedExitPolicy .

Ich möchte es dem Tor-Netzwerk aber auch schwer machen, meine Ressourcen zu missbrauchen.

Fälle, die ich verhindern möchte, dass Kunden dies über Tor tun:

  • Eine Site mit sehr vielen Paketen hämmern.
  • Aggressive Netscans ganzer IP-Blöcke

Fälle, die ich NICHT daran hindern möchte, dass Kunden dies über Tor tun:

  • Hochladen einiger Hudreds von Bilddateien in die Cloud
  • einen Strom säen

Meine Frage ist, kann das überhaupt gemacht werden und wie?

Mein erster Gedanke war eine Firewall (Linux / iptables oder * BSD / ipfw / pf) - aber dies wird wahrscheinlich aufgrund der inhärenten Eigenschaften des Onion-Routers nutzlos sein.

Gibt es eine laufende Torprojekt-Teamentwicklung zu diesem Thema?

Ich bitte auch um allgemeine Hinweise zur Sicherung der Tor-Ausgangsknoten.

Update (Sep 2012)

Aufgrund hilfreicher Antworten und anderer Untersuchungen denke ich, dass dies nicht möglich ist.

Das Beste, was Sie tun können, um zu verhindern, dass Benutzer den Exit-Knoten missbrauchen, um einen Beitrag in DDOS zu leisten, besteht darin, sehr häufige Pakete zu erkennen, die an eine IP gerichtet sind.

Der "sehr häufige" Schwellenwert hängt von der gesamten Knotenbandbreite ab. Wenn dies falsch ist, kommt es zu Fehlalarmen, die den legitimen Datenverkehr von Echtzeit-TCP-Apps und den Datenverkehr von sehr vielen Clients zu einem Ziel blockieren.

Update (Dezember 2014)

Meine Vorhersagen stimmten offensichtlich - ich hatte mehrere Beschwerden über Netzwerkmissbrauch von meinem Internetprovider.

Um ein Herunterfahren des Dienstes zu vermeiden, musste ich die folgenden iptablesRegeln anwenden ( ONEWist eine Kette für ausgehende TCP-SYN-Pakete (auch bekannt als NEW):

Ich bin nicht sicher, ob es ausreichen wird, aber hier ist es:

-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
Filiprem
quelle

Antworten:

2

Denk daran, dass:

  • Nach meinem derzeitigen Verständnis wechseln Tor-Clients alle 10 Minuten die virtuellen Verbindungen. Dies bedeutet, dass sich die Quell-IP in diesem Zeitraum ändert. Es ist unwahrscheinlich, dass Sie ein Verhalten, das Sie für böswillig halten, länger als diese Dauer verhindern.

  • Beachten Sie, dass die Tatsache, dass Tor nur den TCP-Verkehr und kein anderes Protokoll überträgt, die Missbrauchsmöglichkeiten erheblich einschränkt.

iptablesMit dieser Option können Sie neue ausgehende TCP-Verbindungen anders behandeln als vorhandene. Alles, was ESTABLISHED,RELATEDsich ACCEPTEDin einer Kette "vorhandener TCP-Verbindungen" befindet oder befindet, und ausgehende TCP, die davon nicht erfasst werden, können ratenbeschränkt sein. Jeder ausgehende Tor-Verkehr sollte davon betroffen sein.

Ich glaube, zwischen dem oben Gesagten und der Verwendung der "Reduced Exit Policy" wäre das Beste, was Sie tun können.

Führen Sie im Idealfall nichts anderes auf Ihrer Tor-Box aus als:

  • Sie werden wahrscheinlich mindestens SSH eingerichtet haben und es an einen anderen Port als 22 anschließen.
  • Sie möchten wahrscheinlich einen einfachen Webserver ausführen, um diese Seite anzuzeigen . Eine chroot'ed mini-httpdInstanz sollte reichen. Nicht benutzen inetd.

Führen Sie Tor nicht auf einer Box aus, die für andere Zwecke verwendet wird. Stellen Sie sicher, dass Sie den Abschnitt "Relais beenden" in den häufig gestellten Fragen zu Tor Legal gelesen haben und die Auswirkungen vollständig verstanden haben. Auch lesen und tun dies alles .

LawrenceC
quelle
1

Es ist schwieriger als gewöhnlich, diese Angriffe zu verhindern, da die Quell-IP nicht konstant ist. Meines Wissens werden die Routen in tor jedoch nur etwa alle paar Minuten geändert.

Sie können also weiterhin einige der Standardregeln für Einschränkungen / Filterung bereitstellen, jedoch mit einem höheren Schwellenwert, da Sie davon ausgehen müssen, dass sich hinter Ihren Quell-IPs ein ganzes Netzwerk befindet.

Sie können filtern:

  • schlechte oder typische Fingerabdruck- / Scan-Pakete (schlechte TCP / IP-Flags, XMAS, die meisten ICMP-Typen usw.)
  • UNGÜLTIGE Pakete, die nicht zu laufenden oder neuen Verbindungen passen (-m Status)
  • NEUE Verbindungen ab einer ziemlich hohen Schwelle

Beachten Sie jedoch, dass solche Dinge normalerweise bei eingehendem Datenverkehr ausgeführt werden. Sie wissen nicht, welche Art von Protokollen Ihre "Kunden" ausführen werden, und Sie können sie auf eine Weise einschränken, die ärgerlich / unklar sein kann.

Für ratenbegrenzende NEUE (oder zustandslose) Pakete sollten Sie ein komplexeres Schema in Betracht ziehen, bei dem die abgelehnten (niemals DROP, es sei denn, es handelt sich offensichtlich um einen Angriff!) Pakete zufällig ausgewählt werden. Auf diese Weise kann ein normaler Benutzer einfach versuchen, auf "Neu laden" zu klicken und Glück zu haben, obwohl die Gesamtrate derzeit am Limit liegt, während ein gleichzeitiger Port-Scanner Ihr Ratenlimit nicht umgehen kann.

Fragen Sie auch auf den Tor-Mailinglisten nach, Sie sind wahrscheinlich nicht die Ersten, die solche Gedanken haben: https://lists.torproject.org/cgi-bin/mailman/listinfo

pepe
quelle
1

Zunächst einmal würde ich keine Iptables vorschlagen, um all dies zu lösen. Wirklich, ein idealer Exit-Tor-Knoten würde den Balace-Verkehr durch ein paar VPN-Tunnel laden, um die Augen des ISP von den Paketen und dem wahren Ziel fernzuhalten und / oder den Caching-Proxy zu verwenden, um ausgehende Wiederholungsanforderungen zu erhalten auf beliebte statische Inhalte auf ein Minimum beschränken ... während Sie sich mit diesen Optionen befassen, finden Sie hier ein Pflaster für die Probleme mit Missbrauchsbeschwerden.

Verwendete Informationsquellen

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/

Kombinieren Sie die beiden Quelllinks zu Regeln, die verwendet werden können, um Bots zu vereiteln, die versuchen, Ihren Tor-Exit-Knoten für das Port-Scannen zu verwenden. Beachten Sie, dass Hacker, die Ihren Exit-Knoten verwenden, möglicherweise sehr unzufrieden sind, da diese Regeln zu einer Wartezeit von nmap führen.

#!/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

Führen Sie oben mit aus bash, um Magie für Variablen mit ,Cammas durchzuführen.

user@host~# bash iptables_limit_tor.sh

Hier ist noch einmal diese Liste von Variablen

_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"

Hinweis : Sie können auch neue abgehende Verbindungen filtern möchten -m state NEW ! --synArten von lustigen Buisness von einigen Bots für die Suche nach verwertbaren Server hier ein Beispiel Kette verwendet , dass Sie prefice die beiden oben genannten für die weitere Filterung solcher malformed Geschwätz haben könnte

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

Die obige Kette wäre jedoch sehr restriktiv, da für jedes übereinstimmende Paket die IP für die in den Regeln dieser Kette ausgewählten Sekunden gesperrt wird (möglicherweise -j out_temp_banzu -j DROPoder -j REJECTzum Testen geändert wird ). Dieses Regelwerk kann auch zu positiven Fehlern führen, wenn schlecht codierte Apps auf der Client-Seite über einen neuen Tor-Cercut erneut eine Verbindung herstellen.

~~~~~

Software, die für den weiteren Datenverkehr in Betracht gezogen werden muss Schauen Sie sich firejailLinux an, die Quelle befindet sich auf Github und Source Forge, und die Manpages finden Sie auf der alten Homepage, einer WordPress-Subdomain, und DigitalOcean hat eine Anleitung für Nginx mit PHP und Firejail Mit einer kleinen Änderung können Sie weitaus mehr Anregungen erhalten, wo das Netzwerk zurückgedrosselt werden soll. Es gibt auch andere Tools KVM, mit denen Sie spiciffic Services innerhalb der betrieblichen Grenzen halten können. Suchen Sie also in der Nähe nach dem für Ihr System am besten geeigneten.

Eine weitere Option wäre, so zu arbeiten fail2ban, dass, wenn ein verrückter Systemadministrator eine http- oder ssl-Verbindung zu Ihrer IP-Adresse versucht, eine Regel zum Löschen hinzugefügt wird-m state --state NEWVerbindungen zu denen, die Ihre Exit-Benachrichtigungsseite anfordern. In Kombination mit vernünftigen Zeitbeschränkungen kann der Remote-Server eine Pause einlegen, während der Systemadministrator über die Protokollverschmutzung murmelt ;-) Dies geht jedoch über den Rahmen dieser aktuellen Antwort hinaus und hängt davon ab, welche Software Sie für die Bereitstellung verwenden Kündigungsseiten verlassen; Hinweis: Sowohl Nginx als auch Apache dienen als erster vhost- oder Serverblock in Ihren Konfigurationen, wenn jetzt eine URL angefordert wurde. Wenn Sie etwas anderes als Apache oder Nginx verwenden, sollten Sie die Manpages konsultieren. Für mich war es jedoch so einfach, den ersten vhost so einzustellen, dass er sich in einer anderen Datei anmeldet und fail2ban IPs aus diesem Protokoll zu einer temporären Verbotsliste hinzufügt ;; Dies eignet sich auch hervorragend zum Sperren von Bots auf öffentlichen Servern, da diese normalerweise eine IP-Adresse verwenden und keine Domänenanforderung bereitgestellt wird. Dies führt dazu, dass der Server die Bot-Trap bereitstellt.

Ich würde Twords lehnen, die eine eingeschränkte Tor-Exit-Richtlinie ausführen (anscheinend haben Sie das erledigt) und dann den Datenverkehr durch VPN-Tunnel leiten, zusätzliche Kreditpunkte für den Lastausgleich zwischen Multipule-Tunneln. Weil dies den Tor-Netzwerkverkehr weniger stören und die Augen Ihres ISP auf die Tatsache trüben würde, dass Sie einen Exit-Knoten betreiben ... es sei denn, er möchte zugeben, dass er Ihren VPN-Verkehr schnüffelt und knackt. Dies liegt daran, dass das Ausführen von Regeln, die das temporäre Sperren oder das Selbstverbieten von Remote-Hosts ermöglichen, zu einer Verletzung der Privatsphäre der Clients Ihres Knotens führen kann, da das Weiterleiten des Datenverkehrs an ein VPN (oder wenige) die Privatsphäre Ihres Clients verbessern und Ihre Privatsphäre schützen würde ISP wird nicht von einer Regierung, die in der Lage ist, ausgeführt zu werden, mit Anfragen nach Ihren Netzwerkverkehrsprotokollen verfolgt whois www.some.domain.

~~~~

Bearbeitungen / Updates

~~~~

Ich machte einen Ausflug in meine ausführlichen Notizen und rief die Konfigurationen für öffentliche Server auf, die ich benutze

Hier ist die 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

Und hier ist der Filter - apache-ipscan.confDatei

[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

Und hier ist die Aktion iptables-repeater.confDatei

# Fail2Ban configuration file
#
# Author: Phil Hagen <[email protected]>
# 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

Hinweis: Der obige Filter wurde bearbeitet, um OUTPUTdie Start / Stopp-Aktionen zu blockieren. Sie möchten jedoch weiterhin die -p TCP -m state --state NEWKonfigurationen zu jeder Zeile hinzufügen , damit nur neue ausgehende Verbindungen von der protokollierten IP-Adresse ausgeschlossen werden.

Zuletzt wird eine Apache vHost-Konfiguration eingerichtet, die diejenigen, die keine Domäne anfordern, an ein bestimmtes Zugriffs- und Fehlerprotokoll weiterleitet und den zulässigen oder den verweigerten Zugriff so festlegt, dass immer Fehler auftreten. Nicht einmal der Loopback sollte in der Lage sein, die Seite ohne Fehler aufzurufen . Last but not least wird die Fehlerseite für Apache auf die Standard-Exit-Benachrichtigung von Tor gesetzt, damit diese anstelle von 503oder bereitgestellt wird404langweilige Nachrichten. Wenn Sie die Statuszeilen zu iptables-Aktionen für fail2ban hinzugefügt haben, können Sie einfach auf dieselbe Protokolldatei verweisen, die von Ihrer Beendigungsbenachrichtigung verwendet wird. Das Ergebnis wäre, dass Ihr Server keine neuen Verbindungen zur IP des Servers herstellen kann, die Ihre IP-Adresse überprüft haben, aber weiterhin hergestellte und verwandte Verbindungen zulässig sind, dh sie könnten weiterhin Ihre anderen Seiten durchsuchen, aber Sie könnten ihre nicht durchsuchen .

S0AndS0
quelle
Sehr willkommen, wenn es Ihnen gefallen hat, dass ich gerade eine große Anzahl von Skripten / Notizen an GitHub gesendet habe , die Sie sich vielleicht ansehen möchten. Ich habe dieses Projekt vor über einem Jahr privat gestartet, aber jetzt, da Gesundheit ein Problem ist, habe ich es zum Debuggen und Hinzufügen von Funktionen veröffentlicht, falls ich es nicht beenden kann. Das und bestimmte lokale und globale Maßnahmen anderer haben mich dazu veranlasst, Stellung zu beziehen , um die Privatsphäre einfacher zu machen.
S0AndS0
Ich habe ein anderes Projekt geschrieben und es an GitHub gesendet . Dies soll Serveradministratoren beim Schutz der Serverprotokolle durch Verwendung der asymmetrischen GnuPG-Verschlüsselung unterstützen. Solange Ihr Exit-Knoten oder versteckter Dienst den zugehörigen privaten Schlüssel nicht enthält, sollte das obige Projekt verhindern, dass frühere Protokolle die IP-Adressen anderer Knoten verlieren, die eine Verbindung zu Ihrem eigenen Knoten herstellen.
S0AndS0
0

Die begrenzte Bandbreite des restlichen Tor-Netzwerks löst diese Probleme für Sie. Wenn Sie sich Sorgen machen, führen Sie nur Relay und keinen Exit-Knoten aus.

Richard Hum
quelle
0

Ich habe eine bessere Lösung: Squid Cache Server. Squid-Cache-Server verfügbar, um die Definition aclund Sie denyoder acceptjeden zu konfigurieren acl. Es ist interessant , sehr , dass die Tintenfisch - Team eine Reihe von Regeln in ihrem Wiki definiert , dass Ihre Frage gefunden dort iptables,PF oder andere Ihre Arbeitsplätze nicht tun, denn gerade in einer anderen arbeiten Schichten.

Persischer Golf
quelle
Ich sehe keine vernünftige Möglichkeit, Squid (den ich kenne und mag) mit Tor zu
kombinieren
versuche es mit Zebra route.
PersianGulf
Meinen Sie damit, den Ausgangsverkehr, der zu Port 80 führt, umzuleiten und durch den Tintenfisch zu leiten, um die Kontrolle zu erhöhen? Dies löst nur einen kleinen Teil des Problems. Die eigentliche Ursache ist die Verhinderung des Tor-Missbrauchs für IP-basiertes DDOS.
Filiprem
Sie können Ihr Netzwerk in drei Schichten entwerfen: 1. außerhalb der Schicht 2. Prozessschicht. 3.Benutzer- / Serverschicht ====> Dadurch wird Ihre Sicherheit verbessert.
PersianGulf