[Firewall] Ethernet bridge firewall

Pagina: 1
Acties:

  • jep
  • Registratie: November 2000
  • Laatst online: 23-02 19:26
Hoi,

Voor mijn shellhosting netwerk heb ik enige tijd geleden een firewall gemaakt. Het is een 1.7GHz p4 met (op dit moment) 512Mb geheugen, Debian GNU/Linux en op dit moment een 2.6 kernel (ivm wazige irq problemen bij 2.4, maar dat ter zijde).

Ik maak gebruik van ethernet bridging en etabled, een soort firewalling voor over ethernet bridges. Dit werkt gewoon met iptables.

Ik heb een uplink die mijn firewall in gaat, een touwtje naar de betreffende backend-server(s) en een nicje naar een lokaal netwerk. In totaal 3 nic's dus.

Het nut van deze opstelling is dat ik zo'n 3000 euro uit spaar en ik er lekker mee uit mijn dak kan gaan. Geen belemmeringen door een web interface of andersinds. :)

Ik krijg hierop regelmatig DDoS aanvallen. Ik wil die op mijn firewall machine droppen zodat de achterliggende 'farm' er geen of minder last van heeft (dit omdat er voor die firewall al traffic shaping op transit niveau plaatsvind). Bij simpele piekjes gaat dit super. De firewall loopt de boze pakketjes weg te trappen en de achterliggende server krijgt niets op zijn dak.

Nu het probleem: Bij iéts hevigere aanvallen (dan praten we bijv over 50-100mbps met veel packets/s) loopt mijn geheugen vol en is de machine onbruikbaar. Ik moet 'm dan hard resetten omdat ik anders kan wachten tot ik een ons weeg.

Op dit moment hangt 'ie voor jan doedel in de colo omdat ik met dit probleem blijf zitten. Nu vraag ik me af: Heb ik te weinig geheugen, ben ik te heavy user voor iptables, is ethernet bridging hier niet stabiel genoeg voor of doe ik iets fout?

Tot zover dit warrige verhaal :)

  • Tomaat
  • Registratie: November 2001
  • Laatst online: 23-02 11:41
euhm..dus als ik het even samenvat ;)

Je wilt dus d.m.v. iptables ervoor zorgen dat een ddos aanval tijdig wordt opgemerkt en afgevangen.

Als ik op freshmeat.net een search doe op 'ddos' dan krijg ik een 5 tal hits, waarvan er 4 wel interessant zijn..misschien moet je daar eens naar kijken?

Verwijderd

Als je de signature van de DDOS weet zou je kunnen rate-limiten (of had je dat al gedaan?). Extra geheugen bijprikken is ook een workaround, al is het een smerige. Heb je al kunnen achterhalen wat de preciese oorzaak is (een connection queue die overloopt, je stack die teveel connecties in time_wait houd, etc)

Welke extra services draaien op de machine? Wat zijn de specs van de machine? Hoe complex is je ruleset (mogen we een kopie zien)? Treed het probleem ook op als je legitiem 50~100mbit verkeer trekt?

  • jep
  • Registratie: November 2000
  • Laatst online: 23-02 19:26
Verwijderd schreef op 02 december 2003 @ 14:39:
Als je de signature van de DDOS weet zou je kunnen rate-limiten (of had je dat al gedaan?). Extra geheugen bijprikken is ook een workaround, al is het een smerige. Heb je al kunnen achterhalen wat de preciese oorzaak is (een connection queue die overloopt, je stack die teveel connecties in time_wait houd, etc)
Op zich is het ook goed als ik die attack filter wanneer ik 'm opmerk: altijd direct. Het is altijd anders en ik hoef dan weinig standaard rules op te stellen. Ratelimiting doet men bij de transit-providers, dus wat ik op me af kan krijgen is 40mbit aan crap. Toch was dat genoeg die machine vol te laten lopen. Achterhalen was moeilijk: die attacks zijn moeilijk te plannen en de machine is onbestuurbaar. Logs zeggen ook weinig.
Welke extra services draaien op de machine? Wat zijn de specs van de machine? Hoe complex is je ruleset (mogen we een kopie zien)? Treed het probleem ook op als je legitiem 50~100mbit verkeer trekt?
- SSHD
- NFSD (voor een db-backupje 's nachts)
- P4 1.7GHz / 512MB en 3 3Com nics (3c59x). MSI mobo'tje, type weet ik helaas niet.

Ik ga in principe uit van géén ruleset uberhaupt. Die ethernet bridge zou dus ook heel goed de oorzaak kunnen zijn van 't feit dat hij vol loopt. Bij wat lichtere aanvalletjes heb ik het wel goed weg kunnen filteren. :)

Ik heb dingen als connection_track wel aan gehad en uit gezet, maar helaas bleek dit niet het probleem...

Toch vind ik dat 't moet kunnen, kant-en-klaar oplossingen werken immers ook zo. Mocht ik het voor linux icm iptables te bond maken dan zou ik FBSD kunnen gebruiken indien nodig.

Bij 100mbit legitiem verkeer zijn er inderdaad geen problemen. Hij gaat pas moeilijk doen bij echte attacks die inhouden dat er enorm veel packets per seconde binnen komen.

[ Voor 6% gewijzigd door jep op 02-12-2003 15:07 ]


Verwijderd

Als het mogelijk is zou ik zeker eens FreeBSd of OpenBSD proberen.

Ik weet van FreeBSD er in de kernel de volgende opties zitten die een DDOS kunnen beperken (geheel voorkomen is bijna niet mogelijk), en de TCP/IP stack van FreeBSD is echt Rock Solid:

# ICMP_BANDLIM enables icmp error response bandwidth
# limiting. You typically want this option as it will
# help protect the machine from D.O.S. packet attacks.
#
options ICMP_BANDLIM

#To hide firewall from traceroute
options IPSTEALTH

# TCP_DROP_SYNFIN adds support for ignoring TCP packets with
# SYN+FIN. This prevents nmap et al. from identifying the
# TCP/IP stack, but breaks support for RFC1644 extensions
# and is not recommended for web servers.
options TCP_DROP_SYNFIN

# TCP_RESTRICT_RST adds support for blocking the emission
# of TCP RST packets. This is useful on systems which are
# exposed to SYN floods (e.g. IRC servers) or any system
# which one does not want to be easily portscannable.#To hide from portscans
options TCP_RESTRICT_RST

En de volgende regels in je rc.conf van freeBSD:

tcp_drop_synfin="YES" #change to NO if create webserver
tcp_restrict_rst="YES"
icmp_drop_redirect="YES"

Met Linux is dit ook wel te bereiken denk ik (heb alleen ervaring met FreeBSD). Van FreeBSD weet ik dat bovengenoemde dingen makkelijk en snel op te zetten zijn.

  • jep
  • Registratie: November 2000
  • Laatst online: 23-02 19:26
Dat lukt mij ook wel, als ethernet bridging werkt. Heb er van te voren wel over zitten denken maar dacht dat linux dit met iptables ook makkelijk moet kunnen. Toch liep 'ie vol.. ;)

Verwijderd

Dat normale verkeer is neem ik aan geen 50 of 100 mbit toch?

Over wat voor soort DDoS hebben we het hier. Een SYN-flood of UDP/ICMP verkeer.
Ik neem aan dat je firewall niet statefull is of wel?

  • jep
  • Registratie: November 2000
  • Laatst online: 23-02 19:26
SYN, veelal. Meestal kijk ik wat er binnen komt en tik in direct een bijpassende rule. Dat is het liefst zoals ik wil werken. Klinkt misschien raar, maar zo is 't 't handigst. :)

Ik zie dus een SYN attack op $ip en wellicht wat meer informatie waarop ik 'm kan filteren en tik 'm in. :)

Verwijderd

Kun je een voorbeeld geven van zoń regel die je dan intypt?

Heb je SYN-flood protectie aanstaan in de kernel van je firewall?

  • Freak_NL
  • Registratie: Juli 2000
  • Laatst online: 23-02 13:18
Ik ga in principe uit van géén ruleset uberhaupt.
Misschien begrijp ik het verkeerd, maar je hebt dus in principe geen specifieke rules tegen aanvallen en maakt ze aan als je een aanval tegenkomt? :?

Ben je niet beter af met een aantal regels die overmatig verkeer van bepaalde types limiteerd tot wat nodig is voor normaal gebruik? Je bent niet de eerste firewall beheerder die zich tegen DDoS'en wil indekken, met een beetje zoeken heb je vrij snel een goede set regels te pakken voor de meest gebruikelijke script-kiddie* aanvallen.

* In je sig. link heb je het over het hosten van bijvoorbeeld IRC daemons met de shellaccounts die je verhuurd, ik kan me goed voorstellen dat je een gebruiker op je netwerk hebt die ergens ongewenste aandacht trekt.. (no offence)

[ Voor 5% gewijzigd door Freak_NL op 02-12-2003 22:11 ]


  • jep
  • Registratie: November 2000
  • Laatst online: 23-02 19:26
Freak_NL schreef op 02 december 2003 @ 22:09:
[...]

Misschien begrijp ik het verkeerd, maar je hebt dus in principe geen specifieke rules tegen aanvallen en maakt ze aan als je een aanval tegenkomt? :?
Precies.
Ben je niet beter af met een aantal regels die overmatig verkeer van bepaalde types limiteerd tot wat nodig is voor normaal gebruik? Je bent niet de eerste firewall beheerder die zich tegen DDoS'en wil indekken, met een beetje zoeken heb je vrij snel een goede set regels te pakken voor de meest gebruikelijke script-kiddie* aanvallen.
Ik twijfel nog. Aangezien we zo goed als 24/7 met onze neus op de materie zitten vind ik het aan de ene kant wel prettig om het zelf te doen. Aan de andere kant kun je de beveiliging ook zo zetten dat je er geen last van hebt, want dat is vervelend.
* In je sig. link heb je het over het hosten van bijvoorbeeld IRC daemons met de shellaccounts die je verhuurd, ik kan me goed voorstellen dat je een gebruiker op je netwerk hebt die ergens ongewenste aandacht trekt.. (no offence)
That's where it's all about. Het is iets wat ik er bij doe, een beetje een vreemde business. Op een apart netwerkje, met attacks. :) Des al niet te min kunnen we ze aardig te baas zijn.

Gisteren:

Afbeeldingslocatie: http://stuff.servicez.org/pics/1dec.png

Dit was een typisch geval van een SYN aanval waarbij je machine loads van 800 krijgt. Omdat die firewall er niet tussen hangt kon ik niets doen. Als dit wel het geval was had ik een rule kunnen maken. Soms filter je op packetsize, soms op source, soms op de doelhost. Het hangt er maar net vanaf.

Het firewall doosje hangt er nu alleen voor spek en bonen met 2 losse kabels. Best zonde. :)

  • Freak_NL
  • Registratie: Juli 2000
  • Laatst online: 23-02 13:18
Ik denk dat je erg veel aanvallen kan afvangen door je firewall toch preventief in te stellen. Er is genoeg te vinden aan bestaande iptables regels tegen DDoS aanvallen (suggesties iemand?). In plaats van het blokkeren van je bron (beetje zinloos tijdens een DDoS, meerdere hosts per definitie) en doelhost, breng je limieten aan op het verkeer.

Een download met de maximale bandbreedte van je verbinding legt je servers niet plat, maar een aanval wel. Waarom? Omdat aanvallen met SYN en ICMP verkeer een reactie van je server uitlokken.

Simpel voorbeeld: Ik ping jou machine, jou machine pongt terug.
DDos: Wij pingen jou machine heel erg veel met heel veel computers en jou machine is alleen nog maar bezig met terug pongen.

Door iptables regels in te stellen die stellen dat jou server best wel wil reageren op een ping (voorbeeld), maar niet vaker dan een een keer per seconde per bron (ook maar een voorbeeld), voorkom je dat je machine daar door vastloopt.

Grofweg :) Ik ben geen beveiligingsguru :P

Komt er op neer dat je weet dat je aangevallen gaat worden, dus een dagje anti DDoS iptables regels uitzoeken lijkt me de moeite wel waard.

  • jep
  • Registratie: November 2000
  • Laatst online: 23-02 19:26
Even met betrekking tot het bovenstaande; ik kan die attacks al succesvol wegfilteren.. maar mijn geheugen loopt vol :P

Desalniettemin vind ik alle tips wel prettig hoor.. ;)

Verwijderd

Als je nu ook zelf met wat meer info komt kunnen we je misschien nog beter helpen.
No offence, maar je beantwoordt de helft van de vragen niet of half in deze draad.

Ik zit dus nog steeds te wachten op een voorbeeld regel die je gebruikt. Ik kan mij namelijk voorstellen dat als je connection-tracking (dus statefull) gebruikt, je statetabel volloopt met halve geinitieerde verbindingen.

  • jep
  • Registratie: November 2000
  • Laatst online: 23-02 19:26
Attack op ip 123.123.123.123:

iptables -A FORWARD -d 123.123.123.123 -j DROP

Simpel he? :) Hiermee ging het al mis, wellicht ook eerder. Heb het idee dat de ethernet bridging 't niet trekt. Zou die van FBSD beter werken :?

Verwijderd

Hoeveel weet je al van FreeBSD?

En heb je de mogelijkheid om het uit te proberen?

FreeBSD is echt rete stabiel, en de TCP/IP stack en de VM schop je echt niet zomaar onderuit in FreeBSD.

Ik denk dat er alleen maar achter komt door het te proberen.

Kan je in de linux bak nog foutmeldingen terugvinden?

Hier een paar links voor een FreeBSD bridge:

http://www.freebsd.org/doc/en/articles/filtering-bridges/

http://ezine.daemonnews.org/200211/ipfilter-bridge.html

[ Voor 10% gewijzigd door Verwijderd op 04-12-2003 17:12 ]

Pagina: 1