english (Google)

Inhaltsverzeichnis:
- Allgemeines
- Installation
- ipt_recent
- Debianlauffähigkeit
- Telnet
- Konfiguration
- Eigenes Script
- Frage- und Antwortspiel
- bekannte Probleme
- Unterschied Reject <-> Drop
- Twitter
- Asterisk

Hier nun das Paket, welches wohl den meisten Erklärungsbedarf hat. Deshalb nehmt es mir nicht übel, wenn es im Moment noch nicht vollständig ist. Kommen wir erstmal zu der Frage "Was ist Brute_force_blocking?"
Brute_force_blocking (kurz BFB) ist ein Script, welches alle (von mir fest definierten) paar Sekunden in die Logfiles der entsprechenden Dienste schaut, ob gerade loginversuche stattfinden, die nicht authorisiert sind. D.h, ob irgendwer versucht via ssh, http, ftp, telnet, mini-http oder IMAP auf den Server einzubrechen.
Stellt es einen Einbruchsversuch fest, dann rejectet oder droped es die Angeifer-IP. Vorher wird ausgewertet, ob die IP evtl. nicht geblockt werden soll, weil es z.Bsp. eine interne Adresse ist, wo der doofe Karl-Maria-Eduart-Ingo wiedermal das Passwort vergessen hat.
Ich möchte hier nicht auf das Script als solches eingehen. Wer es studieren möchte, kann es ja von Pack-eis herunterladen und dann ausklamüstern.
Sollte ein Angriff auf ssh von mehreren IP-Adressen gleichzeitig stattfinden, so blockt BFB jeden eingehenden Traffic auf diesen Port, mit Ausnahme derjenigen IP-Adressen, welche im Setup festgelegt werden. Damit ist es für den Admin trotzdem noch möglich perr SSH auf den Server zu kommen.


Desweiteren habe ich ipt_recent integriert. ipt_recent wird dazu verwendet um versuchte zugriffe auf
vorgegebene Ports sofort zu blocken.
Mit Hilfe des Recent-Moduls lassen sich Listen erstellen, in denen man dynamisch IP-Adressen ablegen und später für
Vergleiche wieder heranziehen kann. Zum Beispiel ist es mittels der Option --hitcount möglich zu überprüfen,
wie oft von einer bestimmten IP-Adresse bereits versucht wurde eine Verbindung aufzubauen.
Mehr dazu in der Zeitschrift "Linux Magazin" oder unter:
http://sareyko.net/howto/iptables_recent.html#details
Weitere Optionen sind unter Details zum Recent-Modul bzw. in der Manpage von Iptables
(http://linux.die.net/man/8/iptables) beschrieben.
ipt_recent ist mit eingebaut und der Port kann im Setup Konfiguriert werden. Inwieweit es schon greift habe ich
noch nicht getestet.

Weiterhin ist es möglich sich die Daten des Angreifers im Web-Browser anzuschauen. Es wird auf der Site der Logauszug, sowie ein Traceroute und die Whois-Abfrage dargestellt. Dieses ist aber nur solange möglich, wie die IP-Adresse geblockt sind. Sobald die Adressen wieder freigegeben sind wird der Link in der cgi nicht mehr generiert. Evtl ist die html-Datei aber noch auf dem Webserver vorhanden. Dazu muss einfach der absolute Link im Web-Browser eingegeben werden. Z.Bsp:
http://DEIN_WEBSERVER/brute_force_blocking/IP-ADRESSE.html

Die Debianlauffähigkeit habe ich in der Doku (hoffentlich) ausführlich
beschrieben. Ich hatte einfach keine Lust mehr BFB immer an Debian
anzupassen und habe das einfach mal mit eingebaut.
Unter Debian werden aber nur ssh, telnet, ftp und
POSSIBLE-BREAKIN-Attacken erkannt. Bei mir läuft BFB so modifiziert auf
24 Debian und einem Ubuntu und arbeitet sauber. :-)
Evtl. werde ich für Debain noch ein updatescript bauen, so dass bei
neuen Versionen nur dieses aufgerufen werden muss.

Bei Telnet ist darauf zu achten, dass im Logfile immer die aufgelösten
IP-Adressen geloggt werden. Deshalb wird aus dieser Resolveadresse
mittels DIG die IP-Adresse gewonnen. Das heisst aber auch, dass
IP-Adressen ohne Reverseeintrag evtl. nicht erkannt werden. Attacken aus
dem eigenen LAN definitiv nicht. Aber Telnet sollte ja eh nicht
verwendet werden.

Versand via Vmail habe ich nur unter einer VM getestet und hoffe dass es
alle möglichen Einstellungen von vmail berücksichtigt. Feedback wäre
hier dringend nötig.

Kommen wir nun zu den eigenen Scripten :-)
Es gibt User, welche eigenen Applikationen am/im Netz haben, welche auc
angegriffen werden und die alles in eigenen Logfiles mitloggen. bei BFB
besteht nun die Möglichkeit diese Logfiles auch zu überwachen. Dabei
braucht in der Setup-Konfig nur angegeben werden, dass eigene Logfiles
überwacht werden sollen und dann noch, welches Script dafür aufgerufen
wird. Das Script müsst ihr dann allerdings selbst schreiben. Als
Ergebniss des Scriptes müssen jeweils die IP-Adressen nach
$bfbhome/attackips gesendet werden. BFB zählt dann die Anzahl dieser
IP-Adresse und blockt diese, wenn die eingestellt Zahl überschritten
wird.

Hier mal ein Beispielscript mit Erläuterungen.
==========================================================
#diese include-einträge müssen immer eingetragen sein.!!!#
. /etc/config.d/brute_force_blocking
. /usr/local/brute_force_blocking/configfile

Ab hier könnt ihr das alles machen wie ihr möchtet. Wichtig ist nur, dass am Ende die IP-Adressen (!) in $bfbhome/attackips geschrieben werden. Wichtig ist auch, dass die jeweiligen IP's nicht zusammengefasst werden, sondern einzeln aufgelistet werden. Wenn also die ip 1.2.3.4 5 Angriffe gemacht hat, so muss diese IP auch 5mal in $bfbhome/attackips auftauchen.
##### Datumsformat in dem Logfile ####
grepheute=`date +%a" "%b" "%d" "%X" "%Y`

##### Das Logfile ####
additionallog='/Pfad/zum/server.log'

#### Nach was soll gegreppt werden? ####
additionalphrase='PASSWORD IS WRONG'

#### Die Abfrage des Logfiles. Herauskommen müssen die IP Adressen, die dann nach $bfbhome/atackingips ungeleitet wird ####
tail -150 $additionallog | grep "$grepheute" \
| grep -i "$additionalphrase" | awk -F" " {'print $5'}\
| sed "s/\.0/\./g" | sed "s/^0//g" >$bfbhome/atackingips
 

Bekannte Probleme:
1. beim Update von php4 auf php5 blockiert BFB irgendwie die Abarbeitung der php-Scripte. Warum ist mir ein Rätsel, da BFB nicht in php geschrieben ist und auch in keinster Weise auf php zugreift. Abhilfe scheint da nur eine Deinstallation von BFB -> Installation von php5 -> Installation von BFB zu bringen.
2. zeitweise steigt die Last des Servers aus nicht sichtbaren Gründen. In diesem Fall hilft nur BFB zu restarten. Sollte das mehrfach passieren, so kann im Setup "BFB_RESTART_ON_UNBLOCK" unter 'common configuration' auf 'yes' stellen.

Frage -> Antwortspiel:
>Habe da doch noch eine Frage. Anfangs habe ich natürlich die
>> Blockierfunktion überprüft. Bin aber nicht ganz dahinter gekommen, wann
>> nun letztendlich die Blockierung ausgelöst wird.
>> Natürlich steht in der config die Anzahl der Versuche drin. BFB_Times=3

>>

Die BFB-Time ist das minimum. Das heißt, das BFB erst ab dieser Anzahl
aktiv wird. Wenn es ein sehr schnelles Login-script ist, kann es
schonmal passieren, dass 9 oder 10 Versuche durchgehen, bis BFB blockt.
Im Klartext. BFB prüft nur alle 20 Sekunden, da ansonsten die Systemlast
zu groß werden würde

>Wenn ich das Einloggen per ssh von einem Linux-PC probiere (der bricht nicht
>> nach 6 erfolglosen Versuchen ab wie Putty) schaffe ich sogar ein "last
>> message repeated 34 times". Das geht so lange, bis eine andere Meldung in
>> /var/log/messages erscheint. Per Script würde ich noch viel mehr Versuche
>> schaffen... Und solange kann man per Script das Einloggen probieren ohne
>> geblockt zu werden. Ist das Sinn der Sache? Kann man das irgendwie umbiegen?


Ein script beendet immer erst die aktuelle Session und baut neu auf.
Dadurch hat es einen neue PID und es wird nicht repeated xx times
angezeigt. Es sieht dann wie folgt aus:
May 19 09:27:35 Server sshd[30905]: Failed password for invalid user
root from 163.239.2.32 port 47934 ssh2
May 19 09:27:35 Server sshd[30905]: Received disconnect from
163.239.2.32: 11: Bye Bye


>>Jedesmal wenn ich auf das "brute_force_blocking.cgi zugreife (über
>> Webserver) bekomme ich im syslog folgende Fehlermeldung:
>>
>> 05.06.0611:30:34BOROMIRNotizsudo:  wwwrun :
>> TTY=unknown ; PWD=/scsi-hdd/www/cgi-bin ; USER=root ;
>> COMMAND=/usr/local/brute_force_blocking/blocked
>>
>> Weiss jemand was das soll?


Das kommt ganz einfach daher, weil das cgi-script den Befehl iptables -L
ausführt und dazu rootrechte braucht. Deshalb wurde diesem script via
sudo das erlaubt. Und damit der root darüber informiert wird, dass da
ein Prog mit sudo gearbeitet hat generiert es diese Meldung im Messagelog.

>Activate configuration now (y/n) [yes]?
>Edit brute_force_blocking configuration
>1create website files
>you have not insert a logfile in mini_http_config
>please check mini_http_config and insert the log file
>Wo bitte soll ich ein logfile für den Mini_httpd anlegen?
>> In der mitgelieferten Docu finde ich dort keine Angaben dazu.
>>
>> Welche Version wird den benötigt? Soweit ich weiß wird gerade
>> an der Erstellung (Zusammenfassung) des mini_http gearbeitet.



Hi,
du musst einen Pfad zu einer datei angeben in den mini_httpd config.
z.B.
...
MINI_HTTPD_LOGFILE      = /var/log/minihttpd.log

Beim mini-http 1.9.4 gibt es keine Möglichkeit ein Logfile in der Config anzulegen. Bitte dazu das HowTo von René Hanke verwenden, welches auf der Eisfair-Webseite zu erreichen ist. (http://www.eisfair.org/hilfe/howtos/allgemein/brute-force-blocking-mit-mini-httpd-version-194.html)


>Could not find web logfile. BFB will be use pseudolog'/tmp/pseodolog.ssl'.
>Please check Apache configuration and/or create logfile


BFB kann das ssl-logfile nicht finden!! Prüfe bitte, ob die Logfiles,
welche in der Apachekonfig stehen, auch als .ssl gibt.
Also z.Bsp /var/www/log/errorlog.ssl.
Leider werden die von Apache nicht automatisch angelegt. Das wußte ich
bisher auch nicht.
Schau in die Konfig, welche Logs es geben muss und prüfe, ob es diese
auch als .ssl gibt.
Wenn nein, dann lege sie an (touch /var/www/log/errorlog.ssl).


>Beim Bearbeiten der Config hatte ich bei
>"BRUTE_FORCE_BLOCKING_FREE_IP='127.0.0.1 192.168.0.0'" eingetragen.
>Also mein gesamtes LAN sollte nicht geblockt werden.


So funktioniert das nicht. In FREE_IP kannst Du nur einzelne IP-Adressen
eingeben. Um ein gesamtes LAN freizuschalten musst du
BRUTE_FORCE_BLOCKING_FREE_GROUP verwenden.
BRUTE_FORCE_BLOCKING_FREE_GROUP='192.168.0.1-192.168.0.255

 

common configuration:

START_BRUTE_FORCE_BLOCKING='yes'
Hier wir festgelegt ob BFB beim Systemstart mitstarten soll.

BFB_LOGLEVEL='debug'
Hier kannst Du festlegen, mit welchem Level Meldungen im Messagelog gemeldet werden. Probiere es aus, was dir am besten liegt. Standat ist ‘debug’. Du kannst aber wählen zwischen debug|info|notice|warning|error|crit|alert|emerg

BFB_USE_RAMDISK='yes'
Wenn genügend RAM vorhanden ist, so kann eine RAM-Disk verwendet werden. Diese legt BFB an. Der Vorteil die HD kann sich schlafen legen :-)

BFB_ATTACK_TIMES='6'
Nach wievielen fehlerhaften Loginversuchen soll BFB blocken? Nicht sinnvoll sind kleiner = 3.

BFB_BLOCK_TYPE='REJECT'
Sollen die IP-Adressen Rejected oder droped werden? Der Unterschied wird weiter unten erklärt.

BFB_UNBLOCK_TIME='1 1 * * *'
Die Uhrzeit, wo alle geblockten IP-Adressen wieder frei gegeben werden. Es ist nicht sinnvoll alle 10 Minuten oder so einzutragen.

BFB_RESTART_ON_UNBLOCK='no'
Bei einigen Usern hat BFB nach einem längerem Zeitraum eine hohe Systemlast verursacht. Die Ursache konnte nie gefunden werden. Sollte also bei Dir auch dieses Phänomän auftauchen, so musst Du hier 'yes' eintragen. Dadurch wird BFB zur UNBLOCK_TIME restartet.

BFB_RESOLVE_DNS='no' 
Soll die IP-Adresse, welche einen Attacke gemacht hat per DNS aufgelöst werden?


Brute Force Blocking Monitor configuration:

BFB_MONITOR_MINI_HTTP='yes'
Soll der mini-http mit überwacht werden? Wenn vorhanden, dann sinnvoll.

BFB_MONITOR_FTPD='yes'
Soll auf fehlerhafte Logins per FTP gecheckt werden?

BFB_MONITOR_IMAP='yes' 
Soll auf Versuche den IMAP-Server zu hacken geachtet werden?

BFB_MONITOR_SN='yes'
Wenn beim Newspacket Authentifizierung verlangt wird, kann hier gesagt werden, dass auch der SN mit überwacht wird.

BFB_MONITOR_PORTSCAN='yes' 
BFB versucht portscans zu detektieren. Dies wird gemacht indem Verbindungsaufbauten zu den unter BFB_PORTSCAN_RANGE_% angegebenen Ports geloggt werden. Sollten innerhalb von 10 Minuten mehr als bei BFB_ATTACK_TIMES eingetragen sein, so wird die IP-Adresse des Scanners geblockt.

BFB_MONITOR_BOT_ATTACK='yes'
Soll BFB SSH-BOT-Attacken mit überwachen? yes/no. Was sind SSH-BOT-Attacken?
Viele BFB-ähnliche Programme scannen auch die Logfiles und sperren dann die angreifende IP. Das wissen auch professionelle "Cracker" und verwenden immer häufiger BOT-Netze. Das hat für diese Programme, dass pro IP-Adresse nur 1-2-Einträge in den Logfiles auftauchen. Also wird nichts geblockt. BFB zählt nun die gesammten fehlerhaften Loginversuche. Wenn mehr als unter BFB_MONITOR_BOT_ATTACK_ATTEMPTS eingestellten Loginversuche stattgefunden habe wird der komplette SSH-Port gesperrt, ausser die -IP-Adressen, welche unter BFB_BOT_FREE_IP_ADDRESS_% konfiguriert wurden. Dadurch ist es dem Admin trotzdem noch möglich sich per SSH auf den Server einzuloggen. Nach 20 Minuten wird der SSH-Port wieder deblockt.

BFB_MONITOR_SLOW_ATTACK='yes'
Es ist eine Variable für langsame BOT-Attacken hinzugekommen. Ich
habe auf einigen meiner eisfair festgestellt, dass die SLOW-BOT-ATTACKEN
immer häufiger werden.
Was sind SLOW-BOT-ATTACKEN?
Von einer IP-Adresse wird ein Loginversuch unternommen. Wenn der
scheitert wird der nächste Versuch erst nach einigen Stunden
unternommen. In dieser Zeit wird von einer anderen IP nach ca 20-30
Minuten unternommen. Wenn der Versuch nicht erfolgreich ist, kommt nach
langer Zeit die nächste IP dran u.s.w.
So ist im auth-log ca alle 20 Minuten ein login von irgendeiner IP zu
sehen, die sich aber nur alle paar Stunden wiederholt. Soweit ich weis
gibt es bisher kein Programm, welches so eine Attacke erkennt (z.B.
fail2ban).
Diese Variable ist nur sichtbar, wenn BFB_MONITOR_SLOW_ATTACK='yes' eingestellt wurde.

BFB_MONITOR_SPECIFIC_PORT='yes' Wenn u.g Ports via ipt_recent überwacht werden sollen, dann bitte 'yes' eintragen.

BFB_MONITOR_BREAKIN_ATTEMPT='yes'
Viele 'Cracker' versuchen mit gespooften IP-Adressen sich einzuloggen. Das erkennt der sshserver und BFB blockt dann sogleich die IP-Adresse

BFB_MONITOR_CACTI='yes'
Wenn Du Cacti installiert hast, kann BFB das Webinterface auf unauthorisierte Loginversuche überwachen. Dazu musst Du nur unter BFB_CACTI_SERVER_IP_ADDRESS die IP-Adresse eintragen, auf der dec CACTI-Server läuft. 127.0.0.1 sollte aber vermieden werden, sondern die IP-Adresse eingetragen werden, welche der Server selbst hat (eth0 oder eth1). BFB kann zwar auch entfernet CACTI-Server überwachen, dort aber noch nicht blocken.

BFB_MONITOR_WEBACCESS='yes'
Soll der Webserver auf Hackversuchen kontrolliert werden?

BFB_MONITOR_SMBWEBCLIENT='yes' 
Wenn der SMBwebclient verwendet wird, dann kann dieser auch überwacht werden.

BFB_MONITOR_TELNET='no'
Bei Telnet ist darauf zu achten, dass im Logfile immer die aufgelösten
IP-Adressen geloggt werden. Deshalb wird aus dieser Resolveadresse
mittels DIG die IP-Adresse gewonnen. Das heisst aber auch, dass
IP-Adressen ohne Reverseeintrag evtl. nicht erkannt werden. Attacken aus
dem eigenen LAN definitiv nicht. Aber Telnet sollte ja eh nicht
verwendet werden. :-)

BFB_MONITOR_ADDITIONAL_LOG='no'
Wenn Du andere Dienste auf dem Server in Betrieb hast, die von Internet aus erreichbar sind, kannst Du hiermit die Logfiles mit überwachen lassen. Dazu musst Du aber ein eigenes Script schreiben. In diesem Script kannst Du natürlich auch mehrere Logfiles überwachen lassen und BFB blockt dann bei Bedarf die angreifende IP-Adresse.

free ip address configuration:

BFB_FREE_IP='192.168.11.13 127.0.0.1'
IP-Adressen, welche nie geblockt werden sollen. Hier ist es sinnvoll die localen IP-Adressen einzugeben.

BFB_FREE_IP_GROUP='192.168.10.2-192.168.10.55'
Wenn man mehrere IP-Adressen hat, die in einer Range liegen, so kann diese hier eingegeben werden. Diese Range wird dann auch nie geblockt. Es ist nur eine Range zulässig.

BFB_FREE_LAN_DOMAIN='router.home.lan'
Hier kannst Du eine aufgelöste Adresse eingeben, welcher Rechner immer Zugriff auf Server haben soll. Dieser Eintrag ist dem FTPD geschuldet, welcher die IP-Adresse evtl auflöst und bei fehlerhaften Logins die aufgelöste IP-Adresse nicht unter BFB_FREE_IP findet und blockt.

BOT-Attack configuration:

BFB_MONITOR_BOT_ATTACK_ATTEMPTS='30'
Hier die Anzahl der maximal fehlerhaften Loginversuche eintragen, bevor BFB den kompletten SSH-Port blockt. Dieser Wert sollte nicht zu niedrig sein um Fehlalarme zu vermeiden. In der Praxis hat sich die Zahl 30 als praktikabel erwiesen.

BFB_BOT_FREE_IP_NET='192.168.10.0/24'
Dieser IP-Bereich wird bei einer BOT-Attacke nicht geblockt. Dadurch kann man z.Bsp. vom LAN auch bei geblocktem SSH-Port sich auf dem Server einloggen.

BFB_BOT_FREE_IP_ADDRESS_N='5'
Anzahl weiterer Adressen, welche sich trotz geblocktem SSH-Port auf dem Server einloggen können.

BFB_BOT_FREE_IP_ADDRESS_%='1.2.3.4'
IP-Adresse, welche bei einer BOT-Attacke nicht geblockt wird. Dadurch kann man sich von dieser Adresse auch bei geblocktem SSH-Port auf dem Server einloggen.

logfile configuration
BFB_EXTENDED_LOG_TO_MESSAGELOG='no'
Hier yes eintragen, wenn gewünscht wird, dass nach der Sperrung weitere Versuche dieser IP im messagelog mitgeloggt erden sollen.

BFB_USE_OWN_FTPD_LOGFILES='no'
Einige User verwenden zum loggen für den FTPD nicht die /var/log/messages. Deshalb kann man hier angeben, ob der FTPD in ein eigenes Logfiles schreibt.

BFB_FTPD_LOGFILE='ftpdlogfile'
Wenn bei BFB_USE_OWN_FTPD_LOGFILES yes eingetragen wurde und der PureFTPD ein eigenes Logfile verwenden, dann dieses bitte hier eintragen.

BFB_USE_OWN_IMAP_LOGFILES='no'
Einige User verwenden zum loggen für den IMAPD/EXIM/VMAIL nicht die /var/log/messages. Deshalb kann man hier angeben, ob der Maildienst in ein eigenes Logfiles schreibt.

BFB_IMAP_LOGFILE='maillogfile'
Wenn bei BFB_USE_OWN_IMAP_LOGFILES yes eingetragen wurde und der IMAPD bzw VMAILD ein eigenes Logfile verwenden, dann dieses bitte hier eintragen.

BFB_USE_OWN_SN_LOGFILES='no'
Einige User verwenden zum loggen des SN-Newsservers nicht die /var/log/messages. Deshalb kann man hier angeben, ob der SN in ein eigenes Logfiles schreibt.

BFB_SN_LOGFILE='snlogfile'
Wenn bei BFB_USE_OWN_SN_LOGFILES yes eingetragen wurde und der SN ein eigenes Logfile verwenden, dann dieses bitte hier eintragen.

BFB_USE_OWN_AUTH_LOGFILES='no'
Einige User verwenden zum loggen des SSH-servers nicht die /var/log/messages. Deshalb kann man hier angeben, ob der SN in ein eigenes Logfiles schreibt.

BFB_AUTH_LOGFILE='authlogfile'
Wenn bei BFB_USE_OWN_AUTH_LOGFILES yes eingetragen wurde und der SSH-Server ein eigenes Logfile verwenden, dann dieses bitte hier eintragen.

BFB_USE_OWN_SMBWEB_LOGFILES='no'
Einige User verwenden zum loggen des smbwebclient nicht die /var/log/messages. Deshalb kann man hier angeben, ob der smbwebclient in ein eigenes Logfiles schreibt.

BFB_SMBWEBCLIENT_LOGFILE='smbwebclientlogfile'
Wenn bei BFB_USE_OWN_SMBWEB_LOGFILES yes eingetragen wurde und der smbwebclient ein eigenes Logfile verwenden, dann dieses bitte hier eintragen.

BFB_USE_OWN_KERNEL_LOGFILES='no'
Einige User verwenden zum loggen der Kernelmessages nicht die /var/log/messages. Deshalb kann man hier angeben, ob die kernelmessages in ein eigenes Logfiles schreiben.

BFB_KERNEL_LOGFILE='kernellogfile'
Wenn bei BFB_USE_OWN_KERNEL_LOGFILES yes eingetragen wurde und die kernelmessages ein eigenes Logfile verwenden, dann dieses bitte hier eintragen. Das ist wichtig für die Portscans.

portscan configuration:

BFB_PORTSCAN_RANGES_N='5'
Anzahl der Portranges, welche für die Überwachung auf Portscans genutzt werden können.

BFB_PORTSCAN_RANGE_%='89:100'
Hier kannst Du die Ports eintragen, welche nicht von einem eigenen Dienst genutzt wird, aber bei Portscans mit gescannt werden. Die Defaultwerte haben sich in der Praxis bewährt.

BFB_PORTSCAN_LOGLEVEL='debug'
Hiermit erkennt BFB mit welcher Priorität BFB die Meldungen zum Portscan in das Kerlenlog schreibt. Ist nur nötig, wenn Du ein Service verwendest, der die Logfiles auswertet (z.B php-syslgo-ng). Wenn Du 'critical' einträgst werden die Meldungen auch auf der Konsole angezeigt.

specifi port configuration:

BFB_SPECIFIC_PORTS_N='1'
Hier bitte die Anzahl der speziellen Ports eintragen (BFB_MONITOR_SPECIFIC_PORT)

BFB_SPECIFIC_%_PORTS
Hier kannst Du die Ports eintragen, bei denen sofort mit ip_recent die IP-Adresse geblockt wird.

BFB_EXTERNAL_INTERFACE='eth0'
Bitte hier das Interface eintragen, wo der ausgehende Traffic geroutet wird. Ist nötig für ip_recent (BFB_MONITOR_SPECIFIC_PORT)

syslog-server configuration:

BFB_SERVER_RUN_AS_SYSLOGSERVER
Wenn der EIS als Syslogserver fungiert, dann hier bitte yes eintragen.

BFB_SERVER_SYSLOGSERVER_HOSTNAME
Hier bitte den eigenen Servernamen eintragen, welcher in den Logfiles auftaucht.
Dieser Eintrag wird dazu genutzt um BFB nur die Messages auswerten zu lassen, welche von dem eigenen Server stammen. Damit werden Fehlalarme vermieden, welche durch Messages hervorgerufen werden würden, die von externen Servern stammen.

webserver configuration:

BFB_REQUEST_BLOCKS_VIA_WEBSERVER='yes'
Sollen die Attacken im Webbrowser aufgelistet werden?

BFB_USE_APACHE_VERSION='2'
Welche Apacheversion wird versendet? 1 oder 2?

BFB_APACHE_DOCUMENTROOT='/var/www/htdocs'
Wo befindet sich sich der Ordnr des Apache?

BFB_HTML_INDEX_FOLDER='brute_force_blocking'
Hier bitte den Ordner eintragen unter dem Du im Webbrowser die Auswertung anschauen willst.
in Beispielfall wäre es hier jetzt
http://Deine.ip.de/brute_force_blocking

BFB_CGI_BIN_DOCUMENTROOT='/var/www/cgi-bin'
... und der cgi-Ordner?

BFB_HTML_REFRESH_PATH='./cgi-bin/brute_force_blocking.cgi'
der Pfad, wo das cgi-File liegt, inklusive des cgi-files

BFB_OWN_WEBDOMAIN_NAME='http://dein.server.de'
Der Domainname, von wo aus dein Server vom Internet aus erreichbar ist, also deine evtuelle dyndns-domain.

BFB_SHOW_ATTACK_DETAILS_ON_WEB='yes'
Wenn Du die Logeintrag, sowie den Traceroute und die Whois-Abfrage im Webbrowser sehen willst, dann hier bitte 'yes' eintragen

BFB_WEBSERVER_LOGFILE_CLEAR='1 1 * * 6'
Hier wird angegeben, wann das Logfile gelöscht wird, welches über einen Webbrowser einzusehen ist?

additional logfile configuration:

BFB_ADDITIONAL_LOG_SCRIPT='/dein/eigenes/bfb-script'
Der Pfad zu deinem eigenen BFB-script, welches Du im Zuge von BFB_MONITOR_ADDITIONAL_LOG erstellt hast.

Information configuration:

BFB_SEND_MAIL='yes'
Möchtest Du über jeden Angriff per Mail informiert werden?

BFB_MAIL_TO_ADDRESS='root@foo.bar'
Wenn ja, an welche Mail-adresse soll diese Mail geschickt werden?

BFB_MAIL_FROM_ADDRESS='root@foo.bar'
Die Email-Adresse, welche als Absender stehen soll. Dabei kannst Du Namen (ohne Leerzeichen) oder die korrekte Email-Adresse angeben. (bis Version 0.3.5 als Name nur ‘root’)

BFB_MAIL_SUBJECT='[Brute Force] attack detected!'
... und welchen Betreff möchtest Du haben?

BFB_MAIL_WITH_WHOIS_REQUEST='yes'
Möchtest Du eine Whois-Abfrage per Mail zugeschickt bekommen? Wenn ja, kann man damit den Eigentümer des Angreifenden Servers erfahren. Wenn es allerdings eine Dial-In Adresse ist, hat man kaum Chancen. Eine Dial-In Adresse erkennt man meisstens daran, dass Dial-In in der aufgelösten Adresse drin steht
z.bsp.: dip.t-dialin.net

BFB_MAIL_WITH_TRACEROUTE_REQUEST='yes'
Hier gilt eigentlich das selbe wie für die Whois-Abfrage, nur dass hier ein Traceroute gemacht wird.

BFB_ALL_INFO_IN_SAME_MAIL='yes' die o.g. Abfragen werden in eine eMail gepackt. Ansonsten kommt für jede Abfrage eine seperate Mail.

BFB_WRITE_ATTACK_TO_TXTFILE='no' Speichert alle verfügbaren Daten (traceroute, whois, Logauszug) in einem Textfile

BFB_ATTACK_TXTFILE_FILENAME='/pfad/zum/file'
Der Pfad zu dem o.g Testfile.

BFB_ATTACK_FILE_CLEAR_CRON='1 0 1 * *'
Zu diesem Zeitpunkt wird o.g Textfile geleert.

BFB_SEND_VIA_CURL='no'
Soll BFB Meldungen zu einem via Curl erreichbaren externen Dienst schicken?
nicht Twitter!!

Curl configuration:

BFB_CURL_USERNAME='username'
Der Accountname/Username des extenen Dienstes

BFB_CURL_PASSWORD='Passwort'
Das Passwort des extenen Dienstes

BFB_CURL_TEXT='BFB-attack detected from'
Der Text, welcher dann beim exterem Dienst auftaucht. Die IP-Adresse fügt BFB automatisch hinzu.

BFB_CURL_ADDRESS='http://die URL für das update'
Die Adresse, an die die Meldung geschickt wird.

Twitter Konfiguration:
BFB_SEND_TO_TWITTER='yes'
Wenn Du die BFB-Meldungen über Sperrungen bei Twitter veröffentlichen willst.

BFB_TWITTER_USERNAME='username'
Dein Twitter username. Bitte beachte unten die Anleitung für die Erzeugung des O-Auth-files!

BFB_TWITTER_TEXT='BFB-attack detected from'
Der Text, welcher dann bei Twitter auftaucht. Die IP-Adresse fügt BFB automatisch hinzu.

Cacti configuration:

BFB_CACTI_SERVER_IP_ADDRESS='192.168.10.3'
Hier die IP-Adresse eintragen, auf der dec CACTI-Server läuft. 127.0.0.1 sollte aber vermieden werden, sondern die IP-Adresse eingetragen werden, welche der Server selbst hat (eth0 oder eth1). BFB kann zwar auch entfernet CACTI-Server überwachen, dort aber noch nicht blocken.
BFB_BLOCK_PROACTIVE_FROM_ATMA='yes'
BFB kann von 2 Twitteraccounts IP Adressen downloaden, die dann proaktiv gesperrt werden. Von diesen IP Adressen wurden zuvor auf verschiedene Systeme Hack versuche gestartet. Sie sind vermutlich verseucht oder gehackt. BFB blockt deshalb diese Adressen schon vorher.

BFB_BLOCK_PROACTIVE_CRON='22 * * * *'
Wie oft soll die Liste mit den verseuchten IP Adressen aktualisiert werden?
Mit diesem Cronjob werden nur neue Adressen hinzugefügt, aber keine geblockten entblockt. Das geschieht weiterhin über die unblock-funktion.

BFB_MONITOR_ASTERISK='yes'
Soll das Asterisk-Logfile auf Hackversuche überwachte werden. Damit sind versuche gemein, welche darauf abzielen den Asterisk für kostenlose Gespräche zu hacken.

BFB_ASTERISK_ATTEMPT_NUMBER='4'
Gib bitte die Anzahl an, wie oft ein fehlerhafter Login erlaubt ist. Default ist 4 (Es kann ja wirklich mal sein, dass man selber was falsch gemacht hat :-)

BFB_USE_OWN_ASTERISK_LOGFILE='no' 
Einige User verwenden zum loggen der Asteriskmessages nicht /var/log/asterisk/message. Deshalb kann man hier angeben, ob der Asterisk die messages in ein eigenes Logfiles schreiben

BFB_ASTERISK_LOGFILE='/var/log/asterisk/messages'
der komplette Pfad zum Asterisk-Logfile

BFB_CHECK_NEW_VERSION='yes'
Da sich in letzter Zeit die Anfragen gehäuft haben, warum das BFB-Paket nicht unter ''Upgradable packages'' aufgezählt wird, habe ich mich entschlossen eine Funktion einzubauen, welche es ermöglicht auf eine Neue BFB-Version zu prüfen. Wenn also hier ‘yes’ eingetragen wird, so prüft ein Cronjob regelmäßig, ob es eine neuen BDB-Version gibt und informiert dann den Admin per Mail.

BFB_CHECK_NEW_VERSION_CRON='22 21 * * *'
Wann soll BFB nach einer neuen Version suchen?

BFB_CHECK_NEW_VERSION_TO_ADDRESS='root'
Wer soll informiert werden (Email-Adresse)?

BFB_CHECK_NEW_VERSION_FROM_ADDRESS='root'
Wer soll als Absender bei den Mails auftauchen? Dabei kannst Du Namen (ohne Leerzeichen) oder die korrekte Email-Adresse angeben. (bis Version 0.3.5 als Name nur ‘root’)
 

Jetzt noch zu Frage, was ist der Unterschied zwischen REJECT und DROP?
DROP:
Wenn ein Paket gedroped wird wird es einfach nur "kommentarlos"
verworfen. Der Rechner der das Paket gesendet hat wird auf eine Antwort
warten bis es zum Timeout kommt.

REJECT:
Das Paket wird verworfen, aber es wird an den Absender eine ICMP Message
"Destination Unreachable" gesendet, so dass der weiß das Paket kann nicht
ankommen und nicht weiter versucht Pakete zu senden.
 

Installationsanleitung:
eisfair-1 und eisfair-2:
- Über die Packeis-suche nach brute_force_blocking suchen und dann den Links folgen
- Direkt unter http://ojaehrling.de/eis-list.txt. Dort Punkt 10 auswählen und installieren

Debian o.ä.
mittels
'wget -O /usr/sbin/BFB-Debian-install http://ojaehrling.de/eis/debian/BFB-Debian-install

das Script zum herunterladen/installieren des Paketes downloaden und dann mittels
chmod +x /usr/sbin/BFB-Debian-install ausführbar machen. Danach als root
'BFB-Debian-install'
ausführen und BFB installieren.

Twitter-Integration und Einrichtung des O-Auth-Keys mittels setup:

setup -> Service administration -> ttytter -> 5. Generate keyfile

Wenn Du das aufgerufen hast wirst Du gebeten deinen Twitter-usernamen einzugeben. Dabei ist nicht deine Mail-Adresse gemeint :-), sondern dein Sydonym.
Das wird gebraucht umd das Keyfile zu benennen. Der Username muss der selbe sein, wie im setup von BFB unter BFB_TWITTER_USERNAME eingetragen ist.
Nachdem Du den Usernamen eingegeben und ENTER gedrückt hast kommt eine kurze Anleitung.
Du musst nun den Webbrowser deiner Wahl aufrufen. Entweder machst Du das an einem anderem Rechner, bzw wenn Du dich remote eingewählt hast auf dem gleichen Rechner, oder Du öffnest auf einer 2.Konsole (ALT-F2) einen Textbroswer. Dort loggst Du dich in deinen Twitteraccount ein. Cookies müssen eingeschaltet sein.

Danach gehts auf dem eisfair weiter. Drücke nun 2x ENTER

Nun bekommst Du viel Text angezeigt in dem ein Link zu finden ist.
(z.B. http://dev.twitter.com/apps/key_exchange?oauth_consumer_key=XtbRXaQpPdf)
Diesen Link kopierst Du nun ein deinen Webbrowser und drückst wieder ENTER.
Danach musst Du auf Authorize klicken (siehe Bild 1). Danach auf
''I Accept'' (Bild 2).
In der darauf folgenden Website ist ein Code eingetragen (Bild 3). Diesen kopierst Du in die Zwischenablage. Wieder zurück zum Eisfair-setup. Drücke nun wieder ENTER und füge den Code ein (Bild 4). Danach drückst Du ENTER und STRG-D.
Nun wird Dir noch angezeigt, wo der Key abgelegt wurde.

Das wars schon.

Es gibt böse Mensche, welche versuchen den * per brute-force-Attacke zu hacken um kostenlose Gespräche (z.B. zu Sonderrufnummer in In- und Ausland) zu führen. Das sieht dann im Logfile so aus:
Dec 4 16:34:32 NOTICE[8799] chan_sip.c: Registration from '"9994"<sip:9994@80.86.xxx.xxx>' failed for '221.146.210.214' - Username/auth name mismatch
Dec 4 16:34:32 NOTICE[8799] chan_sip.c: Registration from '"9995"<sip:9995@80.86.xxx.xxx>' failed for '221.146.210.214' - Username/auth name mismatch
Dec 4 16:34:32 NOTICE[8799] chan_sip.c: Registration from '"9996"<sip:9996@80.86.xxx.xxx>' failed for '221.146.210.214' - Username/auth name mismatch
Dec 4 16:34:32 NOTICE[8799] chan_sip.c: Registration from '"9997"<sip:9997@80.86.xxx.xxx>' failed for '221.146.210.214' - Username/auth name mismatch
Dec 4 16:34:32 NOTICE[8799] chan_sip.c: Registration from '"9998"<sip:9998@80.86.xxx.xxx>' failed for '221.146.210.214' - Username/auth name mismatch
Dec 4 16:34:32 NOTICE[8799] chan_sip.c: Registration from '"9999"<sip:9999@80.86.xxx.xxx>' failed for '221.146.210.214' - Username/auth name mismatch

Genau danach grep BFB und sperrt nach Erreichung der eingestellten Versuche die IP-Adresse.