SSH + VNC w Ubuntu

Zgłębiając temat zdalnego pulpitu  postanowiłem również trochę skupić się nad zagadnieniami bezpieczeństwa bo chociaż VNC samo w sobie jest bardzo użyteczne to używanie go poza siecią wewnętrzną bez zabezpieczenia (szyfrowania) jest pewnego rodzaju samobójstwem.

Poniższy notka będzie dotyczyć instalacji servera ssh, utworzenia szyfrowanego tunelu i wykorzystanie go do połączenia VNC. Tak więc do dzieła.


1) Do pełni szczęścia potrzebujemy klienta open ssh, który jest domyślnie instalowany na każdym Ubuntu oraz open ssh servera, który instalujemy na komputerze, do którego chcemy się łączyć

sudo apt-get install openssh-client
sudo apt-get install openssh-server

2) Po instalacji warto zaznajomić się z plikiem konfiguracyjnym i kilkoma ustawieniami. Wszystkie ustawienia znajdują się w pliku /etc/ssh/sshd_config, przed jakimikolwiek zmianami warto zrobić kopię zapasową.

Przyjrzyjmy się niektórym (man ssh_config) ustawieniom

sudo gedit /etc/ssh/sshd_config

a)  Pole port określa numeru portu, na którym nasłuchuje serwis ssh, domyślnie jest to port 22, ale nic stoi na przeszkodzie aby go zmienić np na 2222.

b) Kolejna opcja to PasswordAuthentication, domyślnie yes. Jeśli zmienimy tę opcję na no to zostanie wyłączone uwierzytelnienie za pomocą haseł, a w zamian można używać kluczy publicznych, którymi komputery mogą się wymienić. Ta opcja zdecydowanie zwiększa bezpieczeństwo bo pozwala na logowanie się tylko zaufanym hostom.

Klucz publiczny możemy utworzyć za pomocą komendy

ssh-keygen -t dsa

Wygenerowany klucz publiczny to plik ~/.ssh/id_dsa.pub natomiast klucz prywatny to ~/.ssh/ids_dsa (tego nigdy nikomu nie podajemy!)

Teraz z naszego zaufanego komputera wyciągamy zawartość klucza publicznego i dopisujemy do pliku ~/.ssh/authorized_keys komputera, z którym chcemy się łączyć poprzez ssh. Taka wymiana klucza spowoduje uwierzytelnienie bez potrzeby podawania hasła (zwłaszcza jeśli PasswordAuthentication jest ustawione na no)

c) Jeśli po zalogowaniu na zdalny host chcemy aby wyświetlił się jakiś komunikat to należy odhashować linijkę Banner i wyedytować plik /etc/issue.net

d) Dodatkowe logowanie możemy włączyć poprzez zmianę parametru Loglevel z INFO na VERBOSE co spowoduje utworzenie pliku z logami /var/log/auth.log

e) Możemy również wskazać, którzy użytkownicy mogą się logować na zdalny server poprzez dodanie na koniec pliku:

AllowUsers Jozek Adam

lub zabronić

DenyUsers Beata

To jest tylko przykład, te stryktur mogą być bardziej zaawansowane, z użyciem grup itd., warto poczytać (man sshd_config)

3) Połączenie VNC poprzez szyfrowany tunel ssh

– na zdalnym komputerze otwieramy program Współdzielenie pulpitu i wypełniamy go w następujący sposób

na lokalnym komputerze tworzymy tunel ssh poprzez wydanie komendy

ssh -L 5900:localhost:5900 uzytkownik@zdalnyhost

Pierwsze port to port lokalny, drugi to zdalny numeru portu VNC. Teraz pozostaj nic innego jak użycie dowolnego programu VNC i zalogowanie się na localhost:5900.

Ubuntu juz posiada domyślnie zainstalowany program jakim jest Remmina, tak uruchamiamy go z Unity i tworzymy połączenie.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.