Bloker SSH-serverangreb (Brute Force-angreb) ved hjælp af DenyHosts


DenyHosts er et open source og gratis log-baseret sikkerhedsprogram til forebyggelse af indtrængen til SSH-servere udviklet på Python-sprog af Phil Schwartz. Det er beregnet til at overvåge og analysere SSH-serverlogfiler for ugyldige loginforsøg, ordbogbaserede angreb og brute force-angreb ved at blokere de oprindelige IP-adresser ved at tilføje en post til /etc/hosts.deny-filen på serveren og forhindrer IP-adressen i at oprette yderligere sådanne loginforsøg.

DenyHosts er et meget nødvendigt værktøj til alle Linux-baserede systemer, især når vi tillader adgangskodebaserede ssh-logins. I denne artikel vil vi vise dig, hvordan du installerer og konfigurerer DenyHosts på RHEL 6.3/6.2/6.1/6/5.8, CentOS 6.3/6.2/6.1/6/5.8 og Fedora 17,16,15,14,13,12 systemer, der bruger epel repository.

Se også :

  1. Fail2ban (Intrusion Prevention) -system til SSH
  2. Deaktiver eller aktiver SSH-rodindlogning
  3. Linux Malware Detect (LMD)

Installation af DenyHosts i RHEL, CentOS og Fedora

Som standard er DenyHosts-værktøjet ikke inkluderet i Linux-systemerne, vi skal installere det ved hjælp af tredjeparts EPEL-arkiv. Når du er tilføjet lager, skal du installere pakken ved hjælp af følgende YUM-kommando.

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

Konfiguration af DenyHosts til hvidliste-IP-adresser

Når Denyhosts er installeret, skal du sørge for at hvidliste din egen IP-adresse, så du aldrig bliver låst ude. For at gøre dette skal du åbne en fil /etc/hosts.allow.

# vi /etc/hosts.allow

Under beskrivelsen skal du tilføje hver IP-adresse en efter en på en separat linje, som du aldrig vil blokere. Formatet skal være som følger.

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

Konfiguration af DenyHosts til e-mail-alarmer

Hovedkonfigurationsfilen findes under /etc/denyhosts.conf. Denne fil bruges til at sende e-mail-alarmer om mistænkelige logins og begrænsede værter. Åbn denne fil ved hjælp af VI editor.

# vi /etc/denyhosts.conf

Søg efter 'ADMIN_EMAIL', og tilføj din e-mail-adresse her for at modtage e-mail-alarmer om mistænkelige login (for flere e-mail-alarmer skal du bruge komma-adskilt). Se venligst konfigurationsfilen på min CentOS 6.3-server. Hver variabel er veldokumenteret, så konfigurer den efter din smag.

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

Genstart DenyHosts-tjenesten

Når du er færdig med din konfiguration, skal du genstarte denyhosts-tjenesten for nye ændringer. Vi tilføjer også denyhosts-tjenesten til systemstart.

# chkconfig denyhosts on
# service denyhosts start

Se DenyHosts-logfiler

For at se denyhosts ssh-logfiler for, hvor mange angribere og hackere der er forsøgt at få adgang til din server. Brug følgende kommando til at se realtidslogfiler.

# 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

Fjern forbudt IP-adresse fra DenyHosts

Hvis du nogensinde har blokeret ved et uheld og vil fjerne den forbudte IP-adresse fra denyhosts. Du skal stoppe tjenesten.

# /etc/init.d/denyhosts stop

For at fjerne eller slette forbudt IP-adresse fuldstændigt. Du skal redigere følgende filer og fjerne IP-adressen.

# 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

Efter fjernelse af den forbudte IP-adresse skal du genstarte tjenesten igen.

# /etc/init.d/denyhosts start

Den krænkende IP-adresse tilføjet til alle filerne under/var/lib/denyhosts-biblioteket, så det er meget vanskeligt at bestemme, hvilke filer der indeholder den krænkende IP-adresse. En af de bedste måder at finde ud af IP-adressen ved hjælp af grep-kommandoen. For eksempel for at finde ud af IP-adresse 172.16.25.125 skal du gøre.

cd /var/lib/denyhosts
grep 172.16.25.125 *

Hvidliste IP-adresser permanent i DenyHosts

Hvis du har en liste over statisk IP-adresse, som du vil have hvidliste permanent. Åbn filen/var/lib/denyhosts/allow-hosts-filen. Uanset hvilken IP-adresse der er inkluderet i denne fil, forbydes ikke som standard (betragt dette som en liste).

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

Og tilføj hver IP-adresse på separat linje. Gem og luk filen.

# We mustn't block localhost
127.0.0.1
172.16.25.125
172.16.25.126
172.16.25.127