frame

Sveiki apsilankę!

Jei forume lankaisi pirmą kartą, kviečiame registruotis ir prisijungti prie diskusijų.

Prisijungti Registruotis

Fail2ban saugumo sistemos diegimas Debian, Ubuntu aplinkoje

IV_VygandasSIV_VygandasS Serverių ekspertas (-ė)
edited rugsėjo 2 Į Serverių saugumas
Šioje pamokoje pateikiame fail2ban programinės įrangos diegimo instrukcijas Debian, Ubuntu aplinkoje. Taip pat pateikiame esminius konfigūracinių parametrų paaiškinimus, kurių suvokimas yra reikalingas siekiant tiksliai aprašyti taikomas blokavimo taisykles.

Fail2ban programinė įranga skirta žurnalų išrašų filtravimui, pagal kurių gautus rezultatus yra atnaujinamos serverio ugniasienės (iptables) taisyklės.

fail2ban diegimas

Prieš įdiegiant įrankį yra rekomenduotina atnaujinti sistemą:
sudo apt-get update
Įdiegiame fail2ban įrankį:
sudo apt-get install fail2ban

Visa fail2ban konfigūracija yra laikomas "/etc/fail2ban/" kataloge, pagal nutylėjimą taikomas prieigos blokavimo taisykles talpinantis failas yra "jail.conf".

Failo "/etc/fail2ban/jail.conf" pradinis turinys:
# 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 <debian@onerussian.com>
#
# $Revision$
#

# The DEFAULT allows a global definition of the options. They can be overridden
# in each jail afterwards.

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1/8
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 = auto

#
# Destination email address used solely for the interpolations in
# jail.{conf,local} configuration files.
destemail = root@localhost

#
# ACTIONS
#

# Default banning action (e.g. iptables, iptables-new,
# iptables-multiport, shorewall, etc) It is used to define
# action_* variables. Can be overridden 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

# Specify chain where jumps would need to be added in iptables-* actions
chain = INPUT

#
# 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", chain="%(chain)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", chain="%(chain)s"]
%(mta)s-whois[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s", chain="%(chain)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", chain="%(chain)s"]
%(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)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 = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6

[dropbear]

enabled = false
port = ssh
filter = sshd
logpath = /var/log/dropbear
maxretry = 6

# 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 = 6

[xinetd-fail]

enabled = false
filter = xinetd-fail
port = all
banaction = iptables-multiport-log
logpath = /var/log/daemon.log
maxretry = 2


[ssh-ddos]

enabled = false
port = ssh
filter = sshd-ddos
logpath = /var/log/auth.log
maxretry = 6

#
# HTTP servers
#

[apache]

enabled = false
port = http,https
filter = apache-auth
logpath = /var/log/apache*/*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 = false
port = http,https
filter = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 6

[apache-noscript]

enabled = false
port = http,https
filter = apache-noscript
logpath = /var/log/apache*/*error.log
maxretry = 6

[apache-overflows]

enabled = false
port = http,https
filter = apache-overflows
logpath = /var/log/apache*/*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
maxretry = 6


[proftpd]

enabled = false
port = ftp,ftp-data,ftps,ftps-data
filter = proftpd
logpath = /var/log/proftpd/proftpd.log
maxretry = 6


[pure-ftpd]

enabled = false
port = ftp,ftp-data,ftps,ftps-data
filter = pure-ftpd
logpath = /var/log/auth.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/mail.warn instead if you are
# running postfix since it would provide the same log lines at the
# "warn" level but overall at the smaller filesize.
logpath = /var/log/mail.log

[dovecot]

enabled = false
port = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
filter = dovecot
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 connection-less protocol, spoofing of IP and imitation
# 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

Atliekame pradinių taisyklių išsaugojimą, sukuriant naują konfigūracinį failą:
cd /etc/fail2ban
cp jail.conf jail.local
nano jail.local
"jail.local" faile atliekame pageidaujamus konfigūracijos pakeitimus, kuriuos norime pakeisti lyginant su pagal nutylėjimą numatytais.

Pagal nutylėjimą numatyta konfigūracija

Poskyriai nurodyti su [DEFAULT] prefiksu yra pagal nutylėjimą numatyti konfigūracinio failo parametrai, kuriuos gali pakeisti vėliau aprašomi parametrai. Bet kuriuo atveju yra pakankamai svarbu konfigūraciniame faile turėti pakankamai tvirtai apibrėžtus pagal nutylėjimą numatytus parametrus.

Blokavimo taisyklės

fail2ban taikomas blokavimo taisyklės yra pritaikomos koreguojant pageidaujamus taisyklių parametrus.

Vieni iš svarbesnių parametrų būtų šie:
  • ignoreip - Šis parametras tikrina sąrašą IP adresų, kuriems neturi būti taikomos aprašytos fail2ban taisyklės. IP adresai ar IP adresų ruožai yra atskiriami tarpo simboliu.
  • bantime - Šis parametras nurodo kuriam laikui nekorektiškai prisijungimą atlikusiam vartotojui bus taikomos blokavimo taisyklės. Parametro vertė pateikiama sekundėmis. Pagal nutylėjimą numatyta vertė yra 10 minučių.
  • maxretry - Šis parametras nurodo maksimalų bandymų prisijungti kiekį iki nurodytam vartotojui bus pritaikytas blokavimas.

Blokavimo veiksmai

Blokavimo atveju, fail2ban gali imtis prevencinių veiksmų keliais skirtingais būdais. Šie būdai yra aprašomi šių parametrų:
  • banaction - Šis parametras nurodo konfigūracinį failą kuris yra naudojamas atliekant blokavimą. Šio parametro vertė atitinka failą "/etc/fail2ban/action.d/" kataloge, kuris ir atlieka patį blokavimo procesą. Pagal nutylėjimą ši vertė yra nurodyta naudojant iptables blokuoti specifiniam IP adresui prieigą visais prievadais.
  • action - Šis parametras iš esmės yra sutrumpintas kelias iki prieš tai aprašyto "banaction" skripto, kartu pateikiant šiam parametrui reikalingą blokavimui informaciją. Pagal nutylėjimą numatyta vertė perduoda "action_"

El. pašto pranešimų konfigūravimas incidento atveju

Pageidaujant sukonfigūruoti fail2ban siųsti el. pašto laiškus į pasirinktą el. pašto dėžutę, tai galime nurodyti pagal nutylėjimą taikomose konfigūracijos parametrų vertėse.

Žinoma siekiant, kad el. pašto tarnyba siųsti pranešimus į išoriškai prieinamą el. pašto dėžutę yra būtinas el. pašto tarnybos sukonfigūravimas. Kitu atveju laiškų pristatymas būtų galimas tik sisteminiams serverio vartotojams.

Pranešimų į el. paštą siuntimo konfigūracijoje yra esminiai šie du parametrai:
  • destemail - Šis parametras nurodo el. pašto adresą į kurį bus pristatomi pranešimai apie blokavimo pritaikymą. Pagal nutylėjimą taikoma vertė yra "root@localhost", kuri nurodo laiškų pristatymą "root" sistemos vartotojui.
  • mta - Šis parametras nurodo kuris el. pašto agentas/tarnyba (MTA) bus naudojama pranešimų siuntimui.

Specifinės aplikacijos jail aprašymas

Konfigūraciniame faile, žemiau pagal nutylėjimą nurodytų konfigūracijos parametrų matyti specifinių aplikacijų jail parametrų nustatymai.

Kiekvienas atskiras jail yra aprašomas žemiau tokia sintakse pažymėtų poskyrių:
[aplikacijos_pavadinimas]
  • enabled - Šis parametras nurodo ar pasirinktas specifinės aplikacijos jail aprašymas bus taikomas.
  • filter - parametras nurodo failą "/etc/fail2ban/filter.d/" kataloge, į kurį yra kreipiamasi siekiant identifikuoti metodą pagal kurį yra nuskaitomi nepavykusių prisijungimų žurnalų išrašai.
  • logpath - parametras nurodo kelią iki pageidaujamos tarnybos žurnalo išrašo, kuris yra tikrinamas pagal prieš tai nurodytą filtrą.

Specifinės aplikacijos jail aprašyme yra galimybė nurodyti specifinius pagal nutylėjimą taikomus parametrus (pvz. maxretry), kuriuos nurodžius specifinės aplikacijos taikomose taisyklėse bus ignoruojami prieš tai nurodyti [DEFAULT] parametrai.

Atlikus bet kokius fail2ban taikomų filtrų ar blokavimo veiksmų konfigūracijos pakeitimus yra reikalingas fail2ban tarnybos perkrovimas.

Perkrauti tarnybą galime naudojant šią komandą:
service fail2ban restart
Siekiant patikrinti pritaikytas blokavimo taisykles, įvykdome šią komandą:
iptables -L -n
Pažymėtos temos:
Norėdami palikti komentarą, turite prisijungti arba registruokis.