10-07-2013, 22:10
PKA står for Public Key Authentication og bruges som en ekstra sikkerhed for at forhindre brute-force angreb på en server.
Idéen er, at man opretter et keypair, altså et sæt af nøgler: En offentlig der kan sendes uden kryptering uden nogen form for fare og en privat der beskyttes med passphrase og gemmes på din egen computer. Teknikken benyttes også i forbindelse med kryptering af e-mails ved hjælp af en GPG (GNU Privacy Guard) key hvor den offentlige bruges til at kryptere indholdet hvorefter den private er den eneste der kan dekryptere det igen. Jeg kan i øvrigt stærkt anbefale alle der går ind for privatlivets fred at lære hvordan man bruger dem.
Nuvel, i denne tutorial skal du bruge et keypair til at beskytte din SSH service.
Først genererer du et hold nøgler. Det sikreste er at gøre det på din egen computer og derefter uploade den offentlige (Kontra downloade den private).
Åben en terminal eller SSH session på din server som den bruger du har uploadet nøglen til. Nu skal den flyttes på plads så systemet kan finde den når du prøver at forbinde næste gang.
Public keys skal ligge i filen ~/.ssh/authorized_keys. Dette er en fil der indeholder en liste (en key per linje) med nøgler der kan bruges til at logge ind på den pågældende bruger. På den måde kan man for eksempel give flere personer adgang til at logge ind som root med hver deres password (Altså som passphrase til deres egen private key) og deres adgang kan kontrolleres ved at fjerne nøglen igen. Seperate brugere er dog stadig at foretrække.
Først skal du sikre dig at mappen eksisterer:
For at kopiere din public key (id_rsa.pub) over kan du bruge kommandoen cat:
Det eneste cat gør er at læse indholdet af en fil og sende det til din terminal session. De to pile (>>) får bash til at sende resultatet af kommandoen ind i den sidstnævnte fil, authorized_keys.
Man kan godt nøjes med at flytte filen, men på denne måde sikrer du dig at du ikke overskriver eventuelle andre keys I modsætning til en enkelt pil (>) eller mv (Move) kommandoen.
Vi kan ikke have at andre brugere roder med dine auth oplysninger, så husk at sætte det korrekte chmod. .ssh skal have 700 (u+rwx og go-rwx) authorized_keys skal have 600 (u=rw og go-rwx).
Nu mangler du bare at konfigurere din server til at tillade PKA som godkendelsesmetode.
Log ind som superuser (sudo eller root) og åben din sshd konfiguration med dit tekstredigeringsprogram (vi, vim, nano, emacs, whatever).
Hvis du ikke selv har pillet ved filen vil alle disse indstillinger sandsynligvis være der i forvejen. Du skal sikre dig at der står følgende:
Du kan godt vente med at deaktivere password auth indtil du har sikret dig at det fungerer som det skal, men du kan også bare lade din root session stå åben mens du tester.
Genstart din SSH daemon
Nu kan du forbinde til din server ved hjælp af din private key.
Hvis serveren spørger om password har du ikke konfigureret den korrekt.
Korrekt:
Forkert:
Jeg håber i nød min vejledning, der kommer nok snart en om GPG (Som jeg jo selv anbefaler at i lærer at bruge) og en håndfuld andre om server hardening (port knocking, opsætning af firewall mm.)
Idéen er, at man opretter et keypair, altså et sæt af nøgler: En offentlig der kan sendes uden kryptering uden nogen form for fare og en privat der beskyttes med passphrase og gemmes på din egen computer. Teknikken benyttes også i forbindelse med kryptering af e-mails ved hjælp af en GPG (GNU Privacy Guard) key hvor den offentlige bruges til at kryptere indholdet hvorefter den private er den eneste der kan dekryptere det igen. Jeg kan i øvrigt stærkt anbefale alle der går ind for privatlivets fred at lære hvordan man bruger dem.
Nuvel, i denne tutorial skal du bruge et keypair til at beskytte din SSH service.
Først genererer du et hold nøgler. Det sikreste er at gøre det på din egen computer og derefter uploade den offentlige (Kontra downloade den private).
Linux/BSD/Mac (Click to View)
Under Linux kan du gøre dette med et program der hedder ssh-keygen, det følger med OpenSSH klienten.
Hvis du læser i manualen for ssh-keygen kan du se at -t rsa sætter key-typen til RSA (Den mest almindelige), -b 2048 sætter din keylength til 2048 bits (Du kan gå højere hvis du er paranoid) og -C sætter en kommentar. Hvis du udelader dem får du en 1024-bit RSA key, men det skader ikke at lægge lidt ekstra på :)
Programmet vil spørge dig hvor du vil lægge dine filer, men det fungerer bedst hvis de ligger i ~/.ssh/. Du skal i øvrigt vælge en passphrase. Du kan godt undlade at bruge et, men hvis du ikke gør det er den nem at snuppe med en trojaner eller stealer.
Nu skal du uploade din public key til serveren. Hvis du ikke har ændret i stien vil den ligge som ~/.ssh/id_rsa.pub. Den nemmeste måde at gøre det på er vha. SCP, secure copy.
Herefter skal du logge ind på din server (srv1.example.com) med det brugernavn du vil uploade en key til og den vil så blive lagt i brugerens home folder.
Kode:
ssh-keygen -t rsa -b 2048
Hvis du læser i manualen for ssh-keygen kan du se at -t rsa sætter key-typen til RSA (Den mest almindelige), -b 2048 sætter din keylength til 2048 bits (Du kan gå højere hvis du er paranoid) og -C sætter en kommentar. Hvis du udelader dem får du en 1024-bit RSA key, men det skader ikke at lægge lidt ekstra på :)
Programmet vil spørge dig hvor du vil lægge dine filer, men det fungerer bedst hvis de ligger i ~/.ssh/. Du skal i øvrigt vælge en passphrase. Du kan godt undlade at bruge et, men hvis du ikke gør det er den nem at snuppe med en trojaner eller stealer.
Nu skal du uploade din public key til serveren. Hvis du ikke har ændret i stien vil den ligge som ~/.ssh/id_rsa.pub. Den nemmeste måde at gøre det på er vha. SCP, secure copy.
Kode:
scp ~/.ssh/id_rsa.pub srv1.example.com:~/
Windows (Click to View)
Her er det mest mainstream værktøj PuTTYgen (Download). Åben programmet og sæt bit length fra 1024 til 2048 eller højere og sørg for at algoritmen er sat til SSH2-RSA.
Tryk på knappen generate og bevæg musen i feltet over knappen.
Din public key skulle nu dukke op i feltet du bevægede musen i.
Gem det i en txt fil og upload den til din server på din foretrukne måde (FTP, SFTP eller lign.).
Tryk på Save Private Key og vælg et sted hvor du kan finde den igen. Du må for alt i verden ikke miste den!
Hvis du skal bruge den samme nøgle på linux skal du gå ind i menuen Conversions og trykke på Export OpenSSH key for at gemme den i det rette format.
Tryk på knappen generate og bevæg musen i feltet over knappen.
Din public key skulle nu dukke op i feltet du bevægede musen i.
Gem det i en txt fil og upload den til din server på din foretrukne måde (FTP, SFTP eller lign.).
Tryk på Save Private Key og vælg et sted hvor du kan finde den igen. Du må for alt i verden ikke miste den!
Hvis du skal bruge den samme nøgle på linux skal du gå ind i menuen Conversions og trykke på Export OpenSSH key for at gemme den i det rette format.
Åben en terminal eller SSH session på din server som den bruger du har uploadet nøglen til. Nu skal den flyttes på plads så systemet kan finde den når du prøver at forbinde næste gang.
Public keys skal ligge i filen ~/.ssh/authorized_keys. Dette er en fil der indeholder en liste (en key per linje) med nøgler der kan bruges til at logge ind på den pågældende bruger. På den måde kan man for eksempel give flere personer adgang til at logge ind som root med hver deres password (Altså som passphrase til deres egen private key) og deres adgang kan kontrolleres ved at fjerne nøglen igen. Seperate brugere er dog stadig at foretrække.
Først skal du sikre dig at mappen eksisterer:
Kode:
mkdir ~/.ssh
For at kopiere din public key (id_rsa.pub) over kan du bruge kommandoen cat:
Kode:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
Man kan godt nøjes med at flytte filen, men på denne måde sikrer du dig at du ikke overskriver eventuelle andre keys I modsætning til en enkelt pil (>) eller mv (Move) kommandoen.
Vi kan ikke have at andre brugere roder med dine auth oplysninger, så husk at sætte det korrekte chmod. .ssh skal have 700 (u+rwx og go-rwx) authorized_keys skal have 600 (u=rw og go-rwx).
Kode:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Nu mangler du bare at konfigurere din server til at tillade PKA som godkendelsesmetode.
Log ind som superuser (sudo eller root) og åben din sshd konfiguration med dit tekstredigeringsprogram (vi, vim, nano, emacs, whatever).
Kode:
vim /etc/ssh/sshd_config
Hvis du ikke selv har pillet ved filen vil alle disse indstillinger sandsynligvis være der i forvejen. Du skal sikre dig at der står følgende:
Kode:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
ChallengeResponseAuthentication no
PasswordAuthentication no
Genstart din SSH daemon
Kode:
service ssh restart
#eller
/etc/init.d/ssh restart
Nu kan du forbinde til din server ved hjælp af din private key.
Linux/BSD/Mac med OpenSSH (Click to View)
Forbind til serveren som du plejer, så længe din private key ligger i ~/.ssh/id_rsa.
Du vil blive spurgt om din passphrase til din private key. Indtast den og du vil blive logget ind.
Kode:
ssh username@srv1.example.com
Windows med PuTTY (Click to View)
Det er lidt besværligt at bruge en private key i PuTTY, men hvis du gemmer indstillingerne for forbindelsen, så gør det ikke så meget.
Åben PuTTY og gå ind i Connection->SSH->Auth i menuen til venstre. Vælg filen til højre under Authentication parameters
Gå tilbage til Session (Det øverste i menuen) og skriv brugernavnet og domænenavnet/IP-addressen på din server i feltet "Hostname".
For at gemme disse indstillinger kan du give dem et navn i tekstfeltet under "Saved Sessions" og derefter trykke på save. Næste gang du vil forbinde til den, kan du blot dobbeltklikke på serveren i listen.
Hvis du bruger Windows 7 eller 8 vil du i øvrigt kunne se din server i jumplisten for PuTTY.
Åben PuTTY og gå ind i Connection->SSH->Auth i menuen til venstre. Vælg filen til højre under Authentication parameters
Gå tilbage til Session (Det øverste i menuen) og skriv brugernavnet og domænenavnet/IP-addressen på din server i feltet "Hostname".
For at gemme disse indstillinger kan du give dem et navn i tekstfeltet under "Saved Sessions" og derefter trykke på save. Næste gang du vil forbinde til den, kan du blot dobbeltklikke på serveren i listen.
Hvis du bruger Windows 7 eller 8 vil du i øvrigt kunne se din server i jumplisten for PuTTY.
Korrekt:
Forkert:
Jeg håber i nød min vejledning, der kommer nok snart en om GPG (Som jeg jo selv anbefaler at i lærer at bruge) og en håndfuld andre om server hardening (port knocking, opsætning af firewall mm.)