Visualizzazione risultati 1 fino 1 di 1

Discussione: [IPTABLES] Debugging del firewall

  1. #1
    Guest

    Predefinito [IPTABLES] Debugging del firewall [EDIT: RISOLTO]

    EDIT: ho risolto il problema.

    Le policy di default andavano o messe con la attuale sintassi ALLA FINE del firewall, OPPURE messe all'inizio con la sintassi da policy

    Codice:
    iptables -P INPUT DROP
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD DROP

    Qiuesto perché la sintassi che usavo finora bloccava i pacchetti senza mandarli alle successive regole del fw






    Allora: ecco il mio firewall con alcuni commenti che indicano quello che nella mia idea dovrebbe fare.

    Poiché tuttavia non funziona (ovvero tutte le connessioni tranne il DNS mi da "host not found", ci deve essere qualche errore... Mi aiutereste a trovarlo?

    Si noti che in teoria tutte le regole che riguardano la scheda ethernet dovrebbero essere ininfluenti, visto che al momento non la sto usando (come confermato da ehtereal)

    Codice:
    #!/bin/bash
    # script di configurazione iptables
    
    # dati interfaccia interna
    LO_INT="lo"
    LO_ADDR=127.0.0.1/8
    
    # dati interfaccia esterna
    EXT_INT="ppp0"
    IPADDR=`/sbin/ifconfig | grep -A 4 ppp0 | awk '/inet/ { print $2 } ' | sed -e s/addr://`
    
    # dati scheda di rete
    NET_INT="eth0"
    NET_ADDR=192.168.1.0/24
    Fin qui sono solo settaggi. Si noti che al momento non ho niente di connesso alla eht0.
    Nella mia idea, dunque, nella rete esistono:
    - loopback (che dovra' essere in grado di far tutto, altrimenti i vari servizi di sistema non potran funzionare a dovere)
    - eth0 (scheda ethernet. Attualmente non ho nulla di attaccato ad essa, ma l'ho comunque configurata. Ethereal dice correttamente che non ci sono pacchetti che passano per essa.)
    - ppp0 (modem adsl)

    Codice:
    #---------------------------------------------------------------
    # Disable IP routing. Remember to enable if your firewall is protecting a
    # network, NAT included
    #---------------------------------------------------------------
    echo '0' > /proc/sys/net/ipv4/ip_forward
    
    # blocco ping verso la macchina (DOS attack)
    echo '1' > /proc/sys/net/ipv4/icmp_echo_ignore_all
    echo '1' > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
    echo '1' > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
    
    # disabilitato nel kernel
    # echo '1' > /proc/sys/net/ipv4/tcp_syncookies
    
    #---------------------------------------------------------------
    # Disable routing triangulation. Respond to queries out
    # the same interface, not another. Helps to maintain state
    # Also protects against IP spoofing
    #---------------------------------------------------------------
    echo '1' > /proc/sys/net/ipv4/conf/all/rp_filter
    
    # loggo i pacchetti malformati
    echo '1' > /proc/sys/net/ipv4/conf/all/log_martians
    
    echo '0' > /proc/sys/net/ipv4/conf/all/accept_source_route
    echo '0' > /proc/sys/net/ipv4/conf/all/accept_redirects
    echo '0' > /proc/sys/net/ipv4/conf/all/send_redirects
    Questi sopra li ho trovati come altamente consigliati in molti tutorials. Comuqnue ho provato a commentare le linee, e non cambia nulla.
    Codice:
    modprobe ip_conntrack
    modprobe ip_nat_ftp
    modprobe ip_conntrack_ftp
    modprobe iptable_nat
    
    # salva le attuali impostazioni
    iptables-save > iptables_precedente.txt
    
    
    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    
    iptables --delete-chain
    iptables -t nat --delete-chain
    iptables -t mangle --delete-chain
    Inizializzato tutto.
    Bene: qui sotto iniziano le regole sui pacchetti

    Codice:
    # default: blocca tutto in entrata e in passaggio,
    # accetta tutto in uscita
    iptables -A INPUT -p all -j DROP
    iptables -A OUTPUT -p all -j ACCEPT
    iptables -A FORWARD -p all -j DROP
    Nessuna connessione puo' entrare o passare attraverso, mentre il traffico generato da me puo' uscire tranquillamente

    Codice:
    # l'interfaccia di loopback puo' tutto
    iptables -A INPUT -i $LO_INT -p all -j ACCEPT
    iptables -A OUTPUT -o $LO_INT -p all -j ACCEPT
    Per l'appunto, altrimenti i processi interni sballano.

    Codice:
    # accetta i pacchetti in arrivo
    # se sono collegati a connessioni preesistenti
    iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    
    # permetti di accedere dall'esterno al server ssh
    iptables -t filter -A INPUT -p tcp --dport 22 -i $EXT_INT -j ACCEPT
    I pacchetti in arrivo sono abilitati solo in due casi:
    - connessioni collegate a connessioni gia' esistenti (ossia aperte da me)
    - connessioni al server ssh

    Codice:
    # abilitiamo il transito di pacchetti
    # attraveso la rete interna
    iptables -A FORWARD -i $NET_INT -j ACCEPT
    iptables -A FORWARD -o $NET_INT -j ACCEPT
    
    # abilitiamo i pacchetti icmp per la scheda di rete
    iptables -A INPUT -i $NET_INT -p icmp -j ACCEPT
    I pacchetti che vanno e vengono attraverso la scheda ethernet devono poter passare, per poter essere instradati da e verso un eventuale pc collegato alla porta ethernet.

    Codice:
    # abilitiamo il masquerading dei pacchetti
    # in uscita dalla rete interna verso la rete esterna
    iptables -t nat -A POSTROUTING -s $NET_ADDR -o $EXT_INT -j MASQUERADE
    I pacchetti che passano attraverso la scheda di rete devono essere mascherati in modo da uscire dal modem con l'indirizzo IP del modem, non quello (riservato) della scheda di rete.

    Codice:
    # e infine abilitiamo l'attraversamento dei pacchetti
    # tra un'interfaccia e l'altra
    echo '1' > /proc/sys/net/ipv4/ip_forward
    Ultima modifica di pietrovischia : 20-05-2006 alle ore 13.09.17

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •