-
New Member
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!
-
Hai provato ad usare iptables?
-
New Member
No sono costretto ad usare il file c, non mi servono iptables...
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
-
Regole del Forum
Segnalibri