Az ASUS routerek nem csupán a megbízhatóságukról és nagy teljesítményükről híresek, de mindemellett számos olyan modell is elérhető, mely a gyári alapfunkciókhoz képest sokkal többre is használható, gyakorlatilag egy önálló szerverként is funkcionálhat.

Ebben az útmutatónkban most egy olyan routert rakunk össze, amely végeredményben nem tér el nagy mértékben a gyári firmware-től, így többek között az oda-vissza átjárhatóság is megmarad a hivatalos és az egyedi megoldás között, viszont számos olyan funkció válik elérhetővé, mely megkönnyítheti az életünket, ráadásul sokkal több választási lehetőségünk lesz, a fokozott biztonsági megoldásokról nem is beszélve.

Az alapokat az Asuswrt-Merlin firmware adja, amelyen az Entware csomagkezelő gondoskodik a megfelelő csomagok elérhetőségéről, a Merlinben elérhető amtm szkripttel lehet számos megoldást egy az egyben úgy telepíteni, hogy a webes felhasználói felületen is azonnal elérhetők lesznek az egyes beállítások, illetve néhány saját szkripttel beállítunk majd kényelmi funkciókat, valamint a műveletek végén telepítjük a Nextcloudot, amely egy nyílt forráskódú, elsődlegesen fájlmegosztásra és együttműködésre kitalált magánfelhős platform rengeteg bővítési lehetőséggel.

Mindezek mellett megerősítjük majd a biztonsági beállításokat is, például jelszavas bejelentkezés helyett kulcsalapú hitelesítést állítunk be a router SSH-elérésénél, a lighttpd-vel saját webhelyeket tehetünk elérhetővé a routerünkön PHP-futtatási lehetőség mellett, illetve a netdata telepítésével részletes, élő statisztikát jeleníthetünk meg a router erőforrásairól és az egyes szolgáltatások aktuális állapotáról.

Az ASUS routerrel kapcsolatos előfeltételek és rendszerkövetelmények

Elsőként is rendelkeznünk kell egy támogatott routerrel. Az aktuális, naprakész lista elérhető ezen a címen. Az útmutató megírásának időpontjában az alábbi ASUS routerek tartoznak a támogatott eszközök körébe:

  • RT-AC66U_B1 (RT-AC68U firmware)
  • RT-AC68U, RT-AC68P, RT-AC68UF
  • RT-AC2900 (RT-AC86U firmware)
  • RT-AC1900 & RT-AC1900P (RT-AC68U firmware)
  • RT-AC3200
  • RT-AC86U
  • RT-AC88U
  • RT-AC3100
  • RT-AC5300
  • RT-AX88U
  • RT-AX56U
  • RT-AX58U
  • RT-AX3000 (RT-AX58U firmware)
  • RT-AX86U
  • GT-AC2900

Továbbá a rendszer telepítéséhez (tehát nem a firmware-hez, hanem a további alkalmazások és szolgáltatások elérhetővé tételéhez) és a saját csomagok üzembe helyezéséhez csatlakoztatnunk kell egy tárhelyet a routerhez. Ez lehet egy pendrive vagy egy külső HDD/SSD is. Ami a fontos, hogy több USB-port használata esetén még a rendszerünk üzembe helyezése előtt válasszuk ki azt a portot, amelyiket használni fogjuk, és csatlakoztassunk minden eszközt a telepítés előtt. Erre azért van szükség, mert ha a rendszerünk telepítése után változtatunk a csatlakoztatott eszközökön, vagy megcseréljük a portokat, akkor a külső tárolóeszközök elnevezése (pl. /dev/sda, /dev/sdb stb.) megváltozik, és több helyen kell majd módosításokat eszközölnünk ahhoz, hogy minden megfelelően működjön.

Ha rendelkezünk a megfelelően felkészített ASUS routerrel, nincs más hátra, mint belekezdeni az otthoni szuperrouterünk kialakításába!

Az Asuswrt-Merlin telepítése

Ahogy korábban is említettük, az átdolgozott firmware nem fog óriási változásokat hozni az életünkbe, csupán növeli a lehetőségeink körét és fokozza a biztonságot, ráadásul könnyedén telepíthető (ugyanúgy feltölthető, mint a hivatalos firmware), és ha meggondoltuk magunkat, bármikor vissza is térhetünk az eredetihez.

Van azonban egy fontos előkészítési lépés, amelyre szeretnénk felhívni a figyelmet. Az új firmware feltöltése előtt gondoskodjunk arról, hogy az ASUS router a legújabb gyári firmware-t használja! Kizárólag akkor ütközhetünk problémákba, ha egy sokkal régebbi gyári verziót próbálunk frissíteni az Asuswrt-Merlinre.

Elsőként tehát keressük fel a routerünk webes adminfelületét, amely alapértelmezés szerint a router.asus.com címen érhető el. Itt a belépés után a „Firmware Version” után található számra kattintva érhetjük el a firmware frissítéséhez szükséges oldalt.

Az itt megnyíló oldalon kattintsunk a „Check” gombra, és ha elérhető frissítés, telepítsük.

Ha ez megtörtént, vagy már alapból is a legújabb verziót használtuk, akkor nincs más hátra, mint letölteni a routerünknek megfelelő Merlin-firmware-t. A fájlok innen érhetők el: https://sourceforge.net/projects/asuswrt-merlin/files/

(A ZIP-fájlt természetesen a letöltése után ki kell csomagolni.)

Mielőtt belevágnánk a frissítésbe, érdemes biztonsági mentést készíteni a beállításainkról. Ezt a router Advanced Settings -> Adminstration -> Restore/Save/Upload Setting -> Save Setting menüpontja alatt lehet elvégezni.

Ha készen állunk a frissítésre, keressük fel a firmware frissítéséhez szükséges oldalt (lásd fent), és a „Manual Firmware Update” melletti „Upload” hivatkozásra kattintva töltsük fel az imént letöltött fájlt, és indítsuk el a frissítési folyamatot.

MEGJEGYZÉS: A művelet gyakorlatilag semmilyen kockázattal nem jár (kivéve azt a szerencsétlen esetet, ha pont a firmware-frissítés ideje alatt megy el az áram). Ha nem jó firmware-fájlt töltöttünk fel, azt is elég könnyen lehet orvosolni, illetve ha meggondoltuk magunkat, akkor a gyári firmware letöltésével visszaállhatunk a korábbi állapotra (lásd: https://www.asus.com/support/Download-Center/).

Ha mégis használhatatlan állapotba került volna a router a frissítés során, akkor sem kell pánikba esnünk, csak kövessük ennek a cikknek a lépéseit a helyreállítási módban végzett helyreállításhoz: https://www.asus.com/me-en/support/FAQ/1030652

Ha befejeződött a folyamat, máris bejelentkezhetünk a kicsit módosult adminfelületre. Ha sikeres volt a frissítés, akkor a fejlécben látni fogjuk Merlin süvegét:

A swap aktiválása

Mint minden tisztességes Linux-rendszer esetén, itt is szükségünk lesz egy swapra, azaz gyorsítótárfájlra ahhoz, hogy a telepített alkalmazásaink működhessenek. A firmware által biztosított rendszer ezt alapértelmezés szerint azért nem állítja be, mert a használata csak a csatlakoztatott USB-eszközzel együtt lehetséges, viszont magát a firmware-t telepíthetnénk csatlakoztatott tárhely nélkül is, ha csak a fokozott biztonsági funkciókra, a bővített lehetőségekre és a nagyobb sebességre és teljesítményre lenne szükségünk.

Éppen ezért a swap aktiválásához nekünk kell néhány lépést elvégeznünk.

MEGJEGYZÉS: A swap mérete ugyan a későbbiekben módosítható, ám érdemes előre gondolkozni, és a legtöbb internetes útmutató által javasolt 256 MB-os méret helyett kellő méretet megadni már a létrehozásakor. A legtöbb szolgáltatás ugyan megelégszik 512 MB-tal, néhány 1 vagy 2 GB-os méretűt igényel. Általánosságban véve elmondható, hogy érdemes 2 GB méretű swapot használni, ez ugyanis már a MariaDB telepítéséhez is elegendő, amennyiben teljes értékű, adatbázist is használó webszerverként szeretnénk használni a routerünket.

Lépjünk be a routerünkre SSH-val (alapértelmezés szerint a router.asus.com címet és a 22-es portot kell használnunk), majd először is nézzük meg, milyen elnevezést kapott az általunk használt háttértár:

ls -l /tmp/mnt

Amennyiben több eszköz is csatlakoztatva van, válasszuk ki az általunk használni kívánt tárhelyet. Az alábbiakban a /dev/sda1 eszközt fogjuk használni, és egy 2 GB-os méretű swapfájlt hozunk létre.

dd if=/dev/zero of=/tmp/mnt/sda1/myswap.swp bs=1k count=2097152

mkswap /tmp/mnt/sda1/myswap.swp

swapon /tmp/mnt/sda1/myswap.swp

A fentiek elvégzése után a top vagy a free parancs kiadásával ellenőrizhetjük, hogy sikerült-e aktiválnunk a swapot. Ezzel még nem vagyunk teljesen készen, ugyanis a jelenlegi munkamenet során lehet, hogy van már swap, viszont a router újraindítása után ismét visszaáll a swapmentes környezet. Éppen ezért módosítanunk vagy létre kell hoznunk egy szkriptet, amely minden egyes indításkor beizzítja a gyorsítótárunkat.

nano /jffs/scripts/post-mount

Ha már létezik a fájl, akkor az alábbiak közül csak a második sort, ha nem létezik még a fájl, akkor mindkét sort bele kell másolnunk:

#!/bin/sh

swapon /tmp/mnt/sda1/myswap.swp

A módosításokat a CTRL + X billentyűparanccsal menthetjük, majd ki is léphetünk a szerkesztőből.

MEGJEGYZÉS: Ügyeljünk arra, hogy csak olyan eszközt használjunk a swaphoz, amely magától nem kapcsol ki egy bizonyos inaktivitási időköz után (pl. energiatakarékossági okokból).

Az amtm szkript használata

Az Asuswrt-Merlin egyik nagy előnye, hogy az alapvető felhasználói felület felturbózása, a teljesítmény és a biztonsági szint fokozása mellett egy teljesen új csomagkezelőt is elérhetővé tesz, amely az Entware névre hallgat. Ennek segítségével számos olyan csomagot telepíthetünk, amelyekkel Linux-rendszereken is találkozhatunk. A kényelmi funkciók közé tartozik azonban az amtm elnevezésű szkript is, amely számos olyan szolgáltatást tesz elérhetővé a routerünkön, amelyeket a telepítésüket követően a webes felhasználói felületen is konfigurálni tudunk. Ezek az alapvető szolgáltatások a következők:

  • Diversion – a segítségével teljeskörűen letilthatjuk a reklámokat a hálózatunkon használt eszközökön
  • Skynet – igen komoly biztonsági intézkedésekkel fokozza a tűzfal hatékonyságát, az IP-címek tiltásától kezdve az egyéni szabályok létrehozásáig
  • FlexQoS – rugalmax QoS-szabályok
  • FreshJR Adaptive QOS – (elavult)
  • YazFi – továbbfejlesztett Wi-Fi-vendéghálózatok
  • scribe – syslog-ng és logrotate
  • x3mRouting – egyéni útválasztási szabályok
  • unbound Manager – unbound DNS-kiszolgáló
  • connmon – internetkapcsolat figyelése
  • ntpMerlin – NTP-kiszolgáló
  • scMerlin – szolgáltatások és szkriptek kezelése a webes felületről
  • spdMerlin – speedtest
  • uiDivStats – a Diversion által blokkolt domainek webes megjelenítése
  • uiScribe – a scribe által létrehozott logok megjelenítése a webes felületen
  • Stubby DNS – titkosított DNS-kérések (elavult)
  • DNSCrypt – titkosított DNS-proxy
  • Entware – csomagkezelő
  • Pixelserv-tls – minimális HTTP-kiszolgáló a Diversionhöz
  • USB disk check at boot – csatlakoztatott USB-eszközök ellenőrzése rendszerindításkor
  • Format disk – lemezek formázása

További funkciók

  • A router LED-jeinek vezérlése, illetve a LED-ek aktiválásának és inaktiválásának ütemezése
  • Ütemezett újraindítás cron-feladattal
  • Swapfájl létrehozása és kezelése
  • amtm themes – amtm-témák

A használata a parancssoron keresztül történik, az amtm parancs kiadásával. Ezt követően betűk és számok beírásával telepíthetjük, konfigurálhatjuk és távolíthatjuk el az egyes szolgáltatásokat és szkripteket.

Az NVRAM kiürítése

Ha elkezdünk számos alkalmazást, szolgáltatást és szkriptet telepíteni és futtatni, előbb vagy utóbb belefutunk az NVRAM méretkorlátaiba. Aggodalomra azonban semmi ok, ugyanis ebben a memóriában a konfigurációs paraméterek találhatók, és ezek közül számos olyan van, amely teljesen feleslegesen foglalja a helyet, mivel csak egy üres bejegyzés.

Mivel az NVRAM véges, ha pedig betelik, a szolgáltatások működése során hibákat tapasztalhatunk, érdemes már a rendszerindításkor eltávolítani belőle a felesleges elemeket.

Éppen ezért a már korábban is említett post-mount szkriptet fogjuk szerkeszteni, amelybe beírunk egy plusz sort.

nano /jffs/scripts/post-mount

Szúrjuk be a fájl végére a következő sort:

for line in `nvram show | grep =$ `; do var=${line%*=}; nvram unset $var; done;

A CTRL + X billentyűparanccsal mentsük, majd zárjuk be a fájlt. Ezt követően vagy indítsuk újra a routert a beállítás életbe léptetéséhez, vagy ez egyszer futtassuk manuálisan a fenti parancsot.

E-mailes értesítés firmware-frissítések elérhetővé válásakor

Az eredeti firmware egyik legbosszantóbb hiányossága, hogy csak akkor értesülünk az új firmware elérhetővé válásáról, ha bejelentkezünk az adminfelületre. Az Asuswrt-Merlin alapértelmezés szerint ugyanígy működik, azonban lehetőséget biztosít arra, hogy egy saját szkriptet futtassunk akkor, ha az automatikus firmware-ellenőrzés újabb verzió megjelenését észleli. Mi pedig ezt a lehetőséget arra használjuk fel, hogy e-mailes üzenetet küldjünk magunknak.

Az alábbi szkriptet használjuk ehhez, amelyben értelemszerűen a Gmailhez tartozó levelezőszerver adatait bármilyen SMTP-kiszolgálóra cserélhetjük, vagy éppen pushbullet-/pushover-üzenetet is küldhetünk magunknak. Gmail használata esetén mindenképpen alkalmazásjelszót használjunk!

nano /jffs/scripts/update-notification

#!/bin/sh
use_email="enabled" # enabled / disabled (default: disabled)
use_pushbullet="disabled" # enabled / disabled (default: disabled)
use_pushover="disabled" # enabled / disabled (default: disabled)

#Pushbullet/Pushover settings
pushbullet_token="" # Your access token here (https://docs.pushbullet.com/)
pushover_token="" # Your access token here (https://pushover.net/api)
pushover_username="" # Pushover User ID (the user/group key (not e-mail address often referred to as USER_KEY)

# email settings
SMTP="smtp.gmail.com"
PORT="465"
USERNAME=""
PASSWORD=""

# Mail Enveloppe
FROM_NAME="ASUS Router"
FROM_ADDRESS=""
TO_NAME=""
TO_ADDRESS=""

### Do not change below
# Retrieve version
TMPVERS=$(nvram get webs_state_info)
echo "$TMPVERS"
if [ $? -ne 0 ]; then
VERS=${TMPVERS:5:3}.${TMPVERS:8:10}
else
VERS=$TMPVERS
fi
ROUTER_IP=$(nvram get lan_ipaddr)

email_message () {
echo "From: \"$FROM_NAME\" <$FROM_ADDRESS>" > /tmp/mail.txt
echo "To: \"$TO_NAME\" <$TO_ADDRESS>" >> /tmp/mail.txt
echo "Subject: New router firmware notification" >> /tmp/mail.txt
echo "" >> /tmp/mail.txt
echo "New firmware version $VERS is now available for your router at $ROUTER_IP." >> /tmp/mail.txt
curl --url smtps://$SMTP:$PORT \
--mail-from "$FROM_ADDRESS" --mail-rcpt "$TO_ADDRESS" \
--upload-file /tmp/mail.txt \
--ssl-reqd \
--user "$USERNAME:$PASSWORD" --insecure
rm /tmp/mail.txt
}

pushover_message () {
curl -s \
--form-string "token=$pushover_token" \
--form-string "user=$pushover_username" \
--form-string "message=New firmware version $VERS is now available for your router at $ROUTER_IP." \
https://api.pushover.net/1/messages.json
}

pushbullet_message () {
text="New firmware version $VERS is now available for your router at $ROUTER_IP."
title="$USER@$HOSTNAME"
curl -s -u $pushbullet_token: -X POST https://api.pushbullet.com/v2/pushes --header 'Content-Type: application/json' --data-binary '{"type": "note", "title": "'"$title"'", "body": "'"$text"'"}' >/dev/null 2>&1
}

if [ $use_pushbullet = "enabled" ]; then
pushbullet_message
fi
if [ $use_pushover = "enabled" ]; then
pushover_message
fi
if [ $use_email = "enabled" ]; then
email_message
fi

A CTRL + X billentyűparanccsal mentsük, majd zárjuk be a fájlt. Ha ellenőrizni szeretnénk a működését, futtassuk manuálisan. Egyéb esetben pedig minden egyes új firmware megjelenésekor automatikusan aktiválódik majd.

Az Entware telepítése

Ahhoz, hogy bármilyen csomagot könnyedén telepíteni tudjunk a routeren, első körben az Entware csomagkezelőt kell elérhetővé tennünk. Ezt kétféleképpen tehetjük meg: vagy telepítjük az Entware-t az amtm-ből, vagy ugyaninnen telepítjük a Diversiont (ha szükségünk van a reklámok blokkolására).

A parancssorban adjuk ki a szkript parancsát:

amtm

Majd a telepítési lehetőségek közül válasszuk ki vagy az Entware-t, vagy a Diversiont.

A netdata telepítése

Ha már elérhető az Entware, a netdata telepítése gyerekjáték lesz, ugyanis nagyjából ugyanolyan játszi könnyedséggel lehet bármilyen démont elérhetővé tenni, mint bármilyen linuxos környezetben.

Elsőként is telepítsük a megfelelő csomagot:

opkg install netdata

Ezután pedig indítsuk el a szolgáltatást:

/opt/etc/init.d/S60netdata restart

Végül pedig nyissuk meg a webes felületet az élő monitorozás megkezédéshez a router.asus.com:19999 cím egy böngészőben történő felkeresésével.

A lighttpd telepítése

Következő lépésként telepítünk egy webszervert a routerre, amely PHP futtatására is alkalmas. Ha szeretnénk kívülről, az internet felől is elérhetővé tenni az oldalainkat, akkor a következő lépésben erre is sort kerítünk.

Elsőként is telepítsük a webszervert:

opkg install lighttpd

Majd állítsuk be a 81-es porton történő működést (a 80-as már a router saját webes adminfelülete által le van foglalva), és adjuk meg a megfelelő feltöltési mappát, ami eltér a szokványos linuxos elérési úttól:

sed -i 's/#server.port = 81/server.port = 81/g' "/opt/etc/lighttpd/lighttpd.conf"

sed -i “/server.upload-dirs*/cserver.upload-dirs = ( \”/opt/tmp\” )” “/opt/etc/lighttpd/lighttpd.conf”

Végül pedig indítsuk újra a szolgáltatást:

/opt/etc/init.d/S80lighttpd restart

Most már telepíthetjük a PHP-t is:

opkg install lighttpd-mod-fastcgi php7-fastcgi

Az engedélyezéséhez pedig az alábbi sorokat kell megadnunk a konfigurációjában:

cat >> /opt/etc/lighttpd/conf.d/30-fastcgi.conf << EOF
server.modules += ( "mod_fastcgi" )
fastcgi.server = ( ".php" =>
( "localhost" =>
( "socket" => "/tmp/php-fcgi.sock",
"bin-path" => "/opt/bin/php-fcgi",
"max-procs" => 1,
"bin-environment" =>
( "PHP_FCGI_CHILDREN" => "2",
"PHP_FCGI_MAX_REQUESTS" => "1000" )
)
)
)
EOF

Ha mindezt beírtuk, akkor egy ENTER billentyűt kell még nyomnunk az utolsó sornál. És jöhet még egy újraindítás:

/opt/etc/init.d/S80lighttpd restart

Mostantól a router.asus.com:81 címen bármilyen olyan weboldalt elérhetővé tehetünk, amit az /opt/share/www/ alatt tárolunk.

Weboldalak elérhetővé tétele az interneten

Routerünk most már konfigurálva van a webes szolgáltatás futtatására, azonban ezek az oldalak jelenleg csak a belső hálózaton érhetők el. Ahhoz, hogy az internetről is elérhetővé tegyük őket, először is a router DDNS (azaz dinamikus DNS) szolgáltatását kell bekapcsolnunk.

Ezt az Advanced Settings -> WAN -> DDNS alatt tehetjük meg. Az ASUS egy saját szolgáltatást is nyújt erre a célra .asuscomm.com végződéssel, amit bátran használhatunk, de a legördülő menüben másik szolgáltatót is kiválaszthatunk.

Ha sikerült a dinamikus domainnév regisztrálása, akkor tegyük elérhetővé a 81-es (HTTP) és a 443-as (HTTPS) portunkat az internet felé.

MEGJEGYZÉS: Amennyiben a Diversiont és a pixelserv-tls csomagot is telepíttetük, a 443-as port már foglalt lesz a routeren. Éppen ezért használjuk helyette a 444-es (vagy egy tetszőleges, általunk választott) portot. A kívülről jövő kérések mind a 443-as portot fogják lekérni, mi pedig a porttovábbítás során (lásd egy kicsit lejjebb) gondoskodunk majd arról, hogy a megfelelő belső portra legyenek átirányítva.

Ehhez létre kell hoznunk egy szkriptet a routeren, amely az iptables használatával először is megnyitja a fenti portokat.

nano /jffs/scripts/firewall-start
#!/bin/sh
iptables -I INPUT -p tcp --destination-port 81 -j ACCEPT
iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT

A CTRL + X billentyűkombinációval mentsük a fájlt, majd tegyük futtathatóvá, és indítsuk is el:

chmod a+rx /jffs/scripts/firewall-start
/jffs/scripts/firewall-start

Most már csak a router webes adminfelületén kell beállítanunk a megfelelő porttovábbítást annak érdekében, hogy a kívülről érkező kérések eljussanak a webszerverünkhöz.

Ehhez az Advanced Settings -> WAN -> Virtual Server / Port Forwarding oldalt kell felkeresnünk, és az alábbi két szabályt létrehoznunk a routerünk IP-címével:

Ahhoz, hogy a 443-as porton tudjunk titkosított forgalmat bonyolítani, be kell szereznünk a HTTPS-hez szükséges tanúsítványt. Elméletileg meg lehetne oldani a Let’s Encrypt-tanúsítványok automatikus igénylését és megújítását is, viszont a routeren nem érhető el a certbot, így saját szkriptet kellene ehhez írnunk.

Szerencsére létezik másik szolgáltató is, amelyiknél ingyenesen, a webes varázslót követve pillanatok alatt beszerezhetünk egy tanúsítványt: https://app.zerossl.com/signup

Ha beszereztük a ZIP-fájlt a tanúsítványunkkal, a következő lépéseket követve helyezhetjük üzembe a lighttpd alatt.

  1. Először is le kell töltenünk a kapott ZIP-fájlt, majd egy új fájlt létrehozva össze kell másolnunk a privát kulcsot és a tanúsítványt. A végeredmény az alábbihoz hasonló lesz:
    -----BEGIN RSA PRIVATE KEY-----
    [...]
    -----END RSA PRIVATE KEY-----
    -----BEGIN CERTIFICATE-----
    [...]
    -----END CERTIFICATE-----
  2. Ezt követően vagy feltöltjük a routerre az így létrejött fájlt és a ca_bundle.crt fájlt, vagy létre is hozhatjuk ezeket a fájlokat az /opt/etc/lighttpd alatt, és belemásolhatjuk a szükséges tartalmat.
    mkdir certs
    cd certs
    nano router.pem

    Másoljuk bele az előbb létrehozott fájl tartalmát (privát kulcs + tanúsítvány), majd CTRL + X.

    nano ca_bundle.crt

    Másoljuk bele az azonos nevű fájl tartalmát, majd CTRL + X.

  3. Utána pedig módosítsuk a lighttpd konfigurációját az /opt/etc/lighttpd/lighttpd.conf fájlban, és adjuk hozzá az alábbi sorokat, a saját DDNS-nevünk behelyettesítésével:
    $SERVER["socket"] == ":443" {
    ssl.engine = "enable"
    ssl.pemfile = "/tmp/opt/etc/lighttpd/certs/router.pem"
    ssl.ca-file = "/tmp/opt/etc/lighttpd/certs/ca_bundle.crt"
    server.name = "DDNS-név.asuscomm.com"
    
    # enforce strong cypher
    ssl.use-sslv2 = "disable"
    ssl.cipher-list = "TLSv1+HIGH !SSLv2 RC4+MEDIUM !aNULL !eNULL !3DES @STRENG>
    }

Végül már csak egyetlen dolgot kell megtennünk a helyes működéshez, az összes HTTP-forgalmat át kell irányítanunk HTTPS-re. Ehhez a lighttpd konfigurációjához az alábbi sorokat kell hozzáadnunk:

 

$HTTP["scheme"] == "http" {
url.redirect = ("" => "https://${url.authority}${url.path}${qsa}")
}

 

A fájl mentése (CTRL + X) után még újra kell indítanunk a szolgáltatást:

/opt/etc/init.d/S80lighttpd restart

A Nextcloud telepítése

Első lépésként néhány csomagot kell feltelepítenünk:

opkg install bzip2 coreutils-stat lighttpd-mod-access lighttpd-mod-expire lighttpd-mod-setenv \
php7-cgi php7-cli php7-mod-ctype php7-mod-curl php7-mod-dom php7-mod-fileinfo \
php7-mod-filter php7-mod-gd php7-mod-iconv php7-mod-intl php7-mod-json \
php7-mod-mbstring php7-mod-mysqli php7-mod-openssl php7-mod-pcntl php7-mod-pdo \
php7-mod-pdo-mysql php7-mod-pdo-sqlite php7-mod-session php7-mod-simplexml \
php7-mod-sqlite3 php7-mod-xml php7-mod-xmlreader php7-mod-xmlwriter \
php7-mod-zip openssl-util lighttpd-mod-redirect php7-mod-opcache

Ezt követi a Nextcloud legújabb verziójának beszerzése és telepítése (az útmutató írásának pillanatában ez a 20.0.4-es verzió, de az aktuális verziót érdemes ellenőrizni a https://nextcloud.com/install/#instructions-server címen):

cd /opt/share/www
wget https://download.nextcloud.com/server/releases/nextcloud-20.0.4.tar.bz2 --no-check-certificate
bzip2 -cd nextcloud-20.0.4.tar.bz2 | tar -xv
rm ./nextcloud-20.0.4.tar.bz2
chown admin:root /opt/share/www/nextcloud/apps/*

Adjuk meg a Nextcloud elérhetőségét a lighttpd konfigurációs fájljában:

cat >> /opt/etc/lighttpd/lighttpd.conf << 'EOF'
$HTTP["url"] =~ "^/nextcloud/data/" {
url.access-deny = ("")
}
$HTTP["url"] =~ "^/nextcloud($|/)" {
dir-listing.activate = "disable"
}
url.redirect += ( "^/.well-known/caldav" => "/nextcloud/remote.php/dav" )
url.redirect += ( "^/.well-known/carddav" => "/nextcloud/remote.php/dav" )
EOF

A végén nyomjunk egy ENTER billentyűt. Majd növeljük meg a feltöltési és memóriahasználati korlátokat:

sed -i "/upload_max_filesize =*/cupload_max_filesize = 5G" "/opt/etc/php.ini"
sed -i "/post_max_size =*/cpost_max_size = 5G" "/opt/etc/php.ini"
sed -i "/memory_limit =*/cmemory_limit = 512M" "/opt/etc/php.ini"

És indítsuk újra a webes kiszolgálót:

/opt/etc/init.d/S80lighttpd restart

Most már elérhetjük az adminfelületet a router.asus.com:81/nextcloud címen, vagy akár a korábban konfigurált dinamikus DNS-címen keresztül is. Állítsunk be egy adminfelhasználót, és fejezzük be a telepítést.

A Nextcloud által alapértelmezés szerint elérhetővé tett képességeket itt lehet áttekinteni: https://docs.nextcloud.com/

Az elérhető bővítmények (appok) listája pedig itt található: https://apps.nextcloud.com/

Ahhoz, hogy biztonságossá tegyük a bejelentkezést, elengedhetetlenül fontos a kéttényezős hitelesítés engedélyezése. Több szolgáltató közül is választhatunk, de a leggyakoribb választás talán a Google Hitelesítő lehet. Ehhez egy 2FA TOTP-t kell engedélyeznünk az Apps -> Security menüpont alatt:

A kéttényezős hitelesítés beállításának lépéseit itt lehet megtekinteni: https://docs.nextcloud.com/server/15/user_manual/user_2fa.html

SSH-bejelentkezés felhasználónév és jelszó megadása nélkül (Windows)

Amennyiben az SSH-elérést szeretnénk interneten keresztül is elérhetővé tenni, illetve egyszerűen csak nem szeretnénk minden egyes csatlakozáskor felhasználónevet és jelszót megadni, érdemes áttérni a kulcsalapú hitelesítésre.

Először is be kell szereznünk a PuTTY és a PuTTYgen nevezetű alkalmazást (Windows rendszer használata esetén): https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

Majd létre kell hoznunk egy nyilvános/privát kulcspárt az Actions -> Generate kiválasztásával. (RSA, 2048 bit beállítás mellett.)

Ezt követően be kell lépnünk a router adminfelületére, és az Advanced Settings -> Administration -> System -> Service alatt az alábbi beállításokat kell megadnunk, illetve az Authorized Keys mezőjébe be kell másolnunk a nyilvános kulcs tartalmát:

MEGJEGYZÉS: Ha az internet felé is elérhetővé tesszük az SSH-bejelentkezést, akkor érdemes módosítani a 22-es portot is, mondjuk például 44-es portra.

Ezután mentenünk kell a privát kulcsot a PuTTYgenben (Save private key), jelszó (passphrase) nélkül. Létrejön egy .ppk fájl, ezt kell mentenünk valahová, majd importálni a PuTTY-ba. Indítsuk is el az utóbbi alkalmazást.

Az első menüben (Session) adjuk meg a router címét (router.asus.com), illetve a portot, ha az nem a 22-es.

A bal oldali listában válasszuk ki a Connection -> SSH -> Auth menüpontot. A Private key file for authentication alatt adjuk meg a fentiekben mentett .ppk fájlt.

A Connection -> Data menüpont Auto-login username mezőjébe írjuk be az admin felhasználói nevét. (Ugyanaz, amit SSH-s bejelentkezéskor megadunk.)

A Session menüponthoz visszatérve adjunk egy nevet a munkamenetnek, majd a Save parancsra kattintva mentsük. Ekkor meg kell jelennie az alatta lévő listában. Innentől kezdve erre az elemre duplán kattintva máris automatikusan bejelentkezünk a routerünkre SSH-n keresztül.

Amennyiben nem a PuTTY használatával szeretnénk bejelentkezni, hanem például androidos telefonunkról, akkor keresnünk kell először is egy kompatibilis appot. Ilyen például a JuiceSSH.

A PuTTYgen ablakában a betöltött .ppk mellett a Conversions -> Export OpenSSH key parancs kiválasztása után kapjuk meg a más alkalmazásokkal kompatibilis kulcsot, amelyet használhatunk a jelszó nélküli SSH-bejelentkezéshez.

Chilly
Chilly

Chilly 1997 óta foglalkozik webhelyek üzemeltetésével és programozással, valamint különböző kütyük kipróbálásával, és azóta folyamatosan nyomon követi a technikai újításokat. Elsődlegesen Linux-rendszerekkel dolgozik, de az évek során rengeteg tapasztalatra tett szert a Windows-gépek üzemeltetése terén is, hobbiszinten pedig az utóbbi időben egyre több időt tölt a Raspberry Pi módosítgatásával, illetve otthoni automatizált és biztonságtechnikai rendszerek kiépítésével.
Mesterfokon beszél angolul, és műszaki szakfordítói vizsgával rendelkezik. Korábban sokáig újságíróként dolgozott nyomtatott és online magazinoknál.