• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

blacklistd auf TCP port 2022

Mardor

Well-Known Member
Themenstarter #1
Hallo,

auf meinem Server laufen zwei SSH Daemon, der erste auf dem Host unter Port 22, der andere über PF auf Port 2022.
Ich habe in der /etc/blacklistd.com deshalb eine zusätzliche Zeile eingefügt:

Code:
# $FreeBSD: releng/11.2/etc/blacklistd.conf 301226 2016-06-02 19:06:04Z lidl $
#
# Blacklist rule
# adr/mask:port type    proto   owner           name    nfail   disable
[local]
ssh             stream  *       *               *       5       24h
2022           stream  tcp     *               *       5       24h
ftp             stream  *       *               *       3       24h
smtp            stream  *       *               *       3       24h
submission      stream  *       *               *       3       24h
#6161           stream  tcp6    christos        *       2       10m
*               *       *       *               *       3       60

# adr/mask:port type    proto   owner           name    nfail   disable
[remote]
213.83.23.38:ssh        *       *       *               *       *       *
#129.168.0.0/16 *       *       *               =       *       *
#6161           =       =       =               =/24    =       =
#*              stream  tcp     *               =       =       =
Leider wird SSH auch nach 10 Fehlversuchen an Port 2022 nicht geblockt. Habe ich hier etwas falsch gemacht ?

Gruß Mardor
 

KobRheTilla

used register
#2
Hi,

ist der SSH-Daemon denn entsprechend konfiguriert?
Dazu muss in der sshd_config der Schalter
Code:
UseBlacklist yes
gesetzt sein.

Rob
 

darktrym

Fahnenträger
#3
Verständnisfrage, wieso sollte man einem Programm mitteilen das es geblockt werden soll?
Das wäre ja wie eine Razzia mit Ankündigung. Dabei sollte doch Blacklistd sperren ohne das der ssh Daemon etwas davon mitbekommt.
 

KobRheTilla

used register
#4
Dabei sollte doch Blacklistd sperren ohne das der ssh Daemon etwas davon mitbekommt.
Der SSH-Daemon meldet einen fehlerhaften Loginversuch über einen Socket an den blacklistd. Dieser entscheidet dann anhand seiner Regeln wann er den Client blockiert. Das ist ja nicht fail2ban, wo IIRC ein Logfile ausgewertet wird und darauf basierend gesperrt wird.

Rob
 

gadean

Well-Known Member
#7
Und blacklistd sollte mitgeteilt werden wo er den Socket für den entsprechenden Dienst findet. Das steht aber auch in der man page.
 

Mardor

Well-Known Member
Themenstarter #8
Was heißt das genau? Ist es ein separater Daemon, oder machst du einfach nur eine Umleitung mit pf?
Wenn es zwei separate Daemons sind, ist es denn in beiden Fällen der selbe sshd (mit selber Konfiguration)?
Dies ist tatsächlich ein separater Daemon im Jail den ich auch in der rc.conf im Jail aktiviert habe. Per PF habe ich eine Umleitung von TCP Port 2022 auf 22 in den Jail aktiviert. Die Konfiguration ist die gleiche (gleiche Parameter), es sind aber zwei separate Konfigurationen. Die eine Konfiguration liegt unter /etc/ssh/sshd_config, die andere unter /usr/jail/jail_1/etc/ssh/sshd_config.

Und blacklistd sollte mitgeteilt werden wo er den Socket für den entsprechenden Dienst findet.
Entschuldige aber das Verstehe ich nicht. Was genau meinst du ? Ich habe blacklistd doch den TCP Ports zum blocken mitgeteilt ?

Ich hatte mir generell schon überlegt ob ich blacklistd im Jail konfigurieren soll, aber meiner Meinung nach macht das ja keinen Sinn, da pf ja im Host läuft und nicht im Jail.

Gruß Mardor
 

gadean

Well-Known Member
#9
Du hast den Port eingetragen der geblockt/matched werden soll, aber du hast backlistd nicht mitgeteilt auf welchem Socket er die Info über fehlgeschlagene Anmeldeversuche für diesen Port bekommt. Das konfigurierst du unter "/var/run/blacklistd.sock" oder als Parameter "-s sockpath" wenn man blacklistd direkt aufruft.

man page - blacklistd(8) hat gesagt.:
DESCRIPTION
blacklistd is a daemon similar to syslogd(8) that listens to sockets at
paths specified in the sockpathsfile for notifications from other daemons
about successful or failed connection attempts. If no such file is spec-
ified, then it only listens to the socket path specified by sockspath or
if that is not specified to /var/run/blacklistd.sock. Each notification
contains an (action, port, protocol, address, owner) tuple that identi-
fies the remote connection and the action. This tuple is consulted
against entries in configfile with syntax specified in
blacklistd.conf(5). If an entry is matched, a state entry is created for
that tuple.
 

Mardor

Well-Known Member
Themenstarter #10
Hi gadean,

verstehe. Dann müsste ich dann aber zwei Einträge setzen, eine für /var/run/blacklistd.sock und einen für /usr/jail/jail_1/var/run/blacklistd.sock ?

Gru- Mardor
 

gadean

Well-Known Member
#11
Ne, der sshd in der Jail schreibt auf irgendeinen Socket die fehlgeschlagenen Anmeldeversuche und diesen Socket musst du in "/var/run/blacklistd.sock" benennen. So verstehe ich zumindest die Description.

Du kannst ja mal schauen was in "/var/run/blacklistd.sock" steht bezüglich ssh und Port 22 und dich daran orientieren.
 

Mardor

Well-Known Member
Themenstarter #12
Hi,

wenn ich mir /var/run/blacklistd.sock mit vim anschaue, dann sehe ich nichts. Sollte ich denn hier etwas im Klartext sehen ? Ich hatte mit sockets noch nicht viel zu tun.

Ich habe noch in der rc.conf des Jails blacklistd_enable="YES" und blacklistd_flags="-r" gesetzt. Nun sehe ich ein /usr/jail/jail_1/var/run/blacklistd.sock.

Eingetragen habe ich jetzt in der blacklistd.conf im host (nicht im jail).

Code:
usr/jail/jail_1/var/run/blacklistd.sock stream * * * 3 24h
Allerdings wird noch nichts geblockt.

Gruß Mardor
 

gadean

Well-Known Member
#13
Oh da hab ich was falsch verstanden, "/var/run/blacklistd.sock" ist wohl der Socket von blacklistd in den u.a. sshd kommuniziert.
Damit ist das was ich geschrieben haben falsch :/

Was man versuchen könnte, wäre "/usr/jail/jail_1/var/run/blacklistd.sock" nach "/var/run/blacklistd.sock" zu "symlink"en, aber sicher bin ich mir da nicht.
 

Mardor

Well-Known Member
Themenstarter #14
Hi,

das Problem wird aber dann sein, dass auch wenn ich das symlinke werde ich spätestens beim nächsten jail mit SSH auf Port 5022 ein Problem haben.
 
#15
Hi,

usr/jail/jail_1/var/run/blacklistd.sock stream * * * 3 24h
das ist Mumpitz, der Socket vom Blacklistd wird zur Kommunikation mit ihm genutzt und sollte daher auch nicht in die blacklistd.conf.

wenn ich mir /var/run/blacklistd.sock mit vim anschaue, dann sehe ich nichts. Sollte ich denn hier etwas im Klartext sehen ? Ich hatte mit sockets noch nicht viel zu tun.
Ein Socket dient zur Kommunikation und ist keine reguläre Datei.

werde ich spätestens beim nächsten jail mit SSH
Du nutzt also nicht 2 SSH-Instanzen auf einem Host, sondern Jails? Damit ist deine Anfangsfrage schon falsch gestellt.

Du kannst pf nicht im Jail laufen lassen, daher den blacklistd auch nicht.
Du musst den blacklistd auf dem Host mit mehreren Sockets ausstatten, sodass er in jedem Jail ansprechbar ist. Es gibt dazu die Option -P
-P sockspathsfile
A file containing a list of pathnames, one per line that
blacklistd will create sockets to listen to. This is useful for
chrooted environments.
Erzeuge diese Datei auf dem Host (z.B. /etc/blacklistd-sockets) und füge dort für jedes Jail den Socket ein:
Code:
/usr/jail/jail_1/var/run/blacklistd.sock
/usr/jail/jail_2/var/run/blacklistd.sock
...
Nutze dann blacklistd_flags="-P /etc/blacklistd-sockets" in der rc.conf auf dem Host.

Damit sollte es klappen.

Rob
 

teisho

Well-Known Member
#17
Hi,


das ist Mumpitz, der Socket vom Blacklistd wird zur Kommunikation mit ihm genutzt und sollte daher auch nicht in die blacklistd.conf.



Ein Socket dient zur Kommunikation und ist keine reguläre Datei.


Du nutzt also nicht 2 SSH-Instanzen auf einem Host, sondern Jails? Damit ist deine Anfangsfrage schon falsch gestellt.

Du kannst pf nicht im Jail laufen lassen, daher den blacklistd auch nicht.
Du musst den blacklistd auf dem Host mit mehreren Sockets ausstatten, sodass er in jedem Jail ansprechbar ist. Es gibt dazu die Option -P


Erzeuge diese Datei auf dem Host (z.B. /etc/blacklistd-sockets) und füge dort für jedes Jail den Socket ein:
Code:
/usr/jail/jail_1/var/run/blacklistd.sock
/usr/jail/jail_2/var/run/blacklistd.sock
...
Nutze dann blacklistd_flags="-P /etc/blacklistd-sockets" in der rc.conf auf dem Host.

Damit sollte es klappen.

Rob

Das hat bei mir super funktioniert. Ich musste nur den Socket in der Jail selbst erstellen.
Postfix und SSH läuft damit tadellos.
Endlich weg von fail2ban! Danke!