User Tools

Site Tools


kriptosistemi_konfigurisanje_ssh


Dobili smo dosta reakcija na zadnji clanak u vezi SSH-a. Zahvaljujem onim korisnicima koji su poslali linkove za kofigurisanje SSH-a i njihove omiljene SSH alatke. Definitivno postoji dosta informacija vezano za SSH, i mozemo samo zagrebati povrsinu u ova dva clanka. Povremeno cu ukljucivati veze do dodatnih izvora za citanje i alata koje mozete samo probati.

U ovonededeljnom clanku, posveticemo malo vremena SSH konfiguracionim fajlovima, i onda kratko pomenuti ostale alatke koje dozvoljavaju integraciju SSH izmedju vaseg FreeBSD sistema i ostalih operativnih sistema.

U zadnjem clanku smo videli da je moguce da kreirate i primate SSH konekcije koristeci podrazumevane FreeBSD konfiguracije. Videli smo da mozemo povecati nivo sigurnosti autentifikacije generisanjem korisnickih para kljuceva i kopiranje javnog kljuca do SSH servera. OpenSSH zadrzi alatku koja je poznata kao ssh-agent, ili SSH autentifikacioni agent. IBM DeveloperWorks ima seriju odlicnih clanaka koji objasnjavaju kako koristiti ssh-agent. Autor zalazi u detalje o tome kako javni i privatni kljucevi rade i daje dosta korisnih linkova do ostalih izvora informacija. Posto se SSH sastoji od klijenta i servera, postoje dva konfiguraciona fajla. Jedan se naziva ssh_config i drugi je sshd_config. Ovo dodatno “d”, za daemona, ili SSH server, pravi razliku. Kada sam prvi put menjala SSH konfiguracioni fajl, greskom sam dodala liniju za server u konfiguracionom fajlu klijenta i onda se nasal u cudu kada nije imalo nikakvog uticaja na moj sistem. Uvek imajte na umu da je SSH klijent tug de sedite, a SSH server je udaljena masina kojoj zelite da pristupite.

Oba ova fajla poseduju man stranice koje objasnjavaju sve moguce konfiguracione opcije. Obe vredi procitati jer mozete naici na neku opciju koju ovde nismo pokrili. Pogledajmo prvo podrazumevani konfiguracioni fajl SSH klijenta. Neke linije su skracene da bi stale na stranici:

$ cat /etc/ssh/ssh_config

#   $OpenBSD: ssh_config,v 1.15 2002/06/20 20:03:34 stevesk Exp $
#   $FreeBSD: src/crypto/openssh/ssh_config,v 1.2.2.6 2002/07/25 16:03:44 \
	fanf Exp $

# This is the ssh client system-wide configuration file.  See
# ssh_config(5) for more information.  This file provides defaults for
# users, and the values can be changed in per-user configuration files
# or on the command line.

# Configuration data is parsed as follows:
#  1. command line options
#  2. user-specific file
#  3. system-wide file
# Any configuration value is only changed the first time it is set.
# Thus, host-specific definitions should be at the beginning of the
# configuration file, and defaults at the end.

# Site-wide defaults for various options

# Host *
#   ForwardAgent no
#   ForwardX11 no
#   RhostsAuthentication no
#   RhostsRSAAuthentication no
#   RSAAuthentication yes
#   PasswordAuthentication yes
#   BatchMode no
#   CheckHostIP no
#   StrictHostKeyChecking ask
#   IdentityFile ~/.ssh/identity
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   Port 22
#   Protocol 2,1
#   Cipher 3des
#   Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour, \
	aes192-cbc,aes256-cbc
#   EscapeChar ~
#   VersionAddendum FreeBSD-20020629

Verovatno ste primetili da svaka linija u ovom fajlu pocenja sa znakom # (sto znaci da je komentar). Ovo ne znaci da SSH klijent nema konfiguraciju. Umesto toga, podrazumevane opciju su izlstane ovde kao reference. Ako zelite da promenite podrazumevano, prvo uklonite # sa odgovarajuce linije, i onda unesite novu vrednost. Sve moguce vrednosti su izlistane u ssh_config man stranici.

Dok budete citali man stranicu, primeticete da se neke konfiguracione opcije odnose samo na odredjene verzije. Kad god je to moguce, koristite SSH verzije 2. Ako uvek koristite FreeBSD klijent da se povezete na FreeBSD server, podrszumevana konfiguracija na klijentu i serveru ce uvek koristiti verziju 2. Ali, ako koristite vas FreeBSD sistem da pristupite nekom sistemu koji nije FreeBSD, mozda cete biti primorani da koristite verziju 1 zato sto je to jedina verzija koju mnogi sistemi podrzavaju.

Koje su razlike izmedju verzije 1 i 2? Ako izvrsite pretragu na Internetu, najcesci odgovorkoji cete dobiti je da je verzija 2 kompletno napisana ponovo i pokriva mnoge sigurnosne propuste koje su se pojavile u verziji 1. Ove dve verzije se razlikuju i u algoritmima koje podrzavaju koje smo ovde prestavili:

VerzijaAlgoritam za Sifrovanje
verzija 1DES, 3DES, blowfish
verzija 2AES-128, AES-192, AES-256, blowfish, CAST-128, ArcFour
VerzijaKriptografski Checksum
verzija 1Nijedan
verzija 2HMAC-MD5, HMAC-SHA-1, HMAC-RIPEMD

Primeticete da verzija 2 podrzava jace algoritme, i pruza zastitu od menjanja fajla. Zapamtite, akronim HMAC je uvek dobro imati u kriptosistemu.

Pogledajte ovu liniju u konfiguracionom fajlu klijenta:

#  Protocol 2,1

Ovo znaci da ce klijent pokusati da koristi verziju 2; ako server podrzava samo verziju 1, onda ce klijent koristiti tu verziju. Ako promenite liniju u:

Protocol 2

Klijent nece uspeti da se poveze sa serverima koji podrzavaju samo verziju 1. Zapamtite da ako napravite bilo kakve promene, uklonite znak # ili ce promena biti ignorisana zato sto ce se smatrati komentarom.

Dve linije se odnose na ciphers ili algoritme za sifrovanje:

#   Cipher 3des
#   Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour, \
	aes192-cbc,aes256-cbc

Prva linija se koristi tokom sesije za veriju 1. Man stranica preporucuje da ne koristite DES osim u slucaju kada morate. Primetite da je podrazumevani 3DES umesto jaceg, i efikasnijeg blowfish algoritma. Ovo je zbog toa sto mnogi sistemi koji nisu FreeBSDne podrzavaju blowfish. Nazalost, postoje sistemi koji podrzavaju samo verziju 1 i isto tako podrzavaju samo DES. Ako je ovo slucaj, podrazumevana konfiguracija klijenta se nemoze koristiti, sto znaci da cete morati da liniju promenite u:

Cipher DES

Izbegavajte ovo ako je moguce. Iako je ovo dosta, dosta bolje nego koriscenje telnet alatke za povezivanje na sistem i slanje svega u cistoj tekstualnoj formi, ovo umanjuje sigurnost koju SSH pruza.

Druga linija koja se odnosi na ciphers se koristi tokom sesije verzije 2. Ako se pitate sta cbc predstavlja, ova definicija vam moze, ili mozda ne, razjasniti ovo. Uva linija daje uredjenu listu algoritama za sifrovanje. Prvi algoritam koji se poklopi sa serverovim ce biti koriscen za sifrovanje podataka.

Zapazite da je /etc/ssh/ssh_config globalni konfiguracioni fajl klijenta. Ovo znaci da se vrednosti u ovom fajlu mogu zaobici koriscenjem opcija tokom koriscenja ssh komande. Isto tako, ako vas mrzi da kucate i uvek koristite iste opcije, mozete kreirati prilagodjeni konfiguracioni fajl u vasem home direktorijumu. Nap primer, umesto da koristite l opciju da bi se ulogovali kao korisnik biko, mozemo kreirati fajl ~/.ssh/config i ubaciti sledecu liniju:

HostName 10.0.0.1
User biko

Svi SSH parametric su osetljivi na mala i velika slova, tako da ne zaboravite na stavite U kao veliko slovo u User. Sada, kad god koristimo ssh da se povezemo na 10.0.0.1, ne moramo da ukljucimo l opciju. Ali cu jos uvek biti upitan za lozinku korisnika biko.

Ako koristite ime hosta ili FQDN umesto IP adrese kada koristite ssh komandu, primeticete da ce mozda vas klijent zastati na trenutak dok ne sazna vase ime. Mozda cete primetiti razliku u brzini ako dodate unos za SSH server u /etc/hosts na SSH klijentu.

Promenimo sada stranu i predjimo na konfiguracioni fajl SSH servera /etc/ssh/sshd_config. Ovaj fajl je slican fajlu SSH klijenta u tome da sve linije pocinju znakom # i sve moguce vrednosti su izlistane u man stranici.

Budite vise oprazniji sa SSH daemonom. Na kraju, da bi pokrenuli daemon, morate da otvorite port 22 na tom sistemu. Ako taj sistem ima pristup Internetu, svako na svetu moze da proba da se poveze sa tim kompjuterom na tom portu. Ako koristite autentifikaciju lozinkom i neautorizovani korisnik pogodi korisnicko ime i lozinku, mocice da se uloguju na taj sistem sa svim pravima koja taj korisnik ima. Vidite sad zasto SSH logovanja root nalogom nisu dozvoljena i i zasto je koriscenje javnog kljuca sa privatnim kljucem zasticenim sa passphrase?

Vazno je da utvrdite da koristite zadnju verziju SSH daemona. Da priverite SSH server verziju, povezite se koristeci telnet na port 22 masine na kojoj je SSH daemon. Ako ste na serveru, sledeca komanda ce raditi; u suprotnom, telnet-ujte se na IP adresu servera.

telnet localhost 22
Trying ::1...
Connected to localhost.
Escape character is '^]'.
SSH-1.99OpenSSH_3.4p1 FreeBSD-20020702
quit            ^^^^^
Connection closed by foreign host.

Postarajte se da koristite verziju vecu od 3.3. Svaki doftver, ukljucujuci softver koji je dizajniran da omoguci bezbednost, ima mogucnost da bude kompromitovan, i vazno je da koristite softver koji je zakrpljen od svih poznatih exploita. Ovo postaje dvostruko vazno za aplikacije kao sto je OpenSSH, koja se koristi da dozvoli udaljenim korisnicima pristup sistemu.

Ako redovno pokrecete cvsup i portupgrade, vas FreeBSD sistem ce biti azuriran. Dobra je ideja i da se prijavite na security-notifications@freebsd.org, da bi dobili obavestenja o novim exploitima koji imaju uticaja na vas FreeBSD sistem cim budu otkriveni. FreeBSD maticna stranica sadrzi uputstva kako da se prijavite, kao i beleske o proslim bezbednosnim izvestajima.

Mozete instalirati i najsveziju verziju OpenSSH, koja se nalazi u /usr/ports/security/openssh. Ovaj clanak prikazuje FreeBSD 4.7-RELEASE sistem koji koristi OpenSSH koji je ukljucen u osnovnoj instalaciji.

Postoji nekoliko nacina za kontrolisanje kojim hostovima i korisnicima je dozvoljen pristup vasem SSH daemonu. Jedan nacin je pomocu zastitnog zida. Ako ne zelite da iko pristupa vasem SSH serveru preko Internet konekcije, stavite SSH server iza zastitnog zida sa pravilima koji ne dozvoljavaju pristup portu 22. Ako imate korisnike koji ce prustupati SSH serveru preko Interneta, moracete da dodate pravilo koje dozvoljava pristup portu 22. Ako vasi SSH klijenti imaju staticke IP adrese, mozete dozvoliti samo te adrese u vasim pravilima za zastitni zid.

Sledece, mozete modifikovati /etc/ssh/sshd_config. Prvo, napravite baner. Dok sam baner ne pruza nikakvu sigurnost, moze da stoji kao upozorenje neautorizovanim korisnicima i moze da bude od znacaja ako ako ikada budete morali da se obratite ISP-u ili legalnim vlastima u vezi neautorizovanog pristupa. Ovde smo napravili jednostavan baner:

$ cat /etc/ssh/banner
**************************************************************************

Ovo je privatan sistem!!! Svi pokusaji povezivanja se beleze i nadgledaju.
Svi neautorizovani pokusaji povezivanja bice istrazeni i prosledjeni  
odgovarajucim vlastima.

**************************************************************************

Onda, da kazete daemonu da prikaze baner, promenicemo ovu liniju u /etc/ssh/sshd_config:

#Banner /some/path

u

Banner /etc/ssh/banner

Sam baner ce biti prikazan pre upita za lozinku ili passphrase. Imajte na umu d ace baneri biti prikazani samo klijentima koji koriste SSH verziju 2 zato sto nisu podrzani u verziji 1.

Ako vasi SSH klijenti nemaju staticke IP adrese ili ne koriste uvek iste kompjutere za pristup SSH serveru, tesko je precizirati izvorne IP adrese u vasem pravilu za zastitni zid. Srecom, mozete odrediti koji korisnici mogu da se autentifikuju na SSH serveru tako sto cete dodati AllowUsers parametar konfiguracionom fajlu SSH daemona. Ovde cemo ograniciti pristup samo za korisnike genisis i biko:

AllowUsers genisis biko

Bilo koji korisnik koji nije na toj listi ce jos uvek biti upitan za lozinku kada pokusaju da se povezu na SSH daemon. Ali, cak i da ukucaju ispravno korisnicko ime i lozinku, dobice poruku da pristup nije dozvoljen i njihov pokusaj povezivanja nece biti uspesan. Poruka o neuspesnom povezivanju ce se ispisati u konzoli SSH daemona, kopirati u /var/log/messages i poslati mailom do root naloga kao deo dnevnog bezbednosnog izvestaja. Kao sto mozete videti, ovu liniju je dobro imati u konfiguracionom fajlu SSH daemona. Da budete jos obazriviji, ako se vasi korisnici liguju sa uvek istih sistema, mozete uraditi ovo:

AllowUsers genisis@10.0.0.2 biko@10.0.0.2

Ali, ovo necete zeleti da uradite ako vasi korisnici ne ne koriste uvek isti sistem ili u slucaju da ti sistemi nemaju staticke IP adrese. Na primer, ako korisnik genisis pokusa da se poveze sa adrese 192.168.10.1, dobice poruku da pokusaj nije dozvoljen.

U zavisnosti od vasih potreba, mozda cete zeleti da dodate i sledece linije:

ClientAliveInterval 120
ClientAliveCountMax 2

Prva vrednost znaci da ako klijent ne posalje nikakve podatke za vise od dva minuta (120 sekundi), server ce poslati poruku klijentu trazeci odgovor. Druga linija znaci da ako klijent ne odgovori nakon cetiri minuta (120 puta 2), server ce prekinuti vezu sa klijentom.

Mozete uzeti u obzir i da promenite vrednost ove linije:

#Port 22

u neki drugi port. Ako to uradite, postarajte se da klijenti znaju koji broj porta treba da koriste da bi se povezali na server tako da mogu da ga preciziraju u komandnoj liniji ili u ssh_config fajlu. Iako ovo podize nivo sigurnosti tako sto nipodistava nasumicne ili skriptovane pokusaje na portu 22 i onemogucavajuci da se port 22 prikaze prilikom skeniranja, neautorizovani korisnik sa znajnem moze jednostavno koristiti telnet da sepoveze na vas alternativni port i da otkrije da SSH daemon ustvari slusa na tom portu.

Ako ne zelite da ceo svet zna da vas SSH server radi na FreeBSD sistemu, mozete promeniti i ovaj parametar:

#  VersionAddendum FreeBSD-20020629

Setite se da ste videli ovu liniju kada smo koristili telnet da se povezemo na port 22. Ako ovo promenimo u nesto slicno ovom:

VersionAddendum   Samo za Autorizovane Korisnike!!!!

Onda ce ovo promeniti liniju u telnet izlazu u:

SSH-2.-OpenSSH_3.4p1 Samo za Autorizovane Korisnike!!!!

Imajte na umu da ce ovo jos uvek prikazati verziju OpenSSH koja se koristi. Ovo je jos jedan razlog zasto uvek trebate korisiti najsveziju, potpuno zakrpljenu verziju zato sto zvaki korisnik koji zna kako da koristi telnet moze veoma lako saznati dali je vas SSH server zakrpljen za poznate exploit-ove.

Ako vas SSH server ima vise IP adresa, sve ce podrazumevano slusati za konekcije na portu 22. Ako zelite da samo jedna adresa slusa, promenite sledecu liniju:

#ListenAddress 0.0.0.0

menjajuci 0.0.0.0 u zeljenu IP adresu.

Zapamtite, ako napravite bilo kakve promene u konfiguracionom fajlu daemona, morate da posaljete “signal one” do sshd da ga obavestite o promenama:

killall -1 sshd

Nakon sto ste informisali sshd o promenama, uvek koristite ssh klijent da testirate vase promene. Na primer, ako dodam sledecu liniju:

Allowusers genisis biko

ali jos se korisnik dlavigne jos uvek moze povezati, onda je vreme da proverite tu liniju za greske. Veoma je lako zaboraviti da su parametri osetljivi na mala i velika slova. U ovom slucaju, AllowUsers ce mozda raditi ali Allowusers je ignorisan bez poruka o gresci i nece odraditi posao. Ne zelite da saznate sest meseci kasnije da je svako mogao da se poveze kada ste vi mislili da se ogranicili konekcije za sva korisnika.

Resursi

kriptosistemi_konfigurisanje_ssh.txt · Last modified: 2017/04/28 10:25 (external edit)