Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
Firewall Netfilter
Nuovo argomento   Rispondi    Indice del forum -> *Ubuntu
Precedente :: Successivo  
Autore Messaggio
raider
Mortale devoto
Mortale devoto


Registrato: 12/01/08 13:14
Messaggi: 13

MessaggioInviato: 22 Nov 2010 14:49    Oggetto: Firewall Netfilter Rispondi

Ciao a tutti,
sto cercando di implementare un firewall usando Netfilter. Vi posto il codice utilizzato.
Codice:
#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/skbuff.h>         
#include <linux/udp.h>                   
static struct nf_hook_ops netfilter_ops;                     
static unsigned char *ip_address = "\x7F\x00\x00\x01";
static char *interface = "wlan0";                         
unsigned char *port = "\x00\x17";                       
struct sk_buff *sock_buff;                             
struct udphdr *udp_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; }
           
 
if(ip_hdr(sock_buff)->protocol != 17){ return NF_ACCEPT; }                 
udp_header = (struct udphdr *)(sock_buff->data + (ip_hdr(sock_buff)->ihl *4));
if((udp_header->dest) == *(unsigned short*)port){ return NF_DROP; }
return NF_ACCEPT;
}
int init_module()
{
        netfilter_ops.hook              =       main_hook;
        netfilter_ops.pf                =       PF_INET;       
        netfilter_ops.hooknum           =       0;
        netfilter_ops.priority          =       0;
        nf_register_hook(&netfilter_ops);
       
return 0;
}
void cleanup_module() { nf_unregister_hook(&netfilter_ops); }


Vi spiego subito il mio problema. Settando l'interfaccia dalla quale droppare i pacchetti, il tutto funziona. Il problema nasce con l'indirizzo ip. Accetta tutti i pacchetti, non riesce a scartarne nessuno.
E' corretto utilizzare quel formato per l'indirizzo?
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> *Ubuntu Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi