Rss

  • linkedin

Archives for : Ubuntu

"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

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 byta port från 22 till valfri, 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. Gärna en liten mening som hjälper dig att komma ihåg lösenordet utantill.

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:

  • Port 22
  • LoginGraceTime 120
  • PermitRootLogin yes
  • Ciphers

Nya värden skall vara:

  • Port 10022

Välj annan port än 22, dock högre än 10000 för det finns mängder med standardportar som man lätt kan hamna på av misstag som kan skapa problem längre fram. Det innebär heller 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.

  • 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

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

Fjärrstyr Ubuntu med FreeNX

FreeNX är en trevlig programvara för att fjärrstyra din X-session (t.ex. Gnome och KDE) så att du grafiskt kan arbeta med din dator vart du än befinner dig. Uppkopplingen sker via SSH all data mellan klient och server är krypterad. FreeNX kan närmst likna fjärrskrivbordet i Windows och du behöver inte till skillnad mot det inbyggda fjärrskrivbordet i Ubuntu redan vara inloggan då du med FreeNX startar X om det behövs. En nackdel som är värd att nämna direkt är att du inte kan kräva att använda endast certifikat mot din SSH-server då FreeNX kräver inloggning med lösenord.

Installation
Installera FreeNX server på den maskin som du önskar fjärrstyra. I dagsläget kan du använda FreeNX för Gutsy (7.10), Hardy (8.04) eller Intrepid (8.10).

Börja med att lägga in källan till FreeMX i ditt repository på servern. Starta ett terminalfönster och skriv följande:

gksudo gedit /etc/apt/sources.list

Lägg till följande två rader i slutet, glöm inte att ändra VERSION mot dapper, hardy eller intrepid vilket motsvarar den version som du själv kör på din server som du önskar fjärrstyra.

deb http://ppa.launchpad.net/freenx-team/ubuntu VERSION main
deb-src http://ppa.launchpad.net/freenx-team/ubuntu VERSION main

Spara sedan och stäng Gedit

Nästa steg är att uppdatera APT genom att skriva följande i terminalen:

sudo apt-get update

Installera sedan FreeNX genom att skriva följande i terminalen:

sudo apt-get install freenx

Byt sedan ut standardnyckeln för SSH som FreeNX använder för att ge dig ett optimalt skydd

Byt ut standardnyckeln för SSH
Alla standardinstallationer av server och klient delar på samma nyckel vilket i sig inte garanterat är ett problem men som man bör byta för att ge servern maximalt skydd.

Nyckeln som alla klienter skall använda finns lagrad i följande fil: /var/lib/nxserver/home/.ssh/client.id_dsa.key, denna fil skall ersättas med en ny privat nyckel som vi skall skapa och den publika skall vi lägga i /var/lib/nxserver/home/.ssh/authorized_keys2

Skriv följande kommando i terminalen:
Säkerhetskopiera originalfilerna

sudo mv /var/lib/nxserver/home/.ssh/client.id_dsa.key /var/lib/nxserver/home/.ssh/client.id_dsa.key-backup
sudo mv /var/lib/nxserver/home/.ssh/authorized_keys2 /var/lib/nxserver/home/.ssh/authorized_keys2-backup

Skapa en ny nyckel som sparas i filen /var/lib/nxserver/home/.ssh/client.id_dsa.key

sudo ssh-keygen -t dsa -f /var/lib/nxserver/home/.ssh/client.id_dsa.key

Ange INGET lösenord, det måste vara tomt.

Nu har du även fått en publik nyckel som heter /var/lib/nxserver/home/.ssh/client.id_dsa.key.pub vilken vi skall använda till den nya publika nyckeln till FreeNX-servern

echo ‘no-port-forwarding,no-agent-forwarding,command=”/usr/lib/nxserver” ‘ | sudo tee /var/lib/nxserver/home/.ssh/authorized_keys2
sudo cat /var/lib/nxserver/home/.ssh/client.id_dsa.key.pub | sudo tee -a /var/lib/nxserver/home/.ssh/authorized_keys2

Ta vara på ny nyckel till klienten
Ta och spara den nya privata nyckeln som alla klienter måste använda sig utav på ett säkert ställe. Kopiera följande text på ett säkert ställe

sudo cat /var/lib/nxserver/home/.ssh/client.id_dsa.key

Installera klient
Klienten laddas ner från http://www.nomachine.com

Denna guide går endast igenom installationen av linux-klient för Ubuntu

Välj antingen 32 eller 64-bitar beroende på ditt system. Spara filen på skrivbordet och dubbelklicka på filen eller starta den direkt med GDbi Package installer och följ instruktionerna.

Klienten hittas nu under Applikationsmenyn/Internet/NX Client for Linux

Om du har bytt nyckel måste du även nu byta ut nyckeln för din NX-session. Starta NX Client for Linux och ange ditt användarnamn som “Login”, ditt lösenord under “Password” och i Session anger du IP eller fullständigt värdnamn till din server. Klicka sedan på Configure och under fliken “General” klickar du på “Key…”
Radera befintlig nyckel och klistra in den som du sparade under rubriken “Ta vara på ny nyckel till klienten”. Klicka på “Save” och “Ok”.

För att logga in klickar du på “Login”

Referenser

— 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

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

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

less – Dagens terminalkommando

För att enkelt läsa i en textfil är “less” ett riktigt bra kommando. less låter dig läsa både upp och ner i dokumentet samt du kan lätt hoppa till specifik rad eller söka. Snabbkommandon för less är en blandning av more och vi.

För att läsa i en fil skriver man less [filnamn] som t.ex. “less /etc/group”

Här följer några användbara snabbkommandon:

  • :[radnummer] – Hoppar till önskad rad, ex: :41
  • /[sökord] – Letar upp och markerar sökordet, ex: /manual
  • [pil ned] – Bläddar nedåt
  • [pil upp] – Bläddrar uppåt
  • q – Avslutar

— Johan Ryberg

sudo – Dagens terminalkommando

I Ubuntu så är ens vanliga användare ingen administratör och har således inte heller några administrativa rättigheter och för att göra administrativa åtgärder. För att tillfälligt få dessa rättigheter används kommandot “sudo”.

Sudo låter dig köra kommandon som en annan användare och då vanligtvis root genom att skriva sudo [kommando] som t.ex. “sudo apt-get update”. När man tryckt enter behöver man ange lösenord och då är det samma lösenord som till ditt egna konto som avses.

— Johan Ryberg

Installera FTP-server

Denna guide beskriver hur man installerar vsftpd i Ubuntu 8.10

Att tänka på
Denna installation omfattar inte några specialanpassade säkerhetsinställningar. Konton som kan logga in på FTP-servern har samma rättigheter i hela filsystemet som för gällande användare. Om flera olika användare får möjlighet att logga in är det viktigt att tänka på att dessa endast får tillgång till de delar som är tänkt men guiden kommer inte att gå igenom detta just nu, kanske kommer ett komplement för hur man säkrar upp vsftpd i Ubuntu lite senare.

Installation
Installera genom att skriva följande i terminalen:

sudo apt-get install vsftpd

Konfigurera FTP-servern
Editera /etc/vsftpd.conf och anpassa inställningarna för ditt system, för hjälp gällande vilka inställningar som kan göras kan “man vsftpd.conf” användas.

sudo nano /etc/vsftpd.conf

Tänk på att anonyma användare får tillgång till FTP-servern som standard vilket man antagligen inte vill. För att stänga av anonyma användare leta upp följande rad:

anonymous_enable=YES

och ändra till

anonymous_enable=NO

Om man tar bort möjligheten för att anonyma användare skall kunna logga in måste kan aktivera lokala konton vilket man gör genom att se till att local_enable=YES, denna rad kan vara bortkommenterad och skall då se ut enligt följande:

local_enable=YES

Starta om vsftpd
När önskade ändringar är gjorda spara och starta sedan om vsftpd

sudo /etc/init.d/vsftpd restart

— Johan Ryberg