Sziasztok,
Egy Debian serverre feltelepítettem a "Fail2ban", de úgy érzékelem, hogy nem tiltja le az SSH-t, ha hibás jelszóval próbálkozok, csak a 6 belépéstől. Mivel én 2-adtam meg, ezért ezt hibának vélem (nagy valószínűséggel az SSH-tilt és nem a fail2ban). Kérdésem, hogy mi lehet a gond? Esetleg a jail.conf-ba írtam valami rosszat (mellékelem).
Továbbá, nem tudom, hogy jól adtam meg, hogy minden próbálkozásról küldjön mailt (célom, hogy minél több infót küldjön a behatolóról):
# Fail2Ban configuration file.
#
# This file was composed for Debian systems from the original one
# provided now under /usr/share/doc/fail2ban/examples/jail.conf
# for additional examples.
#
# To avoid merges during upgrades DO NOT MODIFY THIS FILE
# and rather provide your changes in /etc/fail2ban/jail.local
#
# Author: Yaroslav O. Halchenko
#
# $Revision: 281 $
#
# The DEFAULT allows a global definition of the options. They can be override
# in each jail afterwards.
[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1/80.241.223.36/188.6.8.123
bantime = 600
maxretry = 3
# "backend" specifies the backend used to get files modification. Available
# options are "gamin", "polling" and "auto".
# yoh: For some reason Debian shipped python-gamin didn't work as expected
# This issue left ToDo, so polling is default backend for now
backend = polling
#
# Destination email address used solely for the interpolations in
# jail.{conf,local} configuration files.
destemail = sajatcimem@serverip.com
#
# ACTIONS
#
# Default banning action (e.g. iptables, iptables-new,
# iptables-multiport, shorewall, etc) It is used to define
# action_* variables. Can be overriden globally or per
# section within jail.local file
banaction = iptables-multiport
# email action. Since 0.8.1 upstream fail2ban uses sendmail
# MTA for the mailing. Change mta configuration parameter to mail
# if you want to revert to conventional 'mail'.
mta = sendmail
# Default protocol
protocol = tcp
#
# Action shortcuts. To be used to define action parameter
# The simplest action to take: ban only
action_ = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
# ban & send an e-mail with whois report to the destemail.
action_mw = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
%(mta)s-whois[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s]
# ban & send an e-mail with whois report and relevant log lines
# to the destemail.
action_mwl = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
%(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s]
# Choose default action. To change, just override value of 'action' with the
# interpolation to the chosen action shortcut (e.g. action_mw, action_mwl, etc) in jail.local
# globally (section [DEFAULT]) or per specific section
action = %(action_)s
#
# JAILS
#
# Next jails corresponds to the standard configuration in Fail2ban 0.6 which
# was shipped in Debian. Enable any defined here jail by including
#
# [SECTION_NAME]
# enabled = true
#
# in /etc/fail2ban/jail.local.
#
# Optionally you may override any other parameter (e.g. banaction,
# action, port, logpath, etc) in that section within jail.local
[ssh]
enabled = true
port = 1111
filter = sshd
action = sendmail-whois[name=sendmail, dest=sajatcimem@serverip.com, sender=fail2ban@server.info]
logpath = /var/log/auth.log
maxretry = 2
# Generic filter for pam. Has to be used with action which bans all ports
# such as iptables-allports, shorewall
[pam-generic]
enabled = false
# pam-generic filter can be customized to monitor specific subset of 'tty's
filter = pam-generic
# port actually must be irrelevant but lets leave it all for some possible uses
port = all
banaction = iptables-allports
port = anyport
#logpath = /var/log/auth.log
#maxretry = 2
[xinetd-fail]
enabled = false
filter = xinetd-fail
port = all
banaction = iptables-multiport-log
logpath = /var/log/daemon.log
maxretry = 2
[ssh-ddos]
enabled = true
port = ssh
filter = sshd-ddos
action = sendmail-whois[name=sendmail, dest=sajatcimem@serverip.com, sender=fail2ban@server.info]
logpath = /var/log/auth.log
maxretry = 2
#
# HTTP servers
#
#
# HTTP servers i-MSCP customer sites
#
[apache]
enabled = true
port = http,https
filter = apache-auth
action = sendmail-whois[name=sendmail, dest=sajatcimem@serverip.com, sender=fail2ban@server.info]
logpath = /var/log/apache2/users/*error.log
maxretry = 6
# default action is now multiport, so apache-multiport jail was left
# for compatibility with previous (<0.7.6-2) releases
[apache-multiport]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/users/*error.log
maxretry = 6
[apache-noscript]
enabled = true
port = http,https
filter = apache-noscript
logpath = /var/log/apache2/users/*error.log
maxretry = 6
[apache-overflows]
enabled = true
port = http,https
filter = apache-overflows
action = sendmail-whois[name=sendmail, dest=sajatcimem@serverip.com, sender=fail2ban@server.info]
logpath = /var/log/apache2/users/*error.log
maxretry = 2
#
# HTTP servers i-MSCP Control Panel
#
[apache-imscp]
enabled = true
port = http,https
filter = apache-auth
action = sendmail-whois[name=sendmail, dest=sajatcimem@serverip.com, sender=fail2ban@server.info]
logpath = /var/log/apache2/*error.log
maxretry = 6
# default action is now multiport, so apache-multiport jail was left
# for compatibility with previous (<0.7.6-2) releases
[apache-multiport-imscp]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/*error.log
maxretry = 6
[apache-noscript-imscp]
enabled = true
port = http,https
filter = apache-noscript
action = sendmail-whois[name=sendmail, dest=sajatcimem@serverip.com, sender=fail2ban@server.info]
logpath = /var/log/apache2/*error.log
maxretry = 6
[apache-overflows-imscp]
enabled = true
port = http,https
filter = apache-overflows
logpath = /var/log/apache2/*error.log
maxretry = 2
#
# FTP servers
#
[vsftpd]
enabled = false
port = ftp,ftp-data,ftps,ftps-data
filter = vsftpd
logpath = /var/log/vsftpd.log
# or overwrite it in jails.local to be
# logpath = /var/log/auth.log
# if you want to rely on PAM failed login attempts
# vsftpd's failregex should match both of those formats
action = sendmail-whois[name=sendmail, dest=sajatcimem@serverip.com, sender=fail2ban@server.info]
maxretry = 6
[proftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = proftpd
action = sendmail-whois[name=sendmail, dest=sajatcimem@serverip.com, sender=fail2ban@server.info]
logpath = /var/log/proftpd/proftpd.log
maxretry = 6
[wuftpd]
enabled = false
port = ftp,ftp-data,ftps,ftps-data
filter = wuftpd
logpath = /var/log/auth.log
maxretry = 6
#
# Mail servers
#
[postfix]
enabled = false
port = smtp,ssmtp
filter = postfix
logpath = /var/log/mail.log
[couriersmtp]
enabled = false
port = smtp,ssmtp
filter = couriersmtp
logpath = /var/log/mail.log
#
# Mail servers authenticators: might be used for smtp,ftp,imap servers, so
# all relevant ports get banned
#
[courierauth]
enabled = false
port = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
filter = courierlogin
logpath = /var/log/mail.log
[sasl]
enabled = false
port = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
filter = sasl
# You might consider monitoring /var/log/warn.log instead
# if you are running postfix. See http://bugs.debian.org/507990
logpath = /var/log/mail.log
# DNS Servers
# These jails block attacks against named (bind9). By default, logging is off
# with bind9 installation. You will need something like this:
#
# logging {
# channel security_file {
# file "/var/log/named/security.log" versions 3 size 30m;
# severity dynamic;
# print-time yes;
# };
# category security {
# security_file;
# };
# };
#
# in your named.conf to provide proper logging
# !!! WARNING !!!
# Since UDP is connectionless protocol, spoofing of IP and immitation
# of illegal actions is way too simple. Thus enabling of this filter
# might provide an easy way for implementing a DoS against a chosen
# victim. See
# http://nion.modprobe.de/blog/archives/690-fail2ban-+-dns-fail.html
# Please DO NOT USE this jail unless you know what you are doing.
#[named-refused-udp]
#
#enabled = false
#port = domain,953
#protocol = udp
#filter = named-refused
#logpath = /var/log/named/security.log
[named-refused-tcp]
enabled = false
port = domain,953
protocol = tcp
filter = named-refused
logpath = /var/log/named/security.log
[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
port = pop3,pop3s,imap,imaps
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
# optionaly mail notification # mail[name=dovecot-pop3imap, dest=root@domain] # see /etc/fail2ban/action.d/ or Fail2Ban doc
logpath = /var/log/mail.log
maxretry = 8
[ssh-iptables]
enabled = true
port = 1111
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=sajatcimem@serverip.com, sender=fail2ban@server.info]
logpath = /var/log/auth.log
maxretry = 3
[sendmail]
enabled = true
filter = sendmail
action = iptables-multiport[name=sendmail, port="pop3,imap,smtp,pop3s,imaps,smtps", protocol=tcp]
sendmail-whois[name=sendmail, dest=sajatcimem@serverip.com, sender=fail2ban@server.com]
logpath = /var/log/maillog
[pop3]
enabled = true
filter = courierlogin
action = sendmail-whois[name=sendmail, dest=sajatcimem@serverip.com, sender=fail2ban@server.info]
action = shorewall
logpath = /var/log/mail.log
- 7798 megtekintés
Hozzászólások
Nekem az ignoreip elsőre furcsa.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
A szerkesztőben egy sorban volt. Töröltem az entert.
- A hozzászóláshoz be kell jelentkezni
Üdv,
[ssh]
...
port = 1111
...
A port biztos 1111 ?
Log mutat valamit?
ignoreip = 127.0.0.1/80.241.223.36/188.6.8.123 (Formátum : ignoreip = 127.0.0.1 xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx/xx)
Nem olyan ip-ről jössz amit nem figyel?
- A hozzászóláshoz be kell jelentkezni
Az SSH portot megváltoztattam, ezért ez jó.
ignoreip-t javítottam, valószínű, hogy ez volt a hiba.
Az újraindításnál küld mailt, illetve de nem tilt le. Feltételezem a letiltást ez az action végzi:
iptables[name=SSH, port=ssh, protocol=tcp]
- A hozzászóláshoz be kell jelentkezni
"Az SSH portot megváltoztattam, ezért ez jó."
Mármint melyiket? Amin az sshd ül, az lett 1111? És ezért írtad a jailben a "port = 1111" sort? De az action-ben ezt explicite felülírod TCP/22-re, azaz vagy ott is javítod, vagy egyszerűen kihagyod a jailben megadott action-t , mivel default banactionként az iptables-multiport simán lekezeli.
- A hozzászóláshoz be kell jelentkezni
Ezt nem pontosan értem:
Ha az ssh pl: 1111, akkor melyik sorban írom felül? :)
A rendszer már kiküld ilyen levelet:
---
Hi,
The IP xxx.10.xx.99 has just been banned by Fail2Ban after
3 attempts against SSH.
Here are more information about xxx.10.xx.99:
Unknown AS number or IP network. Please upgrade this program.
Regards,
Fail2Ban
---
Csak az a bajom, hogy nem dob ki az SSH... Pontosan melyik action végzi a teljes letiltást?
- A hozzászóláshoz be kell jelentkezni
Ezt nézve:
[ssh-iptables]
enabled = true
port = 1111
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=sajatcimem@serverip.com, sender=fail2ban@server.info]
logpath = /var/log/auth.log
maxretry = 3
Először elmeséled neki, hogy majd a 1111-es porttal szeretnél valamit tenni, ezt követően pedig amikor a bannoláskor végrehajtandó actionhöz hozzárendeled a 22-es portot. Azaz lesz egy TCP/22-re vonatkozó tűzfalszabályod, ami természetesen nem fogja meg a TCP/1111-es forgalmat.
De az egész előtt van egy ilyen:
[ssh]
enabled = true
port = 1111
filter = sshd
action = sendmail-whois[name=sendmail, dest=sajatcimem@serverip.com, sender=fail2ban@server.info]
logpath = /var/log/auth.log
maxretry = 2
Ez pedig éppen azt csinálja, amit leírtál. Levelet küld, mert csak ennyi van az action sorban.
- A hozzászóláshoz be kell jelentkezni
Ok, először is próbáltam összeollózni a configot, ezért lehetnek benne rossz gondolatok.
Mi a különbség a "[ssh-iptables]" és a "[ssh]" között?
A 22-portot a TCP deklarálja, azaz a helyes conf ez?
[ssh-iptables]
enabled = true
port = 1111
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=1111]
sendmail-whois[name=SSH, dest=sajatcimem@serverip.com, sender=fail2ban@server.info]
logpath = /var/log/auth.log
maxretry = 3
- A hozzászóláshoz be kell jelentkezni
Mi a különbség a "[ssh-iptables]" és a "[ssh]" között?
Visszakérdezek. Te milyen különbséget látsz az action sorokban? :)
A beállított actionök nevei elég beszédesek. Az egyik action levelet küld, a másik az iptables-t használja tűzfalazásra. De ha ennél jobban érdekel, nyugodtan nézz bele a megfelelő nevű action file-okba.
"A 22-portot a TCP deklarálja, azaz a helyes conf ez?"
Nem. A 22-es portot a service neve deklarálja, amit az actionben adtál meg:
action = iptables[name=SSH, port=ssh, protocol=1111]
A protokollt pedig most rontottad el. Annak a defaultja a TCP, ahogy fent a konfigban szerepel is.
- A hozzászóláshoz be kell jelentkezni
Sőt találtam egy ilyen actiont hostsdeny, ez azt jelenti, hogy végleg kiüti a betolakodót? Kérdésem, hogy az action-t, hogyan kellene beállítani? (nem értem, hogy hogyan lehetne megadni az actionban az IP-t, amit ki kellene tiltani?
action = hostsdeny[IP=ip]
hostsdeny.conf
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 660 $
#
[Definition]
# Option: actionstart
# Notes.: command executed once at the start of Fail2Ban.
# Values: CMD
#
actionstart =
# Option: actionstop
# Notes.: command executed once at the end of Fail2Ban
# Values: CMD
#
actionstop =
# Option: actioncheck
# Notes.: command executed once before each actionban command
# Values: CMD
#
actioncheck =
# Option: actionban
# Notes.: command executed when banning an IP. Take care that the
# command is executed with Fail2Ban user rights.
# Tags: IP address
# number of failures
# unix timestamp of the ban time
# Values: CMD
#
actionban = IP= &&
printf %%b "ALL: $IP\n" >>
# Option: actionunban
# Notes.: command executed when unbanning an IP. Take care that the
# command is executed with Fail2Ban user rights.
# Tags: IP address
# number of failures
# unix timestamp of the ban time
# Values: CMD
#
actionunban = IP= && sed -i.old /ALL:\ $IP/d
[Init]
# Option: file
# Notes.: hosts.deny file path.
# Values: STR Default: /etc/hosts.deny
#
file = /etc/hosts.deny
- A hozzászóláshoz be kell jelentkezni
"nem értem, hogy hogyan lehetne megadni az actionban az IP-t, amit ki kellene tiltani?
Miért kellene a fix konfigban megadod egy változó paramétert? A filter konfigban nek megfelelő helyen lévő <HOST> változó helyettesítődik a logban talált IP-vel, majd ezt a változót használja fel az action a <ip> helyén.
"Sőt találtam egy ilyen actiont hostsdeny, ez azt jelenti, hogy végleg kiüti a betolakodót?"
Nem. A hosts.deny működéséről lásd: man hosts.deny.
Nem értem a kérdést. Mit szeretnél pontosan? Mire célzol a végleg szóval?
- A hozzászóláshoz be kell jelentkezni
Arra gondoltam, hogy ki lehetne-e valahogyan tiltani egy IP-t a serverről? Azaz, ha ezt rakom be az actionba, akkor azt fogom-e elérni, hogy x próbálkozás után végleg kitiltódik-e egy felhasználó (be szeretném rakni a /etc/hosts.deny-be?
A kérdésem a jail.conf-ban szereplő action-re vonatkozott, azaz hogyan kell átadni az IP címet actionban?
A mellékelt conf csak azt szolgálta, hogy jól értem-e, hogy ez a conf valóban ezt a célt szolgálja.
- A hozzászóláshoz be kell jelentkezni
Ezt a hosts.deny-os kérdést már átrágtuk az előző topikodban, ahol kifejezetten ez volt a kérdésed: fail2ban IP blokkolás beállítása. De ismét: a tűzfalalapú tiltás gyakorlatilag azonnali szakadást tud eredményezni, a hosts.deny-os megoldással pedig csak az új TCP kapcsolatoknál ellenőrződik, azaz egy TCP sessionben az sshd konfigja által engedélyezett maximális számú próbálkozás le tud futni.
Ott azt írtad, "Effektíve nekem mindegy, hogy hova kerülnek a blokkolt IP-k". A kérdés az, hogy ha jól működik a default iptables (pontosabban iptables-multiport), akkor miért akarsz helyette hosts.deny általi tiltást, amikor gyakorlatilag az utóbbi a te szempontodból előnytelenebb?
"Azaz, ha ezt rakom be az actionba, akkor azt fogom-e elérni, hogy x próbálkozás után végleg kitiltódik-e egy felhasználó (be szeretném rakni a /etc/hosts.deny-be?"
Igen (a fenti egy TCP sessionre vonatkozó kitétellel, ill. a "végleg" szóra a következő bekezdésben visszatérek). De ugyanígy működik az iptables-féle is. Azt próbáld megérteni, hogy a fail2ban egy keretrendszer. Olvassa a megadott logfile-okat, és ha a konfigjában meghatározott mintákat észlel, akkor lefuttat egy megadott programot. Amikor letelik egy meghatározott idő, akkor lefuttat egy másik programot. Ezek a programok vagy ilyen, vagy olyan módszert alkalmaznak a szóban forgó forgalom tiltására. Neked teljesen mindegy melyik a tiltást végző módszer, de az tűzfalasnál azért lenne jobb maradni, mert az nem engedi át (pontosabban nem kell átengednie, és alapból nem is teszi) az egy TCP session alatti további próbálkozásokat.
"után végleg kitiltódik-e egy felhasználó"
Ha nem a szokásos módszert akarod alkalmazni, és valóban a cél a végleg, akkor ennek módjáról már szintén beszéltünk az előző topikban. Ahogy a fentiekből kiderül, a tiltás hosszának nincs köze a tiltás módszeréhez (iptables vagy hosts.deny).
"A kérdésem a jail.conf-ban szereplő action-re vonatkozott, azaz hogyan kell átadni az IP címet actionban?"
Válaszoltam is rá. Explicite sehogy sem szükséges. Mert a logból származik a tiltandó IP. (Az, hogy a logsorban melyik a hostnév vagy IP, azt a filterben adod meg, illetve jelen esetben adták meg a fail2ban készítői. Hogy ezt az IP-t miként és hol kell használni a tiltáshoz, az meg értelemszerűen az action definíciójában szerepel.)
"Sőt találtam egy ilyen actiont hostsdeny, ez azt jelenti, hogy végleg kiüti a betolakodót?"
"Arra gondoltam, hogy ki lehetne-e valahogyan tiltani egy IP-t a serverről"
Mivel a fail2ban célja ez, így nem meglepő módon ki lehet tiltani. Hogy végleg, vagy ideiglenesen, ez csak a jail beállításától függ. De újra: miért keresel új tiltási módszert, ha az alapértelemzett tűzfalas felel meg neked a legjobban?
- A hozzászóláshoz be kell jelentkezni
Kedves Stra!
Nagyon köszönöm a válaszodat az összefoglalód sokat segített! Próbálom megérteni az alapvető biztonsági dolgokat. Nem új módszereket keresek, hanem magamban próbálom összerakni a dolgokat ;).
A Debian rendszernél abban a legnehezebb megbirkózni, hogy egy SSH panelben kiadott utasítás mit csinál, hova teszi a dolgokat, mi a következménye, és milyen hibák jönnek elő. Ezek a hibák nem látszanak csak annak, aki tudja, hogy mit csinál és mi hol van. Így gyakran futok bele (gondolom a sok kezdő is), hogy azt hiszi, hogy érti a dolgokat és közben nem és a hibás "tudását" akarja bele erőszakolni egy olyan dologba ami nem is úgy van. Viszont ahogyan megismerem ezen újdonságokat, utána valóban gyerekjátéknak tűnnek ezek a dolgok, de amíg nem ismeri meg az ember addig azt sem tudja mi történik a rendszerben.
Még egyszer köszönöm a segítségeteket!
- A hozzászóláshoz be kell jelentkezni
Összefoglalom az előzőeket.
1.) Fut valamely syslog szolgáltatás. Az autentikációval, autorizációval összefüggő logok a /var/log/auth.log file-ba kerülnek.
2.) Fut az sshd. A tevékenységét a sysloggal logolja.
3.) Fut a fail2ban. Képes logfile-okat figyelni (logpath), és abban adott időablak (findtime) alatt megjelenő adott darabszámú (maxretry) minta (filter; failregex) esetén egy programot lefuttatni (banaction) bannolás céljából, a tiltáshoz szükséges paramétereket átadva neki, ezt a bannolt állapotot fenntartani meghatározott ideig (bantime), majd ennek leteltével egy másik programot (actionunban) lefuttatni a bannolás feloldása céljából.
A zárójelben szereplő paramétereknek van alapértelmezett értékük, amelyek a konfigban felülírhatók a minden jailre vonatkozó defaultként ([DEFAULT]), illetve megadhatók jailenként is.
A konkrét esetben az ssh jail az alap konfig szerint engedélyezett, a /var/log/auth.log logot figyeli, 10 perc alatt 6 rossz próbálkozást enged, ennek túllépésekor 10 perc tiltást érvényesít a TCP/22-es porton bejövő forgalomra az iptables-multiport nevű action segítségével, ez alól kivétel a loopback címről jövő forgalom.
4.) Próbálsz bejelentkezni rossz adatokkal, az sshd ezeket az eseményeket logolja a syslogon keresztül, így a /var/log/auth.log-ban ezekhez hasonló sorok keletkeznek:
Sep 14 20:10:32 example sshd[15369]: Invalid user juzer from 198.51.100.1
Sep 14 20:10:38 example sshd[15369]: Failed password for invalid user juzer from 198.51.100.1 port 48083 ssh2
Sep 14 20:10:47 example sshd[15369]: Failed password for invalid user juzer from 198.51.100.1 port 48083 ssh2
Sep 14 20:10:55 example sshd[15369]: Failed password for invalid user juzer from 198.51.100.1 port 48083 ssh2
Sep 14 20:13:52 example sshd[15400]: Invalid user juzer from 198.51.100.1
Sep 14 20:13:56 example sshd[15400]: Failed password for invalid user juzer from 198.51.100.1 port 48084 ssh2
Sep 14 20:14:00 example sshd[15400]: Failed password for invalid user juzer from 198.51.100.1 port 48084 ssh2
5.) Kis idő elteltével (vagy értesítésre) a fail2ban ránéz az engedélyezett jailek logfile-jaira.
A példa szerint azt látja, hogy az ssh jail filterei (failregex) és az egyes logsorok között illeszkedés van, de nincs illeszkedés a kivételfilterek között (ignoreregex), valamint a támadó IP-je nincs kivétellistán, és az adott időszak alatt az illeszkedések száma elérte a maimumot, így lefuttatja az ssh jail action-jét, ami a default iptables-multiport, ez a nevéből is sejthetően az iptables programot hívja segítségül, és felveszi az INPUT lánc elejéről a protokoll és portszám alapján meghívott fail2ban-ssh láncba az támadó IP-jét, amelyet a filterben megfelelő helyen elhelyezett tag alapján képes beazonosítani a logsorból. Ezt szépen be is írja a saját /var/log/fail2ban.log logjába:
2013-09-14 20:13:58,127 fail2ban.actions: WARNING [ssh] Ban 198.51.100.1
Ehhez hasonló tűzfalszabályt látsz a ban előtt:
# iptables -nvL INPUT ; iptables -nvL fail2ban-ssh
Chain INPUT (policy ACCEPT 5 packets, 356 bytes)
pkts bytes target prot opt in out source destination
5 356 fail2ban-ssh tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22
Chain fail2ban-ssh (1 references)
pkts bytes target prot opt in out source destination
5 356 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
#
És ilyet a ban után:
# iptables -nvL INPUT ; iptables -nvL fail2ban-ssh
Chain INPUT (policy ACCEPT 612 packets, 47155 bytes)
pkts bytes target prot opt in out source destination
43 4280 fail2ban-ssh tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22
Chain fail2ban-ssh (1 references)
pkts bytes target prot opt in out source destination
18 896 DROP all -- * * 198.51.100.1 0.0.0.0/0
25 3384 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
#
6.) Ha nem érkezik több hasonló sor, azaz a támadás abbamaradt, és az uolsó óta eltelt a bannolásra meghatározott időtartam, illetve nincs letiltva a ban feloldása, úgy a fail2ban lefuttatja az unbant, azaz az iptables-multiport actionunban szerint az iptables segítségével törli a bejegyzést az fail2ban-ssh láncból. Erről szintén keletkezik log:
2013-09-14 20:23:58,748 fail2ban.actions: WARNING [ssh] Unban 198.51.100.1
"A Debian rendszernél abban a legnehezebb megbirkózni, hogy egy SSH panelben kiadott utasítás mit csinál, hova teszi a dolgokat, mi a következménye, és milyen hibák jönnek elő. Ezek a hibák nem látszanak csak annak, aki tudja, hogy mit csinál és mi hol van."
Az ismerkedéshez, tanuláshoz sajnos olvasni kell. Az egyik legfontosabb parancs a man és az info, illetve a két legfontosabb útvonal a /usr/share/doc és az /etc. Ha a dokumentáció alapján már tudod, hogy az adott eszköz mire jó (nem kell tudni fejből az összes kapcsolót, csak arról legyen képed, hogy alapvetően mit csinál, és körülbelül mit várhatsz tőle), utána lehet kísérletezgetni. A kísérletezésekkel pedig tapasztalatot szerezni.
A fail2ban online manualját már egyszer linkeltem, de hogy itt is meglegyen: MANUAL 0 8. Továbbá a fail2ban konfigja elég beszédes a nevekkel rendelkezik, illetve a default konfig egész jól kommentezett. Hidd el, nem nehéz a fail2ban (sem). :)
De ha valami még nem tiszta, kérdezz.
- A hozzászóláshoz be kell jelentkezni