facebook-ictlaboratory.com

Wybierz swój język

Server SSH

protokuł TCP-IP do łączenia się ze zdalnym komputerem iprzesyania plików


Jest to pierwszy serwer który należy zainstalować na komputerze.Możesz zaznaczyć tę opcję przy instalacji Linux Ubuntu Server. Dzięki niemu można się komunikować z serverem z dowolnego innego komputera z dowolnym systemem. Jedyna wada, to taka, że mamy dostęp jedynie do konsoli, a nie do wersji okienkowej.

https://www.openssh.com/

Sprawdź

Najpierw trzeba zapukać - sprawdź, czy nie masz już zainstalowanego servera SSH i czy nie działa.

sudo systemctl status ssh

Najprawdopodobniej jeszcze nie masz uruchomionego - to zobaczysz taki komunikat:

Unit ssh.service could not be found.

Natomiast gdy ktoś wcześniej zainstalował ten serwer i jest uruchomiony to zobaczysz:

● ssh.service - OpenBSD Secure Shell server
    Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor pre class="bg-secondary p-md-5 text-white"set: enabled)
    Active: active (running) since Sat 2020-07-25 13:21:15 BST; 18s ago
Main PID: 4586 (sshd)
...

Aby przerwać wyświetlanie informacje - wciśnij [Q] lub [CTRL]+[C]

W tym przypadku możesz przejść dalej. W przeciwnym musisz zainstalować server SSH.

Zainstaluj

Najłatwieszym sposobem jest uruchomienie konsoli [Ctrl]+[Alt]+[T] i wpisanie poleceń:

sudo apt update
sudo apt install openssh-server

Jedyną czynnością z naszej strony to wpsanie hasła dla super użytkownika i potwierdzenie [Y] jeśli jesteśmy pewni, że chcemy zainstalować.

Kolejny raz sprawdź, czy działa już server SSH

Uruchamianie i zatrzymywanie

Podstawowe polecenie obsługi SSH to:

sudo /etc/init.d/ssh {start|stop|reload|force-reload|restart|try-restart|status}

Firewall

Aby dostać się do z innego komputera musimy stworzyć furtkę w naszym firewall'u

sudo ufw allow ssh

Jakie masz IP?

Zanim przejdziemy do testowania twojego połączenia musisz dowiedzieć się jaki adres IP ma twój server. W skrócie numer IP to jak numer telefonu który musisz wykręcić aby się połączyć. Numer IP w komunikacji TCP-IP 4 składa się z z czterech cyfr od 0 do 254 odzielone kropką.

Najczęściej to jest 192.168.0.19 lub 192.168.1.19 lub 10.0.0.19. U ciebie cyfra będzie podobna do którejś z nich, jedynie może się różnić ostatnią cyfrą.

Odczytać dane możemy w konsoli wpisując polecenie

ip a

lub

ip r

Wynik polecenia to może być coś takiego:

ict@server:~$ ip r
default via 192.168.0.1 dev enp2s0 proto static
192.168.0.0/24 dev enp2s0 proto kernel scope link src 192.168.0.100

Na końcu jest adres twojego serwera

Podłącz Windows do serwera Linux za pomocą PowerShell.

jest to najprostrze rozwiązanie. Wystarczy tylko uruchomić PowerShell, jako administrator, wpisać jedno polecenie i hasło. Polesenie ma mieć postać:

ssh nazwa_użytkownika@ip_servera -p nr_portu

w moim przypadku polecenie ma postać:

ssh Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript. -p 22

Jeśli nie zmieniałeś domyślnego portu 22 to wystarczy jeśli wpiszesz ssh nazwa_użytkownika@ip_servera zamiast IP można też wpisać nazwę servera - czyli w moim przypadku to ssh ict@serv

Błąd logowania

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-midivle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:w4YNfR6Z1k2HP3Hg+1Bth8X1FBde09bgob2yLAF5RKo.
Please contact your system administrator.
Adiv correct host key in C:\\Users\\owner/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in C:\\Users\\owner/.ssh/known_hosts:2
ECDSA host key for 192.168.0.100 has changed and you have requested strict checking.
Host key verification failed.

Błąd ten mi się pokazał, gdy przeinstalowałem server. Informuje mnie, że zmienił się klucz który jest zapisany na komputerze z windowsem. Najprostsze rozwiązanie to jest usunąć plik know_host który znajduje się w folderze :%USERPROFILE%\.ssh\

Zabezpieczenie połączenia SSH

Najpierw jeśli oczywiście nie masz zainstaluj sobie narzędzia sieciowe:

sudo apt install net-tools

następnie sprawdź sobie jakie masz połączenia TCP do swojego servera. u mnie to wygląda np tak:

ict@server:~$ sudo netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Adivress           Foreign Adivress         State
tcp        0      0 localhost:domain        0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp        0      0 server:ssh              112.85.42.121:35034     ESTABLISHED
tcp        0      0 server:ssh              192.168.0.14:51748      ESTABLISHED
tcp        0    208 server:ssh              192.168.0.14:51826      ESTABLISHED
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN

Trzecie połączenie jest podejrzane. Z ciekawości sprawdzam na stronie skąd pochodzi połączenie i okazuje się, że jakiś chińczyk złamał moje hasło i siedzi sobie na moim serwerze.

https://blackhat.directory/

Aby utrudnić cyber ataki musisz dokonać kilku zmian.

Zmienić ustawienia servera SSH

Wyedytuj plik configuracyjny servera SSH - sshd_config (z d na końcu to są pliki serwera, bez d to pliki klienta)

$ sudo mcedit /etc/ssh/sshd_config
Port 6666
Zmień domyślny port 22 na jakiś inny. Źródła polecają aby był to port większy niż 1024. Podobno roboty skanują niższe porty.
Protocol 2
Ustaw protokół na drugi - bezpieczniejszy
PermitEmptyPasswords no
Wyłączamy używanie pustych haseł
PermitRootLogin no
wyłącz logowanie na konto root'a
AllowUsers ict
Ogranicz logowanie do serwera SSH dla jednego usera - w moim przykładzie jest to użytkownik ict
AllowGroups adm sudo
Logowanie tylko z grupy administratora i super użytkownika
LoginGraceTime 1m
Skróć czas nieaktywności na serwerze SSH po którym wyrzuci użytkownika - w moim przypadku to jest 1 minuta

aby zadziałała zmiana portu od wersji 22.10 trzeba wyłączyć ssh.socket:

sudo rm  /etc/systemd/system/ssh.service.d/00-socket.conf
            sudo systemctl disable --now ssh.socket
            sudo systemctl enable --now ssh.service
            sudo systemctl daemon-reload
            sudo systemctl restart ssh

Sprawdź, czy zmiany się dokonały i pracuje na innym porcie:

sudo netstat -tulnp | grep ssh

Zmień ustawienia firewall

W serwerze dokonałeś zmiany numeru portu z 22 na 6666 - to trzeba w firewalu otworzyć "drzwiczki" dla tego portu. Ataki na serwer SSH dokonywae są z internetu, dlatego proponuję też wyłączyć możliwość łączenia się spoza sieci wewnętrznej. U mnie komputery w sieci przyjmują numery ip z puli od 192.168.0.1 do 255. Dlatego najpierw w firewall usuniemy wpis otwierający port 22 następnie otworzysz port 6666 dla wszystkich komputerów w sieci wewnętrznej.

sudo ufw delete ssh
sudo ufw allow from 192.168.0.0/24 to 192.168.0.100 port 6666 proto tcp comment 'Allow SSH'
sudo ufw reload

Od tej pory aby wejść na serwer OpenSSh musisz użyć polecenia:

ssh Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript. -p 6666

Błędy logowania

Jeśli nie podasz numeru nowego portu i starasz się wejść przez standartowy numer portu.

ssh: connect to host 192.168.0.100 port 22: Connection timed out

Jeśli chcesz wejść na serwer SSH innym użytkownikiem i mimo iż podałeś prawidłowe hasło to cię nie wpuści

Permission denied, please try again.

Podsumowanie

Aby jeszcze utrudnić włamanie na twój Server SSH proponuję zainstalować oprogramowanie jali2ban

Proponuję dodać jeszcze plik tekstowy /etc/ssh/sshd-banner który wyświetli się zaraz po zalogowaniu do serwera. Należy też wyedytować plik:

sudo nano /etc/ssh/sshd_config

i tam zmienić wpis na:

# no default banner path
Banner /etc/ssh/sshd-banner

Następnie utwórz plik tekstowy z dowolnym tekstem powitalnym.

sudo nano /etc/ssh/sshd-banner

Następnie zrestartuj swój serwer ssh

sudo systemctl restsrt ssh

U mnie przy każdym logowaniu wygląda to tak:

PS C:\Windows\system32> ssh Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript. -p 6666



 _      _   _       _                     _
(_)    | | | |     | |                   | |
 _  ___| |_| | __ _| |__   ___  _ __ __ _| |_ ___  _ __ _   _
| |/ __| __| |/ _` | '_ \ / _ \| '__/ _` | __/ _ \| '__| | | |
| | (__| |_| | (_| | |_) | (_) | | | (_| | || (_) | |  | |_| |
|_|\___|\__|_|\__,_|_.__/ \___/|_|  \__,_|\__\___/|_|   \__, |
                                                         __/ |
                                                        |___/
               ((`\
            ___ \\ '--._
         .'`   `'    o  )
        /    \   '. __.'
       _|    /_  \ \_\_
      {_\______\-'\__\_\probably the best computer service in London

  .--.      .-'.      .--.      .--.      .--.      .--.      .`-.      .--.
:::::.\::::::::.\::::::::.\::::::::.\::::::::.\::::::::.\::::::::.\::::::::.\
'      `--'      `.-'      `--'      `--'      `--'      `-.'      `--'      `
Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.'s password: