[iptables] alles behalve 2 ip's blokken

Pagina: 1
Acties:

  • Gertjan
  • Registratie: Oktober 2001
  • Laatst online: 07-02 20:23

Gertjan

mmmm, beer...

Topicstarter
Ik ben bezig een firewall-script in elkaar te zetten, maar der is iets waar ik ff niet uit kom: ik wil graag al het verkeer op poort 22 van eth0 blokken, behalve mijn interne ip en het ip van een flatgenoot.

Wat ik tot nu toe heb is dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
# standaard policy
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# verkeer van backend masqueraden
iptables -A POSTROUTING -t nat -o eth0 -j SNAT --to-source 'mijn ip'

# verkeer naar ssh-poort 22 blokkeren
iptables -A INPUT -p tcp --destination-port 22 --in-interface eth0 --jump DROP

# verkeer voor olivier toelaten
iptables -A INPUT -p tcp --destination-port 22 --in-interface eth0 --source 'zijn ip' --jump ACCEPT


Waarschijnlijk werkt dit niet omdat hij eerst eth0 dichtzet en daarna op een hogere layer een ip toe moet laten, maar dat lukt dus niet omdat hij op die lagere layer al dichtzit.

Hoe kan ik er nu voor zorgen dat hij niet op eth0 alles blokt, maar op bijvoorbeeld alle ip's, behalve die van mij en die van m'n flagenoot?
Het antwoord is denk ik erg simpel, maar ik zie het ff niet.

  • DR
  • Registratie: December 2000
  • Niet online

DR

-->NOS

  • BitProcessor
  • Registratie: Februari 2001
  • Laatst online: 09-05 00:16
Als ik me niet vergis worden de firewall regels van boven naar beneden afgelopen.
Als dat inderdaad het geval is, is de verklaring en oplossing simpel :
Doordat bij jouw eerst een algemene blok staat van poort 22, neemt hij die regel en kijkt niet verder.

Oplossing, wissel die twee laatste regels om ;)

"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943


  • Sjonny
  • Registratie: Maart 2001
  • Laatst online: 17:47

Sjonny

Fratser

eerst met een aantal rules zetten wat je open wilt, en dan een rule die het dicht zet voor alle verkeer. dus move die regel van ACCEPT boven je DROP en je bent klaar lijkt me.

The problem is in the part of your brain that handles intelligence.


  • Gertjan
  • Registratie: Oktober 2001
  • Laatst online: 07-02 20:23

Gertjan

mmmm, beer...

Topicstarter
Zoals ik al zei, erg simpel :)

t Gaat alleen wel tegen m'n gevoel in, eerst 1tje open zetten, en daarna alles dichtzetten. Dan zou je denken dat hij die ene ook dichtzet omdat je zegt dat hij alles moet blokken.
Daarom had ik het eerst andersom gedaan, eerst in het algemeen alles dichtzetten, daarna een uitzondering maken voor 1 ip.

Naja, t werkt zo, das het belangrijkst.

Bedankt!

Verwijderd

Een firewall leest inderdaad van boven naar beneden, maar leest na het vinden van een match niet meer verder. Dus heeft een 'hogere' rule voorrang op een 'lagere'...

  • ParoXysm
  • Registratie: November 2000
  • Laatst online: 05-05 21:44
Kun je niet beter je INPUT policy standaard op DROP zetten, en daarna openzetten wat je open wilt hebben?

Specs


  • Gertjan
  • Registratie: Oktober 2001
  • Laatst online: 07-02 20:23

Gertjan

mmmm, beer...

Topicstarter
ParoXysm schreef op 28 augustus 2002 @ 16:37:
Kun je niet beter je INPUT policy standaard op DROP zetten, en daarna openzetten wat je open wilt hebben?
Ja, zou idd wel beter zijn. Maar dan ben ik zo lang bezig (er zijn natuurlijk ook wel standaard te vinden), en daar heb ik nu even geen tijd voor. Daarbij ben ik ook niet zo paranoide dat ik denk dat iedereen op internet er baat bij heeft mijn machine te kraken. Ik heb hem zo afgeschermd voor SSH-exploits, voro t moment ben ik even tevreden :)

Verwijderd

Je kunt ook in /etc/hosts.deny alle ip's blokken en de ip's die dan wel toegang mogen hebben met behulp van /etc/hosts.allow weer toegang geven.

  • wouter93
  • Registratie: September 2001
  • Niet online
hosts.deny geldt allen voor inetd, en niet voor losse daemons.
Ik zou die firewall toch anders aanpakken, want er zijn vast nog wel meer exploits te verzinnen voor services waarvan je niet eens weet dat je ze draait. Ik zou inderdaad alles op drop zetten (behalve evt output) en dan een regeltje maken per poort die je open wilt zetten.

Verwijderd

Verwijderd schreef op 28 augustus 2002 @ 15:40:
Een firewall leest inderdaad van boven naar beneden, maar leest na het vinden van een match niet meer verder. Dus heeft een 'hogere' rule voorrang op een 'lagere'...
Niet geheel waar. Dit is afhankelijk van het type packet filter wat er gebruikt word. In OpenBSD's PF is de laatsts matchende rule bepalend voor het lot van een pakket bijvoorbeeld.

En als jij alles behalve 2 ip's moet blocken, zou je naar de volgende ruleset kunnen kijken:

-P INPUT DROP
-P OUTPUT DROP
-P FORWARD DROP
-A POSTROUTING -t nat -o eth0 -j SNAT --to-source <jouw ip>
-A OUTPUT -p tcp -o eth0 -d <jouw ip> --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p tcp -o eth0 -d <remote ip> --sport 22 -m state --state ESTABLISHED,RELATED -J ACCEPT
-A INPUT -p tcp -i eth0 -s <jouw ip> --dport 22 -m state --state NEW --j ACCEPT
-A INPUT -p tcp -i eth0 -s <remote ip> --dport 22 -m state --state NEW--j ACCEPT
hosts.deny geldt allen voor inetd, en niet voor losse daemons.
tcpwrappers geld voor alles wat met libwrap is gelinkt. Dus ook daemons (ldd /pad/naar/daemon om te checken)

  • igmar
  • Registratie: April 2000
  • Laatst online: 12-05 15:46

igmar

ISO20022

wouter93 schreef op 05 september 2002 @ 14:59:
hosts.deny geldt allen voor inetd, en niet voor losse daemons.
Waarop SSH een van de vele uitzonderingen is.

  • igmar
  • Registratie: April 2000
  • Laatst online: 12-05 15:46

igmar

ISO20022

Ali_Illegali schreef op 28 augustus 2002 @ 13:34:
Ik ben bezig een firewall-script in elkaar te zetten, maar der is iets waar ik ff niet uit kom: ik wil graag al het verkeer op poort 22 van eth0 blokken, behalve mijn interne ip en het ip van een flatgenoot.
code:
1
2
3
iptables -A INPUT -i ethx -s x.x.x.x/32 --dport 22 -j ACCEPT
iptables -A INPUT -i ethx -s x.x.x.x/32 --dport 22 -j ACCEPT
iptables -A INPUT -s 0.0.0.0/0 --dport 22 -j DROP

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 20:00
ik zet mn input policy gewoon op DROP, vervolgens zet ik voor INPUT de poorten die open mogen gewoon open. MySQL is hier bijvoorbeeld zo lek als een mandje, root zonder pass vanaf alle hosts. Kan je zo in. Niet dankzij iptables, heb 3306 gewoon niet openstaan.
Pagina: 1