GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come utilizzare Fail2ban per proteggere SSH su CentOS 7

Fail2ban è l'ultimo strumento di sicurezza per proteggere il tuo server da attacchi di forza bruta. Protegge automaticamente il server dagli hacker. Funziona monitorando i file di registro e reagendo ad azioni offensive come ripetuti tentativi di accesso non riusciti. Il processo consiste nell'aggiunta di una nuova regola in una catena di firewall e nell'invio di una notifica e-mail. Puoi facilmente installare e configurare fail2ban usando questo semplice documento.

Prima di procedere con l'installazione dobbiamo assicurarci che il nostro sistema soddisfi tutti i requisiti software per la compilazione e l'installazione dell'applicazione. E inoltre dovrebbe essere configurato con un indirizzo IP statico. Nel primo passaggio, aggiorna i repository di sistema e i pacchetti software eseguendo i comandi seguenti su CentOS.

# yum update

Installazione di Fail2ban su CentOS

Per installare Fail2Ban su un server CentOS 7, dovremo prima installare il repository EPEL (Extra Packages for Enterprise Linux). EPEL contiene pacchetti aggiuntivi per tutte le versioni di CentOS. Possiamo eseguire il seguente comando dalla radice per installare questo pacchetto.

# yum install epel-release -y
# yum install fail2ban fail2ban-systemd

Fail2ban ha bisogno di alcune dipendenze. Li scaricherà automaticamente dal repository.

fail2ban-firewalld
fail2ban-sendmail
fail2ban-server
systemd-python

Configurazione delle impostazioni per Fail2ban su CentOS

Il file di configurazione predefinito di fail2ban si trova in /etc/fail2ban/jail.conf
Tutte le configurazioni di fail2ban devono essere eseguite in un file locale. Devi copiare /etc/fail2ban/jail.conf in /etc/fail2ban/jail.local

# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Dopo la copia, dovremo configurare e personalizzare il software con un jail.local file di configurazione. Il file jail.local sovrascrive il file jail.conf e viene utilizzato per rendere sicuro l'aggiornamento della configurazione personalizzata.

Configurazioni principali nel jail.local predefinito

Il codice del file può essere costituito da molte righe di codice che vengono eseguite per inserire nella whitelist o bannare uno o più indirizzi IP, impostare la durata del bantime, il numero di tentativi di errore ecc. Per attivare un servizio è possibile impostare lo stato abilitato da false a true. Devi conoscere alcuni termini usati nel file di configurazione.

  • ignoreip :Può essere un indirizzo IP, una maschera CIDR o un host DNS. Puoi inserire nella whitelist qualsiasi indirizzo IP aggiungendolo a questo elenco. È possibile definire più indirizzi utilizzando il separatore di spazio.
  • bantime :è il numero di secondi in cui un host viene bannato.
  • Findtime :È il parametro che viene utilizzato per verificare se un host deve essere bannato o meno. Quando l'host genera maxretry nel suo ultimo findtime, viene bannato.
  • Maxretry :È il parametro utilizzato per impostare il limite per il numero di tentativi da parte di un host, al superamento di questo limite, l'host viene bannato.

Nel server CentOS 7, dovrai cambiare l'opzione di back-end in jail.local da auto a systemd.

# "backend" specifies the backend used to get files modification.
# Available options are "pyinotify", "gamin", "polling", "systemd" and "auto".
# This option can be overridden in each jail as well.
#
# pyinotify: requires pyinotify (a file alteration monitor) to be installed.
# If pyinotify is not installed, Fail2ban will use auto.
# gamin: requires Gamin (a file alteration monitor) to be installed.
# If Gamin is not installed, Fail2ban will use auto.
# polling: uses a polling algorithm which does not require external libraries.
# systemd: uses systemd python library to access the systemd journal.
# Specifying "logpath" is not valid for this backend.
# See "journalmatch" in the jails associated filter config
# auto: will try to use the following backends, in order:
# pyinotify, gamin, polling.
#
# Note: if systemd backend is chosen as the default but you enable a jail
# for which logs are present only in its own log files, specify some other
# backend for that jail (e.g. polling) and provide empty value for
# journalmatch. See https://github.com/fail2ban/fail2ban/issues/959#issuecomment-74901200
backend = systemd

Configurazione fail2ban per la protezione SSH

Nessuna jail è abilitata per impostazione predefinita in CentOS 7. Per abilitare la protezione SSH, devi decommentare le seguenti righe in jail.local file come di seguito:

# JAILS
# SSH servers
#

[sshd]

abilitato =true# Per utilizzare un filtro sshd più aggressivo (incluso sshd-ddos failregex):#filter =sshd-aggressiveport =sshlogpath =%(sshd_log)sbackend =%(sshd_backend)s

Il parametro abilitato è impostato su true, per fornire protezione, per disabilitare la protezione, possiamo impostarlo su false. Il parametro filter controlla il file di configurazione fail2ban sshd, che si trova nel percorso /etc/fail2ban/filter.d/sshd.conf .

Il parametro action viene utilizzato per derivare l'indirizzo IP che deve essere bannato utilizzando il filtro disponibile da /etc/fail2ban/action.d/firewallcmd-ipset.conf.

  • Port :Questo parametro può essere modificato in un nuovo valore come port=2222 se hai spostato la tua porta su 2222 invece di quella predefinita. Non è necessario modificare questo parametro per la porta 22 predefinita.
  • Logpath :Fornisce il percorso in cui è archiviato il file di registro. Questo file di registro viene scansionato da Fail2Ban.
  • Maxretry :Viene utilizzato per impostare il limite massimo per le voci di accesso non riuscite.
  • Bantime :viene utilizzato per impostare la durata dei secondi per i quali un host deve essere bannato.
  • filter :il nome del file che si trova in /etc/fail2ban/filter.d che contiene le informazioni failregex utilizzate per analizzare i file di registro in modo appropriato.

Abilitazione del servizio Fail2ban

Devi assicurarti di abilitare e avviare il servizio firewalld CentOS per eseguire questo software.

# systemctl enable firewalld
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
# systemctl start firewalld
# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2018-01-14 10:57:34 UTC; 9s ago
Docs: man:firewalld(1)
Main PID: 19493 (firewalld)
CGroup: /system.slice/firewalld.service
└─19493 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Now we can enable and start our fail2ban service by executing these commands below:

#systemctl enable fail2ban
#systemctl start fail2ban

Per eventuali modifiche alla configurazione, assicurati di riavviare il servizio per aggiungere tali modifiche con il comando seguente:

#systemctl restart fail2ban

Utilizza il client Fail2ban

Fail2ban fornisce un comando fail2ban-client che può essere utilizzato per eseguire Fail2ban dalla riga di comando. Dai un'occhiata alle varie opzioni della riga di comando di seguito:

fail2ban-client COMMAND
  • start :avvia il server e le jail
  • reload :ricarica la configurazione
  • reload <JAIL> :ricarica la prigione
  • stop :ferma tutte le jail e termina il server
  • status :ottiene lo stato attuale del server
  • ping :verifica se il server è attivo
  • help :restituisce questo output
  • version :restituisce la versione del server

Ad esempio, per verificare se Fail2Ban è in esecuzione e se SSHd jail è abilitato, esegui:

# fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd

Per ulteriori informazioni su questo comando puoi eseguire man fail2ban-client .

Tracciamento dei tentativi di accesso non riusciti

Possiamo controllare il registro SSH usando il comando seguente per verificare se ci sono stati tentativi falliti di accesso al server tramite la porta ssh. Possiamo ottenere un elenco di tentativi di password root non riusciti da diversi indirizzi IP simili a questo output.

Jan 14 05:08:58 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:00 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:02 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:04 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:06 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:08 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2

Puoi visualizzare l'elenco degli IP bannati che hanno raggiunto il numero massimo di tentativi di errore tramite il comando seguente:

#iptables -L -n

Annullamento di un indirizzo IP

Per rimuovere un indirizzo IP dall'elenco vietato, il parametro IPADDRESS è impostato sull'IP appropriato che deve essere inserito nella whitelist. Il nome "sshd" è il nome della jail, in questo caso la jail "sshd" che abbiamo configurato sopra. Possiamo eseguire il seguente comando per lo stesso.

#fail2ban-client set sshd unbanip IPADDR

Conclusione

Fail2ban funziona in background e scansiona continuamente i file di registro alla ricerca di schemi di accesso insoliti e tentativi di violazione della sicurezza. Questo articolo fornisce una breve introduzione a questo argomento, puoi ottenere maggiori informazioni su questo in questo wiki Fail2ban. Spero che questo ti sia utile. Pubblica i tuoi preziosi commenti e suggerimenti su questo.


Cent OS
  1. Come installare Fail2Ban su CentOS 7

  2. Come usare il sale su Centos 8

  3. Come modificare la porta SSH in CentOS

  4. Come configurare le chiavi SSH su CentOS 8

  5. Come proteggere Apache e SSH con Fail2Ban su CentOS 8

Come generare una chiave SSH in CentOS 8

Come installare Fail2Ban su CentOS

Come installare Fail2Ban su CentOS 7

Come installare Fail2Ban su CentOS 8

Come utilizzare Port Knocking per proteggere il servizio SSH in Linux

Come proteggere SSH con Fail2Ban