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.
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ć:
sshTen 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.
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
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:
sshTen 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> sshTen 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: