Discussion:
Kan dit met een firewall?
(te oud om op te antwoorden)
Kees
2010-04-12 15:19:06 UTC
Permalink
Tot nu toe heb ik altijd via internet, vanaf mijn eigen PC een Debian
server in een klein ADSL netwerk beheerd. De server heeft in het LAN
een fixed ip: 10.0.0.15.
Het beheer loopt via de in de router (10.0.0.138) geforwarde poort 22
(SSH).
Nu zie ik in de logs dat er steeds mensen via die geforwarde port
proberen in te loggen.
Mijn idee was daarom om alleen verkeer dat komt vanaf mijn eigen vast
IP nummer op het internet (wat ik zie als ik naar www.myip.nl ga)
toe te laten op de server. Volstaat het dan om in de firewall op de
server (IPTables) alle pakketjes met src=<mijn ip nummer op het
insternet> te droppen. Of moet ik dit droppen doen in de ADSL router
van het lokale netwerkje?
Probleem is dat de firewall in de ADSL-router (een linksys WAG200G)
volgens mij geen pakketjes kan droppen als ze niet van één instelbaar
IP-adres komen. De ingebouwde firewall lijkt erg beperkt.
Op dezelfde manier wil ik ook ftp en http gaan beperken. Dus een
specifieke SSH oplossing helpt me wel wat, maar niet helemaal.


Groeten,
Kees
Jeroen Beerstra
2010-04-12 16:12:40 UTC
Permalink
Post by Kees
Tot nu toe heb ik altijd via internet, vanaf mijn eigen PC een Debian
server in een klein ADSL netwerk beheerd. De server heeft in het LAN
een fixed ip: 10.0.0.15.
Het beheer loopt via de in de router (10.0.0.138) geforwarde poort 22
(SSH).
Nu zie ik in de logs dat er steeds mensen via die geforwarde port
proberen in te loggen.
Mijn idee was daarom om alleen verkeer dat komt vanaf mijn eigen vast
IP nummer op het internet (wat ik zie als ik naar www.myip.nl ga)
toe te laten op de server. Volstaat het dan om in de firewall op de
server (IPTables) alle pakketjes met src=<mijn ip nummer op het
insternet> te droppen. Of moet ik dit droppen doen in de ADSL router
van het lokale netwerkje?
Probleem is dat de firewall in de ADSL-router (een linksys WAG200G)
volgens mij geen pakketjes kan droppen als ze niet van één instelbaar
IP-adres komen. De ingebouwde firewall lijkt erg beperkt.
Op dezelfde manier wil ik ook ftp en http gaan beperken. Dus een
specifieke SSH oplossing helpt me wel wat, maar niet helemaal.
Groeten,
Kees
Dat zou moeten werken ja.
--
jb
Huub Reuver
2010-04-12 16:22:42 UTC
Permalink
Post by Kees
Tot nu toe heb ik altijd via internet, vanaf mijn eigen PC een Debian
server in een klein ADSL netwerk beheerd. De server heeft in het LAN
een fixed ip: 10.0.0.15.
Het beheer loopt via de in de router (10.0.0.138) geforwarde poort 22
(SSH).
Nu zie ik in de logs dat er steeds mensen via die geforwarde port
proberen in te loggen.
Mijn idee was daarom om alleen verkeer dat komt vanaf mijn eigen vast
IP nummer op het internet (wat ik zie als ik naar www.myip.nl ga)
toe te laten op de server. Volstaat het dan om in de firewall op de
server (IPTables) alle pakketjes met src=<mijn ip nummer op het
insternet> te droppen. Of moet ik dit droppen doen in de ADSL router
van het lokale netwerkje?
Kijk eens naar tcpwrappers.

Zet in /etc/hosts.allow:
sshd: 192.168.0.0/255.255.255.0 : ALLOW
sshd: ALL : DENY

TCP blokkeren op port 22 werkt natuurlijk ook.
Iptables kun je ook vanaf de server gebruiken, hoewel een screening
router voor de server theoretisch veiliger is.
Post by Kees
Probleem is dat de firewall in de ADSL-router (een linksys WAG200G)
volgens mij geen pakketjes kan droppen als ze niet van één instelbaar
IP-adres komen. De ingebouwde firewall lijkt erg beperkt.
Op dezelfde manier wil ik ook ftp en http gaan beperken. Dus een
specifieke SSH oplossing helpt me wel wat, maar niet helemaal.
Even specifiek voor SSH bestaat ook de mogelijkheid om te werken
met authorized keys. Dat werkt nog beter zolang je de sleutels goed
beheert. Met authorized key kun je login-pogingen compleet uitzetten
op je server. Met de key kun je dan wel naar binnen.

http://www.debuntu.org/ssh-key-based-authentication
(kon even niet zo snel iets voor debian vinden, maar het werkt gelijk.)

Met vriendelijke groet,
Huub Reuver
Kees
2010-04-12 18:07:59 UTC
Permalink
Post by Huub Reuver
Post by Kees
Tot nu toe heb ik altijd via internet, vanaf mijn eigen PC een Debian
server in een klein ADSL netwerk beheerd. De server heeft in het LAN
een fixed ip: 10.0.0.15.
Het beheer loopt via de in de router (10.0.0.138) geforwarde poort 22
(SSH).
Nu zie ik in de logs dat er steeds mensen via die geforwarde port
proberen in te loggen.
Mijn idee was daarom om alleen verkeer dat komt vanaf mijn eigen vast
IP nummer op het internet (wat ik zie als ik naar www.myip.nl ga)
toe te laten op de server. Volstaat het dan om in de firewall op de
server (IPTables) alle pakketjes met src=<mijn ip nummer op het
insternet> te droppen. Of moet ik dit droppen doen in de ADSL router
van het lokale netwerkje?
Kijk eens naar tcpwrappers.
sshd: 192.168.0.0/255.255.255.0 : ALLOW
sshd: ALL : DENY
Eh.... 192.168.0.0. Je bedoelt waarschijnlijk
sshd: 10.0.0.0/255.255.255.0: ALLOW
sshdL ALL: DENY

Voor mijn begrip....
stel mijn ssh pakketje komt via het internet aan bij de adsl router.
Het src-ip=217.136.37.13 (mijn ip adres op het internet). Met
(masquerading/port forwarding?) maakt de router daarvan een pakketje
met src-ip=10.0.0.138 (de IP van de router in de LAN) en zendt het
pakketje vervolgens door naar 10.0.0.15 (de server).
Dan wordt het pakketje toch geaccepeteerd door de eerste regel
/etc/hosts/allow omdat het een lokaal pakketje is? Dat lijkt dan okay,
maar dat werkt zo voor alle IP adressen die van buiten door de router
gaan.
Werkt deze opzet niet alleen maar als de server ook de router zou
zijn? Of mis ik hier iets?
Post by Huub Reuver
TCP blokkeren op port 22 werkt natuurlijk ook.
Iptables kun je ook vanaf de server gebruiken, hoewel een screening
router voor de server theoretisch veiliger is.
Post by Kees
Probleem is dat de firewall in de ADSL-router (een linksys WAG200G)
volgens mij geen pakketjes kan droppen als ze niet van één instelbaar
IP-adres komen. De ingebouwde firewall lijkt erg beperkt.
Op dezelfde manier wil ik ook ftp en http gaan beperken. Dus een
specifieke SSH oplossing helpt me wel wat, maar niet helemaal.
Even specifiek voor SSH bestaat ook de mogelijkheid om te werken
met authorized keys. Dat werkt nog beter zolang je de sleutels goed
beheert. Met authorized key kun je login-pogingen compleet uitzetten
op je server. Met de key kun je dan wel naar binnen.
http://www.debuntu.org/ssh-key-based-authentication
(kon even niet zo snel iets voor debian vinden, maar het werkt gelijk.)
Okay zal ik naar kijken.
Post by Huub Reuver
Met vriendelijke groet,
Huub Reuver
Bedankt voor het meedenken!

Groeten
Kees
Paul van der Vlis
2010-04-12 19:28:12 UTC
Permalink
Post by Kees
Post by Huub Reuver
Post by Kees
Tot nu toe heb ik altijd via internet, vanaf mijn eigen PC een Debian
server in een klein ADSL netwerk beheerd. De server heeft in het LAN
een fixed ip: 10.0.0.15.
Het beheer loopt via de in de router (10.0.0.138) geforwarde poort 22
(SSH).
Nu zie ik in de logs dat er steeds mensen via die geforwarde port
proberen in te loggen.
Mijn idee was daarom om alleen verkeer dat komt vanaf mijn eigen vast
IP nummer op het internet (wat ik zie als ik naar www.myip.nl ga)
toe te laten op de server. Volstaat het dan om in de firewall op de
server (IPTables) alle pakketjes met src=<mijn ip nummer op het
insternet> te droppen. Of moet ik dit droppen doen in de ADSL router
van het lokale netwerkje?
Kijk eens naar tcpwrappers.
sshd: 192.168.0.0/255.255.255.0 : ALLOW
sshd: ALL : DENY
Dat laatste moet in /etc/hosts.deny
Post by Kees
Eh.... 192.168.0.0. Je bedoelt waarschijnlijk
sshd: 10.0.0.0/255.255.255.0: ALLOW
sshdL ALL: DENY
Hij zal vast een voorbeeld gegeven hebben.

Maar ik denk dat je er ook een heel ander IP adres in wilt hebben,
anders was dat forwarden niet nodig.

Je /etc/hosts.allow zal dus iets worden als:
sshd: 10.0.0.0/255.255.255.0: ALLOW
sshd: 217.136.37.13: ALLOW

En je /etc/hosts.deny:
sshd: ALL: DENY
Post by Kees
Voor mijn begrip....
stel mijn ssh pakketje komt via het internet aan bij de adsl router.
Het src-ip=217.136.37.13 (mijn ip adres op het internet). Met
(masquerading/port forwarding?) maakt de router daarvan een pakketje
met src-ip=10.0.0.138 (de IP van de router in de LAN) en zendt het
pakketje vervolgens door naar 10.0.0.15 (de server).
Nee. De afzender blijft dan 217.136.37.13.

Als je router een proxy was geweest, dan veranderde het IP wel.
Post by Kees
Dan wordt het pakketje toch geaccepeteerd door de eerste regel
/etc/hosts/allow omdat het een lokaal pakketje is? Dat lijkt dan okay,
maar dat werkt zo voor alle IP adressen die van buiten door de router
gaan.
Werkt deze opzet niet alleen maar als de server ook de router zou
zijn? Of mis ik hier iets?
Nee dus. Je kunt het verkeer blokkeren met je firewall of met
/etc/hosts.deny. Gaat beide goed.

In een firewall zet je zoiets:
iptables -A INPUT -i eth0 -p TCP --dport 22 -s 1.2.3.4 -j ACCEPT

Met vriendelijke groet,
Paul van der Vlis.
--
http://www.vandervlis.nl/
Kees
2010-04-13 14:19:34 UTC
Permalink
On Mon, 12 Apr 2010 21:28:12 +0200, Paul van der Vlis
<***@vandervlis.nl> wrote:

.........knip
Post by Paul van der Vlis
Post by Kees
Voor mijn begrip....
stel mijn ssh pakketje komt via het internet aan bij de adsl router.
Het src-ip=217.136.37.13 (mijn ip adres op het internet). Met
(masquerading/port forwarding?) maakt de router daarvan een pakketje
met src-ip=10.0.0.138 (de IP van de router in de LAN) en zendt het
pakketje vervolgens door naar 10.0.0.15 (de server).
Nee. De afzender blijft dan 217.136.37.13.
Okay, dat is dus het probleem. Er gebeurt iets anders dan ik dacht.
Post by Paul van der Vlis
Als je router een proxy was geweest, dan veranderde het IP wel.
Post by Kees
Dan wordt het pakketje toch geaccepeteerd door de eerste regel
/etc/hosts/allow omdat het een lokaal pakketje is? Dat lijkt dan okay,
maar dat werkt zo voor alle IP adressen die van buiten door de router
gaan.
Werkt deze opzet niet alleen maar als de server ook de router zou
zijn? Of mis ik hier iets?
Nee dus. Je kunt het verkeer blokkeren met je firewall of met
/etc/hosts.deny. Gaat beide goed.
iptables -A INPUT -i eth0 -p TCP --dport 22 -s 1.2.3.4 -j ACCEPT
Het probleem zit hem dus in de instelling van IPTables. Als ik in
10.0.0.* zit werkt het met de firewall goed, maar vanaf een ander IP
adres werkt de toegang nooit. Ik moet dit eens goed gaan uitzoeken en
terug brengen tot het meest simpele geval. En als ik er niet uit kom,
stel ik weer een vraag.

In ieder geval bedankt voor het meedenken.

Groeten,
Kees
Huub Reuver
2010-04-13 16:16:48 UTC
Permalink
Post by Kees
On Mon, 12 Apr 2010 21:28:12 +0200, Paul van der Vlis
.........knip
Post by Paul van der Vlis
Post by Kees
Voor mijn begrip....
stel mijn ssh pakketje komt via het internet aan bij de adsl router.
Het src-ip=217.136.37.13 (mijn ip adres op het internet). Met
(masquerading/port forwarding?) maakt de router daarvan een pakketje
met src-ip=10.0.0.138 (de IP van de router in de LAN) en zendt het
pakketje vervolgens door naar 10.0.0.15 (de server).
Nee. De afzender blijft dan 217.136.37.13.
Okay, dat is dus het probleem. Er gebeurt iets anders dan ik dacht.
Post by Paul van der Vlis
Als je router een proxy was geweest, dan veranderde het IP wel.
Post by Kees
Dan wordt het pakketje toch geaccepeteerd door de eerste regel
/etc/hosts/allow omdat het een lokaal pakketje is? Dat lijkt dan okay,
maar dat werkt zo voor alle IP adressen die van buiten door de router
gaan.
Werkt deze opzet niet alleen maar als de server ook de router zou
zijn? Of mis ik hier iets?
Nee dus. Je kunt het verkeer blokkeren met je firewall of met
/etc/hosts.deny. Gaat beide goed.
iptables -A INPUT -i eth0 -p TCP --dport 22 -s 1.2.3.4 -j ACCEPT
Het probleem zit hem dus in de instelling van IPTables. Als ik in
10.0.0.* zit werkt het met de firewall goed, maar vanaf een ander IP
adres werkt de toegang nooit. Ik moet dit eens goed gaan uitzoeken en
terug brengen tot het meest simpele geval. En als ik er niet uit kom,
stel ik weer een vraag.
Het werkt in principe als volgt:
als een externe host (bijv. 194.a.b.c) verbind met jouw netwerk (bijv.
213.d.e.f) dan stuurt jouw router/modem dit verkeer door naar 10.0.0.x
en wijzigt alleen het destination adres van 213.d.e.f naar 10.0.0.x.

Bij antwoorden verstuurt 10.0.0.x data naar 194.a.b.c en wordt in de
router weer het afzender adres 10.0.0.x verandert in 213.d.e.f.

Dus jouw pc ziet geen verkeer van of naar 213.d.e.f en de externe host
ziet geen 10.0.0.x.
Je kunt altijd een tool als tcpdump gebruiken om te kijken wat er
verstuurt/ontvangen wordt (tcpdump -i eth0).

Met vriendelijke groet,
Huub Reuver
Huub Reuver
2010-04-13 16:35:44 UTC
Permalink
Post by Paul van der Vlis
Post by Huub Reuver
Post by Kees
Mijn idee was daarom om alleen verkeer dat komt vanaf mijn eigen vast
IP nummer op het internet (wat ik zie als ik naar www.myip.nl ga)
toe te laten op de server. Volstaat het dan om in de firewall op de
server (IPTables) alle pakketjes met src=<mijn ip nummer op het
insternet> te droppen. Of moet ik dit droppen doen in de ADSL router
van het lokale netwerkje?
Kijk eens naar tcpwrappers.
sshd: 192.168.0.0/255.255.255.0 : ALLOW
sshd: ALL : DENY
Dat laatste moet in /etc/hosts.deny
De standaard is dat de allow-regels in /etc/hosts.allow staan en de
deny-regels in /etc/hosts.deny.

Echter zijn tcpwrappers veel veelzijdiger en kun je meer met tcpwrappers.
Let er alleen op dat tcpwrappers worden aangeroepen na iptables en voor
de werkelijke applicatie. Een ongelukkig script met veel allow/deny regels
vreet aan je performance.

Als je weinig wil met tcpwrappers is het soms beter om iptables volledig
in te stellen voor alle services en de hosts.allow te legen.

Maar het is meer een kwestie van smaak denk ik. Wat vind jij mooier?

/etc/hosts.allow:
ALL : PARANOID : DENY
ALL : ALL : ALLOW

Of /etc/host.allow:
ALL : ALL EXCEPT PARANOID
En /etc/hosts.deny:
ALL : PARANOID

En dan ga ik even niet in op logmogelijkheden of zelfs de mogelijkheid om
een actie vanuit tcpwrappers te starten.

http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/ref-guide/s1-tcpwrappers-access.html

Met vriendelijke groet,
Huub Reuver

Bozweb
2010-04-12 19:05:05 UTC
Permalink
Post by Kees
Tot nu toe heb ik altijd via internet, vanaf mijn eigen PC een Debian
server in een klein ADSL netwerk beheerd. De server heeft in het LAN
een fixed ip: 10.0.0.15.
Het beheer loopt via de in de router (10.0.0.138) geforwarde poort 22
(SSH).
Nu zie ik in de logs dat er steeds mensen via die geforwarde port
proberen in te loggen.
Mijn idee was daarom om alleen verkeer dat komt vanaf mijn eigen vast
IP nummer op het internet (wat ik zie als ik naar www.myip.nl ga)
toe te laten op de server. Volstaat het dan om in de firewall op de
server (IPTables) alle pakketjes met src=<mijn ip nummer op het
insternet> te droppen. Of moet ik dit droppen doen in de ADSL router
van het lokale netwerkje?
Probleem is dat de firewall in de ADSL-router (een linksys WAG200G)
volgens mij geen pakketjes kan droppen als ze niet van één instelbaar
IP-adres komen. De ingebouwde firewall lijkt erg beperkt.
Op dezelfde manier wil ik ook ftp en http gaan beperken. Dus een
specifieke SSH oplossing helpt me wel wat, maar niet helemaal.
Groeten,
Kees
Zet je ssh op een andere poort, bv 22522.
Heb ik ook gedaan, nergens geen last meer van.
Niet op deze poort gezet uiteraard.
Loading...