Routolás Beállítása ETH0 És TUN0 Között

Fórumok

Adott a következő helyzet:

Egy gép, amely DMZ-ben van, s 1 db hálózati kártyával (ETH0) rendelkezik.

Erről a gépről elérhető a belső hálózat egyéb része, ami a DMZ-n kívül van.

El akarom érni, hogy kívülről (NET-ről) is direktbe hozzáférjek a belső hálózat gépeihez, ezért élesztettem ezen a gépen egy OpenVPN szervert (TUN0).

Az lenne a kérdésem, hogyan tudom a legegyszerűbben megoldani, hogy az OpenVPN-el csatlakozott kliensek egy meghatározott része be tudjon nézni a belső hálózatra, a többi viszont ne, s emellett a belső hálózat NE lásson vissza az OpenVPN-el felcsatolt külső kliensekre.

A most használt tűzfalam a következő, ezt szeretném bővíteni:

DENY_IP="61.158.205.230"
TCP="ssh smtp domain www ftp ftp-data auth https cvspserver"

# Alaphelyzet Beállítása
iptables -F
iptables -I INPUT -j ACCEPT -i lo
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
#
# Átirányítás Engedélyezése
echo "1" > /proc/sys/net/ipv4/ip_forward
#
# Tiltja a Kapcsolatot Adott IP Címekről ...
for i in $DENY_IP; do iptables -A INPUT -s $i -j DROP; done
#
# Engedélyezett "TCP" Csomagok Feltöltése ...
for i in $TCP; do iptables -A INPUT -j ACCEPT -p tcp --dport $i; done
#
# Minden Más Tiltása
iptables -A INPUT -j REJECT -p tcp --syn --reject-with tcp-reset

Köszönöm a segítséget!

Hozzászólások

Ha már eleve a belső hálózatot látja, akkor a VPN kapcsolat után is látni fogja, csak a VPN konfigba fel kell venned a belső hálózat route-ját egy "push route"-tal.
Az, hohy szelektálni akarsz a VPN-s emberkék között, az már nehezebb, hacsak nem fix IP-t osztasz nekik.

Első körben az elvi aggályaimnak adnék hangot. ;-)
Szóval ha van olyan szolgáltatás, amit kintről el kéne érni, akkor annak a DMZ-ben a helye, ha meg nem szabad kintről elérni, akkor jogos hogy nem a DMZ-ben van, de akkor ez az OpenVPN-es huncutság ezen policy megszegését jelenti. Félre értés ne essék: el tudom fogadni, hogy kéne olyan szolgáltatás, amelyet kintről nem mindenki számára kell elérhetővé tenni. Erre valóban jó megoldás lehet az OpenVPN, de ezesetben az OpenVPN-nek a tűzfalon a helye. A te megoldásod ez utóbbi esetre hajaz azzal a felállással, hogy nem te vagy a tűzfal adminja, így kerülő megoldásként egy másik gépen próbálod ezt a funkciót megvalósítani.

A gyakorlati tanácsok kapcsán a következőkre érdemes oda figyelni:

  • a kliensek közötti forgalom tiltva legyen ( --client-to-client kapcsoló nem kell! )
  • engedélyezni kell a forward forgalmat ( /proc/sys/net/ipv4/ip_forward és FORWARD lánc beállítások )
  • az OpenVPN-es forgalmat maszkolni kell! Amikor a belső gép válaszol, akkor ha a cél IP a kérő gép OpenVPN-ben kapott IP címe, akkor az a tűzfalig el fog jutni - a tűzfal meg nem fogja tudni, hogy melyik gép is tudná ezt tovább vinni. Ergo a válaszcsomagok nem fognak visszajutni a címzetthez. A maszkolás ezen segít, mert innen kezdve a kérés a DMZ-s gép neván fut tovább - azt viszont tudja a tűzfal, hova kell visszaadni.
  • a maszkolás automatikusan megoldja azt a problémádat, hogy bentről az OpenVPN-es kliensek ne legyenek elérhetőek, mert a maszkolás miatt sosem fognak látszani, illetve a tűzfal se fogja ezen cél IP-ket jó irányba route-olni. Ezzel együtt ha biztosra akarsz menni, akkor tilthatod a bentről az OpenVPN felé menő kapcsolatok létrehozatalát azzal, hogy ebben az irányba nem engeded a --state NEW forgalmat. Így új kapcsolat ebbe az irányba nem jöhet létre, a másik irányból kialakított kapcsolatok viszont működni fognak. ( De mondom, szerintem ez felesleges. )
  • azt a részt nem teljesen értem, hogy mit jelent: az OpenVPN kliensek egy része be tudjon nézni a belső hálóra, a többiek meg ne. Nem az a legegyszerűbb, ha a többiek nem kapnak tanúsítványt sem és így OpenVPN kapcsolatot sem tudnak kihúzni? A DMZ-ben lévő gép eleve elérhető OpenVPN nélkül is - legalábbis ezt mondtad. Ha meg be tud menni OpenVPN-nel is, de nem mehet tovább, akkor mi az értelme annak, hogy be tud menni OpenVPN-en keresztül is? Mindezzel együtt hogy a problémára is válaszoljak: az OpenVPN-ben certnév-IP cím összerendelést kell csinálni, így minden kliens minden esetben ugyanazt az általad megadott IP-t fogja kapni, bármikor is jön be. Innen kezdve a "többiek" IP-jét tiltod a tűzfal szabályokban és máris nem jutnak tovább. Illetve ezt csinálhatod fordítva is - magasabb security érték, ugyebár -, mikoris a FORWARD alapban tiltott és az a pár IP, amit továb engedsz, külön szabályon tovább mehet.

Remélem, tudsz használni valamit abból, amit itt leírtam...