Autore Topic: Firewall Script ( iptables e ip6tables )  (Letto 268 volte)

Offline Teo

  • *
  • Post: 32
  • Reputazione: 5
    • Mostra profilo
Firewall Script ( iptables e ip6tables )
« il: 21 Marzo 2016 ore 12:08 »
Ciao ragazzi, ho preparato un piccolo  script per facilitare le configurazioni tramite terminale di iptables e ip6tables su CHAKRA, il tutto rispondendo a poche domande. Può essere utile a chi come me non desidera utilizzare UFW e la sua interfaccia grafica perchè non vuole lasciare porte sempre in ascolto anche quando non vengono utilizzate. Con le impostazioni di questo script si può tranquillamente continuare ad utilizzare il sistema senza restrizioni, navigare, inviare e ricevere posta, utilizzare il P2P ecc.ecc. ma  le porte saranno aperte solo quando sono effettivamente utilizzate.
Le impostazioni possono essere temporanee o possono essere salvate per far in modo che vengano caricate automaticamente all' avvio del sistema.( vi verrà chiesto )

Scusatemi se eventualmente non ho postato nella sezione giusta ma non sapevo dove aprire la discussione e l'ho aperta quì,  spero d' aver fatto comunque qualcosa  di gradito.  :)

ISTRUZIONI:
- copiare e incollare lo script in un file di testo nella /home ( io l'ho chiamato chakra_fw.sh )
- aprire il terminale e rendere eseguibile lo script: chmod +x chakra_fw.sh
- loggarsi come utente con privilegi di root: sudo -s ( inserire la propria password )
- lanciare lo script con: ./chakra_fw.sh
- rispondere alle domande

Codice: [Seleziona]
#!/bin/bash

# Script per la configurazione e abilitazione del firewall

echo -e "\v"
echo -e "\v"
echo "                   ###############################"
echo "                   ###############################"
echo -e "\v"         
echo "                   ******  Firewall Script  ******"
echo -e "\v"
echo "                   ###############################"
echo "                   ###############################"
echo -e "\v"
echo -e "Questo script ti aiuterà ad abilitare e configurare iptables e ip6tables (firewall) su CHAKRA "
echo -e "\v"
sleep 2
read -p "Desideri proteggere il sistema bloccando il traffico in entrata ? [S\n] " risposta


if [ ${risposta} == "s" ]; then
   echo -e "\n"
   echo "  OK !! CHIUDO LE PORTE ..."
   touch /etc/iptables/iptables.rules
   systemctl start iptables.service
   iptables -P INPUT DROP
   iptables -P FORWARD DROP
  elif [ ${risposta} == "n" ]; then
    echo -e "\n"
    echo -e  "  E' INUTILE CONTINUARE ...\n "
    exit 1
      else
        echo -e "\n"
        echo -e "  HAI PREMUTO UN TASTO CHE NON RIENTRA NELLE OPZIONI DI RISPOSTA\n  "
        exit 1
fi

sleep 3
echo -e "\n"
echo -e "Abilito il traffico sull' interfaccia di loopback per consentire il corretto funzionamento di CHAKRA ...\n "
iptables -A INPUT -i lo -j ACCEPT


sleep 4
echo ""
read -p "Imposto il firewall per consentire tutto il traffico di rete da te richiesto, sei d'accordo ? [S\n] " risposta1


if [ ${risposta1} == "s" ]; then
   echo -e "\n"
   echo "  STO ABILITANDO ..."
   echo -e "\n"
   iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  elif [ ${risposta1} == "n" ]; then
    echo -e "\n"
    echo "  QUESTA IMPOSTAZIONE E' OBBLIGATORIA, ALTRIMENTI NON POTRESTI PIU ACCEDERE AD INTERNET."
    echo -e "\n"
    sleep 3
    echo "  ABILITO ..."
    echo -e "\n"
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    sleep 2
      else
        echo -e "\n"
        echo "  HAI PREMUTO UN TASTO CHE NON RIENTRA NELLE OPZIONI "
        echo -e "\n"
        exit 1
fi

sleep 2
read -p "Applico le impostazioni anche ad ip6tables per il protocollo IPV6 ? [S\n] " risposta2


if [ ${risposta2} == "s" ]; then
   echo -e "\n"
   echo -e "  IP6TABLES E' STATO ABILITATO\n "
   touch /etc/iptables/ip6tables.rules
   systemctl start ip6tables.service
   ip6tables -P INPUT DROP && ip6tables -P FORWARD DROP
   ip6tables -A INPUT -i lo -j ACCEPT && ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  elif [ ${risposta2} == "n" ]; then
    echo -e "\n"
    echo -e "  IP6TABLES NON VERRA' GESTITO\n "
   else
    echo -e "\n"
    echo -e "  HAI PREMUTO UN TASTO CHE NON RIENTRA NELLE OPZIONI\n "
    exit 1
fi   

sleep 2
echo ""
read -p "Desideri salvare le impostazioni per fare in modo che vengano ricaricate automaticamente all' avvio del sistema ? [S\n] " risposta3

if [ ${risposta3} == "s" -a ${risposta2} == "s" ]; then
   echo -e "\n"
   echo "  SALVO LA CONFIGURAZIONE DI IPTABLES E IP6TABLES ... "
   iptables-save > /etc/iptables/iptables.rules && iptables-restore < /etc/iptables/iptables.rules
   systemctl enable iptables.service
   ip6tables-save > /etc/iptables/ip6tables.rules && ip6tables-restore < /etc/iptables/ip6tables.rules
   systemctl enable ip6tables.service
  elif [ ${risposta3} == "s" -a ${risposta2} == "n" ]; then
     echo -e "\n"
     echo "  SALVO LA CONFIGURAZIONE DI IPTABLES "
     iptables-save > /etc/iptables/iptables.rules && iptables-restore < /etc/iptables/iptables.rules
     systemctl enable iptables.service
    elif [ ${risposta3} == "n" ]; then
      echo -e "\n"
      echo "  LA CONFIGURAZIONE NON VERRÀ' SALVATA "
     else
       echo -e "\n"
       echo -e "  HAI PREMUTO UN TASTO CHE NON RIENTRA  NELLE OPZIONI, LA CONFIGURAZIONE NON VERRA' SALVATA "
       echo -e "\n"
       exit 1
fi     
     
sleep 3
echo -e "\n"
echo "  ABBIAMO FINITO, DIGITA ' exit ' PER USCIRE DA ROOT ... "
echo -e "\n"
exit 0

« Ultima modifica: 21 Marzo 2016 ore 17:49 da Teo »

Offline whoami

  • *
  • Post: 1562
  • Reputazione: 64
  • Quando c'era init i log arrivavano in orario!
    • Mostra profilo
Re:Firewall Script ( iptables e ip6tables )
« Risposta #1 il: 21 Marzo 2016 ore 14:39 »
Ciao! Grazie per la condivisione del tuo script!

Mi chiedevo solo (sono ignorante):

iptables non va avviato prima di cominciare la configurazione? se lo script viene eseguito nell'ordine in cui sono messe le cose, dai dei comandi ad iptables prima che questo sia avviato, quindi mi viene il dubbio... non sarebbe megliio mettere all'inizio "vuoi abilitare il firewall?" se si touch /etc/iptables/iptables.rules systemctl start iptables e poi chiedere dopo se deve essere abilitato all'avvio. Magari ho scritto cavolate, vedi tu...

un'altra cosa... partendo dal presupposto che stiamo parlando di un pc client senza servizi da erogare la conf con tutte le porte chiuse e solo le connessioni established attive va bene, ma, ad esempio kdeconnect come funziona? o meglio, funziona? mi sembra sfrutti la porta 22 (con mount vedevo la memoria del cell montata con sshfs), non so però chi inizia il flusso, se il pc o il telefono...

comunque di nuovo grazie e +1!
echo "VQF AHELME I BI CI WECPF"| tr "ETAOINSHRDLUBCFGJMQPVWZYXK" "A-Z"

Offline Teo

  • *
  • Post: 32
  • Reputazione: 5
    • Mostra profilo
Re:Firewall Script ( iptables e ip6tables )
« Risposta #2 il: 21 Marzo 2016 ore 15:24 »
Ciao e grazie a te  :)

Ottima osservazione quella sull' avvio del servizio prima di configurare iptables \ ip6tables, anch'io comunque non sono un super esperto  però ho fatto dei test e ho constatato che:
Rispondendo affermativamente alle domande dello script e alla fine rispondendo no alla richiesta di salvare la configurazione, ( iptables.service e ip6tables.service non vengono avviati ), controllando però le  impostazioni di iptables e ip6tables con sudo iptables -L e sudo ip6tables -L ho visto che i comandi sono stati recepiti e le impostazioni sono state applicate e restano attive fino allo spegnimento del sistema.

Appena ho la possibilità comunque farò qualche test per verificare se effettivamente le porte sono state chiuse oppure no, nel caso non lo fossero sarebbe un' ottima idea fare come hai suggerito tu, ovvero chiedere all'inizio " vuoi abilitare il firewall ? " e abilitare da subito il servizio.

Purtroppo invece per KDE connect non ho la possibilità di testarlo, anzi se qualcuno potesse farlo ...
grazie 1000   ;D

Offline Teo

  • *
  • Post: 32
  • Reputazione: 5
    • Mostra profilo
Re:Firewall Script ( iptables e ip6tables )
« Risposta #3 il: 21 Marzo 2016 ore 17:45 »
Ok whoami, ho seguito il tuo consiglio ed ho aggiunto le linee di codice allo script, 2 per iptables e 2 per ip6tables, così andiamo sul sicuro, senza  però aggiungere un ulteriore domanda.
Grazie per la dritta !

Ora manca il discorso KDE connect ... Un volontario ? ;D
« Ultima modifica: 21 Marzo 2016 ore 17:47 da Teo »

 

Template by Homey | Sito ufficiale | Disclaimer