Kategória: Szoftver

Az előző cikkben megtörtént a feladat leírása.

Lássunk hozzá a router felprogramozásához

Kössük a számítógépünket a router egyik LAN portjához. Az OpenWRT alapértelmezésként a 192.168.1.1 IP címet rendeli a routerhez.

Az első intézkedésünk, hogy a Routeren egy erős jelszót állítunk be. Erre telepítés után azonnal felhívja a figyelmüket.

A legegyszerűbb, ha SSH-val root-ként bejelentkezünk (nem kér jelszót)

passwd

A jelszó feleljen meg a szokásos elvárásoknak.

Frissítsük fel a telepíthető csomagok listáját:

opkg update

Telepítsünk jól használható webes kezelő felületet, magyar nyelvet és a https hozzáférést.

opkg install luci-theme-openwrt luci-i18n-openvpn-hu luci-ssl

Egy könnyen kezelhető szövegszerkesztő

opkg install nano

Rakjuk fel az OpenVPNt és a kezelő felületét (magyarul is)

opkg install  openvpn-openssl luci-app-openvpn luci-i18n-openvpn-hu

sftp szerver, hogy egyszerűen tudjunk fájlokat másolni az eszközre (nincs grafikus kezelő felülete, csak egy kiegészítés az SSH-hoz)

opkg install openssh-sftp-server

Frissítsük fel a routeren található csomagokat (ezt úgy tűnik érdemes hetente elvégezni):

opkg list-upgradable | awk -F " " '{print "opkg upgrade "$1}' >up.sh
sh up.sh
rm up.sh

Ezzel a scripttel először elkészítjük a frissítendő csomagok listáját, awk-val elkészítjük a scriptet, ami felfrissíti a programokat (opkg upgrade program_neve formátumban), majd ezt lefuttatjuk.

Sajnos egy lépcsőben nem lehet a feladatot elvégezni pedig az egysoros script milyen elegáns:

opkg list-upgradable | awk -F " " '{print "opkg upgrade "$1}' | sh

mert az első opkg még zárolja a fájlokat, amikor a második már elindul.

Persze itt is lehet trükközni:

opkg list-upgradable | awk -F " " '{print "opkg upgrade "$1}' |sort| sh
Itt a sort utasítással egy kicsit húzzuk az időt, hogy az első opkg-nak legyen ideje kilépni, mielőtt az update elkezdődik. (Így már lehet választani a két verzió között.)

A csomagok frissítésének az ára, hogy a rendelkezésünkre álló tárhely egy jelentős részét elhasználja, ezért ha rosszul állunk tárhellyel, ezt a lépést kénytelenek vagyunk kihagyni.

Tegyük biztonságosabbá a routerre való bejelentkezést

Az ssh bejelentkezés biztonságát két ponton tudjuk emelni:

  • A szokásos (szabványos) 22-es portot átírjuk egy másikra
  • A jelszavas bejelentkezés helyett kulcsos bejelentkezést írunk elő

A webes felületen http helyett https protokoll használatát tudjuk előírni.

A /etc/config/dropbear fájl vizsgálatakor az OpenSSH config fájlhoz szokott szem elkerekedik. Összesen öt sort tartalmaz. Ha az összes lehetséges beállítást megtesszük, akkor sem lesz 11 sornál hosszabb.

Másoljuk a publikus kulcsunkat a /etc/dropbear/authorized_keys fájlba. Ezt megtehetjük fájl másolással, vagy a LUCI felületen. Az OpenSSH ssh-copy-id parancsa ebben az esetben nem segít.
A kulcs átmásolása után egy másik terminálból próbáljunk meg bejelentkezni. Ezúttal jelszó nélkül kell sikerülnie (hiszen a kulcs azonosít).
Ha a bejelentkezés nem sikeres, lehet hibát keresni a nyitva hagyott kapcsolaton keresztül.
Ha sikeres volt a próba, tiltsuk le a jelszavas bejelentkezést, és állítsuk át a portot 22-ről egy másikra.

uci set dropbear.@dropbear[0].PasswordAuth=off
uci set dropbear.@dropbear[0].port=1234
uci commit dropbear

Ezzel, amit az ssh-val lehetett megtettük. (Még lehetne felhasználót létrehozni az adminisztrációhoz, de akkor a LUCI felület lesz a gyenge pont, nem nyújt valós többletbiztonságot, csak ha a webes felületet letiltjuk).

Tegyünk némi biztonságot a LUCI webes felületre is

Követeljük meg a https használatát (sokkal többet nem tehetünk, csak ha a fantáziánkat használjuk).

uci set uhttpd.main.redirect_https='1'
uci commit

Kezdjük el az OpenVPN felprogramozását

A programozáshoz UBUNTU (linux) munkaállomást használunk, amire telepítettük az sshfs csomagot.

Innen 4-féle módon is folytathatjuk a feladat megoldását:

  1. A luci kezelő felületén állítjuk be az OpenVPN szervert
  2. A server.cnf fájlt a /etc/openvpn mappába másoljuk
  3.  „uci” utasításokkal állítjuk be commandline módban
  4. a /etc/config/openvpn fájl szerkesztésével

Vegyük sorra:

1., A luci kezelőfelület csak a static key modelt támogatja. Most nem ez a választott eljárás.

2., Ha a config állományt a /etc/openvpn mappába másoljuk, akkor a router indításakor elindul, azonban a működését a luci felületről nem tudjuk befolyásolni (ezt használjuk teszteléshez).

3., Az „uci” utasításokkal létrehozott VPN-t lehet grafikus felületről is kezelni.

4., Egyenértékű a 3., ponttal. az uci utasítások hozzák létre illetve módosítják az állományt.

Válaszuk a 3. és 4. opciót. Egy minimális plusz munkával valamivel elegánsabb eredményt kapunk.

Jelentkezzünk be a routerre:

Telepítsük fel a felhasználó kezelőt:

opkg update
opkg install shadow-useradd

Hozzunk létre egy felhasználót az OpenVPN-nek

adduser vpn

A PC-n csatoljuk fel a router /etc mappáját (ezért telepítettük az sftp-t a routerre):

sshfs root@192.168.1.1:/etc/ /mnt

Ennél korrektebb:

mkdir ~/mnt

sshfs root@192.168.1.1:/etc/ ~/mnt

Hozzuk létre a szerver mappát:

sudo mkdir /mnt/openvpn/client

Másoljuk ide a szükséges kulcsokat. Ezek:

  • ca.crt
  • kliens1.key
  • kliens1.crt
  • ta.key
  • dh4096.pem

(Már érdemes elliptic curve kulcsokat használni a gyorsabb működés érdekében. Az OpenVPN a 2.4 verziótól támogatja.)

A routeren  hozzuk létre az interfészt a VPN-hez

uci set network.vpn1=interface
uci set network.vpn1.ifname=tun0
uci set network.vpn1.proto=none
uci set network.vpn1.auto=1

Ez után hozzuk létre a VPN kapcsolatot:

uci set openvpn.vpnclient=openvpn
uci set openvpn.vpnclient.enabled=1
uci set openvpn.vpnclient.dev=tun
uci set openvpn.vpnclient.proto=udp
uci set openvpn.vpnclient.verb=3
uci set openvpn.vpnclient.ca=/etc/openvpn/client/ca.crt
uci set openvpn.vpnclient.cert=/etc/openvpn/client/kliens1.crt
uci set openvpn.vpnclient.key=/etc/openvpn/client/kliens1.key
uci set openvpn.vpnclient.cipher=AES-192-CBC
uci set openvpn.vpnclient.auth=sha256
uci set openvpn.vpnclient.tls-auth='/etc/openvpn/client/ta.key 1'
uci set openvpn.vpnclient.client=1
uci set openvpn.vpnclient.remote_cert_tls=server
uci set openvpn.vpnclient.remote="proba.itkommando.hu 1192"
uci set openvpn.vpnclient.persist_key='1'
uci set openvpn.vpnclient.persist_tun='1'
uci set openvpn.vpnclient.comp_lzo='1'
uci set openvpn.vpnclient.user='vpn'
uci set openvpn.vpnclient.group='vpn'
uci commit openvpn

Az oldal használatával elfogadja, hogy az sütiket használ További információ

A sütik használatát érdemes engedélyezni a böngészőben.
The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Bezár