Blokirajte napade SSH poslužitelja (Brute Force Attacks) pomoću DenyHosts


DenyHosts je otvoreni izvor i besplatni sigurnosni program za sprječavanje upada zasnovan na zapisnicima za SSH poslužitelje koji je na jeziku Python razvio Phil Schwartz. Namijenjen je praćenju i analiziranju dnevnika SSH poslužitelja na nevaljane pokušaje prijave, napade zasnovane na rječniku i napade grubom silom blokiranjem izvornih IP adresa dodavanjem unosa u datoteku /etc/hosts.deny na poslužitelju i sprječava stvaranje IP adrese bilo koji daljnji pokušaj prijave.

DenyHosts je prijeko potreban alat za sve sustave temeljene na Linuxu, posebno kada dopuštamo ssh prijave temeljene na lozinci. U ovom ćemo vam članku pokazati kako instalirati i konfigurirati DenyHosts na RHEL 6.3/6.2/6.1/6/5.8, CentOS 6.3/6.2/6.1/6/5.8 i Fedori 17,16,15,14,13,12 sustavi koji koriste epel spremište.

Vidi također :

  1. Fail2ban (sustav za sprječavanje upada) za SSH
  2. Onemogućite ili omogućite SSH root prijavu
  3. Otkrivanje zlonamjernog softvera Linuxa (LMD)

Instaliranje DenyHosts u RHEL, CentOS i Fedora

Alat DenyHosts po defaultu nije uključen u Linux sustave, moramo ga instalirati pomoću spremišta treće strane EPEL. Jednom dodano spremište, instalirajte paket pomoću sljedeće YUM naredbe.

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

Konfiguriranje DenyHosts za IP adrese s dopuštene liste

Jednom kad se Denyhosts instaliraju, dodajte svoju IP adresu na bijeli popis, tako da nikada nećete biti zaključani. Da biste to učinili, otvorite datoteku /etc/hosts.allow.

# vi /etc/hosts.allow

Ispod opisa dodajte svaku IP adresu jednu po jednu u zasebni redak koji nikada ne želite blokirati. Format bi trebao biti sljedeći.

#
# 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 upozorenja e-pošte

Glavna konfiguracijska datoteka nalazi se u /etc/denyhosts.conf. Ova se datoteka koristi za slanje upozorenja putem e-pošte o sumnjivim prijavama i ograničenim hostovima. Otvorite ovu datoteku pomoću VI uređivača.

# vi /etc/denyhosts.conf

Potražite „ADMIN_EMAIL“ i dodajte svoju adresu e-pošte ovdje da biste dobivali upozorenja e-poštom o sumnjivim prijavama (za više upozorenja e-poštom koristite odvojene zarezima). Molimo pogledajte konfiguracijsku datoteku mog CentOS 6.3 poslužitelja. Svaka je varijabla dobro dokumentirana, pa je konfigurirajte prema vlastitim željama.

############ 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 protected]
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <[email protected]>
SMTP_SUBJECT = DenyHosts Daily Report

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

Ponovno pokretanje usluge DenyHosts

Nakon što završite s konfiguracijom, ponovo pokrenite uslugu denyhosts za nove promjene. Također dodajemo uslugu denyhosts prilikom pokretanja sustava.

# chkconfig denyhosts on
# service denyhosts start

Pogledajte zapisnike DenyHosts

Za gledanje ssh dnevnika denyhosts koliko napadača i hakera pokušava dobiti pristup vašem poslužitelju. Upotrijebite sljedeću naredbu za prikaz dnevnika u stvarnom vremenu.

# 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

Uklonite zabranjenu IP adresu s DenyHosts

Ako ste ikad slučajno blokirali i želite ukloniti tu zabranjenu IP adresu s hostova za odbijanje. Morate zaustaviti uslugu.

# /etc/init.d/denyhosts stop

Da biste u potpunosti uklonili ili izbrisali zabranjenu IP adresu. Morate urediti sljedeće datoteke i ukloniti IP adresu.

# 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

Nakon uklanjanja zabranjene IP adrese, ponovo pokrenite uslugu.

# /etc/init.d/denyhosts start

IP adresa koja vrijeđa dodana je u sve datoteke u direktoriju/var/lib/denyhosts, pa je vrlo teško odrediti koje datoteke sadrže IP adresu koja vrijeđa. Jedan od najboljih načina za otkrivanje IP adrese pomoću grep naredbe. Na primjer, da biste saznali IP adresu 172.16.25.125, učinite.

cd /var/lib/denyhosts
grep 172.16.25.125 *

Bijela lista IP adresa trajno u DenyHosts

Ako imate popis statičke IP adrese koju želite trajno staviti na bijelu listu. Otvorite datoteku/var/lib/denyhosts/allowed-hosts datoteku. Bilo koja IP adresa uključena u ovu datoteku neće biti zabranjena prema zadanim postavkama (smatrajte ovo popisom dokumenata).

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

I dodajte svaku IP adresu u zaseban redak. Spremite i zatvorite datoteku.

# We mustn't block localhost
127.0.0.1
172.16.25.125
172.16.25.126
172.16.25.127