• linkedin

Configure SSH for high security

There are some steps to do after SSH is installed on a system and there is a old saying that says “A chain is only as strong as its weakest link” and if you are using a weak password for your root account (or any other account) then you are extremely vulnerable. It does not matter if the communication is secure when you are easily brute forced. All steps is used on a Ubuntu 11.10 but should be the same on OpenBSD, Debian, Linux Mint or any other Linux distribution with none or very few modifications.

We are going to do the following steps

  • Create certificate
  • Set correct credentials to .ssh folder and files
  • Shut down the possibility to log in with password
  • Prevent root to log in via SSH
  • Remove less secure encryption methods
  • Enable visual identification of the server fingerprint
  • Optional: Change SSH port (does really not not increase security)

Create certificate
We are going to use a RSA-key with a key length of 4096 bits. Open a terminal and enter the following “‘ssh-keygen -t rsa -b 4096″.  1024 bits key should be enough but better to be safe than sorry.

johan@johan-laptop:~$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.

Then you will be asked where to store the key. If you already got keys in id_dsa then you should enter another file name or your existing keys will be overwritten. If you are satisfied with the suggestion simply press enter.

Enter file in which to save the key (/home/johan/.ssh/id_rsa):

It’s now time to enter a password. Use a strong password with big and small letters, numbers and symbols. The password should also be unique and stored on a secure place like in a encrypted container like Keepass.

Enter passphrase (empty for no passphrase): 2sWf3+@/’?B>.%DpBU”r
Enter same passphrase again: 2sWf3+@/’?B>.%DpBU”r
Your identification has been saved in /home/johan/.ssh/id_rsa.

Your public key has been saved in /home/johan/.ssh/
The key fingerprint is:
The key’s randomart image is:
+–[ RSA 4096]—-+
|     o++ ..o.    |
|      Eoo ..     |
|      . o   . .  |
|     .   o o +   |
|      . S   +    |
|     . o o o     |
|    . + o .      |
|     + o .       |
|    . .          |

Enable the public key for authentication
The public key should be stored in ~/.ssh/authorized_keys and there can be more then one key for a single user. Just make a new row for each public key. If you key should be installed on the same system from where you just created the private key simply copy to authorized_keys

johan@johan-laptop:~$ cd ~/.ssh
johan@johan-laptop:~/.ssh$ cp authorized_keys

If you want to use the public key on another machine you could simply copy the public key using scp (secure copy). Please notice that you will replace existing authorized_keys if you already has one in place. To copy simply write the following command.

johan@johan-laptop:~/.ssh$ scp -p ~/.ssh/authorized_keys
johan@’s password:
authorized_keys 100% 1839 1.2MB/s 00:00

Set correct credentials to .ssh folder and files

Make sure that your working folder is your home folder, replace “johan” with your username.

johan@johan-laptop:~/.ssh$ cd ~
johan@johan-laptop:~/.ssh$ sudo chown -R johan:johan .ssh
johan@johan-laptop:~/.ssh$ sudo chmod -R 600 .ssh
johan@johan-laptop:~/.ssh$ sudo chmod +x .ssh

Do a test log in to test the public key

johan@johan-laptop:~/.ssh$ ssh johan@localhost
Enter passphrase for key ‘/home/johan/.ssh/id_rsa’:

After you entered the private key password you should have access to your machine, if not you will have to look for errors in the logs but I will not cover this in this guide.

Configure sshd
The next step is to modify sshd. All settings we will change is in the file /etc/ssh/sshd_config. Start to make a backup of sshd_config just in case.

johan@johan-laptop:/$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup


Use desired editor to edit sshd_config. I prefer vi but I will use nano in this example

johan@johan-laptop:/$ sudo nano /etc/ssh/sshd_config

The following lines is going to be added or altered:

  • PermitRootLogin yes
  • #PasswordAuthentication yes
  • Ciphers

PermitRootLogin no

root should never be used since it much more secure to use a regular user instead and then you need to perform a administrative task use the command sudo instead which gives you temporary administrative rights
We are also going to prevent the possibility to log in with password (you will be forced to use the private key). Find the rows which looks like  this:

PermitRootLogin yes

Modify it to look like this

PermitRootLogin no

Find the row which look like this

#PasswordAuthentication yes

Modify it to look like this

PasswordAuthentication no

At the end Cipers is going to be added and it may not apply never installations but the default ciphers has not always been the best choices and sshd should be forced to only use the strongest ones.

Ciphers aes128-ctr,aes256-ctr,arcfour256,arcfour,aes128-cbc,aes256-cbc

More information about why to alter the ciphers can be found here:

Verify these entries:

  • Protocol 2
  • UsePrivilegeSeparation yes
  • StrictModes yes
  • RSAAuthentication yes
  • PubkeyAuthentication yes

Save and exit

Restart to active the settings.

johan@johan-laptop:~/.ssh$ sudo service ssh restart
ssh start/running, process 2212

Enable visual identification of the servers fingerprint (Visual Host Key)
It’s not easy to verify and remember the fingerprint of a host since it’s a long hexadecimal string that may look like this one: ” 31:b0:be:0b:5b:7c:f1:79:65:e4:72:42:18:08:c4:8d” , some one may have altered the DNS record so that you in fact are trying to authenticate to a rouge server and to remember that string is near impossible. . It’s more easy to remember a visual fingerprint but it’s still not bulletproof. It’s absolute best to verify the exact string every time and that is done by most SSH clients and for example openssh stored them in ~/.ssh/known_hosts and gives you a warning if it has changed.

Do the following to enable visual host key

Edit eider /etc/ssh/ssh_config witch effects all users on the system or ~/.ssh/config to enable it for a single user.

Add the following lines (“Host * is already at top of ssh_config)

Host *
VisualHostKey yes

Test and verify
It’s now time to test and verify. You should not be able to log in without your private key and password authentication should been disabled. You should also see your visual finger print when you tries to log in.

Your SSH should be more safe now but remember that SSH probably was the most secure software from the beginning with default settings and MySQL, Apache or any other system also has to be secured.

–  Johan Ryberg

How to compile Reaver on Ubuntu 11.10

This is a quick how-to compile and install Reaver on a Ubuntu 11.10.


  1. download source
  2. install required libraries and tools
  3. compile and install
  4. run =)

Download Source

First you need to download the latest source from


Extract the tarball

tar -xzvf reaver-1.3.tar.gz

Install Required Libraries and Tools

Before you can build Reaver you need pcaplib and later on aircrack-ng to run Reaver

sudo apt-get install libpcap-dev aircrack-ng sqlite3 libsqlite3-dev

Compile and Install

Build Reaver

cd reaver-1.3
cd src

Install Reaver

sudo make install


Reaver is now installed and ready to use. You will first need to put the wifi adapter info monitor mode before you can start and the most easiest way is to use airmon-ng (part of aircrack-ng) that you just installed.

First put your adapter info monitor mode, in my case it’s wlan0

sudo airmon-ng start wlan0

Run Reaver

sudo reaver -i mon0 -b 00:00:00:00:00:00

Replace MAC 00:00:00:00:00:00 with the actual AP:s MAC address to crack

   –  Johan Ryberg

English version of the blogg

I’m just about to translate the blog from Swedish to English and in the meantime before the work is finished it may sometimes look odd.

Most of the content is still in Swedish and some of the posts will never be translated

–  Johan Ryberg

Ny snabbare version av Reaver

Reaver, det nya verktyget för att attackera accesspunkter/trådlösa routrar med WPS aktiverat och som knäcker de flesta inom 10 timmar har precis släppts som version 1.3 med nya utökade funktioner som tidigare bara fanns i den kommersiella produkten från Tactical Network Solutions. Nytt är att man kan pausa för att senare fortsätta på en viss PIN-kod om man tidigare avbrutit en attack men även hämta hem optimeringar för just den produkten som man för tillfället försöker komma in i för att snabba upp processen.

FOSS-versionen kommer dock inte komma åt den senaste datan då detta kommer släpa efter och för den som snabbt vill få uppdateringar eller ett fint webbgränssnitt får betala för tjänsten.

– Johan Ryberg har fått DNSSEC

Binero som hostar denna sida har gett alla sina .SE-kunder en riktigt fin julklapp vilket är DNSSEC. I det stora hela går DNSSEC ut på att man förhindrar att DNS-svar förfalskas genom digitala signaturer så att man inte skall använda en felaktig IP-adress och på så sätt ansluter mot en tjänst som kontrolleras av illvilliga personer.

För att enkelt kontrollera om man skickas till rätt hemsida när man surfar med t.ex. Firefox finns tillägget DNSSEC Validator som laddas ner här:

Som ni kan se får man nu en grön nyckel vilket betyder att DNSSEC Validator har validerat DNS-uppslaget och källan vi besöker är korrekt.

– Johan Ryberg

Wi-Fi Protected Setup (WPS) PIN kan bli knäckt med hjälp av brute force (WPA/WPA2-routrar)

En sårbarhet i protokollet WPS (Wi-Fi Protected Setup) möjliggör att man på några timmar kan få fram PIN-koden till den trådlösa routern/accesspunkten med hjälp av en brute force-attack. Det flesta routrar efter 2007 då standarden först kom är troligtvis sårbara och enda skyddet är att stänga av funktionen.

WPS är tänkt att underlätta installationen av det trådlösa nätverket men autentiseringen saknar skydd mot denna typ av attack vilket gör att man på bara några timmar kan få fram PIN-koden och på så sätt slå av krypteringen, byta lösenord eller göra det man vill.

Det släpptes samtidigt ett verktyg för att få utföra attacken och det heter Reaver som ni hittar här: Var själv tvungen att testa och det var förvånansvärt lätt att både kompilera verktyget under Ubuntu samt köra det mot min AP och det var oroväckande effektivt. För ordningens skull var jag inte sårbar eftersom jag har för vana att inaktivera funktioner som jag inte använder så jag var tvungen att slå på WPS i min AP innan jag testade men attacken lyckades sedan.

Detta betyder att mängder med trådlösa nätverk som är skyddade av WPA/WPA2-kryptering faktiskt är sårbara och det är mycket lätt för den som attackerar att lyckas med sitt intrång.

Enda skyddet är alltså att stänga av Wi-Fi Protected Setup (WPS) tills dess att standarden modifieras för att ta hänsyn till denna typ av attack men jag tror det dröjer flera år innan detta är löst och trådlösa nätverk som installerats mellan 2007 och 2012 kommer att vara lätta mål.

Hjälp er familj och era vänner genom att hjälpa dem att stänga av WPS och försök att sprida detta till så många som möjligt då detta kan vara det största säkerhetshotet mot trådlösa nätverk sedan WEP-krypteringen blev sårbar.

– Johan Ryberg


Nytt år, nya batterier till brandvarnarna

Ett bra tips så här när julen börjar ta slut är att lägga ner batterier till brandvarnarna i någon låda med julsaker inför nästa jul. Att bli väckt om nätterna av något diffust pip då och då är inte roligt och kan vara mycket irriterande och risken är stor att man plockar ut de gamla batteriet utan att ersätta det med något nytt. Det är därför bra att börja varje år / vinter med nya batterier så slipper man detta och brandvarnarna förblir funktionella.

Så, har du gamla batterier är det hög tid att byta och passa på och lägg ner nya inför nästa år så blir du automatiskt påminde om detta när nästa jul plockas fram.

– Johan Ryberg

De permanenta “tillfälliga” lösenorden

Jag stöter gång på gång på system hos flera olika organisationer där lösenorden på vissa servrar eller hela system är riktigt dåliga. I värsta fall har det i princip varit “admin/password” överallt och förklaringen har varit desamma, att det var tänkt att vara tillfälliga kontouppgifter under uppbyggnad för att underlätta men sedan har system efter system anslutits och man har helt enkelt låst in sig i ett hörn och det har inte varit värt besväret att byta eller ingen vill riskera att man inte kan hitta alla ställen att byta på inom rimlig tid.

Förklaringarna har ofta inte varit särskilt bra underbyggda och det blir ofta mer bortförklaringar.

Intentionen har ofta varit god men det blir ändå fel i slutet, läxan är att aldrig hantera en kontouppgift som tillfällig för man vet aldrig när den blir etablerad som en permanent lösning. Se till att säkra miljöerna på en gång med starka lösenord och gör det inte enkelt och använd något standardlösenord bara för det är lätt, man skjuter ofta undan sina egna ben på detta förr eller senare.

– Johan Ryberg

Det är tur att mycket av nätfisket håller dålig kvalité

Detta kom idag till och var riktat till svenskar.

anvdndare ( )

Detta meddelande dr fren Messaging Support Center till alla anvdndare. Vi
heller pe att uppgradera ver databas och e-post centrum och detta dr ver sista
anmdlan you.We har skickat flera meddelanden till dig utan svar fren dig.

Vi tar bort alla oanvdnda postkonto fvr att skapa mer utrymme fvr nya konton.
I andra inte dras in, meste du uppdatera ditt konto genom att tillhandahella
den information som anges nedan:

Bekrdfta din e-post information.

E-postadress Lvsenord :………
E-post lvsenord bekrdftelse :……..

Om du inte bekrdfta ditt kontinuerlig anvdndning av vera tjdnster genom att
bekrdfta din e-lvsenord nu, kommer ditt konto att inaktiveras och du kommer
inte kunna komma et din e-post.

Du ska omedelbart svara detta mail och ange ditt lvsenord i ovansteende
lvsenord kolumnen.
Tack fvr din fvrsteelse.


Avsändaren såg ut att vara men svaret skickas i själva verket till

Tur är väl att mycket av nätfisket håller dålig kvalité, problemet är att det blir bättre med tiden och vissa fall är faktiskt svåra att urskilja men en grundregel är att ingen leverantör någonsin kommer att kräva att få in kontouppgifter från sina användare och om dem mot förmodan skulle göra detta är det bara att byta för det skulle i så fall vara extremt oseriöst.

– Johan Ryberg hackade, ca 10 000 okrypterade lösenord är en kontaktsida med fokus på sex och siten har lite över 10 000 medlemmar som nu har förlorat sina kontouppgifter. Databasen har inte ens krypterade lösenord utan dem står fint i klartext. En sak som dem dock har gjort bra är att dem har automatiskt genererat lösenord för sina medlemmar vilket är tur eftersom de flesta är för lata för att byta lösenord.

– Johan Ryberg