[iptables]Alle mac adressen blokkeren behalve aangegeven

Pagina: 1
Acties:

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Ik hoop dat de titel duidelijk genoeg is.

Ik draai al een paar jaar naar volle tevredenheid een ClarkConnect bak (recentelijk geupgrade naar 4.2 b2). Het draait als een zonnetje, ik hoef er eigenlijk vrij wenig aan te doen. Alleen voor het volgende zit geen mogelijkheid ingebakken in de gebruiksvriendelijke webinterface. In Webmin kan ik ook nergens een optie vinden die dit kan verzorgen. Ik heb gelezen dat de webinterface voor het beheren van draadloze verbindingen het wel kan!
Ik heb hier imenad in huis die geen internet meer mag krijgen en wel weet hoe hij ip en mac adressen kan wijzigen.

Ik wil alle mac adressen standaard blokkeren en gespecificeerde adressen toestaan. Ik moet dit via Putty doen en kan dus niet hebben dat mijn eigen mac wordt geblokt. Ik ben al twee volle avonden aan het zoeken naar de juiste informatie, maar kan het niet vinden. Misschien kan iemand hier mij vertellen hoe ik dit kan doen. Het liefst met iptables want om het met squid te kunnen doen moet ik die eerst opnieuw compileren met een andere flag. Dat draait nu op zich goed, ik wil er dus niet te veel aan doen.

Wat ik ook zou willen weten is hoe ik kan zorgen dat die iptables regels automatisch worden gestart bij rebooten van de server. Ik heb daar ook wel wat over gevonden, maar weet niet helemaal zeker of dat nou de juiste manier is.

Mocht er een web interface bestaan die mij de mogelijkheden geeft, dan heeft dat de voorkeur omdat het het toch wat makkelijker maakt om te beheren.

[ Voor 5% gewijzigd door Bram77 op 19-09-2007 21:24 ]


  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Na een dag mag ik schoppen toch?

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 07-02 09:48

TrailBlazer

Karnemelk FTW

code:
1
2
3
4
5
iptables -A FORWARD --mac-source 00:AA:BB:CC:DD:01 -j ACCEPT
iptables -A FORWARD --mac-source 00:AA:BB:CC:DD:02 -j ACCEPT
iptables -A FORWARD --mac-source 00:AA:BB:CC:DD:03 -j ACCEPT

iptables -A FORWARD -j DROP

simpel. Als je gewoon de netfilter docs leest staat dit er duidelijk in. Verkeer van deze 3 mac-addressen word geaccepteerd de rest wordt gedropped en er wordt niet eens meer naar het MAC adres gekeken.

Wat je eventueel nog meer zou kunnen doen is in plaats van het direct te accepten je het kan forwarden naar een custom chain waar je dan verder kan bepalen wat de reeds getruste machines mogen doen. Je kan dan bijvoorbeeld denken aan het weigeren van opzetten van een SMTP connectie
code:
1
2
3
4
5
6
7
8
9
10
iptables -A FORWARD --mac-source 00:AA:BB:CC:DD:01 -j TRUSTED
iptables -A FORWARD --mac-source 00:AA:BB:CC:DD:02 -j TRUSTED
iptables -A FORWARD --mac-source 00:AA:BB:CC:DD:03 -j TRUSTED

iptables -F TRUSTED
iptables -X TRUSTED
iptables -N TRUSTED
iptables -A TRUSTED --protocol tcp --dport 25 -j DROP
iptables -A TRUSTED -J ACCEPT
iptables -A FORWARD -j DROP

Als je dit met putty doet moet je inderdaad goed uitkijken dat je je verbinding niet kwijt raakt.

[ Voor 10% gewijzigd door TrailBlazer op 20-09-2007 21:33 ]


  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Super! Bedankt!

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
De regels die je post werken bij mij niet. Het volgende wel ongeveer, maar niet helemaal...
Wanneer ik enkel....
code:
1
iptables -t nat -I PREROUTING -m mac --mac-source 00:AA:BB:CC:DD:03 -j DROP

doe heeft de betreffende computer geen toegang meer tot het netwerk. Precies wat ik wil.

Doe ik...
code:
1
2
3
4
5
iptables -t nat -I PREROUTING -m mac --mac-source 00:AA:BB:CC:DD:01 -j ACCEPT
iptables -t nat -I PREROUTING -m mac --mac-source 00:AA:BB:CC:DD:02 -j ACCEPT
iptables -t nat -I PREROUTING -m mac --mac-source 00:AA:BB:CC:DD:03 -j ACCEPT

iptables -t nat -I PREROUTING -j DROP

...dan heeft niemand meer toegang. Zie ik wat over het hoofd?
Ik ben maar een linux-beginnertje wat terminal betreft.


edit: Zou het kunnen zijn dat de DROP regel als eerste moet komen? Ik wordt niet echt wijs uit de documentatie....

[ Voor 8% gewijzigd door Bram77 op 20-09-2007 23:35 ]


  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Yup. Dit is ie, geweldig...eindelijk! Ik heb hier zo veel tijd in gestopt.

Ik post het nog maar even voor wie hier later naar op zoek is
Als je thuis bent in het hele iptables gebeuren is het vast heel voor de hand liggen. Anders zijn het een berg minnen en letters die niet erg veel zeggen op het eerste gezicht.
Ik heb het toegevoegd aan "/etc/rc.d/rc.firewall.local", zodat de regels automatisch worden gestart bij het opstarten van de firewall.

code:
1
2
3
4
5
iptables -t nat -I PREROUTING -j DROP

iptables -t nat -I PREROUTING -m mac --mac-source 00:AA:BB:CC:DD:01 -j ACCEPT
iptables -t nat -I PREROUTING -m mac --mac-source 00:AA:BB:CC:DD:02 -j ACCEPT
iptables -t nat -I PREROUTING -m mac --mac-source 00:AA:BB:CC:DD:03 -j ACCEPT

[ Voor 5% gewijzigd door Bram77 op 21-09-2007 00:11 ]


  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 07-02 09:48

TrailBlazer

Karnemelk FTW

Bram77 schreef op donderdag 20 september 2007 @ 22:05:
De regels die je post werken bij mij niet. Het volgende wel ongeveer, maar niet helemaal...
Wanneer ik enkel....
code:
1
iptables -t nat -I PREROUTING -m mac --mac-source 00:AA:BB:CC:DD:03 -j DROP

doe heeft de betreffende computer geen toegang meer tot het netwerk. Precies wat ik wil.

Doe ik...
code:
1
2
3
4
5
iptables -t nat -I PREROUTING -m mac --mac-source 00:AA:BB:CC:DD:01 -j ACCEPT
iptables -t nat -I PREROUTING -m mac --mac-source 00:AA:BB:CC:DD:02 -j ACCEPT
iptables -t nat -I PREROUTING -m mac --mac-source 00:AA:BB:CC:DD:03 -j ACCEPT

iptables -t nat -I PREROUTING -j DROP

...dan heeft niemand meer toegang. Zie ik wat over het hoofd?
Ik ben maar een linux-beginnertje wat terminal betreft.


edit: Zou het kunnen zijn dat de DROP regel als eerste moet komen? Ik wordt niet echt wijs uit de documentatie....
In principe zou dit moeten werken. Ik heb ewchter het idee dat je niet netjes de regels weggooit voordat je de regels wijzigt. Het gevolg is dat je er steeds meer regels achterplakt.
Maar je moet gewoon goed de docs lezen het staat er echt heel duidelijk in IMHO.

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Ik begrijp niet precies wat je bedoelt denk ik.
De regels starten automatisch op met de Firewall. Als ik de regels wil resetten nadat ik handmatig regels heb toegevoegd herstart ik de firewall.

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 07-02 09:48

TrailBlazer

Karnemelk FTW

herstarten is natuurlijk zelden nodig met een linux doos. Ik zal even een stukje plakken van mijn rules dan kan je zien wat ik doe.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
IPTABLES=/sbin/iptables
saveint="eth0"
saveip="192.168.0.254"
modemip="even.verwijderd"
gamepc="192.168.0.3"
modemint="eth1"
savenet="192.168.0.0/24"
echo "Enabling forwarding"
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "Clearing eveything already specified"
$IPTABLES -P INPUT DROP
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT DROP
$IPTABLES -F OUTPUT
$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD
#new chains

Hierboven worden de standaard rules gewist
code:
1
2
3
4
5
6
7
8
#UDP: incoming UDP connections go here
$IPTABLES -F UDP
$IPTABLES -X UDP
$IPTABLES -N UDP
#LOCKDOWN: untrusted clients
$IPTABLES -F LOCKDOWN
$IPTABLES -X LOCKDOWN
$IPTABLES -N LOCKDOWN

Hierboven worden nieuwe target gewist verdwijderd en opnieuw geinnitialiseerd.
code:
1
2
#natting
$IPTABLES -t nat -F

nat rules worden gewissed

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#WarcraftIII
$IPTABLES -t nat -A PREROUTING  -p tcp -d $modemip --dport 6112 -j DNAT --to $gamepc:6112
$IPTABLES -t nat -A PREROUTING  -p udp -d $modemip --dport 6112 -j DNAT --to $gamepc:6112
$IPTABLES -t nat -A PREROUTING  -p tcp -d $modemip --dport 6113 -j DNAT --to $gamepc:6113
$IPTABLES -t nat -A PREROUTING  -p udp -d $modemip --dport 6113 -j DNAT --to $gamepc:6113
$IPTABLES -t nat -A PREROUTING  -p tcp -d $modemip --dport 6114 -j DNAT --to $gamepc:6114
$IPTABLES -t nat -A PREROUTING  -p udp -d $modemip --dport 6114 -j DNAT --to $gamepc:6114
#C&C3
$IPTABLES -t nat -A PREROUTING  -p tcp -d $modemip --dport 29900 -j DNAT --to $gamepc:29900
$IPTABLES -t nat -A PREROUTING  -p tcp -d $modemip --dport 29901 -j DNAT --to $gamepc:29901
$IPTABLES -t nat -A PREROUTING  -p tcp -d $modemip --dport 6667 -j DNAT --to $gamepc:6667
$IPTABLES -t nat -A PREROUTING  -p tcp -d $modemip --dport 28910 -j DNAT --to $gamepc:28910
$IPTABLES -t nat -A PREROUTING  -p udp -d $modemip --dport 27900 -j DNAT --to $gamepc:27900
$IPTABLES -t nat -A PREROUTING  -p udp -d $modemip --dport 13139 -j DNAT --to $gamepc:13139
#xbox
$IPTABLES -t nat -A PREROUTING  -p udp -d $modemip --dport 88 -j DNAT --to 192.168.0.6:88
$IPTABLES -t nat -A PREROUTING  -p udp -d $modemip --dport 3074 -j DNAT --to 192.168.0.6:3074
$IPTABLES -t nat -A PREROUTING  -p tcp -d $modemip --dport 3074 -j DNAT --to 192.168.0.6:3074
#ap
$IPTABLES -t nat -A PREROUTING  -p tcp -d $modemip --dport 6115 -j DNAT --to 192.168.0.253:80
#ftp when needed
#$IPTABLES -t nat -A PREROUTING  -p tcp -d $modemip --dport 20 -j DNAT --to 192.168.0.1:20
#$IPTABLES -t nat -A PREROUTING  -p tcp -d $modemip --dport 21 -j DNAT --to 192.168.0.1:21

poortmapping woord verschillende games/xbox enzo
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#SYN: incoming TCP connections go here
$IPTABLES -F SYN
$IPTABLES -X SYN
$IPTABLES -N SYN
$IPTABLES -A SYN -i $modemint --protocol tcp --dport 25 -j ACCEPT
$IPTABLES -A SYN -i $modemint --protocol tcp --dport 22 -j ACCEPT
$IPTABLES -A SYN -i $modemint --protocol tcp --dport 80 -j ACCEPT
$IPTABLES -A SYN -i $modemint --protocol tcp --dport 21 -j ACCEPT
$IPTABLES -A SYN -i $modemint --protocol tcp --dport 20 -j ACCEPT
$IPTABLES -A SYN -i $modemint --protocol tcp -j DROP
$IPTABLES -A SYN -i $modemint --protocol tcp --dport 3306 -j ACCEPT
$IPTABLES -A SYN -i $modemint --protocol tcp --dport 3128 -j ACCEPT
$IPTABLES -A SYN -i $modemint --protocol tcp --dport 5000 -j ACCEPT
$IPTABLES -A SYN -i $modemint --protocol tcp --dport 21 -j ACCEPT
$IPTABLES -A SYN -i $modemint --protocol tcp --dport 20 -j ACCEPT
$IPTABLES -A SYN -i $modemint --protocol tcp --dport 443 -j ACCEPT
$IPTABLES -A SYN -i $modemint --protocol tcp --dport 389 -j ACCEPT
$IPTABLES -A SYN -i $modemint --protocol tcp --dport 993 -j ACCEPT
$IPTABLES -A SYN -i $modemint --protocol tcp --dport 1194 -j ACCEPT
$IPTABLES -A SYN -i $modemint --protocol tcp --dport 2345 -j ACCEPT
$IPTABLES -A SYN -j DROP

Nieuw chain waar alle TCP syn pakketten binnenkomen worden gechecked.
code:
1
2
3
4
5
6
#ICMP: incoming ICMP connections go here
$IPTABLES -F ICMP
$IPTABLES -X ICMP
$IPTABLES -N ICMP
#$IPTABLES -A ICMP -i $modemint --protocol icmp -j ACCEPT
$IPTABLES -A ICMP -j DROP

Nieuw chain waar alle ICMP pakketten binnenkomen worden gechecked.
code:
1
2
3
$IPTABLES -A UDP -i $modemint -d $modemip --protocol udp --dport 53 -j ACCEPT
$IPTABLES -A UDP -i $modemint -d $modemip --protocol udp --dport 4534 -j ACCEPT
$IPTABLES -A UDP -j DROP

Nieuw chain waar alle UDP worden gechecked.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#LOCKDOWN: untrusted clients
$IPTABLES -F LOCKDOWN
$IPTABLES -X LOCKDOWN
$IPTABLES -N LOCKDOWN
$IPTABLES -A LOCKDOWN -i $saveint -o $modemint -d 194.109.6.13/32 --protocol tcp --dport 8080 -j ACCEPT
$IPTABLES -A LOCKDOWN -i $saveint -o $modemint -d 12.129.232.125/32 --protocol tcp -j ACCEPT
$IPTABLES -A LOCKDOWN -i $saveint -o $modemint --protocol tcp --dport 80 -j ACCEPT
$IPTABLES -A LOCKDOWN -i $saveint -o $modemint --protocol tcp --dport 21 -j ACCEPT
$IPTABLES -A LOCKDOWN -i $saveint -o $modemint --protocol tcp --dport 20 -j ACCEPT
$IPTABLES -A LOCKDOWN -i $saveint -o $modemint --protocol tcp --dport 443 -j ACCEPT
$IPTABLES -A LOCKDOWN -i $saveint -o $modemint --protocol tcp --dport 1863 -j ACCEPT
$IPTABLES -A LOCKDOWN -i $saveint -o $modemint --protocol tcp --dport 3724 -j ACCEPT
$IPTABLES -A LOCKDOWN -i $saveint -o $modemint --protocol udp -j ACCEPT
$IPTABLES -A LOCKDOWN -i $saveint -o $modemint -d 194.109.6.66/32 --protocol icmp -j ACCEPT
$IPTABLES -A LOCKDOWN -i $saveint -o $modemint -d 194.109.133.133/32 -j ACCEPT
$IPTABLES -A LOCKDOWN -j LOG --log-prefix LOCKDOWN:
$IPTABLES -A LOCKDOWN -j DROP

Chain waar alle untrusted systemen worden gechecked.
code:
1
2
3
4
5
6
7
8
#INPUT
$IPTABLES -A INPUT -i $modemint -d $modemip -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $modemint --protocol tcp --syn -j SYN
$IPTABLES -A INPUT -i $modemint --protocol udp -j UDP
$IPTABLES -A INPUT -i $modemint --protocol icmp  -j ICMP

$IPTABLES -A INPUT -i $saveint -j ACCEPT
$IPTABLES -A INPUT -i lo -j ACCEPT

De input rule wat accepteer ik allemaal. Wordt gejumped naar de SYN ICMP en UDP chain die eerder was aangemaakt
code:
1
2
3
4
5
6
7
8
9
10
11
$IPTABLES -A FORWARD -i $modemint -o $saveint -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $modemint -o $saveint -j ACCEPT
#$IPTABLES -A FORWARD -i $saveint -o $modemint -j ACCEPT
$IPTABLES -A FORWARD -i $saveint -o $modemint -d 192.168.250.3/32 -j DROP
#untrusted local segments and pc
$IPTABLES -A FORWARD -i $saveint -o $modemint -s 192.168.0.4/32 -j LOCKDOWN
$IPTABLES -A FORWARD -i $saveint -o $modemint -s 192.168.0.16/28 -j LOCKDOWN

$IPTABLES -A FORWARD -i $saveint -s 192.168.0.0/28 -o $modemint -j ACCEPT
$IPTABLES -A FORWARD -i $saveint -s 192.168.0.253/32 -o $modemint -j ACCEPT
$IPTABLES -A FORWARD -i $saveint -o $modemint -j DROP

De forwarding rules vanaf hier wordt alles doorgestuurd naar de LOCKDOWN of direct geaccepteerd
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
$IPTABLES -A OUTPUT -o lo -j ACCEPT
$IPTABLES -A OUTPUT -o $saveint -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint -d 10.0.0.150/32 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint -d 194.109.6.66/32 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint -d 194.109.9.99/32 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint -d 194.109.5.241/32 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint -d 194.109.6.92/32 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint -d 83.98.192.86/32 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint -d 83.98.251.95/32 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint -d 194.109.21.26/32 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint -d 212.24.177.98/32 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint -d 10.0.0.138/32 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint --protocol udp --dport 5060 -j ACCEPT
#$IPTABLES -A OUTPUT -o $modemint -d 82.101.62.99/32 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint -d 195.13.23.5/32 --protocol udp --dport 123 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint --protocol udp -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint --protocol tcp --dport 80 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint --protocol tcp --dport 20 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint --protocol tcp --dport 23 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint --protocol tcp --dport 6667 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint --protocol tcp --dport 25 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint --protocol tcp --sport 22 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint --protocol tcp --sport 25 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint --protocol tcp --sport 21 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint --protocol tcp --sport 20 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint --protocol tcp --sport 80 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint --protocol udp --dport 53 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint --protocol udp --sport 53 -j ACCEPT
$IPTABLES -A OUTPUT -o $modemint -j LOG --log-prefix LOCAL_OUT:
$IPTABLES -A OUTPUT -o $modemint -j DROP

Output chain geeft aan wat de firewal zelf allemaal mag
code:
1
2
3
4
$IPTABLES -A OUTPUT -o lo -j ACCEPT
$IPTABLES  -t nat -A POSTROUTING -s $savenet -o $modemint -d ! 10.0.0.138 -j MASQUERADE
$IPTABLES  -t nat -A POSTROUTING -o $saveint -d 192.168.0.253 -j MASQUERADE
$IPTABLES  -t nat -A POSTROUTING -s 172.16.0.0/24 -o $modemint -j MASQUERADE

en als laatste wat nat zooi. Dit is best wel complex allemaal alleen als je de netfilter docs leest kan je dit zelf doen en is het best logisch allemaal.

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Wel interessant om er wat voorbeeldjes bij te hebben, al ga ik nu niet zo ver dat ik forwarding en filtering (behalve op mac adressen) wil doen. Alles wat ik verder wil kan ook met de webinterface.

Maar bedankt voor de uitgebreide informatie. Het wordt langzaamaan allemaal al wat logischer.
Pagina: 1