|
Rozmiar: 6270
Komentarz:
|
← Wersja 6 z 2016-11-19 19:17:01 ⇥
Rozmiar: 3283
Komentarz: *** (re)KREACJA ***
|
| Usunięcia zostały oznaczone w ten sposób. | Dodatki zostały oznaczone w ten sposób. |
| Linia 4: | Linia 4: |
| <<TableOfContents>> | <<Action(print, Wydrukuj tę dokumentację)>>` `<<Action(SlideShow, Pokaż jako slajdy)>><<BR>> <<Navigation(children)>> <<TableOfContents()>> |
| Linia 6: | Linia 8: |
| = Konfiugracja fail2ban = | = Konfiguracja fail2ban = |
| Linia 8: | Linia 10: |
| W ports pojawił się bardzo fajny skrypt napisany w [[http://www.python.org|pythonie|target="_blank"]], który powoduje dopisywanie regułek blokujących dla adresów IP, które próbują atakować serwer. | [[FreshPorts:security/py-fail2ban|fail2ban]] to skrypt napisany w [[http://www.python.org/|pythonie|target="_blank"]], który powoduje dopisywanie regułek blokujących dla adresów IP, które próbują atakować serwer. |
| Linia 11: | Linia 13: |
| Konfiguracja globalna to dwa pliki (umieszczone w repozytorium CVS): {{{#!shell |
Konfiguracja globalna to dwa pliki (umieszczone w [[UniMaster|repozytorium skryptów]]): {{{#!highlight bash numbers=off |
| Linia 17: | Linia 19: |
| === JAIL === | == Jail == |
| Linia 28: | Linia 30: |
| Niestety fail2ban powstał głównie z myślą o Linuxie oraz iptables. Dlatego też trzeba odpowiednio połatać konfigurację specyficznie dla FreeBSD. Oto różnice (patche): === fail2ban.conf === {{{#!diff numbers=off --- fail2ban.conf.orig 2010-02-25 15:00:00.000000000 +0100 +++ fail2ban.conf 2010-02-25 14:52:22.000000000 +0100 @@ -22,7 +22,7 @@ # Only one log target can be specified. # Values: STDOUT STDERR SYSLOG file Default: /var/log/fail2ban.log # -logtarget = /var/log/fail2ban.log +logtarget = /var/log/fail2ban/fail2ban.log # Option: socket # Notes.: Set the socket file. This is used to communicate with the daemon. Do |
Niestety [[FreshPorts:security/py-fail2ban|fail2ban]] powstał głównie z myślą o Linuxie oraz iptables. Dlatego też trzeba odpowiednio połatać konfigurację specyficznie dla [[https://www.freebsd.org|FreeBSD|target="_blank"]]. Oto różnice (patche). Całość została umieszczona w [[UniMaster|repozytorium skryptów]], tak więc po zainstalowaniu odpowiedniego `Makefile` można wydać polecenie: {{{#!highlight bash numbers=off cd /usr/local/etc/fail2ban/ make patch start |
| Linia 45: | Linia 36: |
| === jail.conf === {{{#!diff numbers=off --- jail.conf.orig 2012-08-01 03:45:04.000000000 +0200 +++ jail.conf 2012-12-08 02:24:25.000000000 +0100 @@ -23,14 +23,14 @@ ignoreip = 127.0.0.1/8 |
== Uruchomienie demona == |
| Linia 52: | Linia 38: |
| # "bantime" is the number of seconds that a host is banned. -bantime = 600 +bantime = 1200 # A host is banned if it has generated "maxretry" during the last "findtime" # seconds. -findtime = 600 +findtime = 60 # "maxretry" is the number of failures before a host get banned. -maxretry = 3 +maxretry = 2 # "backend" specifies the backend used to get files modification. # Available options are "pyinotify", "gamin", "polling" and "auto". @@ -219,12 +219,11 @@ [ssh-ipfw] -enabled = false +enabled = true filter = sshd -action = ipfw[localhost=192.168.0.1] - sendmail-whois[name="SSH,IPFW", dest=you@example.com] +action = ipfw[localhost=37.59.20.105] logpath = /var/log/auth.log -ignoreip = 168.192.0.1 +ignoreip = 91.121.4.86 62.111.156.254 # These jails block attacks against named (bind9). By default, logging is off # with bind9 installation. You will need something like this: |
Przygotowanie katalogów oraz pliku `/etc/rc.conf`: {{{#!highlight bash numbers=off mkdir -p /var/log/fail2ban/ /var/db/fail2ban echo 'fail2ban_enable="YES"' >> /etc/rc.conf echo 'fail2ban_flags="-x"' >> /etc/rc.conf |
| Linia 86: | Linia 45: |
| === action.d/ipfw.conf === {{{#!diff numbers=off --- ipfw.conf.orig 2012-08-01 03:45:04.000000000 +0200 +++ ipfw.conf 2012-12-08 02:14:46.000000000 +0100 @@ -12,14 +12,14 @@ # Notes.: command executed once at the start of Fail2Ban. # Values: CMD # -actionstart = +actionstart = ipfw add 64000 deny ip from table\(22\) to any |
Właściwe uruchomienie: {{{#!highlight bash numbers=off cd /usr/local/etc/fail2ban/ make start }}} |
| Linia 97: | Linia 51: |
| oraz sprawdzenie poprawności kopnfiguracji: {{{#!highlight bash numbers=off cd /usr/local/etc/fail2ban/ make show |
|
| Linia 98: | Linia 56: |
| # Option: actionstop # Notes.: command executed once at the end of Fail2Ban # Values: CMD # -actionstop = +actionstop = ipfw delete 64000 |
# wylistowanie zawartości table(22) make list }}} |
| Linia 105: | Linia 60: |
| = fail2ban dla jails = Mechanizm jail(8) nie pozwala, aby reguły firewalla były uruchamiania wewnątrz jail. Dlatego też, [[FreshPorts:security/py-fail2ban|fail2ban]] należy uruchomić na głównym ''host'' ("''serwerze matce''"). Należy tylko wziąć pod uwagę odpowiednie pliki do monitorowania. Np.: |
|
| Linia 106: | Linia 63: |
| # Option: actioncheck @@ -37,7 +37,7 @@ # <time> unix timestamp of the ban time # Values: CMD # -actionban = ipfw add deny tcp from <ip> to <localhost> <port> +actionban = ipfw table 22 add <ip> |
{{{#!highlight ini numbers=off # definicja monitorowania SSHd # [sshd-ipfw] enabled = true filter = sshd action = ipfw[localhost=31.179.155.109] logpath = /usr/jails/smtpd.nss.local/var/log/auth.log ignoreip = 127.0.0.1 ... }}} |
| Linia 114: | Linia 74: |
| {{{#!wiki comment = Źródła w sieci internet = * [[url1||target="_blank"]] * [[url2||target="_blank"]] * [[url3||target="_blank"]] * [[url4||target="_blank"]] }}} |
|
| Linia 115: | Linia 82: |
| # Option: actionunban @@ -48,7 +48,7 @@ # <time> unix timestamp of the ban time # Values: CMD # -actionunban = ipfw delete `ipfw list | grep -i <ip> | awk '{print $1;}'` +actionunban = ipfw table 22 delete <ip> |
{{{#!wiki comment Gdy trzeba dołączyć inną (pod)stronę https://moinmo.in/HelpOnMacros/Include https://moinmo.in/HelpOnParsers <<Include(pagename, heading, level, from="regex", to="regex", sort=ascending|descending, items=n, skipitems=n, titlesonly, editlink)>> }}} |
| Linia 123: | Linia 89: |
| [Init] @@ -62,4 +62,4 @@ # Notes.: the local IP address of the network interface # Values: IP # -localhost = 127.0.0.1 +localhost = 37.59.20.105176.241.247.193 }}} A następnie bsd-ipfw.conf przekopiować jako ipfw.conf === filter.d/ssh.conf === {{{#!diff numbers=off --- sshd.conf.orig 2008-05-12 10:31:56.000000000 +0200 +++ sshd.conf 2010-02-25 15:06:49.000000000 +0100 @@ -2,7 +2,7 @@ # # Author: Cyril Jaquier # -# $Revision: 663 $ +# $Revision: 728 $ # [INCLUDES] @@ -20,17 +20,20 @@ # Notes.: regex to match the password failures messages in the logfile. The # host must be matched by a group named "host". The tag "<HOST>" can # be used for standard IP/hostname matching and is only an alias for -# (?:::f{4,6}:)?(?P<host>\S+) +# (?:::f{4,6}:)?(?P<host>[\w\-.^_]+) # Values: TEXT # -failregex = ^%(__prefix_line)s(?:error: PAM: )?Authentication failure for .* from <HOST>\s*$ - ^%(__prefix_line)sFailed [-/\w]+ for .* from <HOST>(?: port \d*)?(?: ssh\d*)?$ +failregex = ^%(__prefix_line)s(?:error: PAM: )?[A|a]uthentication (?:failure|error) for .* from <HOST>\s*$ + ^%(__prefix_line)sDid not receive identification string from <HOST>$ + ^%(__prefix_line)s(?:error: PAM: )?User not known to the underlying authentication module for .* from <HOST>\s*$ + ^%(__prefix_line)sFailed (?:password|publickey) for .* from <HOST>(?: port \d*)?(?: ssh\d*)?$ ^%(__prefix_line)sROOT LOGIN REFUSED.* FROM <HOST>\s*$ ^%(__prefix_line)s[iI](?:llegal|nvalid) user .* from <HOST>\s*$ ^%(__prefix_line)sUser \S+ from <HOST> not allowed because not listed in AllowUsers$ ^%(__prefix_line)sauthentication failure; logname=\S* uid=\S* euid=\S* tty=\S* ruser=\S* rhost=<HOST>(?:\s+user=.*)?\s*$ ^%(__prefix_line)srefused connect from \S+ \(<HOST>\)\s*$ - ^%(__prefix_line)sAddress <HOST> .* POSSIBLE BREAK-IN ATTEMPT\s*$ + ^%(__prefix_line)sreverse mapping checking getaddrinfo for .* \[<HOST>\] .* POSSIBLE BREAK-IN ATTEMPT!$ + ^%(__prefix_line)sUser \S+ from <HOST> not allowed because none of user's groups are listed in AllowGroups$ # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. }}} (tak naprawdę wystarczy skopiować bsd-sshd.conf jako sshd.conf). HOST |
---- {i} ` `<<GetVal(SlownikNewBsd,adm-podpis)>> |
Wydrukuj tę dokumentację Pokaż jako slajdy
Spis Treści
Konfiguracja fail2ban
fail2ban to skrypt napisany w pythonie, który powoduje dopisywanie regułek blokujących dla adresów IP, które próbują atakować serwer.
Konfiguracja globalna
Konfiguracja globalna to dwa pliki (umieszczone w repozytorium skryptów):
/usr/local/etc/fail2ban/fail2ban.local
/usr/local/etc/fail2ban/jail.local
Jail
Nie należy odnosić tego do mechanizmu jail(8). Jest to raczej sparowanie akcji oraz sposobu filtrowania wraz z ustawieniami, jaki plik logu należy przeglądać.
Akcje
Akcje (czyli co robić, jeżeli wystąpi zdarzenie) zapisane są w podkatalogu action.d/. Każda usługa (np. bsd-ipfw) jest zapisany w stosownym pliku .conf.
Filtry
Co należy filtrować (REGEXPy), których należy poszukiwać w logach, aby uruchomić akcję banowania.
Poprawki dla FreeBSD
Niestety fail2ban powstał głównie z myślą o Linuxie oraz iptables. Dlatego też trzeba odpowiednio połatać konfigurację specyficznie dla FreeBSD. Oto różnice (patche). Całość została umieszczona w repozytorium skryptów, tak więc po zainstalowaniu odpowiedniego Makefile można wydać polecenie:
cd /usr/local/etc/fail2ban/
make patch start
Uruchomienie demona
Przygotowanie katalogów oraz pliku /etc/rc.conf:
mkdir -p /var/log/fail2ban/ /var/db/fail2ban
echo 'fail2ban_enable="YES"' >> /etc/rc.conf
echo 'fail2ban_flags="-x"' >> /etc/rc.conf
Właściwe uruchomienie:
cd /usr/local/etc/fail2ban/
make start
oraz sprawdzenie poprawności kopnfiguracji:
cd /usr/local/etc/fail2ban/
make show
# wylistowanie zawartości table(22)
make list
fail2ban dla jails
Mechanizm jail(8) nie pozwala, aby reguły firewalla były uruchamiania wewnątrz jail. Dlatego też, fail2ban należy uruchomić na głównym host ("serwerze matce"). Należy tylko wziąć pod uwagę odpowiednie pliki do monitorowania. Np.:
# definicja monitorowania SSHd
#
[sshd-ipfw]
enabled = true
filter = sshd
action = ipfw[localhost=31.179.155.109]
logpath = /usr/jails/smtpd.nss.local/var/log/auth.log
ignoreip = 127.0.0.1 ...
(c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.
