Fail2ban

makgab képe

Üdv!

Fail2ban témában nézelődöm a neten Drupal ügyben, pl.:
https://drupal.org/node/1823808
https://drupal.org/project/fail2ban

Milyen módszerrel érdemes védekezni Drupal site támadás ellen? Vagy inkább a webszerver szinten érdemes ezt megtenni pl. fail2ban-al?

A fail2ban modul nem egészen világos. Ez a fail2ban progival dolgozik össze? Vagy hogyan működik pontosan?

Drupal verzió: 
makgab képe

Talán szerverszinten érdemes. Úgy érzem.

0
0
pp képe

A fail2ban egy szerveren futó alkalmazás, ami a logokban keres mintákat, amik betörési kísérletekre utalnak és azokat bannolja a tűzfalban bizonyos ideig.

A fail2ban Drupal modul a Drupalba érkező gyanús kísérleteket logolja a syslogba. (innen aztán kiolvassa a fail2ban és bannolja)

A lényeg, hogy szerveren fel kell lennie telepítve a fail2ban alkalmazásnak és konfigurálva kell lennie. (apt-get install fail2ban)

A modul contrib könyvtárában találsz egy jail.local.conf fájlt, amit át kell másolnod a /etc/fail2ban/ konyvtárába jail.local néven. (cp jail.local.conf /etc/fail2ban/jail.local)

Ez még csak azt mondja meg a fail2ban-nak, hogy hol keressen és mit tegyen, ha talál, de a konkrét mintákat még meg kell neki mondani.

Ehhez másold a contrib/filter.d könyvtárban található két fájlt a fail2ban filter.d könyvtárába. (cp contrib/filter.d/* /etc/fail2ban/filter.d)

Ezután már csak újra kell indítanod a fail2ban-t (service fail2ban restart)

Persze a fentiekhez root jogosultság kell majd a szerveren.

pp

2
0
makgab képe

Köszönöm, a fail2ban-t ismerem, csak a drupalos modul nem volt egészen világos. De most már értem.
Tehát segíti a fail2ban-t a logba küldött adatokkal.

0
0
makgab képe

Sajnos nekem nem logol (centos6.x) a "/var/log/messages"-be.
Egy hibás bejelentkezést próbáltam szimulálni. :)

Egyelőre csak azt szerettem volna látni, hogy valóban megjelenik a logban.
Mi a feltétele, hogy a log-ba írjon? (az alapbeállításokat annyiban módosítottam, hogy a whitelist IP-t kiürítettem a teszt idejére.)

0
0
nevergone képe

Szia!

Milyen beállításokkal és módszerrel próbáltad beüzemelni?

0
0
makgab képe

Az alapbeállításokat hagytam (7.x-1.3), kivéve a whitelist-ot, mert láttam beteszi az IP címemet. :) Tehát azt szedtem ki, azaz whitelist IP üres.
Aztán csináltam egy "login failed"-et, egy hibás bejelentkezést. De a logba nem került semmi. :(

Néztem a kódját, gondolom a fail2ban_syslog($address) végzi a logolást, de ez csak egy helyen hívódik meg:
function fail2ban_comment_admin_overview_submit($form, &$form_state)

Ez pedig nem fut le a hibás bejelentkezéskor. De lehet hogy tévedek és nem vettem észre valamit.

0
0
pp képe

A php syslog utasítását használja. Nézd meg, hogy jól van-e beállítva a syslog.conf

0
0
makgab képe

A syslog.conf nem létezik centos-on. Ez debian specifikus beállítás.

/etc/rsyslog.conf?

# cat /etc/rsyslog.conf
#rsyslog v3 config file

# if you experience problems, check
# http://www.rsyslog.com/troubleshoot for assistance

#### MODULES ####

$ModLoad imuxsock.so	# provides support for local system logging (e.g. via logger command)
$ModLoad imklog.so	# provides kernel logging support (previously done by rklogd)
#$ModLoad immark.so	# provides --MARK-- message capability

# Provides UDP syslog reception
#$ModLoad imudp.so
#$UDPServerRun 514

# Provides TCP syslog reception
#$ModLoad imtcp.so  
#$InputTCPServerRun 514

 
#### GLOBAL DIRECTIVES ####

# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
 
# File syncing capability is disabled by default. This feature is usually not required, 
# not useful and an extreme performance hit
#$ActionFileEnableSync on

 
#### RULES ####

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                -/var/log/messages
 
# The authpriv file has restricted access.
authpriv.*                                              -/var/log/secure
 
# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog
 
 
# Log cron stuff
cron.*                                                  -/var/log/cron
 
# Everybody gets emergency messages
*.emerg                                                 *
 
# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          -/var/log/spooler
 
# Save boot messages also to boot.log
local7.*                                                -/var/log/boot.log
 
 
 
# //...
0
0
nevergone képe

Szia!

Attól tartok, hogy ez itt már nem Drupal-specifikus kérdés, érdemes lenne más, témába vágó helyen folytatnod.
Köszi!

0
0
makgab képe

Abból a szempontból Drupal kérdés, hogy a modul nem működik sajna. :(
Gyanítom, hogy php.ini beállítás lesz a dolog mögött.

0
0
nevergone képe

Ahogy PP is említette, ez már inkább a syslog (esetleg a PHP) beállítása lesz:
http://drupal.hu/comment/75774#comment-75774

0
0
makgab képe

Mitután lefuttattam a PHP syslog() fv-ben szereplő mintakódot:

<?php
openlog("myScriptLog", LOG_PID | LOG_PERROR, LOG_LOCAL0);
$access = date("Y/m/d H:i:s");
syslog(LOG_WARNING, "Unauthorized client: $access {$_SERVER['REMOTE_ADDR']} ({$_SERVER['HTTP_USER_AGENT']})");
closelog();
?>

a syslogban (/var/log/messages) szépen meg is jelent a fenti log üzenet.
Tehát semmilyen probléma nincs a PHP-val és a rendszerrel.
A modul nem működik. Pontosabban nem tudni, hogy mikor kellene logolnia.
A hibás belépést nem logolja.

0
0
makgab képe

A hibás belépést nem logolja ez látszik a kódban.
De a kommentek logolása sem egészen világos. A syslog-ba akkor került be a bejegyzés, amikor az "admin/content/comment" oldalon bepipálom a "Firewall originating IP address" opciót és kijelölve egy hozzászólást a "Frissítés"-re kattintok. A "Firewall originating IP address" checkbox nem marad bebpipálva!
Szóval ekkor megjelenik a syslog-ban, de nem automatikus?
Nem egészen értem a működését.

A README-ben is ez van:

When the checkbox on http://example.com/?q=admin/content/comment site is
enabled and a comment is selected to be unpublished, the module will create
a log entry, which in turn causes fail2ban to block the IP address that the
comment was submitted from for the period set in /etc/fail2ban/jail.local.

Tehát kézzel kell megadni a logolandó bejegyzést? :o

0
0
makgab képe

Megvan, működik! :)

Szóval az alap syslog modult be kell kapcsolni és az szépen logol a syslog-ba (/var/log/messages). Erre pedig már lehet alkalmazni a modul "contrib" könyvtárában levő filter és jail beállításokat.

1
0