Come configurare un semplice firewall su Ubuntu?


18

Qualcuno potrebbe dare alcuni semplici passaggi con un esempio di configurazione come impostare un semplice firewall su Ubuntu (usando solo la console)? Dovrebbe essere consentito solo l'accesso a ssh, http e https.


Stai parlando di un firewall di rete o solo di un firewall di sistema?
Brad Gilbert,

Cosa intendi per firewall di rete? È un firewall sul router? Se sì, allora stavo parlando del firewall di sistema.
klew,

Risposte:


20

sudo ufw default nega

sudo ufw consentire http

sudo ufw consentire https

sudo ufw consentire ssh

sudo ufw enable


Se chiamassi questi comandi in sequenza tramite ssh, si romperà la mia connessione?
klew,

Non ci credo, ma dovresti verificarlo. Questo mantiene anche il suo stato tra i riavvii, quindi dovresti farlo solo una volta.
Nerdfest,

Lo controllerò quando sarò vicino a questo computer ...
klew,

Potresti inserirlo in uno script ed eseguirlo e quindi anche se ti disconnetti, potrai riconnetterti in seguito. Vedi la mia risposta qui sotto per lo script.
Hamish Downer,

2
Il commento precedente è corretto. Fondamentalmente, eseguire il primo comando nello script precedente per ultimo.
Nerdfest,

14

Usa questo script.

Decidi se vuoi consentire l'ICMP (ping) in arrivo o meno.

# Clear any existing firewall stuff before we start
iptables --flush
iptables -t nat --flush
iptables -t mangle --flush

# As the default policies, drop all incoming traffic but allow all
# outgoing traffic.  This will allow us to make outgoing connections
# from any port, but will only allow incoming connections on the ports
# specified below.
iptables --policy INPUT DROP
iptables --policy OUTPUT ACCEPT

# Allow all incoming traffic if it is coming from the local loopback device
iptables -A INPUT -i lo -j ACCEPT

# Accept all incoming traffic associated with an established
# connection, or a "related" connection
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow incoming connections
# SSH
iptables -A INPUT -p tcp -i eth0 --dport 22 -m state --state NEW -j ACCEPT
# HTTP
iptables -A INPUT -p tcp -i eth0 --dport 80 -m state --state NEW -j ACCEPT
# HTTPS
iptables -A INPUT -p tcp -i eth0 --dport 443 -m state --state NEW -j ACCEPT

# Allow icmp input so that people can ping us
iptables -A INPUT -p icmp -j ACCEPT

# Reject all other incoming packets
iptables -A INPUT -j REJECT

8

Come notato nei commenti a un'altra risposta, non si desidera perdere la connessione prima di consentire la porta SSH. Dalla pagina man:

"GESTIONE REMOTA

Quando si esegue ufw enable o si avvia ufw tramite il suo initscript, ufw scaricherà le sue catene. Ciò è necessario affinché uww possa mantenere uno stato coerente, ma potrebbe eliminare le connessioni esistenti (ad esempio ssh). ufw supporta l'aggiunta di regole prima di abilitare il firewall, quindi gli amministratori possono fare:

ufw allow proto tcp from any to any port 22

prima di eseguire 'ufw enable'. Le regole verranno comunque cancellate, ma la porta ssh sarà aperta dopo aver abilitato il firewall. Si noti che una volta che ufw è 'abilitato', ufw non svuota le catene quando si aggiungono o rimuovono le regole (ma quando si modifica una regola o si cambia la politica di default). "

Quindi ecco un approccio che utilizza uno script per impostarlo. Verrai disconnesso quando esegui questo script, ma dopo averlo eseguito puoi accedere di nuovo su ssh.

Inserisci quanto segue in uno script e chiamalo start-firewall.sh

#!/bin/sh
ufw allow ssh
ufw enable
ufw default deny
ufw allow http
ufw allow https

E poi renderlo eseguibile ed eseguirlo facendo

$ chmod + x start-firewall.sh
$ sudo ./start-firewall.sh

Per saperne di più, leggi la pagina man .


2

Se acquisisci familiarità con gli script iptables, avrai il pieno controllo di tutte le funzionalità del firewall. Non è affatto amichevole come Firestarter, ma può essere fatto sulla console con nano/ vieditor. Dai un'occhiata a questo tutorial orientato verso Ubuntu.


1

Quicktables mi ha aiutato a imparare le regole di iptables. Basta eseguire lo script e genererà uno script iptables per te ... quindi puoi aprirlo e visualizzare i comandi associati generati dalle domande che ti ha posto. È un'ottima risorsa per l'apprendimento.

Sfortunatamente, non viene più mantenuto.

http://qtables.radom.org/


1

Mi piace molto usare firehol ( pacchetto ).

Per creare le regole di installazione che ti piacciono dovresti modificare il file / etc / default / firehol e cambiare START_FIREHOL = YES

E vorresti rendere il tuo /etc/firehol/firehol.conf simile a questo.

version 5

interface any IfAll
    client any AnyClient accept
    server "ssh http https" accept
    # Accept everything from trusted networks
    server anystateless AllInside accept src "10.3.27.0/24"

Una delle grandi cose di firehol è il comando 'prova'. Puoi regolare il tuo file di configurazione ed eseguire un "tentativo di Firehol", se sei connesso tramite ssh, e qualcosa su ciò che hai modificato ha interrotto l'accesso alla tua rete, quindi Firehol annulla le modifiche. Per rendere effettive le modifiche, è necessario dire commit.


1
Firehol è eccezionale per manipolare le regole di iptables. '$ firehol try' "Attiva il firewall, ma attende che l'utente digiti la parola commit. Se questa parola non viene digitata entro 30 secondi, viene ripristinato il firewall precedente."
Gareth,

Quindi puoi aggiungere / modificare / rimuovere le regole e poi testarle. Se lo stai facendo tramite SSH da remoto, non ti bloccherà fuori dal tuo server!
Gareth,



-1

sudo apt-get install firestarter

Quindi, cerca nel menu Sistema-> Amministrazione.


l'interrogante vuole usare solo la console
Mikeage,

Ah, errore mio. In alternativa. l'amministratore può comunque inviare ssh -X al server ed eseguire Firestarter da remoto.
spoulson,

1
Avrei anche bisogno di installare alcuni server X per avviare ssh -X :).
Klew

@klew, non è necessario installare un server X completo per eseguire le applicazioni X su ssh. Hai bisogno di diverse librerie, ma non hai bisogno di tutto. Per il minimo indispensabile sono necessari solo i pacchetti xauth e xbase-client.
Zoredache,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.