La guida seguente è applicabile a chi acquista un VPS SSD o un Server Dedicato non gestito su Xlogic ed è dedicata ai sistemi che eseguono CentOS 6, CentOS 7 e CentOS 8.
ConfigServer Security & Firewall è un popolare firewall SPI (Stateful Packet Inspection) open source, rilevatore di accesso/intrusione e sicurezza, compatibile con la maggior parte dei server Linux.
CSF può essere configurato per bloccare/limitare le porte sul server. CSF include il Login Failure Daemon (LFD), che analizzerà i file di registro e monitorerà i tentativi di accesso non riusciti, come i tentativi di accesso per gli account FTP e di posta elettronica e bloccherà l’IP in base alle regole che hai impostato. CSF offre anche la limitazione della connessione, elenchi di blocchi in tempo reale e monitoraggio della scansione delle porte e molto altro ancora.
CSF può essere facilmente gestito dalla sua GUI, che è completamente compatibile con:
- CPanel
- DirectAdmin
- WebMin / Virtualmin
Per evitare conflitti durante il funzionamento è importante rimuovere il firewall corrente. Se utilizzi un firewall diverso, assicurati di seguire le istruzioni per la disinstallazione del software prima di continuare. Dopo aver completato la routine di disinstallazione, continua con la procedura di installazione di CSF descritta di seguito.
NB: questa guida presuppone che tu abbia familiarità con SSH e la navigazione di base dalla riga di comando. Queste istruzioni si applicano principalmente ai clienti che dispongono di server privati virtuali o server dedicati . Se non si dispone dell’accesso a livello di root, non sarà possibile apportare queste modifiche.
<<< INSTALLAZIONE >>>
– Installa le dipendenze
Inizia installando le dipendenze richieste per il firewall CSF:
- CentOS 5/6
yum install perl-libwww-perl
In alternativa, libwww può essere installato utilizzando CPAN:
perl -MCPAN -e 'install Bundle::LWP'
- CentOS 7
yum -y install wget perl unzip net-tools perl-libwww-perl perl-LWP-Protocol-https perl-GDGraph -y
- CentOS 8
yum -y install wget perl unzip net-tools perl-libwww-perl perl-LWP-Protocol-https perl-GDGraph -y
- Installa PERL
sudo dnf -y install @perl
Puoi installare il firewall CSF utilizzando lo script automatizzato. In alternativa è possibile anche l’installazione manuale come descritto di seguito.
INSTALLA CSF FIREWALL
Scarica l’archivio CSF nella cartella /tmp del tuo server utilizzando wget, scompatta l’archivio eseguendo il comando TAR e infine installa CSF avviando lo script di installazione ./install.sh
cd /usr/src rm -fv csf.tgz wget https://download.configserver.com/csf.tgz tar -xzf csf.tgz cd csf sh install.sh
Ora puoi rimuovere i files dell’installazione
rm -rf /tmp/csf rm /tmp/csf.tgz
INSTALLA IL MODULO WEBMIN (OPZIONALE)
-
- Installa csf come spiegato in precedenza
- Accedi a Webmin
- Installa il modulo webmin csf accedendo a:
Webmin> Configurazione Webmin> Moduli Webmin - Seleziona “Da file locale” e inserisci: /usr/local/csf/csfwebmin.tgz
- Installa il modulo
I plugin per DirectAdmin o cPanel vengono installati automaticamente.
DISABILITA FIREWALLD (CENTOS 7+)
Prima di entrare nel processo di configurazione CSF, la prima cosa che devi sapere è che “CentOS 7” ha un’applicazione firewall predefinita chiamata “firewalld”. Devi fermare firewalld e rimuoverlo all’avvio.
Arresta firewalld immettendo il seguente comando:
systemctl stop firewalld
Disabilita / Rimuovi firewalld all’avvio:
systemctl disable firewalld
TEST IPTABLES
Questo test è consigliato per controllare che siano installati i moduli iptables corretti. Il test può essere richiamato emettendo il comando sottostante, o andando alla sezione “test iptables”, che si trova in fondo all’interfaccia grafica di CSF. Se trovi che non tutti i moduli richiesti sono installati, devi lavorare per installarli.
Questa procedura non rientra nell’ambito di questo articolo e potrebbe richiedere una modifica del kernel sul server dedicato.
$ /etc/csf/csftest.pl Testing ip_tables/iptable_filter...OK Testing ipt_LOG...OK Testing ipt_multiport/xt_multiport...OK Testing ipt_REJECT...OK Testing ipt_state/xt_state...OK Testing ipt_limit/xt_limit...OK Testing ipt_recent...OK Testing xt_connlimit...OK Testing ipt_owner/xt_owner...OK Testing iptable_nat/ipt_REDIRECT...OK Testing iptable_nat/ipt_DNAT...OK RESULT: csf should function on this server
CONFIGURAZIONE CSF
La configurazione dell’installazione del firewall CSF può essere mantenuta modificando i vari file di configurazione con cui viene fornito CSF. Nelle distribuzioni basate su Red Hat Enterprise Linux (RHEL) è possibile trovarle nella seguente posizione:/etc/csf/
I file di configurazione includono:
csf.conf: il file di configurazione principale, contiene commenti utili che spiegano cosa fa ciascuna opzione
csf.allow: un elenco di indirizzi IP e CIDR che dovrebbero essere sempre consentiti attraverso il firewall
csf.deny: un elenco di indirizzi IP e CIDR che non dovrebbero mai essere consentiti attraverso il firewall
csf.ignore: un elenco di indirizzi IP e CIDR che lfd dovrebbe ignorare e non bloccare se rilevato
csf. * ignore – vari file ignorano che elencano file, utenti, IP che lfd dovrebbe ignorare. Vedi ogni file per il suo scopo specifico.
Se modifichi uno dei file sopra elencati, dovrai riavviare csf per renderli effettivi. Se utilizzi le opzioni della riga di comando per aggiungere o negare indirizzi IP, csf lo farà automaticamente per te.
Tuttavia, per l’utente medio è molto più veloce utilizzare la sua interfaccia grafica (GUI) , a cui è possibile accedere dall’interno del pannello di controllo DirectAdmin, CPanel o Webmin / Virtualmin.
Come scritto sopra, CSF fornisce anche un’interfaccia utente web integrata per la gestione del firewall. Leggi come abilitare l’interfaccia utente Web del firewall CSF sul tuo sistema.
$ sudo vim /etc/csf/csf.conf
# 1 to enable, 0 to disable web ui UI = "1" # Set port for web UI. The default port is 6666, but # I change this to 1025 to easy access. Default port create some issue # with popular chrome and firefox browser (in my case) UI_PORT = "1025" # Leave blank to bind to all IP addresses on the server UI_IP = "" # Set username for authetnication UI_USER = "admin" # Set a strong password for authetnication UI_PASS = "admin"
Dopo aver apportato le modifiche, modifica il file di configurazione /etc/csf/ui/ui.allow e aggiungi il tuo IP pubblico per consentire l’accesso all’interfaccia utente di CSF. Cambia OUR_PUBLIC_IP_ADDRESS con il tuo indirizzo IP pubblico.
$ sudo echo "YOUR_PUBLIC_IP_ADDRESS" >> /etc/csf/ui/ui.allow
Riavvia LFD
$ sudo service lfd restart
Accesso e utilizzo dell’interfaccia utente Web:
Ora accedi all’interfaccia utente di CSF sul tuo browser con la porta specificata. Esempio: https://tuosito.it:1025. Per questo tutorial, ho usato la porta 1025. Ciò richiederà prima l’autenticazione dell’utente.
ABILITAZIONE DEL FIREWALL CSF
Il firewall CSF può essere abilitato impostando:
TEST = 0
Questo può essere fatto tramite l’interfaccia GUI o modificando il file di configurazione principale, che si trova in /etc/csf/csf.conf.
Assicurati che la tua configurazione sia corretta. Le impostazioni sbagliate potrebbero bloccarti permanentemente fuori dal tuo server!
TCP_IN AND TCP_OUT / UDP_IN AND UDP_OUT
Di seguito troverai una spiegazione di base per le porte TCP_IN consigliate per le connessioni IN ARRIVO al tuo server web. Queste porte possono essere aperte dalla GUI o dal file csf.conf.
20,21 Accesso FTP * 22 Accesso SSH 25, 587 SMTP per EXIM per ricevere e-mail 53 DNS (con nome), la porta per i server dei nomi. Entrambe le porte TCP e UDP dovrebbero essere aperte 80, 443 Traffico Apache, http e https 110, 993 Accesso alla posta elettronica POP 143, 995 Accesso alla posta elettronica IMAP 3306 MySQL. Non dovresti aprire questa porta se non vuoi consentire l'accesso remoto a MySQL, poiché la maggior parte degli script MySQL è accessibile localmente 2222 Accesso DirectAdmin 2083 cPanel Accesso tramite una connessione SSL crittografata 2082 cPanel Accesso tramite una connessione non crittografata 2087 cPanel WHM Access tramite una connessione SSL crittografata 2086 cPanel WHM Accesso tramite una connessione non crittografata 10000 Accesso Webmin
* FTP richiede un numero di porta alto casuale se il client è in modalità PORT. Quando si utilizza ProFTP, potrebbe essere necessario aggiungere un intervallo di porte nel file /etc/proftpd.conf per consentire le connessioni ftp, ad esempio: PassivePorts 35000 35999 e quindi aprire tale intervallo di porte nel firewall CSF. Gli intervalli possono essere definiti nel CSF utilizzando i due punti, ad esempio:35000:35999
TCP_IN e TCP_OUT/UDP_IN e UDP_OUT è un elenco separato da virgole di:
# Allow incoming TCP ports TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995,2222,35000:35999" # Allow outgoing TCP ports TCP_OUT = "20,21,22,25,53,80,110,113,443" # Allow incoming UDP ports UDP_IN = "20,21,53" # Allow outgoing UDP ports UDP_OUT = "20,21,53,113,123"
SYSLOG e RESTRICT_SYSLOG
Quando è abilitata, questa opzione registra i messaggi lfd (Login Failure Daemon) su syslog e su /var/log/lfd.log.
Sfortunatamente, è banale per gli utenti finali e gli script eseguiti dagli utenti finali falsificare le righe di registro che sembrano identiche a qualsiasi riga di registro riportata nei registri gestiti da syslog/rsyslog. Puoi identificare questi registri cercando in /etc/syslog.confoetc/rsyslog.conf
Ciò significa che chiunque sul server può attivare in modo dannoso le applicazioni che monitorano questi registri, come lfd fa per le seguenti opzioni:
LF_SSHD LF_FTPD LF_IMAPD LF_POP3D LF_BIND LF_SUHOSIN LF_SSH_EMAIL_ALERT LF_SU_EMAIL_ALERT LF_CONSOLE_EMAIL_ALERT LF_DISTATTACK LF_DISTFTP LT_POP3D LT_IMAPD PS_INTERVAL UID_INTERVAL WEBMIN_LOG LF_WEBMIN_EMAIL_ALERT PORTKNOCKING_ALERT ST_ENABLE SYSLOG_CHECK LOGSCANNER CUSTOM*_LOG
Un utente malintenzionato potrebbe utilizzare questo per attivare e-mail confuse relative a tentativi di accesso riusciti e non riusciti, righe di registro del kernel (comprese le righe di registro di iptables) etc…
Si consiglia di impostare l’opzione RESTRICT_SYSLOG su 3 per limitare chi può accedere al socket unix syslog/rsyslog. Il gruppo predefinito è mysyslog. Un gruppo personalizzato può essere definito in RESTRICT_SYSLOG_GROUP
COMANDI SSH
Ecco alcuni dei comandi più comuni che puoi utilizare:
Nega manualmente un indirizzo IP:
csf -d IPADDRESS
Consenti manualmente un indirizzo IP:
csf -a IPADDRESS
Ricarica tutte le regole del firewall:
csf -r
Aggiorna CSF:
csf -u
Avvia il servizio CSF:
csf -e
Riavvia il servizio CSF:
# CentOS 5 e 6 service csf restart # CentOS 7 systemctl restart csf.service
Per una panoramica completa di tutte le opzioni della riga di comando, inserisci csf o csf -h sulla riga di comando e riceverai un elenco con tutte le opzioni disponibili:
$ csf --help csf: v5.17 ConfigServer Security & Firewall (c)2006-2013, Way to the Web Limited (http://www.configserver.com) Usage: /usr/sbin/csf [option] [value] Option Meaning -h, --help Show this message -l, --status List/Show iptables configuration -l6, --status6 List/Show ip6tables configuration -s, --start Start firewall rules -f, --stop Flush/Stop firewall rules (Note: lfd may restart csf) -r, --restart Restart firewall rules -q, --startq Quick restart (csf restarted by lfd) -sf, --startf Force CLI restart regardless of LF_QUICKSTART setting -a, --add ip Allow an IP and add to /etc/csf.allow -ar, --addrm ip Remove an IP from /etc/csf.allow and delete rule -d, --deny ip Deny an IP and add to /etc/csf.deny -dr, --denyrm ip Unblock an IP and remove from /etc/csf.deny -df, --denyf Remove and unblock all entries in /etc/csf.deny -g, --grep ip Search the iptables rules for an IP match (incl. CIDR) -t, --temp Displays the current list of temp IP entries and their TTL -tr, --temprm ip Remove an IPs from the temp IP ban and allow list -td, --tempdeny ip ttl [-p port] [-d direction] Add an IP to the temp IP ban list. ttl is how long to blocks for (default:seconds, can use one suffix of h/m/d). Optional port. Optional direction of block can be one of: in, out or inout (default:in) -ta, --tempallow ip ttl [-p port] [-d direction] Add an IP to the temp IP allow list (default:inout) -tf, --tempf Flush all IPs from the temp IP entries -cp, --cping PING all members in an lfd Cluster -cd, --cdeny ip Deny an IP in a Cluster and add to /etc/csf.deny -ca, --callow ip Allow an IP in a Cluster and add to /etc/csf.allow -cr, --crm ip Unblock an IP in a Cluster and remove from /etc/csf.deny -cc, --cconfig [name] [value] Change configuration option [name] to [value] in a Cluster -cf, --cfile [file] Send [file] in a Cluster to /etc/csf/ -crs, --crestart Cluster restart csf and lfd -w, --watch ip Log SYN packets for an IP across iptables chains -m, --mail [addr] Display Server Check in HTML or email to [addr] if present -lr, --logrun Initiate Log Scanner report via lfd -c, --check Check for updates to csf but do not upgrade -u, --update Check for updates to csf and upgrade if available -uf Force an update of csf -x, --disable Disable csf and lfd -e, --enable Enable csf and lfd if previously disabled -v, --version Show csf version
DIRECTORY FILES
Struttura:
File Descrizione /etc/csf/ Files di configurazione /var/lib/csf/ Files temporanei /usr/local/csf/bin/ scripts /usr/local/csf/lib/ perl moduli e static data /usr/local/csf/tpl/ email alert templates
Files Configurazione:
File Descrizione /etc/csf/csf.conf Il file di configurazione principale /etc/csf/csf.allow Un elenco di indirizzi IP e CIDR che dovrebbero essere sempre consentiti attraverso il firewall /etc/csf/csf.deny Un elenco di indirizzi IP e CIDR che non dovrebbero mai essere consentiti attraverso il firewall /etc/csf/csf.ignore Un elenco di indirizzi IP e CIDR che il demone di errore di accesso dovrebbe ignorare e non bloccare se rilevato
Per concludere:
Assicurati di seguire le raccomandazioni delineate nella pagina “Controlla sicurezza server” dall’interno della GUI di CSF. È anche saggio ricontrollare che tutti i moduli IPtables richiesti siano caricati correttamente andando alla pagina “Test Iptables” nella parte inferiore della GUI di CSF.
DISINSTALLAZIONE
cPanel
cd /etc/csf sh uninstall.sh
Direct Admin
cd /etc/csf sh uninstall.directadmin.sh
Server Generici Linux
cd /etc/csf sh uninstall.generic.sh
Alla prossima guida.
Articoli Simili
This post was last modified on %s = human-readable time difference 09:59