sshguard
Az sshguard egy behatolásmegelőző rendszer, amely szervernaplókat elemez, észleli a rosszindulatú tevékenységeket, majd az operációs rendszer tűzfalát használva blokkolja a rosszindulatú kapcsolatok IP-címeit. Az sshguard C programozási nyelven íródott, így nem terheli a parancsértelmezőt, hiszen a forráskódja közvetlen a processzor bináris nyelvére van lefordítva.
Hogyan működik?
Az sshguard egy egyszerű szolgáltatás, amely folyamatosan figyel egy vagy több naplófájlt. Elemzi a naplóeseményeket, amelyeket a többi szolgáltatás küld sikertelen bejelentkezési kísérlet esetén, majd az operációs rendszer tűzfalának frissítésével blokkolja az adott kapcsolatok további próbálkozásait.
Az sshguard neve ellenére nemcsak az SSH naplókat elemzi. Számos levelezőrendszert, valamint néhány FTP rendszert is támogat. A támogatott szolgáltatások teljes listája megtalálható az sshguard.net weboldalon.
Telepítés
Emerge
Telepítse a app-admin/sshguard szoftvercsomagot:
root #
emerge --ask app-admin/sshguard
Kiegészítő szoftver
Az sshguard működéséhez a választott init rendszer és a kívánt tűzfal backend függvényein kívül további szoftverek telepítésére lehet szükséges annak érdekében, hogy hatékonyan blokkolja a rosszindulatú szereplőket.
További információ a különböző támogatott backend rendszerekről a man setup súgóoldal elolvasásával érhető el:
root #
man 7 sshguard-setup
iptables
Amikor az iptables szoftvert használják az operációs rendszer tűzfalaként.
root #
emerge --ask net-firewall/iptables
További információk az IPtables használatáról és beállításáról megtalálhatóak az IPtables cikkben.
nftables
Amikor az nftables rendszertűzfalként van használva:
root #
emerge --ask net-firewall/nftables
Beállítás
iptables backend
Tűzfal előkészítése
Amikor sshguard blokkolja a rosszindulatú felhasználókat (az IP-címük blokkolásával), akkor a sshguard láncot fogja használni.
Készítse elő a láncot az iptables segítségével, és győződjön meg róla, hogy az új bejövő kapcsolatok észlelésekor is aktiválódik.
root #
iptables -N sshguard
root #
iptables -A INPUT -j sshguard
Ezután ellenőrizze, hogy az iptables backend könyvtár megfelelő elérési útja be van állítva a /etc/sshguard.conf fájlban.
/etc/sshguard.conf
Az iptables könyvtár beállítása az BACKEND számára# A backend teljes elérési útja. (Kötelező megadni. Nincs alapértelmezett érték beállítva.)
BACKEND="/usr/libexec/sshg-fw-iptables"
Naplófájlok figyelése
Az sshguard alapvető koncepciója az, hogy a rendszergazda az alkalmazásnak adja meg a figyelendő naplófájlokat opcióként – nincs natív sshguard beállításfájl.
A Gentoo operációs rendszeren az opciókat legjobban a /etc/sshguard.conf fájlban lehet beállítani.
/etc/sshguard.conf
Az sshguard beállítása a /var/log/messages és /var/log/auth.log fájlok olvasására# Szóközzel elválasztott lista a figyelendő naplófájlokról. (Választható. Nincs alapértelmezett érték.)
FILES="/var/log/messages /var/log/auth.log"
#
# Hány problémás kísérlet váltja ki a blokkolást?
THRESHOLD=10
# A blokkolások legalább 24 órán át tartanak (60480 másodperc).
BLOCKTIME=60480
# IP-címek nyomon követése 24 órán át (60480 másodperc).
DETECTION_TIME=60480
#
# Az IPv6 blokkolandó alhálózati mérete. Alapértelmezés szerint egyetlen cím, CIDR jelölés. (Választható. Alapértelmezett érték: 128).
IPV6_SUBNET=64
# Az IPv4 blokkolandó alhálózati mérete. Alapértelmezés szerint egyetlen cím, CIDR jelölés. (Választható. Alapértelmezett érték: 32).
IPV4_SUBNET=24
#
# A PID fájl teljes elérési útja. (Választható. Nincs alapértelmezett érték).
PID_FILE=/run/sshguard.pid
Győződjön meg arról, hogy a naplófájlok elérhetőek az sshguard által használt futásidejű felhasználó számára.
Szolgáltatások
OpenRC
Az sshguard alapértelmezés szerint induljon el úgy, hogy hozzáadja a default futási szinthez (annak érdekében, hogy automatikusan elinduljon a szolgáltatás amikor a számítógép indul), majd ezt követően indítsa is el azonnal a szolgáltatást:
root #
rc-update add sshguard default
root #
rc-service sshguard start
systemd
Használja a systemd szokásos módját az szolgáltatás engedélyezéséhez (annak érdekében, hogy automatikusan elinduljon a szolgáltatás amikor a számítógép indul), majd ezt követően indítsa is el azonnal a szolgáltatást:
root #
systemctl enable sshguard
root #
systemctl restart sshguard
Host számítógépek feketelistára tétele
A feketelistázási opcióval bizonyos számú visszaélés után a támadó IP-címe vagy egy IP-alhálózat véglegesen blokkolásra kerül. A feketelista minden indításkor betöltődik, és működés közben új bejegyzésekkel bővül. A sshguard akkor ad hozzá egy új IP-címet, amikor a visszaélések küszöbértékét túllépte.
A feketelistára került címek soha nem lesznek újra engedélyezve.
Annak érdekében, hogy a fekete listázás engedélyezve legyen, hozzon létre egy megfelelő könyvtárat és fájlt.
root #
mkdir -p /var/lib/sshguard
root #
touch /var/lib/sshguard/blacklist.db
A feketelista meghatározásakor fontos kizárni a megbízható IP-hálózatokat és host számítógépeket egy fehér listán.
Annak érdekében, hogy fehér listázás engedélyezve legyen, hozzon létre egy megfelelő könyvtárat és fájlt.
root #
mkdir -p /etc/sshguard
root #
touch /etc/sshguard/whitelist
A fehér listának tartalmaznia kell a loopback interfészt, és legalább egy megbízható IP-hálózatot, például 192.0.2.0/24.
/etc/sshguard/whitelist
Megbízható hálózatok fehér listára rárakása127.0.0.0/8
::1/128
192.0.2.0/24
A 192.0.2.0/24 bejegyzést az egyéni igényekhez kell igazítani.
Adja hozzá a BLACKLIST_FILE és WHITELIST_FILE fájlt a beállításhoz. A példabeállítás minden host számítógépet blokkol az első rossz bejelentkezési kísérlet után. Egy kevésbé agresszív blokkolási politika beállításához módosítsa a THRESHOLD és BLACKLIST_FILE értékét, és állítsa például 10-re a 2 helyett.
/etc/sshguard.conf
Az sshguard beállítása úgy, hogy feketelistázza a visszaélőketBACKEND="/usr/libexec/sshg-fw-iptables"
FILES="/var/log/auth.log"
#
THRESHOLD=2
BLOCK_TIME=43200
DETECTION_TIME=604800
#
IPV4_SUBNET=24
IPV6_SUBNET=64
#
PID_FILE=/run/sshguard.pid
#
# Adja hozzá a következő sorokat.
BLACKLIST_FILE=2:/var/lib/sshguard/blacklist.db
WHITELIST_FILE=/etc/sshguard/whitelist
Indítsa újra a sshguard szolgáltatást annak érdekében, hogy a módosítások érvénybe lépjenek:
root #
/etc/init.d/sshguard restart
Hibaelhárítás
A /var/log/auth.log fájl eltűnt hozzáadás közben!
Amikor az sshguard elindul, akkor a következő hibát jelenti:
Sep 23 03:39:11 foo.bar.com sshguard[64933]: File '/var/log/auth.log' vanished while adding!
Ilyen hiba (az elérési út változhat) akkor fordul elő, amikor a célfájl nem elérhető az operációs rendszeren. Győződjön meg róla, hogy létre van hozva a fájl, vagy frissítse az sshguard beállítását annak érdekében, hogy ne kerüljön hozzáadásra a monitorozáshoz.
Egy syslog-ng szoftvert futtató operációs rendszerben, amely operációs rendszert OpenRC init rendszert futtat, a következő kiegészítés a syslog-ng.conf fájlhoz elegendő lehet:
/etc/syslog-ng/syslog-ng.conf
creating auth.log filelog { source(src); destination(messages); };
log { source(src); destination(console_all); };
destination authlog {file("/var/log/auth.log"); };
filter f_auth { facility(auth); };
filter f_authpriv { facility(auth, authpriv); };
log { source(src); filter(f_authpriv); destination(authlog); };
Töltse be újra a beállítást annak érdekében, hogy a módosítások életbe lépjenek:
root #
rc-service syslog-ng reload
További olvasnivaló a témában
- Fail2ban — a system denying hosts causing multiple authentication errors access to a service.
- Iptables — a program used to configure and manage the kernel's netfilter modules.
Külső források
A sshguard dokumentáció minden szükséges információt tartalmaz az alkalmazás további finomhangolásához.