Różnice pomiędzy wersjami 2 i 6 (Spinanie 4 wersji)
⇤ ← Wersja 2 z 2013-10-24 20:05:36 →
Rozmiar: 6270
Edytor: wtps0n
Komentarz:
← Wersja 6 z 2016-11-19 19:17:01 → ⇥
Rozmiar: 3283
Edytor: wtps0n
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

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 ...


{i}  (c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.

FailTwoBan (ostatnio edytowane 2016-11-19 19:17:01 przez wtps0n)