Gå til innhold

Sperre MAC-adresse


Anbefalte innlegg

Hei!

 

Har 4 maskiner i LAN'et og skal bruke ClarkConnect som gateway/firewall.

Ønsker å ha muligheten til å sperre 2 av maskinene på LAN'et ute fra I-net ved hjelp av MAC-adresser. Dette må være "lett" å aktivere/deaktivere etter behov (script av et eller annet slag?).

 

Er helt n00b på *NIX, så jeg lurte på om noen kunne skrive et slikt script for meg? :) (det trengs vel ikke mange linjene med kode?)

Lenke til kommentar
Videoannonse
Annonse

Noe ala:

 

#! /bin/bash
#

MAC=aa:bb:cc:dd:ee:ff

case "$1" in
 block)
   echo -n "Blocking $MAC"
   iptables -I INPUT -p all -m mac --mac-source $MAC -j DROP
 ;;

 unblock)
   echo -n "Unblocking $MAC"
   iptables -D INPUT -p all -m mac --mac-source $MAC -j DROP
 ;;
 *)
   echo "Usage: macstop {block|unblock}"
   exit 1
 ;;
esac

 

Burde funke. Lagre f.eks. som /usr/sbin/macstop og kjør med macstop block eller macstop unblock. Og bytt seff. aa:bb:cc:dd:ee:ff med den aktuelle macadressen.

Husk at om du blokker to ganger må du også unblocke to ganger!

 

Og jada - det finnes sikkert 1000 måter å gjøre dette penere på ;)

 

EDIT: takker langbein for at han gjorde meg oppmerksom på den typoen ;)

Endret av kattemat
Lenke til kommentar

Takk for hjelpen! :)

 

Er det mulig å "utvide" scriptet litt?

F.eks en kommando som lister ut om MAC-adressen er sperret eller ikke? ("macstop status")

Og en sak som gjør at det ikke er mulig å blokkere samme MAC flere ganger?

Lenke til kommentar

xeon: Jeg har ikke sagt at noe skal gjøre det for meg :)

Lører utrolig mye av dette! :)

 

Kan jeg ikke gjøre det slik for å unngå at regelen ligger inne fra før?

#! /bin/bash
#

MAC=aa:bb:cc:dd:ee:ff

case "$1" in
block)
  echo -n "Blocking $MAC"
  iptables -D INPUT -p all -m mac --mac-source $MAC -j DROP
  iptables -I INPUT -p all -m mac --mac-source $MAC -j DROP
;;

unblock)
  echo -n "Unblocking $MAC"
  iptables -D INPUT -p all -m mac --mac-source $MAC -j DROP
;;

status)
iptables -L -v | grep -i $MAC
;;

*)
  echo "Usage: macstop {block|unblock|status}"
  exit 1
;;
esac

 

Hva er "esac"?

 

Tusen takk for hjelpen! :)

Lenke til kommentar

Det er bedre å opprette en ny "user chain" i iptables, og legge MAC-reglene i denne. Så kan man bedre legge den inn i eksisterende chains

 

eks:

iptabels -N MACBLOCK

 

# legges først i INPUT og FORWARD

iptables -I INPUT 1 -j MACBLOCK

iptables -I FORWARD 1 -j MACBLOCK

 

# deretter slenger vi MAC'er inn i MACBLOCK

iptables -A MACBLOCK ... etc

 

 

videre kan det være greit å hente inn MAC adresse fra kommandolinja også? som $2

MAC=$2

Lenke til kommentar

INPUT, OUTPUT og FORWARD er pre-definerte chains, men man kan lage så mange chains man vil.

 

her vil det være relevant å lage seg en egen chain som holder oversikt over blokkerte MAC-addresser og så legge inn denne på rett sted en eller flere av de 3 over.

 

Det gjør det også lettere og mer oversiktlig å sette inn hvis man har et 100 linjer langt firewall skript fra før med sin egne intærne oppbygging.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...