Hei!
I en lang tid har jeg gått rundt og tenkt på det perfekte VPN-nettverket! Tilgang til alt, fra både mobil og PC. Tilgang til NAS med stor lagringskapasitet uansett hvor jeg er.
Samtidig har jeg hele tiden hatt i bakhodet at jeg vil kryptere alt, slik at det ikke er mulig å få tilgang til nettverket eller innholdet uten å først skrive en dekrypteringsnøkkel, hverken gjennom PC, router, servere, NAS eller telefon. Denne nøkkelen skal alltid skrives inn ved hver restart. Sånn har jeg alltid ønsket å ha det. Et fullstendig sikkert sted for meg.
Hittil har jeg kryptert alt som er mitt, både PC, NAS, servere og hele pakka der. Jeg må alltid dekryptere alt manuelt ved hver restart, og det er jeg supert fornøyd med.
Det største problemet var routeren hjemme hos meg. Det er en Edgerouter X, og den er basert på Debian. Ved å få tilgang til ruteren, enten fysisk eller administratorbruker, så kan man finne frem til hovedkonfigurasjonsfila, der det meste av konfigurasjonen står. Det er denne konfigurasjonsfilen som blir brukt når routeren skal sette seg opp igjen under oppstart.
Konfigurasjonsfilen heter config.boot, og er ikke kryptert. Jeg bruker Wireguard som VPN-løsning, da det støttes av routeren. Wireguard-konfigurasjonen blir skrevet inn i config.boot, slik at man kan lese den private nøkkelen og se hvilket endpoint jeg bruker (og dermed knytte meg til den IP-adressen / domenenavnet).
Så da fant jeg ut av en god løsning.
Først og fremst: Koble til routeren med SSH.
Deretter: Lag en kopi av config.boot-fila. Gjerne to, for å være sikker.
Skaff deg WinSCP og koble til routeren med det også. Naviger til /config/ og finn config.boot. Rediger den. (Du kan også gjøre det i selve terminalen, men jeg foretrekker å bruke WinSCP sin teksteditor)
Fjern Wireguard-konfigurasjonen fra config.boot, og ikke rør config.boot2.
Denne delen fjerner du fra config.boot:
Lukk og lagre fila. Jeg får ofte en error når jeg lagrer fila, noe som handler om tidsstempel eller noe sånt. Bare ignorer feilmeldingen. Filen er overført likevel.
Når den nå er fjernet, skriv i SSH:
Nå har du en config.boot som ikke inneholder Wireguard-nøklene dine, og en config.boot2 som inneholder Wireguard-nøklene dine.
Skriv dette i SSH:
Nå blir du bedt om å skrive inn et passord du vil bruke, og da har du kryptert config.boot2 fila. Den krypterte fila heter config.boot2.gpg. Slett config.boot2 fila, den trenger du ikke nå lenger nå som du har den krypterte versjonen.
Nå må du ha en mekanisme for å dekryptere fila og be routeren om å bruke den istedenfor config.boot. Det gjør du ved å:
Husk at du IKKE skal kjøre save.
Sånn. Neste gang routeren din restarter, må du kjøre de siste kommandoene igjen. (gpg /config/config.boot2.gpg, configure, load /config/config.boot2, commit, exit)
Lyst til å automatisere dette litt? Yepsijeppers!
Jeg har laget et skript. Jeg skal vise dere hvordan det fungerer.
Jeg har kalt skriptet for decrypt og lagt den i /home/ubnt. Altså /home/ubnt/decrypt.
/home/ubnt/decrypt:
Husk å kjøre chmod +x decrypt etter å ha lagret skriptet. Hver gang ruteren restarter, så trenger du bare å SSH til ruteren, logge på med bruker ubnt, og så starte skriptet ved å skrive ./decrypt
Og til slutt: Husk å slette config.backup hvis du har fått testet dette og bekrefter at det fungerer. Den er ukryptert!
I en lang tid har jeg gått rundt og tenkt på det perfekte VPN-nettverket! Tilgang til alt, fra både mobil og PC. Tilgang til NAS med stor lagringskapasitet uansett hvor jeg er.
Samtidig har jeg hele tiden hatt i bakhodet at jeg vil kryptere alt, slik at det ikke er mulig å få tilgang til nettverket eller innholdet uten å først skrive en dekrypteringsnøkkel, hverken gjennom PC, router, servere, NAS eller telefon. Denne nøkkelen skal alltid skrives inn ved hver restart. Sånn har jeg alltid ønsket å ha det. Et fullstendig sikkert sted for meg.
Hittil har jeg kryptert alt som er mitt, både PC, NAS, servere og hele pakka der. Jeg må alltid dekryptere alt manuelt ved hver restart, og det er jeg supert fornøyd med.
Det største problemet var routeren hjemme hos meg. Det er en Edgerouter X, og den er basert på Debian. Ved å få tilgang til ruteren, enten fysisk eller administratorbruker, så kan man finne frem til hovedkonfigurasjonsfila, der det meste av konfigurasjonen står. Det er denne konfigurasjonsfilen som blir brukt når routeren skal sette seg opp igjen under oppstart.
Konfigurasjonsfilen heter config.boot, og er ikke kryptert. Jeg bruker Wireguard som VPN-løsning, da det støttes av routeren. Wireguard-konfigurasjonen blir skrevet inn i config.boot, slik at man kan lese den private nøkkelen og se hvilket endpoint jeg bruker (og dermed knytte meg til den IP-adressen / domenenavnet).
Så da fant jeg ut av en god løsning.
Først og fremst: Koble til routeren med SSH.
Deretter: Lag en kopi av config.boot-fila. Gjerne to, for å være sikker.
Kode
cp /config/config.boot /config/config.boot2 cp /config/config.boot /config/config.backup
Fjern Wireguard-konfigurasjonen fra config.boot, og ikke rør config.boot2.
Denne delen fjerner du fra config.boot:
Kode
wireguard wg0 { address 192.168.1.3 mtu 1420 peer 846u0jryj98e0u6tiejr89wutpsregs { allowed-ips 192.168.1.1/32 endpoint server.domain.com:42044 persistent-keepalive 25 } peer u8934o5u8934hurt89uq43tjn89dgaug4g { allowed-ips 192.168.1.2/32 endpoint server.computer.com:42044 persistent-keepalive 25 } private-key 8450uw9tj0er9iteprjt809rsekpgos route-allowed-ips true }
Når den nå er fjernet, skriv i SSH:
Kode
configure #Åpner konfigurasjonsmodus load #Laster /config/config.boot commit #Bruker innstillingene save #Lagrer til /config/config.boot #(Du har egentlig allerede gjort det, #men gjør det en gang til likevel) exit #Ut av konfingurasjonsmodus
Skriv dette i SSH:
Kode
gpg -c /config/config.boot2
Nå må du ha en mekanisme for å dekryptere fila og be routeren om å bruke den istedenfor config.boot. Det gjør du ved å:
Kode
gpg /config/config.boot2 #Dekrypterer, du blir bedt om passord. configure #Åpner konfigurasjonsmodus load /config/config.boot2 #Henter config.boot2 commit #Ber routeren bruke innstillingene fra config.boot2 exit ###Du skal IKKE kjøre kommandoen save i dette tilfellet, kun commit og gå ut av konfigurasjonsmodus. Hvis du kjører save, så overskriver du config.boot-fila, og det blir feil.###
Sånn. Neste gang routeren din restarter, må du kjøre de siste kommandoene igjen. (gpg /config/config.boot2.gpg, configure, load /config/config.boot2, commit, exit)
Lyst til å automatisere dette litt? Yepsijeppers!
Jeg har laget et skript. Jeg skal vise dere hvordan det fungerer.
Jeg har kalt skriptet for decrypt og lagt den i /home/ubnt. Altså /home/ubnt/decrypt.
/home/ubnt/decrypt:
Kode
#!/bin/bash #Decrypting file: sudo gpg /config/config.boot2.gpg # Obtain session environment SHELL_API=/bin/cli-shell-api vyattasbindir=/opt/vyatta/sbin session_env=$($SHELL_API getSessionEnv $PPID) # Evaluate environment string eval $session_env # Setup the session sudo cli-shell-api setupSession #Starts the configure mode sudo cli-shell-api inSession if [ $? -ne 0 ]; then echo "Something did not work..." fi #Loads the config.boot2 file sudo cli-shell-api loadFile /config/config.boot2 #Running commit cd /opt/vyatta/sbin sudo ./my_commit ##REMEMBER: DO NOT RUN SAVE!## #Telling you if it worked or not. if [ $? -ne 0 ]; then echo "Did not work" else echo "Worked!" fi #Deleting config.boot2, so it gets inaccessible next reboot. sudo rm -rf /config/config.boot2 #Deleting config.boot2 decryption key in memory. sudo gpgconf --reload gpg-agent #Shows wireguard status sudo wg #Closing configure mode function atexit() { cli-shell-api teardownSession } trap atexit EXIT
Og til slutt: Husk å slette config.backup hvis du har fått testet dette og bekrefter at det fungerer. Den er ukryptert!
Sist endret av RogerThat; 24. november 2020 kl. 14:40.