Toon posts:

[iptables] te secure ...

Pagina: 1
Acties:

Verwijderd

Topicstarter
Goeden...

Heb onlangs m'n 2.2.16 kernel vervangen door 2.4.13 kernel. Maar nu wil de overstap van ipchains naar iptables niet echt soepel verlopen. Het probleem is namelijk dat ik van buitenaf m'n server niet kan bereiken, tewijl het in het interne netwerk wel goed gaat. Dus van binnenin (via eth0) ff sshen gaat perfect, van buitenaf (eth1) kom ik mooi niet in. Waar kan het probleem zitten, hier een stukje van m'n vuurmuur.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
iptables -F
iptables -t nat -F
iptables -A POSTROUTING -t nat -o ppp0 -j MASQUERADE

iptables -A FORWARD -i eth1 -o ppp0 -p tcp --dport 21 -j ACCEPT
iptables -A FORWARD -i eth1 -o ppp0 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -i eth1 -o ppp0 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i eth1 -o ppp0 -p tcp --dport 3306 -j ACCEPT

#   VNC
iptables -A FORWARD -i eth0 -o ppp0 -p tcp --dport 5800 -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp0 -p tcp --dport 5900 -j ACCEPT
iptables -A PREROUTING -t nat -p tcp --dport 5800 -j DNAT --to 192.168.0.5:5800
iptables -A PREROUTING -t nat -p tcp --dport 5900 -j DNAT --to 192.168.0.5:5900

#   Gamevoice
iptables -A PREROUTING -t nat -p udp --dport 9110 -i ppp0 -j DNAT --to 192.168.0.5:9110

BTW, ik heb zeer weinig ervaring met iptables, dus als er echt onzin in staat ... It wasn't me :P.

Verwijderd

Hmm, ik zou wel graag je volledige ruleset zien.
Ook is me niet duidelijk wat je ppp0 interface is.
En wat zijn je policies?
Dit kun je controleren met:
iptables -L |grep policy

# VNC
iptables -A FORWARD -i eth0 -o ppp0 -p tcp --dport 5800 -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp0 -p tcp --dport 5900 -j ACCEPT
iptables -A PREROUTING -t nat -p tcp --dport 5800 -j DNAT --to 192.168.0.5:5800
iptables -A PREROUTING -t nat -p tcp --dport 5900 -j DNAT --to 192.168.0.5:5900

Als eth0 je interne interface is dan ben je bezig om te portforwarden naar je ppp0 interface vanuit je lokale netwerk. Ikke nie begrijpe?
De portmap zelf (prerouting) geldt voor ieder inkomende connectie, en die wordt gemapt naar 192.168.0.5.
Dat lijkt me ok.
Die forward ook accepteren over je forward chain gaat wat raar. Je accepteert hem alleen wanneer hij binnenkomt op eth0 en weer naar buiten gaat over ppp0. Dat is ook wat je wilt?
De rest wordt hier niet geaccepteerd, al zou het kunnen dat je policy voor de forward chain op accept staat. Dan zal hij alle forward connecties ws. accepteren.


iptables -A FORWARD -i eth1 -o ppp0 -p tcp --dport 21 -j ACCEPT
iptables -A FORWARD -i eth1 -o ppp0 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -i eth1 -o ppp0 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i eth1 -o ppp0 -p tcp --dport 3306 -j ACCEPT

Hier accepteer je connecties naar ftp/http servers die binnenkomen op eth1 (inet) en weer uitgaan naar ppp0 (welke interface is dat?). Als dit bedoelt is om lokale services beschikbaar te maken dan heb je nog prerouting rules nodig om de portmap zelf te doen. Alleen de forward als accept aan te geven gaat niet werken, dat is geen portmap.


# Gamevoice
iptables -A PREROUTING -t nat -p udp --dport 9110 -i ppp0 -j DNAT --to 192.168.0.5:9110

Hierbij maak je een portmap voor connecties die binnenkomen op ppp0 naar 192.168.0.5.
Die connecties zullen alleen geaccepteerd worden wanneer je policy op accept staat of als je een specifieke accept rule maakt voor deze forward.

Verwijderd

Topicstarter
Mijn policies staan allemaal op ACCEPT (input, forward, output). ppp0 is mijn dailup verbindig van m'n kabelmodem die aan eth1 hangt.

Wat de VNC regels moeten doen, is het doorsturen van die connectie naar 192.168.0.5 (wat overigens ook werkt). Ik weet dus niet of die forward daar ook perse voor nodig is. Maar als ik het dus goed begrijp zou ik die forward weg kunnen laten omdat mijn policy al op Accept staat ??

Wat ik met deze regel (iptables -A FORWARD -i eth1 -o ppp0 -p tcp --dport 22 -j ACCEPT) probeerde ik dus expliciet connecties die van buienaf binnenkomen te accepteren ... en dan moet -o natuurlijk niet op ppp0 staan |:(. Zou dit beter zijn ? iptables -A FORWARD -i eth1 -p tcp --dport 22 -j ACCEPT ?

/me n00b als het om iptables gaan ...

edit:
Is het btw wel verstandig om zo m'n masq in te stellen. Volgens mij kan iedereen nu m'n server gebruiken als gateway :). Hoe zou ik dat kunnen oplossen ?

Verwijderd

ik snap sowieso niet waarom je met een kabel-modem een dialup nodig hebt. daarom lijkt eth1 me inderdaad beter.

Verwijderd

Oh, en je firewall server heeft beide interfaces opgezet? eth1 en ppp0?
Welke interfaces geeft ifconfig aan?

Dat Masquerading is wel ok. Hij masqurade alles wat over de forward chain gaat, en over ppp0 naar buiten gaat. Alles wat dus over ppp0 binnen komt,over de forward chain gaat, zal naar je lokale netwerk gaan (of gedropt worden).

En ja, als je forward policy op accept staat, hoef je hem niet nog eens te specificeren.
Ikzelf vind het lekkerder om mijn policy op drop te zetten, en alleen te accepten wat ik ook wil accepten. Zoals dus deze forward rules gebruiken, en forwards van het lokale net naar internet accepten.

En ja, de forward regel voor ssh is beter zo al is hij bij een accept-policy niet nodig.
Maar dit accepteerd alleen de pakketjes.
De prerouting/portmap is nog niet opgezet.
Dat kun je doen met een zelfde prerouting regel als je voor vnc gebruikt hebt.

Verwijderd

Je hebt de policies op ACCEPT staan en je hebt enekele regels die dingen accepteren. Das dubbel op en je firewall blockt dus niks. Je moet bijv de INPUT policy op DROP zetten of de dingen die je wilt blocken specificeren met een aantal regels.

Waarom je niet kunt SSHen weet ik niet maar het kan dus niet door iptables komen.

ff over firewallen:

Ik forward hier alles met deze regel:
iptables -A FORWARD -i eth1 -j ACCEPT

deze voor postrouting:
iptables -A POSTROUTING -t nat -o eth1 -j MASQUERADE

INPUT policy heb ik op DROP en de rest op ACCEPT.
Dan accepteer ik met een hele lijst regels dingen die wel van buitenaf mn netwerk binnen komen.

Maar waarom je niet kunt SSHen weet ik niet omdat er niets dat in de INPUT komt geblockt wordt.

Misschien zit er een firewall op de comp waarvan je probeerd te SSHen.

Verwijderd

Ah, draait je ssh op de firewall machine?
Dan moet je daarvoor niet de forward chain hebben maar de input chain.
En je weet zeker dat ssh ook staat te luisteren op dat interface?
netstat -an zal dat aangeven.

En wat Dobie zegt klopt, de Input en Forward policies op drop zetten is wel een goed idee.
En dan alleen accepten wat je ook echt wilt accepten.

Verwijderd

Topicstarter
Thnx voor de reacties ... ondertussen werkt het alweer. Het probleem zat hem niet in de firewall idd, maar in een verkeerde dns entry |:(.

Maar ff over iptables, waar voor dient de FORWARD chain ? Is het niet genoeg op je INPUT policy op DROP te zetten en daarna met "iptables -A INPUT -p tcp --dport xx -j ACCEPT" een aantal poorten "open" te zetten ? Of moet ik hier ook nog iets met de FORWARD doen ?

edit:

Ik ben ff op zoek gegaan naar een util om een beetje makkelijk ene firewall te configen, en kwam dit tegen : http://www.pointman.org/PMFirewall/ . Werkt perfect, lekker console based, geen fratsen... alleen er is 1 probleem, hij is geschreven voor ipchains :(. Dus ik heb wel even verder gezocht, maar tot op heden nog niets gevonden wat net zo prettig werkt als dit (wel genoeg andere, maar die zijn mij iets te uitgebreid).

Weet iemand misschien nog een simpele util voor iptables (behalve pico of vi :) ) ?

Verwijderd

De input chain is voor verkeer dat naar de firewall machine gaat.
De output voor vrkeer vanaf de firewall.
De forward is voor verkeer dat van internet naar je lokale netwerk gaat of andersom, en niet bestemd is voor de firewall zelf.

En ja, dat is wat je doet met de input en forward policy.
Alles droppen, behalve dat wat je wilt accepten.
Pagina: 1