Archive for the ‘Linux’ Category

Konfigurera SSH för ökad säkerhet

Konfigurera SSH för ökad säkerhet

Det finns några steg man bör ta efter att man installerat SSH på ditt system. En kedja är inte starkare än den svagaste länken och gällande SSH är ett svagt lösenord till t.ex. root ett allvarligt hot.

Det vi skall göra är att skapa ett certifikat och stänga av möjligheten att logga in utan certifikat. Vi skall även kontrollera så att root inte får logga in då det är mycket bättre att använda sudo när administratörsrättigheter behövs. Vidare skall vi stänga ner några krypteringsmetoder som inte anses som fullt så säkra samt öppna upp för visuell identifiering av serverns “fingeravtryck”.

Skapa nyckel
Vi väljer att använda en RSA-nyckel på t.ex. 4096 bitar. Öppna ett terminalfönster och skriv in följande: ”’ssh-keygen -t rsa -b 4096”’. 1024 sägs vara tillräckligt säkert men man kan aldrig vara för säker ;-)

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

Du får sedan upp en fråga var du vill spara din nyckel. Har du redan nycklar i id_dsa bör du ange ett annat namn för filen skrivs över annars. Är du nöjd med förlaget tycker du bara retur

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

Sedan skall du ange lösenord. Tänk på att blanda stora och små bokstäver samt lägga in tecken och siffror. Längden är dock en mycket viktig faktor så gör det hellre längre än kort och komplext. Gärna en liten mening som hjälper dig att komma ihåg lösenordet utantill eller absolut bäst är att använda t.ex. Keepass för att både skapa slumpmässiga lösenord men även spara dem på ett krypterat och säkert sätt.

Enter passphrase (empty for no passphrase): M1tt H3ml1g@ löSe40rD
Enter same passphrase again: M1tt H3ml1g@ löSe40rD
Your identification has been saved in /home/johan/.ssh/id_rsa.

Your public key has been saved in /home/johan/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:x:xx:xx:xx:xx:xx:xx

Installera den publika nyckeln i systemet
Den publika nyckeln skall läggas i ~/.ssh/authorized_keys och det kan finnas fler nycklar än en. Se till att göra radmatning mellan nycklarna.
Om nyckeln skall installeras på samma system kopierar du helt enkelt id_dsa.pub till authorized_keys.

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

Skulle det vara en extern maskin kan du använda scp för att kopiera nyckeln, tänk då på att du inte skriver över authorized_keys om det skulle finnas existerande nycklar i filen. För att kopiera (skriva över befintlig fil) gör du följande

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

Se även till att ~/.ssh/autorized_keys och ~/.ssh/id_rsa endast har gällande användares rättigheter. Vid problem använd chmod 600 för att åtgärda.

Konfigurera sshd
Nästa steg är att kontrollera inställningarna för sshd. Filen vi skall modifiera heter /etc/ssh/sshd_config
Börja med att skapa en säkerhetskopia av sshd_config

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

Sedan använder vi lämplig editor för att modifiera sshd_config

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

Följande rader skall ändras:

  • LoginGraceTime 120
  • PermitRootLogin yes
  • Ciphers

 

  • LoginGraceTime 30

LoginGraceTime är antalet sekunder innan man blir utkastad om man inte lyckas med inloggningen. Det är en smaksak men 120 sekunder behöver man normalt sätt inte på sig. Sänk den med fördel. Dock bör du hinna ange ditt lösenord innan tiden går ut.

  • PermitRootLogin no

Root behöver inte kunna logga in via ssh. Du kan använda sudo istället vilket är mycket säkrare.
Vi skall även lägga till en så att man förhindrar möjligheten att logga in med hjälp av användarnamn och lösenord vilket betyder att man tvingas använda certifikat. Lägg till:

  • PasswordAuthentication no
  • Ciphers aes128-ctr,aes256-ctr,arcfour256,arcfour,aes128-cbc,aes256-cbc

Ciphers ändrar vi på grund av en potentiell sårbarhet i vissa krypteringsmetoder, mer information om dessa här:
[1] http://openssh.org/txt/cbc.adv
[2] http://www.cpni.gov.uk/Docs/Vulnerab…visory_SSH.txt
[3] http://www.cs.washington.edu/homes/y…pers/TISSEC04/

Kontrollera även så att följande rader så att standardinställningarna stämmer:

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

Spara och avsluta.

Nu skall vi bara starta om sshd så att de nya inställningarna tar.

johan@johan-laptop:~/.ssh$ sudo /etc/init.d/ssh restart
Password:
* Restarting OpenBSD Secure Shell server… [ OK ]

Konfigurera ssh för visuell värdnyckel (Visual Host Key)
När man loggar in mot en viss värd är det inte så lätt att identifiera att det är rätt maskin, någon kan till exempel ha styrt om din DNS till en annan maskin och på så sätt lura dig att logga in i fel maskin för att stjäla kontouppgifter.

För att lösa detta har gänget bakom OpenSSH utvecklat en visuell representation av nyckeln så att det blir mycket lätt att känna igen sitt egna system. För att aktivera VisualHostKey skall man ändra i antingen /etc/ssh/ssh_config vilket gäller alla användare eller ~/.ssh/config för en personlig inställning

Lägg till följande i konfigurationen (“Host * finns redan överst i ssh_config)

Host *
VisualHostKey yes

Byta från standardport 22?

Det innebär ingen direkt ökad säkerhet att ändra port, men man slipper de flesta script-kiddies attacker och maskar när man flyttar sig från standardportar. Detta gäller samtliga tjänster och inte bara ssh. Det man kan skydda sig mot genom “säkerhet via oreda” är att en mask eller script som snabbt scannar nätet efter en ev. 0-day sårbarhet missar systemet vilket är mer tur än skicklighet för om någon verkligen vill in så gör man en mer noggrann kontroll av det system man vill in i. Om man ändå vill byta är det bäst att lägga sig mellan 0 och 1023 då dessa är privilegierade vilket betyder att endast konton med administrativa rättigheter kan starta tjänster och därför slipper man hamna i en riggad tjänst startad av en användare som t.ex. loggar lösenord.

Testa och verifiera
Testa att logga in i systemet. Glöm inte av att du har bytt port. Du måste även ange användarnamn om du inte har samma användarnamn på fjärrdatorn som den lokalt inloggande användare. Detta gör du genom att skriva användarnamn@server.ip

johan@johan-laptop:/$ ssh johan@localhost -p 10022
Host key fingerprint is 66:12:14:8a:31:23:4f:86:13:f2:1c:4d:33:dd:d4:67
+–[ RSA 4096]—-+
| |
| .o |
| . =o .|
| . += E|
| + S . .o|
| . + .. o|
| . o.= |
| +o+ o|
| +=o |
+—————–+
Enter passphrase for key ‘/home/johan/.ssh/id_dsa’:

Nu är du säkert inloggad i ditt system

–Johan Ryberg

mysqlbackup-ng i ny tappning

MySQLBackup-NG är ett trevligt litet skript som tar backup på MySQL-databaser, komprimerar filen och sedan skickar iväg den med scp till önskad plats.

Jag har nästan skrivit om det totalt sedan version 1.1 som tidigare fanns på Google Code vilket betyder att 2.0 är 100% POSIX-kompatibelt och fungerar på både OpenBSD och under Linux som t.ex. Ubuntu Server 10.04.

Ni hittar MySQLBackup-NG hos github: https://github.com/jryberg/MySQLbackup-ng

–  Johan Ryberg

free – Dagens terminalkommando

Med kommandot free så får du ledigt arbetsminne (ram), även swap visas.

johan@xps-laptop:~$ free
total used free shared buffers cached
Mem: 2033472 890648 1142824 0 27308 322920
-/+ buffers/cache: 540420 1493052
Swap: 3172796 0 3172796
johan@xps-laptop:~$

Som du ser är inte utskriften särskilt användarvänlig, lätt till växeln -b,-k,-m eller -g vilket ger utskrift i bytes, Kbyte, Mbyte eller Gbyte.

johan@xps-laptop:~$ free -m
total used free shared buffers cached
Mem: 1985 876 1109 0 27 316
-/+ buffers/cache: 532 1453
Swap: 3098 0 3098
johan@xps-laptop:~$

Minne som är “cached” är sådant som går att återanvända vid behov men som även skrivs över om det skulle behövas mer ledigt minne. Just nu har jag 1109 Mbyte ledigt ramminne + 316 Mb som är mellanlagrat så jag har nästan 1.5 Gb ledigt

— Johan Ryberg

Återställ Gnome (radera personliga inställningar)

Ibland händer det att man råkat krascha gnome-panel, bytt tema till något som inte fungerar eller man har gjort något annat som gjort att man vill börja om från början.

För att rensa sina personliga inställningar i Gnome och återställa till Ubuntu original så behöver man endast radera ett par kataloger.

Om du kan använda skrivbordet trycker du Alt+F2 och skriver “gnome-terminal” och sedan klickar du på “Kör”. Om du inte ens kan använda Gnome måste du ut i en av konsolerna vilket du kommer åt genom att trycka följande tangentkombination: Ctrl+Alt+F1, logga in med din vanliga användare.

Utför sedan följande kommando:

sudo rm -rf .gnome .gnome2 .gconf .gconfd .metacity

Lösenordet som skall användas är ditt eget.

För att inställningarna skall aktiveras måste du sedan starta om Gnome, enklast är att starta om X. Utför följande kommando:

sudo /etc/init.d/gdm restart

Nu är skrivbordet återställt till sitt ursprung

— Johan Ryberg

Så här byter du namn på din Ubuntu-maskin

Om du av någon anledning behöver byta namn på din maskin eller om t.ex. domänen du använder byter namn så är det viktigt att du uppdaterar din konfiguration.

Det finns tre filer som eventuellt behöver uppdateras vilka är “/etc/hosts”, “/etc/hostname” samt “/etc/resolv.conf”. Om du har dynamisk IP så kommer resolv.conf uppdateras automatiskt från din DHCP-server

I filen “/etc/hostname” står endast datorns värdnamn vilket bara skall vara ett enda “ord”, t.ex:

wastebin

Uppdatera sedan “/etc/hosts” så att datorns fullständiga värdnamn och domän står med i filen som t.ex:

127.0.0.1 localhost
127.0.1.1 wastebin.serverpark.nu wastebin

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

I exemplet ovan står datorn under domänen “serverpark.nu”

Den 3:e filen är “/etc/resolv.conf” som behöver uppdateras
Den kan se lite olika ut men ett standardutseende är ungefär som följer:

domain serverpark.nu
search serverpark.nu
nameserver 1.2.3.4
nameserver 1.2.3.4

Det är alltså viktigt att uppdatera alla tre för att domännamn och värdnamn skall stämma överens med verkligenheten.

För att förändringarna skall tas är det enklast att starta om maskinen eller köra följande script:

sudo /etc/init.d/hostname.sh

— Johan Ryberg

Skriv "virus" till Linux i 5 enkla steg

Jag hittade detta mycket intressanta blogginlägg från “foobar” med rubriken “How to write a Linux virus in 5 easy steps“. Den sårbarhet som beskrivs är ett ett känt problem men som man ännu inte bryr sig om i varken KDE eller Gnome, Xfce har dock lagt in någon form av skydd.

Kortfattat handlar sårbarheten om att man bifogar genvägar eller mer kända som “launchers” i t.ex. ett e-postmeddelande vilket är en liten textfil som innehåller en länk till ett exekverbart program samt vilken ikon man vill ha. Denna launcher behöver inte vara exekverbar i sig utan för användarvänlighetens skull så fixar Gnome och KDE detta och kör kommandot som står beskrivet i filen. Detta kommando kan t.ex. hämta hem script från Internet och sedan exekvera det. Vad som händer sedan är upp till programmeraren men det kan t.ex. vara en Firefox-plugin som stjäl lösenord eller vart nu fantasin sätter sina gränser.

Läs mer här: http://www.geekzone.co.nz/foobar/6229

— Johan Ryberg

Return top