Home
» Come fare
»
Apri solo il traffico web necessario al tuo server SLES 15
Apri solo il traffico web necessario al tuo server SLES 15
Scenario di esempio: Immaginiamo un amministratore che prepara un server SLES 15 fittizio chiamato web01 per ospitare un piccolo sito web pubblico. L'obiettivo è consentire il traffico HTTP in entrata sulla porta TCP 80 mantenendo disponibile il percorso di amministrazione SSH esistente. Questo è un esempio illustrativo, non un resoconto di un test né un'affermazione secondo cui ogni installazione di SLES 15 abbia gli stessi nomi di interfaccia o gli stessi servizi.
Su SLES 15, firewalldfirewalld è il framework firewall predefinito e firewall-cmdlo controlla. Innanzitutto, identifica la zona attiva e verifica l'accesso remoto; quindi aggiungi il servizio minimo necessario a tale zona nella configurazione permanente e riavvia. La Guida alla sicurezza e alla protezione di SLES 15 SP7 di SUSE documenta questo modello basato sulle zone e la distinzione tra regole di runtime e regole permanenti. Questi passaggi presuppongono che firewalld sia installato e in esecuzione; i sistemi più vecchi aggiornati potrebbero richiedere una verifica di migrazione separata.
1. Verificare il servizio e la zona attiva prima di modificare le regole
Connettiti tramite la console del server o una sessione di gestione che puoi ripristinare in caso di interruzione dell'accesso alla rete. Se sei connesso tramite SSH, mantieni la sessione aperta mentre apporti modifiche al firewall. Verifica che firewalld sia in esecuzione e controlla quale zona possiede l'interfaccia:
Il primo comando dovrebbe riportare running. Il comando active-zones elenca le zone a cui sono assegnate interfacce o indirizzi sorgente; potrebbe mostrarne più di una. Nell'esempio fittizio web01, supponiamo che riporti publice l'interfaccia ens192. Utilizzare la zona collegata all'interfaccia di rete in ingresso nei comandi successivi. Non dare per scontato che l'interfaccia si chiami eth0e non dare per scontato publicche sia attiva solo perché è un'impostazione predefinita comune.
Visualizzazione esemplificativa del terminale per il controllo iniziale: firewalld risulta in esecuzione e ens192 appare nella zona pubblica.
Se il servizio non è in esecuzione, verificarne lo stato prima di avviarlo: sudo systemctl status firewalld. Nelle installazioni standard di SLES 15, firewalld è installato e abilitato per impostazione predefinita, ma i profili immagine, gli aggiornamenti o i criteri locali possono differire. Se è installato ma arrestato, avviarlo e abilitarlo solo dopo aver verificato che i criteri correnti manterranno l'accesso necessario: sudo systemctl enable --now firewalld. Su un host gestito da remoto, verificare l'accesso alla console e le autorizzazioni SSH prima di attivare un firewall di cui non si conoscono le regole correnti.
2. Conferma la definizione del servizio e mantieni SSH
Un servizio firewalld è un insieme denominato di porte e protocolli. Controlla la definizione locale prima di aprirlo:
Su SLES, il httpservizio predefinito corrisponde alla porta TCP 80. L'elenco delle zone consente di verificare i servizi e le porte attualmente consentiti. Sostituisci publiccon la zona attiva che hai trovato. Se amministri il server tramite SSH, assicurati sshche sia consentito in quella zona prima di procedere. Il comportamento di installazione di SLES e le policy esistenti possono variare, quindi verifica invece di basarti su supposizioni. Se il demone SSH installato è in ascolto su una porta non standard, una sshvoce di servizio generica potrebbe non corrispondere; verifica prima la porta di ascolto effettiva del demone e le policy del firewall esistenti.
Esempio di verifica del servizio: la definizione del servizio HTTP elenca la porta TCP 80.
3. Aggiungi HTTP in modo permanente, quindi carica le regole salvate
Firewalld mantiene configurazioni separate in fase di esecuzione e permanenti. Un comando normale modifica solo le regole attive in fase di esecuzione; --permanentsalva la configurazione ma non attiva immediatamente la modifica. Per web01, aggiungi il servizio HTTP alla zona che possiede la sua interfaccia pubblica:
Utilizzare --zoneesplicitamente in modo che la regola non possa essere inserita in una zona predefinita non intenzionale. Un ricaricamento applica le regole permanenti all'esecuzione. Le modifiche non salvate solo in fase di esecuzione vengono scartate durante il ricaricamento, quindi esaminare e conservare tutte le regole temporanee di cui si ha bisogno intenzionalmente prima di eseguirle. Per testare un servizio prima di renderlo permanente, è possibile eseguirlo prima sudo firewall-cmd --zone=public --add-service=httpsenza --permanent; se funziona, aggiungere la regola permanente e ricaricare. Un test solo in fase di esecuzione viene perso dopo un ricaricamento o un riavvio del firewall.
Sequenza di comandi a scopo illustrativo: salvare le autorizzazioni HTTP nella directory pubblica, quindi ricaricare firewalld per applicarle.
Se hai bisogno di una singola porta anziché di un servizio predefinito, specifica sia la porta che il protocollo, ad esempio --add-port=8080/tcp. Fallo solo se l'applicazione è effettivamente in ascolto su quella porta. Un'autorizzazione del firewall non avvia un server web, non crea una regola del gruppo di sicurezza cloud né configura un router a monte; tutti i livelli di rete devono consentire il traffico.
4. Verifica l'accesso e rimuovi le regole che non ti servono più
Verifica le configurazioni in esecuzione e quelle salvate:
L'output dovrebbe essere incluso httpin entrambi gli elenchi di servizi e il controllo della configurazione dovrebbe completarsi senza segnalare errori. Verificare inoltre che l'applicazione sia in ascolto localmente, ad esempio con sudo ss -lntp, e testare il sito da un client sulla rete prevista. Un elenco del firewall conferma una regola, non la raggiungibilità end-to-end: DNS, un firewall cloud, il routing e il server web stesso possono comunque bloccare o far fallire la richiesta.
Esempio di output di verifica: HTTP compare tra i servizi della zona pubblica, mentre SSH rimane nell'elenco.
Se HTTP non è più necessario, rimuovere la regola salvata e ricaricare: sudo firewall-cmd --permanent --zone=public --remove-service=http, seguito da sudo firewall-cmd --reload. Ricontrollare gli elenchi di runtime e permanenti in seguito. Evitare di svuotare tutte le regole o di passare a una zona attendibile per risolvere un singolo problema di accesso; tali modifiche più ampie possono esporre servizi non correlati.