Avanti Indietro Indice

14. Mac

14.1 Descrizione

A volte può essere utile conoscere da quale interfaccia ethernet proviene un pacchetto. Il modulo 'ipt_mach.o' si occupa proprio di questo.

Ogni scheda Ethernet si suppone che abbia un unico indirizzo "hardware" MAC (Media Access Control) a 48 bit (es. 00:60:08:91:CC:B7). Con alcune schede è possibile modificarlo con altre no, comunque attraverso questo indirizzo siamo in grado di verificare con maggior sicurezza da quale macchina arriva un pacchetto (o meglio da quale interfaccia).

Questo modulo deve essere specificato esplicitamente con '-m mac' oppure '--match mac', inoltre può essere utilizzato solo con le catene PREROUTING e INPUT.

14.2 Opzioni

--mac-source [!] XX:XX:XX:XX:XX:XX

Permette di specificare l'indirizzo ethernet, es. 00:60:08:91:CC:B7. Può essere seguito da '!' (NOT) per indicare gli indirizzi ethernet diversi da quello specificato es. -m mac --mac-source ! 00:60:08:91:CC:B7.

14.3 Esempi

#!/bin/bash
#
# Esempio 1
#

MAC_ADDR=08:00:39:00:2F:C3
PC1=192.168.0.5

# --------------------------------------------------------------------------------
# Accettiamo i pacchetti provenienti dall'interfaccia lo
# --------------------------------------------------------------------------------
iptables -A INPUT -i lo -j ACCEPT

# --------------------------------------------------------------------------------
# Accettiamo (-j ACCEPT) le richieste di connessione e i dati diretti alla porta telnet (--dport telnet) 
# solo se provengono da PC1 (-s $PC1) e hanno indirizzo MAC associato pari a 
# MAC_ADDR (--mac-source $MAC_ADDR)   
# --------------------------------------------------------------------------------
iptables -A INPUT -p tcp -m mac --mac-source $MAC_ADDR -s $PC1 --dport telnet -j ACCEPT

# --------------------------------------------------------------------------------
# accettiamo eventuali pacchetti icmp (vedi cap. ICMP) 
# --------------------------------------------------------------------------------
iptables -A INPUT -j icmp-accept

# --------------------------------------------------------------------------------
# resto è rifiutato
# --------------------------------------------------------------------------------
iptables -A INPUT -j REJECT

iptables -A FORWARD -j DROP

# --------------------------------------------------------------------------------
# Accettiamo i pacchetti diretti all'interfaccia lo
# --------------------------------------------------------------------------------
iptables -A OUTPUT -o lo -j ACCEPT

# --------------------------------------------------------------------------------
# Accettiamo (-j ACCEPT) i pacchetti inviati in risposta a PC1 (-d $PC1)
# --------------------------------------------------------------------------------
iptables -A OUTPUT -p tcp -d $PC1 --sport telnet -j ACCEPT

# --------------------------------------------------------------------------------
# Accettiamo i pacchetti icmp (vedi cap. ICMP)
# --------------------------------------------------------------------------------
iptables -A OUTPUT -j icmp-accept

# --------------------------------------------------------------------------------
# Resto rifiutato
# --------------------------------------------------------------------------------
iptables -A OUTPUT -j REJECT


Avanti Indietro Indice