Risultati da 1 a 3 di 3

Discussione: Implementazione firewall uso netfilter sotto ubuntu

  1. #1
    New Member L'avatar di Donasnake
    Data Registrazione
    02-10-2009
    Messaggi
    30

    Implementazione firewall uso netfilter sotto ubuntu

    Salve a tutti,
    volendo provare ad implementare un firewall usando netfilter mi sono trovato davanti a due problemi. Vi posto il codice da me utilizzato:

    #define __KERNEL__
    #define MODULE
    #include <linux/ip.h>
    #include <linux/kernel.h>
    #include <linux/module.h>
    #include <linux/netdevice.h>
    #include <linux/netfilter.h>
    #include <linux/netfilter_ipv4.h>
    #include <linux/netfilter_ipv6.h>
    #include <linux/skbuff.h>
    #include <linux/udp.h>
    #include <linux/tcp.h>

    static struct nf_hook_ops netfilter_ops;
    static unsigned char *ip_address = "\x7F\x00\x00\x01";
    static char *interface = "wlan0";

    struct sk_buff *sock_buff;
    struct tcphdr *tcp_header;
    unsigned int main_hook(unsigned int hooknum,
    struct sk_buff **skb,
    const struct net_device *in,
    const struct net_device *out,
    int (*okfn)(struct sk_buff*))
    {
    if(strcmp(in->name,interface) == 0){ return NF_DROP; }

    sock_buff = *skb;


    if(!sock_buff){ return NF_ACCEPT; }
    if(!(ip_hdr(sock_buff))){ return NF_ACCEPT; }
    if(ip_hdr(sock_buff)->saddr == *(unsigned int*) ip_address){ return NF_DROP; }
    printk(ip_hdr(sock_buff));


    return NF_ACCEPT;
    }
    int init_module()
    {
    netfilter_ops.hook = main_hook;
    netfilter_ops.pf = PF_INET;
    netfilter_ops.hooknum = NF_IP_PRE_ROUTING;
    netfilter_ops.priority = NF_IP_PRI_FIRST;
    nf_register_hook(&netfilter_ops);

    return 0;
    }
    void cleanup_module() { nf_unregister_hook(&netfilter_ops); }

    Complilando il seguente file, il primo problema riscontrato sono stati due errori di inizializzazione di NF_IP_PRE_ROUTING e NF_IP_PRI_FIRST " undeclared error IP_PRE_ROUTING e NF_IP_PRI_FIRST, che ho risolto sostituendo gli interi corrispondenti ovvero 0 e 0 (anche se mi sembra strano in quanto dovrebbe riconoscerli).
    Comunque come si può notare dal codice, è stato provato anche il filtraggio per interfaccia che funziona perfettamente, quello che non funziona è il filtraggio per ip. L'esempio riporta un filtraggio ip in locale ( specifico che le prove sono state fatte anche con un altro indirizzo ip e quindi da remoto). Il problema di fondo è questo: il pre routing che dovrebbe filtrare i pacchetti in ingresso non funziona minimamente, se invece del pre routing si prova con il post routing ( che corrisponde all'intero 4 in netfilter) il sistema dove gira il firewall crasha(in questo caso essendo locale la macchina stessa). C'è qualcuno che sa a cosa può essere dovuto e come posso risolvere?? grazie mille in anticipo!

  2. #2
    New Member
    Data Registrazione
    16-11-2010
    Messaggi
    1
    Hai provato ad usare iptables?

  3. #3
    New Member L'avatar di Donasnake
    Data Registrazione
    02-10-2009
    Messaggi
    30

    No sono costretto ad usare il file c, non mi servono iptables...

Segnalibri

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •