Beállítás szerver oldalon
Extra biztonságot ad az SSL/TLS kapcsolatok mellett, segítséget nyújt a Dos (Denial of Service) támadások kivédéséhez és az UDP port elárasztása (flood) ellen.
# cd /etc/openvpn # openvpn --genkey --secret ta.key
Diffie-Hellman paraméter15.2. A Diffie-Hellman protokoll a kulcsegyeztetés feladatát oldja meg két távoli fél között. Bővebben például a bibliográfiában szereplő [2] anyagban olvashatunk róla.
# cd /etc/openvpn # openssl dhparam -out dh2048.pem 2048 Generating DH parameters, 2048 bit long safe prime, generator 2 This is going to take a long time ...............................................................................+ ................................................................................ .............................++*++*
subsection:cert. fejezetben leírtaknak megfelelően
generáljunk tanúsítványt ezen szerver részére is, valamint a
vpn-en csatlakozni kívánó kliensek részére is. Ez utóbbiaknál
lényegtelen a nevük, mindössze arra kell figyelnünk, hogy a
generált tanúsítvány nevének megfelelő nevű fájlba kell majd
beírnunk a szerveren az adott kliensre vonatkozó dolgokat (a
/etc/openvpn/client.d könyvtárban). Az egyszerűség és az
érthetőség kedvéért nevezzük vpn001.akarmi.intra néven az
első kliensünket.
Nézzük meg, mit is tartalmazzon a server.conf nevű
konfigurációs állomány:
local tűzfal.külső.ip.címe port 1194 proto udp dev tun ca /etc/ssl/certs/CA.crt cert /etc/ssl/certs/tuzfal.akarmi.intra.crt key /etc/ssl/private/tuzfal.akarmi.intra.key.nopass dh /etc/openvpn/dh2048.pem server 10.10.0.0 255.255.255.248 ifconfig-pool-persist /etc/openvpn/ipp.txt client-config-dir /etc/openvpn/client.d push "dhcp-options DNS 192.168.10.253" route 10.10.1.0 255.255.255.0 keepalive 10 120 tls-auth /etc/openvpn/ta.key 0 comp-lzo max-clients 100 user nobody group nogroup persist-key persist-tun status /var/log/openvpn-status.log log /var/log/openvpn.log verb 5 management localhost 7505
Az opciók magyarázata:
- local
- A tűzfalnak az az IP címe, amelyen figyelnie kell
az
openvpn-nek. - port
- Az a portszám, ahol figyelnie kell az
openvpn-nek. - proto
- A kapcsolódáshoz használt protokoll.
- dev
- A ,,tun'' beállítás IP tunnelt hoz létre, a ,,tap''
beállítás pedig ethernet tunnelt. Ha bridge-et szeretnénk
csinálni, akkor a ,,tap'' beállítást kell használnunk.
- ca
- A CA tanúsítványa.
- cert
- A tűzfal részére kiállított tanúsítvány.
- key
- A tűzfal titkos kulcsa.
- dh
- A Diffie Hellman paraméter.
- server
- Itt állítunk be a szervernek egy alhálózatot,
amelyből majd a klienseknek adhat címet. A szerver fenntartja
magának a 10.10.0.1-es IP címet, amely címen minden kliens
elérheti. Kommentezzük ki ezt a sort, ha bridge-et szeretnénk
beállítani.
- ifconfig-pool-persist
- Ebben a fájlban tartjuk nyilván a
kliens - IP cím összerendeléseket. Ha újraindítjuk az
openvpn-t, akkor ezáltal lehetőség nyílik arra, hogy a visszacsatlakozó kliensek ugyanazt az IP címet kapják, amit korábban. - client-config-dir
- Az a könyvtár, ahol a kliensek (szerver
oldali) konfigurációs állományait tároljuk. Ne felejtsük el
létrehozni!
- push "dhcp-options DNS 192.168.10.253"
- A klienseknek
kiküldi a névfeloldást végző szerver IP címét. Ne felejtsük el
odaengedni a csomagszűrőben a klienseket ehhez a címhez!
- route
- Ezzel állíthatjuk be, hogy milyen IP tartományokat
kezeljen a szerverünk. Több ilyen sort is tartalmazhat a
konfigurációs állomány.
- keepalive
- Ping-szerű üzeneteket küld oda-vissza a linken
keresztül, hogy észrevegye, ha a kapcsolat leáll. Minden 10
másodpercben küld csomagot, és ha nem jön válasz, akkor 120
másodperc után veszi úgy, hogy leállt a kapcsolat.
- tls-auth
- Extra biztonságot ad az SSL/TLS kapcsolatok
mellett, segítséget nyújt a Dos (Denial of Service) támadások
kivédéséhez és az UDP port elárasztása (flood) ellen. A
szerveren 0-t kell beállítani, a klienseken pedig 1-et.
- comp-lzo
- Engedélyezi a tömörítést.
- max-clients
- Maximum az itt megadott számú kliens
kapcsolódhat egyszerre.
- user
- Melyik felhasználó nevében fusson az
openvpn. - group
- Melyik csoport nevében fusson az
openvpn. - status
- Egy fájlnevet kell megadnunk, amelybe percenként
rövid statisztika készül, mutatva az aktuális kapcsolatokat.
- log
- Alapértelmezésben a syslog-ba kerülnek az
openvpnüzenetei, de ezzel az opcióval küldhetjük külön fájlba. - verb
- Az
openvpn,,bőbeszédűségének'' beállítása. - management
- Egy menedzsment interfészt állít be, amelyet a
megadott porton lehet elérni (
telnetsegítségével).
| Fájlnév | Szükséges | Micsoda | Titkos |
| CA.crt | a szerver + minden kliens | Root CA tanúsítvány | Nem |
| CA.key | csak a kulcsgeneráló gépen | Root CA kulcs | Igen |
| dh2048.pem | csak a szerveren | Diffie Hellman paraméter | Nem |
| ta.key | szerver + minden kliens | Extra biztonság | Igen |
| tuzfal.akarmi.intra.crt | csak a szerveren | Szerver tanúsítvány | Nem |
| tuzfal.akarmi.intra.key.nopass | csak a szerveren | Szerver kulcs | Igen |
| vpn001.akarmi.intra.crt | csak a kliens1 gépen | Kliens1 tanúsítvány | Nem |
| vpn001.akarmi.intra.key.nopass | csak a kliens1 gépen | Kliens1 kulcs | Igen |
Ilyen párokat lehet kialakítani:
[ 1, 2] [ 5, 6] [ 9, 10] [ 13, 14] [ 17, 18] [ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38] [ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58] [ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78] [ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98] [101,102] [105,106] [109,110] [113,114] [117,118] [121,122] [125,126] [129,130] [133,134] [137,138] [141,142] [145,146] [149,150] [153,154] [157,158] [161,162] [165,166] [169,170] [173,174] [177,178] [181,182] [185,186] [189,190] [193,194] [197,198] [201,202] [205,206] [209,210] [213,214] [217,218] [221,222] [225,226] [229,230] [233,234] [237,238] [241,242] [245,246] [249,250] [253,254]
A menedzsment rész viszonylag egyszerűen működik:
$ telnet localhost 7505
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
>INFO:OpenVPN Management Interface Version 1 -- type 'help' for more info
help
Management Interface for OpenVPN 2.0.9 i386-pc-linux [SSL] [LZO] [EPOLL] built on Dec 2 2006
Commands:
auth-retry t : Auth failure retry mode (none,interact,nointeract).
echo [on|off] [N|all] : Like log, but only show messages in echo buffer.
exit|quit : Close management session.
help : Print this message.
hold [on|off|release] : Set/show hold flag to on/off state, or
release current hold and start tunnel.
kill cn : Kill the client instance(s) having common name cn.
kill IP:port : Kill the client instance connecting from IP:port.
log [on|off] [N|all] : Turn on/off realtime log display
+ show last N lines or 'all' for entire history.
mute [n] : Set log mute level to n, or show level if n is absent.
net : (Windows only) Show network info and routing table.
password type p : Enter password p for a queried OpenVPN password.
signal s : Send signal s to daemon,
s = SIGHUP|SIGTERM|SIGUSR1|SIGUSR2.
state [on|off] [N|all] : Like log, but show state history.
status [n] : Show current daemon status info using format #n.
test n : Produce n lines of output for testing/debugging.
username type u : Enter username u for a queried OpenVPN username.
verb [n] : Set log verbosity level to n, or show if n is absent.
version : Show current version number.
END
Kosa Attila
2009-03-23