Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  3 1683
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.

Kode

cp /config/config.boot /config/config.boot2
cp /config/config.boot /config/config.backup
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:

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
    }
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:

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
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:

Kode

gpg -c /config/config.boot2
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 å:

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.###
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:

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
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!
Sist endret av RogerThat; 24. november 2020 kl. 14:40.
Jeg kan ikke så mye om nettverk, men kom du nettopp i skade for å lekke både brukernavn, private key og litt annet snacks?
Sitat av Myoxocephalus Vis innlegg
Jeg kan ikke så mye om nettverk, men kom du nettopp i skade for å lekke både brukernavn, private key og litt annet snacks?
Vis hele sitatet...
Nei, alt er i orden Tusen takk likevel

Kan en administrator redigere innlegget og legge til:

Husk å slette config.boot2 fila etter å ha gjort dette. Fila sletter seg ikke selv, og vil ligge der ukryptert til du sletter den, gjør dette hver gang du har dekryptert config.boot2.gpg. Bruk rm -rf config.boot2 for å slette fila.
Vis hele sitatet...
mellom kode-blokken og:
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, rm -rf config.boot2)
Vis hele sitatet...
Slik at resultatet blir:

Husk å slette config.boot2 fila etter å ha gjort dette. Fila sletter seg ikke selv, og vil ligge der ukryptert til du sletter den, gjør dette hver gang du har dekryptert config.boot2.gpg. Bruk rm -rf config.boot2 for å slette fila.

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)
Vis hele sitatet...
Sist endret av RogerThat; 24. november 2020 kl. 15:10. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Du har ikke oppnådd særlig. Filen skrives til et filsystem og vil derfor relativt enkelt kunne hentes ut, selv etter reboot. Du kan trikse dette til med å lage en ramdisk til formålet, men det er ganske knotete. Det er heller ingen garanti for at systemet ditt ikke har paget ut nøkkelen din, og ds hjelper det ikke stort å kjøre reload av agenten. Bruk heller en HSM, da slipper du sånne problemstillinger.

En bedre løsning vil være noe som støtter SecureBoot og et kryptert filsystem. Det siste kan du sette opp selv, men hvor lett det er på en edgerouter vet jeg ikke. Alternativt har du APU fra PC Engines som støtter åpen teknologi helt ned til firmware og SecreBoot. Jeg bruker sistnevnte med VyOS, og er fornøyd med det. Men kjører ikke SecureBoot eller kryptert filsystem.