Permalänk
Medlem

Iptables: filtrera egen trafik

Jo, jag bor på ett studentboende och delar internet med mina grannar, som iofs. inte är så haj på datorer egentligen, men säkra upp lite iaf.

Men jag har valt att separera mitt lokala nät 192.168.3.0/24 och ha ett trådlöst 192.168.9.0/24. Detta sker genom en Linksys WRT54G som är o-bryggad (så eth1 är trådlösa delen, där jag har 192.168.9.1/24)

Jag har aldrig kommit överrens med Iptables. Jag behärskar PF och Cisco ACL's, men Iptables/IPchains får jag aldrig kläm på. Har försökt experimentera ett tag nu, men det slutar bara med att alla kommer åt allt, eller ingen kommer åt någonting (och internet fungerar ej)

Vilket håll går iptables på, alltså ordningen? har det betydelse vilket interface man sätter det på? är INPUT bara för paket mot maskinen och FORWARD det som routas vidare, eller krävs både och?

Skulle iaf. vilja att min dator (med en viss IP/MAC) endast kommer åt mitt 192.168.3.0/24 nät. Samt att mina grannar är tvugna att använda min cachande DNS (dnsmasq på linksysen)

Så här ser det ut nu iaf, men fungerar inte.

#!/bin/sh IF="eth1" # defaults iptables -F INPUT iptables -F FORWARD # only allow local DNS iptables -A FORWARD -i $IF -s 192.168.9.0/24 -p udp -d 192.168.9.1/32 --dport 53 -j ACCEPT # accept specific host traffic iptables -A INPUT -i $IF -s 192.168.9.20/32 -d 192.168.3.0/24 -j ACCEPT iptables -A FORWARD -i $IF -s 192.168.9.20/32 -d 192.168.3.0/24 -j ACCEPT # block private network iptables -A INPUT -i $IF -d 192.168.3.0/24 -j DROP iptables -A FORWARD -i $IF -d 192.168.3.0/24 -j DROP # accept traffic going to our gateway(s) iptables -A INPUT -i $IF -s 192.168.9.0/24 -j ACCEPT iptables -A FORWARD -i $IF -s 192.168.9.0/24 -j ACCEPT # drop everything else iptables -A INPUT -i $IF -j DROP iptables -A FORWARD -i $IF -j DROP

Är helt fel på det men.. ja..

Permalänk
Medlem

Input är inkommande på nätverkskortet, output är utgående från samma kort.
Det är väldigt likt hur ACL är uppbyggt i cisco.
skriv ut interface istället för $if, så blir det lättare för dig att se vilken regel som gäller vilket interface.

utdrag ur min fw.sh, eth2 är "internet interfacet"
#Inkommande från internet.
iptables -I INPUT 1 -i eth2 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I INPUT 2 -i eth2 -p icmp --icmp-type echo-request -j DROP
iptables -I INPUT 3 -i eth2 -s 0.0.0.0/0 -p tcp --destination-port 443 -j ACCEPT
iptables -I INPUT 4 -i eth2 -s 0.0.0.0/0 -j DROP
#Nat
iptables -t nat -A POSTROUTING -s 192.168.0.1/24 -j MASQUERADE

Lägger du ingen regel på ett interface, så är det samma som tillåta all trafik in och ut

Visa signatur

Main> Amd Fx-8120 , 16gb ram, Geforce gtx 960 2gb, 2x Asus PB287Q
FW-01> Intel Atom CPU D2500 2x1.86GHz 4gb ram
Raspberry PI 2 för labb
Raspberry Pi 2 B en som Fil-server och en för Kodi
Qnap TS-451 Backup station

Permalänk
Medlem

Tror jag lyckades. Fast jag fick sätta DNS-reglen i min brandvägg mot nätet istället (Cisco PIX)

På Pixen:

access-list outbound deny udp 192.168.9.0 255.255.255.0 any eq domain

På WRTn:

#!/bin/sh IF="eth1" # defaults iptables -F INPUT iptables -F FORWARD # accept specific hosts iptables -A INPUT -i $IF -s 192.168.9.20/32 -d 192.168.3.0/24 -j ACCEPT iptables -A FORWARD -i $IF -s 192.168.9.20/32 -d 192.168.3.0/24 -j ACCEPT # accept DNS to router iptables -A INPUT -i $IF -p udp -s 192.168.9.0/24 -d 192.168.3.1/32 --dport 53 -j ACCEPT iptables -A FORWARD -i $IF -p udp -s 192.168.9.0/24 -d 192.168.3.1/32 --dport 53 -j ACCEPT # block private network iptables -A INPUT -i $IF -s 192.168.9.0/24 -d 192.168.3.0/24 -j DROP iptables -A FORWARD -i $IF -s 192.168.9.0/24 -d 192.168.3.0/24 -j DROP # accept traffic going to our gateway(s) iptables -A INPUT -i $IF -s 192.168.9.0/24 -j ACCEPT iptables -A FORWARD -i $IF -s 192.168.9.0/24 -j ACCEPT # drop everything else iptables -A INPUT -i $IF -j DROP iptables -A FORWARD -i $IF -j DROP