Archive for the ‘Terminalkommandon’ 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

Så här använder du brandväggen ufw i Ubuntu (Uncomplicated firewall)

Senast förändrad 2009-10-21

Det finns ingen brandvägg som standard aktiverad i Ubuntu, inte ofta i några andra distributioner heller för den delen och det kan vara smart att aktivera en brandvägg för att ge ett grundläggande och extra skydd. Det är lätt gjort att man testar att installera någon LAMP-lösning för att labba lite och sedan glömmer man av att det faktiskt finns en Apache, MySQL och lite annat smått och gott som körs i bakgrunden på maskinen.

Krav
Denna guide förutsätter att du använder Ubuntu 8.04 eller senare. Programprofiler (Application profile commands) kräver 9.04 och egressfiltrering, filter per interface och bash autoavslutning kräver Ubuntu 9.10.

Kort om ufw (Uncomplicated Firewall)
ufw är ett mycket enkelt program för att administrera netfilter vilket är den brandväggsfunktionalitet som finns inbyggt i Linux kärna. Ufw kommunicerar inte direkt med netfilter utan går via iptables som är det normala gränssnittet mot netfilter men som normalt är relativt komplicerat att använda och därför skapades ufw som ett ramverk ovanpå iptables för att förenkla och göra brandväggskonfigurationer lättförståeliga för samtliga. Ufw administreras via konsolen eller genom att grafiskt gränssnitt som heter gufw

Få hjälp med ufw
För att få hjälp skriv “man ufw” Om man bara skriver ufw får man upp en grundläggande instruktion:


Usage: ufw COMMAND

Commands:enable                          enables the firewalldisable                         disables the firewalldefault ARG                     set default policylogging LEVEL                   set logging to LEVELallow ARGS                      add allow ruledeny ARGS                       add deny rulereject ARGS                     add reject rulelimit ARGS                      add limit ruledelete RULE                     delete RULEinsert NUM RULE                 insert RULE at NUMstatus                          show firewall statusstatus numbered                 show firewall status as numbered list of RULESstatus verbose                  show verbose firewall statusshow ARG                        show firewall reportversion                         display version information

Application profile commands:app list                        list application profilesapp info PROFILE                show information on PROFILEapp update PROFILE              update PROFILEapp default ARG                 set default application policy

Grundläggande konfiguration
Blockera allt som standard
Detta exempel fungerar även om du fjärradministrerar din maskin eftersom vi kommer öppna för SSH innan vi aktiverar brandväggen.

En nyhet med den ufw 0.29 som följer med Ubuntu 9.10 är att man nu även kan filtrera utgående trafik. Man brukar kalla riktningen för utgående trafik för egress och inkommande trafik för ingress. Anger man ingen riktning så förutsätter ufw att man avser inkommande trafik alltså ingress-filtrering och utgående trafik är som standard alltid tillåten.

Börja med att blockera ALL trafik in till din dator.

# sudo ufw default deny
Default policy changed to ‘deny’
(be sure to update you rules accordingly)

Nu kan inget komma igenom brandväggen. Om du t.ex. har en ssh-server för administration måste du nu öppna för tcp port 22.

Tillåt vissa portar/protokoll
Denna regel tillåter inkommande trafik på port 22, protokoll tcp

# sudo ufw allow 22/tcpRule added

Aktivera brandväggen
Sedan får man se till att brandväggen startas med datorn

# sudo ufw enableFirewall started and enabled on system startup

Man måste inte starta om hela datorn för att aktivera ufw första gången då det går lika bra med en tvingande omladdning av ufw

För Ubuntu fram till 9.04 använder du följande kommando

# sudo /etc/init.d/ufw force-reload
* Stopping firewall: ufw…
* Starting firewall: ufw…

Om du använder Ubuntu 9.10 använder du följande kommando

# sudo service ufw start


Kontrollera att dina regler stämmer
Kontrollera sedan att dina regler finns på plats

# sudo ufw statusStatus: loaded To Action From-- ------ ----22:tcp ALLOW Anywhere

Testa gärna konfigurationen via någon hemsida som kan scanna din anslutning. Ett tips är ShildsUP! från Steve Gibson https://www.grc.com/x/ne.dll?bh0bkyd2

— Johan Ryberg

Historik
2009-05-04: Första utgåvan
2009-10-21: Anpassat inlägget för Ubuntu 9.10

Aktivera färgglad konsol i Ubuntu 9.10

Om du tycker att konsolen känns lite tråkig så kan man piffa upp den genom att aktivera färger. Enklast är att editera ~/.bashrc och leta upp raden “#force_color_prompt=yes”. Ta bort brädgården framför så att det står:

force_color_prompt=yes

Du måste sedan avsluta sessionen och starta upp en ny för att aktivera förändringen

— Johan Ryberg

byobu – Visa extra systeminformation i screen

byobi eller tidigare känd som screen-profiles är ett script som hjälper till att konfigurera screen för visa mer information i terminalen. byobi används med fördel på en server och eftersom man inte har någon grafisk miljö och då får man en fin statusrad längst ner på skärmen som visar t.ex. statusmeddelanden, CPU-användninig, ledigt minne, klockan och systemets upptid.

Installation av byobu under Ubuntu 9.04

Redigera /etc/apt/sources.list med din favoriteditor och lägg till följande rader i slutet av filen:

# byobu
deb http://ppa.launchpad.net/byobu/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/byobu/ppa/ubuntu jaunty main

Lägg till projektets nyckel

sudo apt-key adv –recv-keys –keyserver keyserver.ubuntu.com A42A415B4677D2D22EB05723CF5E7496F430BBA5

Uppdatera förrådet

sudo apt-get update

Installera byobu

sudo apt-get install byobu byobu-extras

Konfigurera sedan screen genom att starta byobu, tryck F9 och utför önskade ändringar och ladda sedan om med F5. Efteråt används screen som vanligt.

Mer information: https://launchpad.net/byobu

— Johan Ryberg

Vim-nox – Dagens terminalkommando

Vi är en standardeditor i de flesta Unix-miljöer och till Linux används Vim (startas med vi). Vim står för Vi IMproved och är en vidareutveckling av Vi

Jag tänkte inte gå in på hur man använder Vi utan detta är ett tips om en variant av Vim som heter Vim-nox som är vanliga Vim utan support för X och som åtgärdar lite irriterande småproblem med originalet som skickas med i t.ex. Ubuntu.

En av sakerna som jag personligen har stört mig mest på är att när man skriver in text och vill förflytta sig uppåt eller nedåt mellan raderna med piltangenterna så skjuter man in nya rader istället för att förflytta vilket är mycket enerverande. Vim-nox löser detta problem vilket är fullt tillräckligt för mig att byta.

Vim-nox installeras i terminalen med följande kommando:

sudo apt-get install vim-nox

— 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     cachedMem:       2033472     890648    1142824          0      27308     322920-/+ buffers/cache:     540420    1493052Swap:      3172796          0    3172796johan@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     cachedMem:          1985        876       1109          0         27        316-/+ buffers/cache:        532       1453Swap:         3098          0       3098johan@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

"tab" (slutför kommando) – Dagens terminalkommando

Tangenten “Tab” är inget kommando i sig men det är något som underlättar enormt mycket eftersom bash kan slutföra kommandon åt dig.

Om du t.ex. skriver “ifcon” och trycker på “tab” så kommer bash slutföra kommandot åt dig och lägga till resterade så att det står “ifconfig” i terminalen. bash kan alltid slutföra unika kommandon men om det finns flera potentiella kommando så får du istället upp en lista på dem som går att slutföra och du måste själv lägga till några tecken så att det till slut blir unikt och går att slutföra.

Testa med att skriva if och tryck “tab” vilket kommer ge dig 4 olika förslag av kommandon. Lägg till bokstaven “c” så det står “ifc” vilket är unikt för ifconfig så slutför bash kommandot åt dig.

Samma sak gäller sökvägar och filnamn i kombination med kommandon.

För mer hjälp om bash skriver du “man bash”.

— Johan Ryberg

nano – Dagens terminalkommando

nano är en enkelt textbaserad text-editor och startas genom att skriva “nano” men oftast i samband med ett filnamn som t.ex “nano /var/log/messages”. Just messages är kanske inte en fil man normalt går in och ändrar i men det är en fil alla har och som blir ett bra exempel.

Väl inne i nano får man hjälp genom att trycka Ctrl+g vilket är ett av dem viktigaste kortkommandona.

För att avsluta trycker man Ctrl+x vilket även ger frågan om man vill spara genom att ange N för Nej (No) eller Y för Ja (Yes). Tryckte man Ctrl+x av misstag ångrar man genom att trycka Ctrl+c för att avbryta.

Page up och Page down fungerar som vanligt, även piltangenterna.

För att snabbt hoppa till slutet på en rad trycker man Ctrl+e och för att hoppa tillbaka trycker man Ctrl+a

Det finns mänger med trevliga snabbkommandon att använda men man klarar sig bra utan dem för enklare editeringar.

Om man tycker nano är lite för enkelt så finns alltid “vi” vilket jag brukar använda eftersom vi i princip alltid finns i dem flesta Unix-liknande system som t.ex OpenBSD och Sun Solaris men även i strippade embedded-system baserade på Linux så det är ett mycket bra alternativ att lära sig.

— Johan Ryberg

clear – Dagens terminalkommando

När man har mycket på skärmen och skall skriva något avancerat kommando så brukar många trycka enter flera gånger för att få lite utrymme och för ökad läsbarhet. Kanske är det bättre att rensa hela skärmen vilket kan gör med kommandot “clear”. Kommandot har inga växlar utan är kanske ett av dem mest simpla som finns.

— Johan Ryberg

df – Dagens terminalkommando

Om man är intresserad av att veta hur hårddiskarna används så är “df” rätt kommando att använda. Skriver man bara df så får man standardutskriften vilket kan se ut som följer:

johan@crm:~$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 19734388 1297384 17434552 7% /
tmpfs 257028 0 257028 0% /lib/init/rw
varrun 257028 64 256964 1% /var/run
varlock 257028 0 257028 0% /var/lock
udev 257028 2628 254400 2% /dev
tmpfs 257028 0 257028 0% /dev/shm

Tyvärr visas inte informationen i något vidare läsbart format som standard och för att få lite mer lättläst format som man är van vid lägger man till växeln -h (human readable) precis som för ls.

johan@crm:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 19G 1.3G 17G 7% /
tmpfs 252M 0 252M 0% /lib/init/rw
varrun 252M 64K 251M 1% /var/run
varlock 252M 0 252M 0% /var/lock
udev 252M 2.6M 249M 2% /dev
tmpfs 252M 0 252M 0% /dev/shm

— Johan Ryberg

Return top