Portál AbcLinuxu, 27. dubna 2024 02:47


Dotaz: Skrytí serveru za nat

8.9.2015 18:33 Gepard
Skrytí serveru za nat
Přečteno: 463×
Odpovědět | Admin
Ahoj, potřeboval bych skrýt jeden server tak, aby tam byl mezikrok v podobě jiného serveru.

Něco takového:
	klient (předem neznámá IP) -> server_A (70.70.70.70) -> cilovy_server_B (90.90.90.90)

	server_A - eth0: 70.70.70.70
	server_A - eth1: 80.80.80.80

	---

	PREROUTING	klientska_IP -> 70.70.70.70	DNAT	klientska_IP -> 90.90.90.90	eth0
	FORWARD
	POSTROUTING	klientska_IP -> 90.90.90.90	SNAT	80.80.80.80 -> 90.90.90.90	eth1

	--- 

	PREROUTING	90.90.90.90 -> 80.80.80.80	DNAT	90.90.90.90 -> klientska_IP	eth1
	FORWARD
	POSTROUTING	90.90.90.90 -> klientska_IP	SNAT	70.70.70.70 -> klientska_IP	eth0

	--- 
Mám nástřel řešení, ale není to správně:
iptables -t nat -A PREROUTING -i eth0 -d 70.70.70.70 -p tcp --dport 4444 -j DNAT --to-destination 90.90.90.90:3389
iptables -A FORWARD -i eth0 -p tcp --dport 3389 -o eth1 -d 90.90.90.90 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -d 90.90.90.90 -j MASQUERADE
Až po toto místo si myslím, že by to mohlo fungovat. Otázkou je, jak zajistit, aby se správně namapovala původní adresa klienta.
# iptables -t nat -A PREROUTING -i eth1 -p tcp -s 90.90.90.90 j MASQUERADE  # tímto krokem si nejsem jistý, tady potřebuju dostat zpět adresu klienta
iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -SNAT --to-destination 70.70.70.70
Můžete mi s tím pomoct?

Díky.

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

8.9.2015 19:07 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Skrytí serveru za nat
Odpovědět | | Sbalit | Link | Blokovat | Admin
Stačí první blok příkazů. Linux má plně stavový firewall, pamatuje si, které spojení se přeložilo jedním směrem a opačný směr daného spojení přepisuje automaticky.
Jendа avatar 8.9.2015 19:15 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Skrytí serveru za nat
Odpovědět | | Sbalit | Link | Blokovat | Admin
Skrytí za nat
Pozor, pokud je to z důvodu bezpečnosti nebo anonymity, NAT ti nepomůže, Linux bude vesele přeposílat pakety z jedné strany na druhou. V takovém případě je NAT zbytečný (pokud současně neřešíš, že ti došly IP adresy) a chceš použít firewall. Navíc je potřeba udělat echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore aby to neleakovalo adresy zevnitř které mají zůstat skryté a možná některá další nastavení, o kterých nevím.
Já to s tou denacifikací Slovenska myslel vážně.
8.9.2015 22:24 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Skrytí serveru za nat
aby to neleakovalo adresy zevnitř které mají zůstat skryté

Tohle už by skoro šlo kvalifikovat jako "šíření poplašné zprávy". Co takhle aspoň napsat, že se to týká výhradně adres toho samotného počítače, který dělá ten NAT (tj. ne až tak moc "zevnitř")?

9.9.2015 15:51 Gepard
Rozbalit Rozbalit vše Re: Skrytí serveru za nat
Bezpečnost je důležitá. Mám ten arp_ignore řešit? Vzhledem k tomu, že mám všechno drop nečekám problémy. Povoluji jenom forward.
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 3389 -j DNAT --to 90.90.90.90:3389
iptables -A FORWARD -i eth0 -p tcp --dport 3389 -d 90.90.90.90 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
Jendа avatar 9.9.2015 16:28 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Skrytí serveru za nat
Vzhledem k tomu, že mám všechno drop
Si zkus zvenku ten arping, nezkoušel jsem to, ale čekal bych, že to pojede o vrstvu pod tím.

Btw. jestli je tohle kompletní politika, tak nic moc, určitě chceš povolit třeba ICMP na tom venkovním interface.
Co takhle aspoň napsat, že se to týká výhradně adres toho samotného počítače, který dělá ten NAT (tj. ne až tak moc "zevnitř")?
Psal jsem jako jaký důvod jsem to vyhodnotil a z toho jsem odvodil, že nechce, aby se vědělo ani o tom, že tam vůbec nějaká další síť je. Pokud neplatí podmínka uvozená slovem "pokud", není třeba se čertit…
Max avatar 8.9.2015 19:36 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Skrytí serveru za nat
Odpovědět | | Sbalit | Link | Blokovat | Admin
Buď chceš jen NAT + pár port forwardů, nebo chceš nat 1:1 (všechny požadavky na server A přesměrovat na server B)

Zapneš port forwarde :

sysctl -w net.ipv4.ip_forward=1
# nebo :
echo 1 > /proc/sys/net/ipv4/ip_forward
a pro trvalé uložení :
/etc/sysctl.conf
net.ipv4.ip_forward = 1

1. varianta : nastavení NAT 1:1
iptables -t nat -A PREROUTING -i eth0 -d 70.70.70.70 -j DNAT --to-destination 90.90.90.90
iptables -t nat -A POSTROUTING -o eth0 -s 90.90.90.90 -j SNAT --to-source 70.70.70.70
2. varianta : nastavení NAT + port forwarde portu 80 a 443 :
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j DNAT --to 90.90.90.90:80
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j DNAT --to 90.90.90.90:443

Tebou uvedený příklad má pár chybek. Jednak není jisté, zda máš povolen forwarde. Dále máš špatně toto :
iptables -t nat -A POSTROUTING -o eth1 -d 90.90.90.90 -j MASQUERADE
Když už chceš specifikovat adresu klienta a natovat jen tu, tak (uvádíš odchozí iface - ten vystrčený do netu):
iptables -t nat -A POSTROUTING -o eth0 -s 90.90.90.90 -j MASQUERADE
Zdar Max
Měl jsem sen ... :(
9.9.2015 10:54 Gepard
Rozbalit Rozbalit vše Re: Skrytí serveru za nat
Super, díky, varianta 2 je dokonalá.
8.9.2015 22:27 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Skrytí serveru za nat
Odpovědět | | Sbalit | Link | Blokovat | Admin
FAQ

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.