Gå til innhold

Sperre MAC-adresse


Anbefalte innlegg

Skrevet

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?)

Videoannonse
Annonse
Skrevet
iptables -I INPUT -p all -m mac --mac-source <MAC ADDR> -j DROP

Takk for svar, men som sagt er jeg helt n00b.

Hvordan lager jeg et script med dette i? Og hvordan lager jeg et script som "opphever" det igjen?

Skrevet (endret)

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
Skrevet

Kattemat, de to case'ene dine gjør akkurat det samme. Du må endre unblock slik at den fjerner det du først blokkerte. Kan vel bare gjøre om parametren -I til -D

Skrevet

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?

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

Tross alt ikke slavene dine da.. Lær deg scripting og iptables selv..

Skrevet

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! :)

Skrevet

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

Skrevet

Hva er en "user chain"? (ja, jeg er n00b :p)

Hadde tenkt på det med $2, og hadde faktisk tenkt å bruke det :)

Hvor skal det du skrev inn i scriptet?

Skrevet

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.

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...