Blokirajte napade strežnika SSH (napade Brute Force) z uporabo DenyHosts


DenyHosts je odprtokodni in brezplačni varnostni program za preprečevanje vdorov, ki temelji na dnevniku, za strežnike SSH, ki ga je v jeziku Python razvil Phil Schwartz. Namenjen je spremljanju in analiziranju dnevnikov strežnika SSH glede neveljavnih poskusov prijave, napadov na podlagi slovarja in napadov s hitro uporabo tako, da blokira izvorne naslove IP z dodajanjem vnosa v datoteko /etc/hosts.deny na strežniku in preprečuje, da bi naslov IP nadaljnji poskusi takšne prijave.

DenyHosts je zelo potrebno orodje za vse sisteme, ki temeljijo na Linuxu, še posebej, če dovolimo gsh prijave na osnovi gesla. V tem članku vam bomo pokazali, kako namestiti in konfigurirati DenyHosts na RHEL 6.3/6.2/6.1/6/5.8, CentOS 6.3/6.2/6.1/6/5.8 in Fedora 17,16,15,14,13,12 sistemi, ki uporabljajo epel repozitorij.

Poglej tudi :

  1. Fail2ban (sistem za preprečevanje vdorov) za SSH
  2. Onemogočite ali omogočite root root prijavo
  3. Linux Malware Detect (LMD)

Namestitev DenyHosts v RHEL, CentOS in Fedora

Orodje DenyHosts privzeto ni vključeno v sisteme Linux, namestiti ga moramo s pomočjo repozitorija EPEL tretjih oseb. Ko dodate repozitorij, namestite paket z naslednjim ukazom YUM.

# yum --enablerepo=epel install denyhosts
OR
# yum install denyhosts

Konfiguriranje DenyHosts za naslove IP s seznama dovoljenih

Ko so Denyhosts nameščeni, poskrbite, da boste svoj IP naslov uvrstili na beli seznam, da ne boste nikoli zaklenjeni. Če želite to narediti, odprite datoteko /etc/hosts.allow.

# vi /etc/hosts.allow

Pod opis dodajte vsakega naslova IP enega za drugim v ločeno vrstico, ki je nikoli ne želite blokirati. Oblika naj bo naslednja.

#
# hosts.allow   This file contains access rules which are used to
#               allow or deny connections to network services that
#               either use the tcp_wrappers library or that have been
#               started through a tcp_wrappers-enabled xinetd.
#
#               See 'man 5 hosts_options' and 'man 5 hosts_access'
#               for information on rule syntax.
#               See 'man tcpd' for information on tcp_wrappers
#
sshd: 172.16.25.125
sshd: 172.16.25.126
sshd: 172.16.25.127

Konfiguriranje DenyHosts za e-poštna opozorila

Glavna konfiguracijska datoteka se nahaja v /etc/denyhosts.conf. Ta datoteka se uporablja za pošiljanje e-poštnih opozoril o sumljivih prijavah in omejenih gostiteljih. Odprite to datoteko z urejevalnikom VI.

# vi /etc/denyhosts.conf

Poiščite »ADMIN_EMAIL« in dodajte svoj e-poštni naslov, če želite prejemati e-poštna opozorila o sumljivih prijavah (za več e-poštnih opozoril uporabite ločene vejice). Oglejte si konfiguracijsko datoteko mojega strežnika CentOS 6.3. Vsaka spremenljivka je dobro dokumentirana, zato jo nastavite po svojih željah.

############ DENYHOSTS REQUIRED SETTINGS ############
SECURE_LOG = /var/log/secure
HOSTS_DENY = /etc/hosts.deny
BLOCK_SERVICE  = sshd
DENY_THRESHOLD_INVALID = 5
DENY_THRESHOLD_VALID = 10
DENY_THRESHOLD_ROOT = 1
DENY_THRESHOLD_RESTRICTED = 1
WORK_DIR = /var/lib/denyhosts
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=YES
LOCK_FILE = /var/lock/subsys/denyhosts

############ DENYHOSTS OPTIONAL SETTINGS ############
ADMIN_EMAIL = [email 
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <[email >
SMTP_SUBJECT = DenyHosts Daily Report

############ DENYHOSTS OPTIONAL SETTINGS ############
DAEMON_LOG = /var/log/denyhosts
DAEMON_SLEEP = 30s
DAEMON_PURGE = 1h

Ponovni zagon storitve DenyHosts

Ko končate s konfiguracijo, znova zaženite storitev denyhosts za nove spremembe. Storitvi denyhosts dodamo tudi zagon sistema.

# chkconfig denyhosts on
# service denyhosts start

Oglejte si dnevnike DenyHosts

Če si želite ogledati dnevnike ssh denyhosts, koliko napadalcev in hekerjev poskuša dostopati do vašega strežnika. Za ogled dnevnikov v realnem času uporabite naslednji ukaz.

# tail -f /var/log/secure
Nov 28 15:01:43 tecmint sshd[25474]: Accepted password for root from 172.16.25.125 port 4339 ssh2
Nov 28 15:01:43 tecmint sshd[25474]: pam_unix(sshd:session): session opened for user root by (uid=0)
Nov 28 16:44:09 tecmint sshd[25474]: pam_unix(sshd:session): session closed for user root
Nov 29 11:08:56 tecmint sshd[31669]: Accepted password for root from 172.16.25.125 port 2957 ssh2
Nov 29 11:08:56 tecmint sshd[31669]: pam_unix(sshd:session): session opened for user root by (uid=0)
Nov 29 11:12:00 tecmint atd[3417]: pam_unix(atd:session): session opened for user root by (uid=0)
Nov 29 11:12:00 tecmint atd[3417]: pam_unix(atd:session): session closed for user root
Nov 29 11:26:42 tecmint sshd[31669]: pam_unix(sshd:session): session closed for user root
Nov 29 12:54:17 tecmint sshd[7480]: Accepted password for root from 172.16.25.125 port 1787 ssh2

Odstranite prepovedani naslov IP iz DenyHosts

Če ste kdaj blokirali nenamerno in želite prepovedani naslov IP odstraniti z domen. Storitev morate ustaviti.

# /etc/init.d/denyhosts stop

Za popolno odstranitev ali izbris prepovedanega naslova IP. Urediti morate naslednje datoteke in odstraniti naslov IP.

# vi /etc/hosts.deny
# vi /var/lib/denyhosts/hosts
# vi /var/lib/denyhosts/hosts-restricted
# vi /var/lib/denyhosts/hosts-root
# vi /var/lib/denyhosts/hosts-valid
# vi /var/lib/denyhosts/users-hosts

Po odstranitvi prepovedanega naslova IP znova zaženite storitev.

# /etc/init.d/denyhosts start

Kršitveni naslov IP je dodan vsem datotekam v imeniku/var/lib/denyhosts, zato je zelo težko določiti, katere datoteke vsebujejo kršitveni naslov IP. Eden najboljših načinov, kako z ukazom grep ugotoviti naslov IP. Na primer, če želite izvedeti naslov IP 172.16.25.125, to storite.

cd /var/lib/denyhosts
grep 172.16.25.125 *

Beli seznam naslovov IP trajno v DenyHosts

Če imate seznam statičnih naslovov IP, ki jih želite trajno dodati na seznam dovoljenih. Odprite datoteko/var/lib/denyhosts/allowed-hosts. Ne glede na naslov IP, ki je vključen v to datoteko, privzeto ne bo prepovedan (upoštevajte ga kot časovni seznam).

# vi /var/lib/denyhosts/allowed-hosts

In dodajte vsak naslov IP v ločeni vrstici. Shranite in zaprite datoteko.

# We mustn't block localhost
127.0.0.1
172.16.25.125
172.16.25.126
172.16.25.127