Beveiligde SSH-verbinding
De eenvoudigste manier om een CentOS-server te beheren als administrator is via het ssh-protocol. Zelfs vanaf een Android-smartphone en een simpel 3G-abonnement kan eenvoudig en snel ingegrepen worden indien nodig.
SSH is licht en snel. Maar wanneer we vanaf eender welk netwerk connectie gaan maken met onze server, dan doen we dat best op een veilige manier.
Om te beginnen creëren we een sleutelpaar (combinatie private/publieke sleutel). Ik doe dit op mijn laptop (Fedora 12) en kies voor de rsa-versleutelingsmethode :
[jonas@jonas ~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/jonas/.ssh/id_rsa): Enter passphrase (empty for no passphrase): ik-beveilig-mijn-sleutel Enter same passphrase again:ik-beveilig-mijn-sleutel Your identification has been saved in /home/jonas/.ssh/id_rsa. Your public key has been saved in /home/jonas/.ssh/id_rsa.pub. |
|
Dit resulteert in 2 bestanden in de verborgen .ssh-map van mijn home-directory :
[jonas@jonas .ssh]$ ls -l -rw------- 1 jonas jonas 1743 2009-08-17 21:26 id_rsa <-- private sleutel ! -rw-r--r-- 1 jonas jonas 405 2009-08-17 21:26 id_rsa.pub |
|
Op de server maken we een normale gebruiker aan met minimale rechten :
-bash-3.2# useradd jonas |
|
Standaard heeft een nieuwe gebruiker de bash-shell. Een shell is nodig voor ssh. De standaardwaarden van een nieuwe account zijn opgeslagen in /etc/default/useradd of op te vragen via useradd -D :
-bash-3.2# cat /etc/default/useradd |
|
De publieke sleutel van het sleutelpaar gaan we installeren op de server(s) die we willen beheren. Ik gebruik secure copy (scp) om de sleutel over te pompen :
[jonas@jonas .ssh]$ scp id_rsa.pub jonas@mijn.server.ip:/home/jonas/ |
|
Op de server creëren we de juiste directories en het bestand authorized_keys2 om de tekstuele presentatie van de sleutel in op te slaan :
[jonas@server ~]$ mkdir .ssh |
|
Tenslotte maken we instellingen voor het SSH-proces in /etc/ssh/sshd_config om SSH-connecties met de server te beperken tot een absoluut veilige manier.
1. het is "good practise" om de standaard poort 22 te veranderen (port scanning !) :
Port 55111 |
|
2. Beperk SSH-communicatie tot versie 2
Protocol 2 |
|
3. Beperk de gebruikerslijst
AllowUsers jonas |
|
4. Verbied root toegang via SSH
PermitRootLogin no |
|
5. Laat enkel authenticatie via de RSA-sleutel toe
PubkeyAuthentication yes |
|
Wanneer we nu een SSH-verbinding willen maken met onze server, moeten we de juiste private sleutel meegeven via de -i optie van het ssh commando :
[Jonas@jonas ~]$ ssh -2 -p 55111 -l jonas -i /home/jonas/.ssh/id_rsa mijn.server.ip |
|
Het is belangrijk dat de private sleutel in de juiste handen blijft. Mocht echter deze private sleutel gebruikt worden door onbevoegden, dan nog moet men bij de connectie de passphrase opgeven waarmee de private sleutel beveiligd is.