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å :
- Fail2ban (Intrusion Prevention) -system til SSH
- Deaktiver eller aktiver SSH-rodindlogning
- 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