IPCop + VPN bridge
A feladat a k0vetkező. A cégnek van egy telephelye, belső hálózata Internet eléréssel. Az Internet elérést egy router hozza létre. A router mögött a proxy szolgáltatást és egyéb funkciókat egy IPCop biztosítja (akár DMZ-ből).
Ehhez a hálózathoz akar biztonságosan csatlakozni egy gép az Interneten keresztül, mégpedig olyan módon, mintha a gép a belső hálózaton lenne. Ehhez VPN kapcsolatot kell felépítenie és ezt a VPN kapcsolatot a VPN szervernek össze kell kapcsolnia a belső hálózattal.
Hozzávalók:
- 1 db IPCop 1.4.21-es (www.ipcop.org)
- 1 db módosított kernel, amiben van bridge támogatás (2.4.36-os vagy 2.4.36 SMP-s)
- brctl bináris (ki lehet másolni az embcop féle módosított ipcop-ból)
- ZERINA (ez az OpenVPN IPCop-ba beépülő verziója)
- bridge létrehozó és törlő script
- és egy jó szövegszerkesztő, ha a VI nem elég kézre álló: Joe
Azt feltételezzük, hogy a router és az Internet adott és működik. A router belső címe 192.168.1.1. A külső nem érdekes jelen esetben, de elérhető az Interneten pl. a pps.gotdns.com címen. Első lépésként fel kell telepíteni az IPCop-ot majd ki kell cserélni a kernelt. Az IPCop telepítés nem része ennek a leírásnak. Ha az IPCop telepítve van és működik is (azaz a Green oldalon lévő kliensek a proxy-n keresztül tudnak pl. böngészni, az IPCop webes felülete elérhető és az SSH elérést is engedélyeztük) akkor jöhet a kernel csere. Ehhez le kell tölteni a fentebb linkelt kernelek valamelyikét, pl. a sima 2.4.36-ost. Ezt fel kell másolni az IPCop gépre (vagy azon kell letölteni), pl scp-vel (vindóz alatt winscp-vel). Az IPCop konzoljáról vagy egy SSH konzolról kell elvégezni a kitömörítést, ezzel a paranccsal:
tar xjf ipcop-1.4.21-kernel-2.4.36.6.tar.bz2 -C /
Majd ezt is le kell futtatni:
touch /var/run/need-depmod-2.4.36
Ez utóbbi ha nem megy, akkor sincs nagyobb baj. Nekem nem sikerült. Az IPCop újraindítása után már a módosított kernel fog működni. Most lehet felmásolni a brctl programot, ami a bridge létrehozásához kell majd és a ZERINA telepítőjét, ami az OpenVPN szervert adja. A brctl felmásolása után futtathatóvá kell tenni a fájlt (chmod 755 brctl). Az IPCop konzoljáról vagy egy SSH konzolról a Zerina telepítőjét ki kell csomagolni (tar xzvf ZERINA-0.9.5b-Installer.tar.tar) és le kell futtatni (./install). Ha nem fut le, az azért van mert az IPCop nem megfelelő verzióját találja. Ezzel nem kell különösebben foglalkozni, ki kell szedni az install scriptből a verzió ellenőrzést. Ez az a pár sor amit el kell távolítani a fájlból:
A módosított script letölthető innen (ne felejts el futtathatóvá tenni):
Ha magunk akarjuk a scriptet módosítani, akkor a vi vagy a joe használható. A joe telepítése a következő: felmásoljuk a joe35.tar.tar fájlt az IPCopunkra, majd ott a tar xzvf joe35.tar.tar paranccsal kicsomagoljuk. Belépünk a joe35 könyvtárba és ott elindítjuk a telepítést a ./install -i paranccsal. Ezután a joe már használható. A joe-val megnyitott fájlt könnyen lehet szerkeszteni. A két legfontosabb amit a joe-ról tudni kell: 1. kilépés mentés nélkül: ctrl+c, 2. kilépés mentéssel: ctrl+k majd x.
OpenVPN konfigurálás
Az első lépés a konfigurálásban az IPCop webes felületéről történik. A VPN menüben az OpenVPN alatt kell kezdenünk. Ami itt fontos és be kell állítani:
- engedélyezni kell a Red interfészen az OpenVPN-t
- meg kell adni a publikus nevét a szerverünknek (ahogy az Internetről is elérhető)
- az OpenVPN device TAP legyen
- a destination portot 1194-re kell állítani
- az LZO compression-t be kell kapcsolni
- Az OpenVPN Subnet mezőben mindegy mi van, mert nem ezt fogjuk használni.
Ha ez kész, akkor jöhet a Generate Root Certificate. Kattints a gombra!
Ennél a pontnál meg kell adni a szervezet nevét, a publikus elérhetőségét a szervernek (FQDN) és az országot.
Ha ez is kész, akkor készíteni kell egy kliens csatlakozásához szükséges certificate és konfig fájlt. Ez az oldal legalsó részén lévő add gombbal indul:
Meg kell adni a kapcsolat típusát, ami Host-to-Net legyen, majd még egyszer egy Add gombra kattintva meg kell adni a többi adatot is: kapcsolat neve (PPS), Felhasználó neve (Kapcsolat1) és a jelszó, ami majd a kapcsolat felépítéséhez kell a VPN kliens program számára (PKCS12 File Password mezőbe):
Ha ezeket sikeresen beállítottuk, akkor a VPN szerver már majdnem rajtra kész, de még nem indítjuk el. A szerver konfigurációján még reszelni kell egy kicsit, de azt már nem a webes felületről tesszük. A webes felület a későbbiekben már csak a szolgáltatás leállítására vagy újraindítására használható! Ez fontos! A certificate rész kb így néz ki:
Lépjünk be az IPCop konzolra és nyissuk egy szövegszerkesztővel meg a /var/ipcop/ovpn/server.conf fájlt. A fájlt tartalma ez legyen:
Amit erről a konfigurációról tudni kell:
- tap interfészt használ
- a 1194-es UDP porton kommunikál
- a szerver bridge üzemmódban fog működni, ami azt jelenti, hogy a VPN kliensek a helyi hálózati IP cím tartományból fognak IP címet kapni.
- a kliens megkapja a DNS és a WINS szerver IP címét.
- a kliens megkapja a route-ot a DNS és a WINS eléréséhez, ami a helyi hálózat default gateway IP címe
Most kell lefuttatni az IPCop-on a bridge-start.sh scriptet. Ez a script létrehozza a tap0 és br0 interfészt, valamint az egészet összefogja (birdzseli) at eth0-val. Ahhoz, hogy ez működjön is, az IPCop tűzfalához is hozzá kell adni 3 új szabályt, az alábbi parancsokkal:
iptables -A INPUT -i tap0 -j ACCEPT
iptables -A INPUT -i br0 -j ACCEPT
iptables -A FORWARD -i br0 -j ACCEPT
Elértünk ahhoz a ponthoz, ahol a VPN szervert elindíthatjuk az IPCop webes felületéről. Be kell lépni a VPN menüben az OpenVPN-be és a Start OpenVPN server gombra kell kattintani. Ha minden jó, akkor a Current OpenVPN server status zölden fog megjelenni, azaz az IPCop-unk várja a kliens bejelentkezését.
A beállítások véglegesítése az IPCop gépen
Ahhoz, hogy egy restart után is működjön minden, a /etc/rc.d/rc.local fájlba kell beírni ezeket a sorokat:
#!/bin/sh
#Added for zerina - BEGIN
echo "Starting bridge"
/root/bridge-start.sh
echo "Starting openvpn (if enabled)"
/usr/local/bin/openvpnctrl --start-daemon-only
iptables -A INPUT -i tap0 -j ACCEPT
iptables -A INPUT -i br0 -j ACCEPT
iptables -A FORWARD -i br0 -j ACCEPT
#Added for zerina - END
A kliens oldal beállítása
A kliensnél egy vindózos kliens beállítása a következő. Az IPCop webes felületéről le kell tölteni a kliens csatlakozásához előzőleg létrehozott certificate-et és konfig fájlt. Ez az OpenVPN menüből érhető el, a Client and status control résznél, az ikonra kattintva. Erre egy zip fájlt tölt le a böngésző program. A zip fájl tartalmát kell kicsomagolni majd. A vindózos OpenVPN + GUI innen tölthető le: openvpn-2.0.9-gui-1.0.3-install.exe A kliens+GUI feltelepítése után az előbb letöltött zip fájl ki kell csomagolni a
C:\Program Files\OpenVPN\config könyvtárba. Ezután ha az óra melletti ikonra kattintunk jobb gombbal, akkor megjelenik egy status ablak és a jelszó bekérő ablak. Azt a jelszót kell megadni, amit a kliens oldali cetrificate létrehozásához használtunk előzőleg.
A helyes jelszó megadása után a kapcsolat létrejön. Ha mégsem jönne össze, akkor a példán látható ablakban meg fog jelenni az oka, pl hibás vagy ismeretlen paraméter. Tipikus, amikor tap-mtu sor van a konfig fájlban, mert a tap interfésznek nincs ilyen opciója. Ekkor a konfig fájlt meg kell nyitni egy szövegszerkesztővel (pl.: notepad) és ki kell törölni azt a sort vagy egy # jellel a sor elején ki lehet kommentezni.
Az összes szükséges fájl egyben zippelve:
Megjegyzések
Nagyon jó leírás. Lenne kérdésem.
- Nekem 1.4.21-es ipcop van. Ebben van vpn az mivel rosszabb, mint az openvpn?
- Mindenképpen kell e kernelfrissítés és a többi, hogy használhassam a zerinat?
Bocs, még csak kezdő vagyok.
Csaba