Zapobiegaj reklamowaniu przez SSH numeru wersji

13

Serwer, którego używam, to Ubuntu 10.10. Aby zapewnić bezpieczeństwo, chcę edytować baner, który serwer wysyła do klienta.

Jeśli telnet do mojego hosta na porcie 22, powie mi dokładną wersję SSH, którą działam (SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu4). Podobnie jest z MySQL i Cyrus.

Jakieś sugestie? Przynajmniej dla SSH?

Dzięki

Lerikun
źródło
5
Mam nadzieję, że zdajesz sobie również sprawę, że zabranie z serwera więcej niż tylko usunięcie tych banerów.
Ben Pilbrow
10
Ta informacja jest w dużej mierze nieistotna, boty spróbują włamać się do starszych wersji, bez względu na to, jakie informacje o wersji udostępnia twój serwer. Wrogi użytkownicy złośliwie atakujący twój serwer są najmniejszymi zmartwieniami; nieostrożni użytkownicy są zwykle znacznie bardziej niebezpieczni.
Chris S
Ben, chyba wiem o co pytam. I wiem, jak chronić serwer NIX dzięki. Chris, szukanie w ciemności też jest dobre. Niezależnie od snortu, iptables fail2bans itp.
Lerikun
tak długo, jak wiesz, że jest to jedna z wielu rzeczy do zrobienia, w porządku. Nie chciałem, żebyś odszedł, myśląc, że twój system jest super bezpieczny, to wszystko.
Ben Pilbrow
Jak wskazała Auticracy, chcę przynajmniej ukryć „Debian-3ubuntu4”.
Lerikun,

Odpowiedzi:

17

Niemal ogólnie banery identyfikujące są częścią skompilowanego kodu i nie mają opcji konfiguracyjnych, aby je zmienić lub pominąć. Będziesz musiał ponownie skompilować te elementy oprogramowania.

Jeff Ferland
źródło
Dzięki. Jedyna naprawdę przydatna odpowiedź tutaj. Co z opakowaniem TCP po prostu dodają baner, ale nie ukrywają faktycznych informacji?
Lerikun
6
Jest nie tylko wkompilowany, ale także używany przez klientów do określania kompatybilnych poziomów połączeń.
Jeremy Bouse
32

Chociaż ukrywanie numeru wersji demona SSH jest niezwykle trudne, możesz z łatwością ukryć wersję systemu Linux (Debian-3ubuntu4)

Dodaj następujący wiersz do /etc/ssh/sshd_config

DebianBanner no

I zrestartuj demona SSH: /etc/init.d/ssh restartlubservice ssh restart

Harrison Powers
źródło
7
Dzięki, działa idealnie! Zgadzam się, że usunięcie informacji o wersji jest zabezpieczeniem przez zaciemnienie i może wprowadzić więcej problemów, które rozwiąże. Jednak w Debianie OpenSSH nie tylko ogłasza własną wersję, ale także wersję i specyficzny smak systemu operacyjnego - tj. „SSH-2.0-OpenSSH_6.7p1 Raspbian-5 + deb8u3”. Gratulacje, bez żadnego uwierzytelnienia, teraz masz świadomość, że rozmawiasz z RaspberryPi z Raspbian, a następnym oczywistym krokiem będzie próba połączenia się jako „pi” z domyślnym hasłem. IMHO daje to SPOSÓB na wiele informacji na pierwszej randce.
Saustrup,
Genialny, jeden z najlepszych ukrytych klejnotów tutaj.
Rui F Ribeiro
19

Ukrywanie ich nie zabezpieczy twojego serwera. Istnieje wiele innych sposobów pobierania odcisków palców tego, co działa system. W szczególności w przypadku SSH ogłoszenie wersji jest częścią protokołu i jest wymagane.

http://www.snailbook.com/faq/version-string.auto.html

bahamat
źródło
Im mniej osób dowie się o twoim systemie ... Możesz się nie zgodzić. Co z innymi usługami? Mówię ogólnie o Cyrus (IMAP / POP3) i MySQL i innych. A jeśli są dwaj Administratorzy - nie muszę trzymać się protokołu ?!
Lerikun
3
@lerikun: Nie chodzi o dzielenie się nim z przerażającymi hakerami. Chodzi o to, że SSH nie może się połączyć, ponieważ nie wie, jakiego protokołu użyć. SSHD musi się ogłosić.
Satanicpuppy
9
„im mniej ludzie wiedzą o twoim systemie, tym lepiej”. Tak, jasne, to stwierdzenie, które brzmi dobrze, ale niewiele robi, na przykład „Jeśli wygram na loterii, ...”. Bezpieczeństwo przez zaciemnienie to w najlepszym razie słabe bezpieczeństwo.
Rob Moir
1
Robert, to stwierdzenie, które wiele znaczy. Dlaczego sejf znajduje się w ciemnym pokoju, w którym nikt go nie widzi? ... Nieważne. Nie pytam, jak zabezpieczyć mój serwer. Myślę, że moje pytanie było jasne. Tak Autokracja Chcę przynajmniej się ich pozbyć.
Lerikun
2
Jeśli chodzi o wartość, Robert Moir ma całkowitą rację.
Sirex,
8

Jestem pewien, że tak naprawdę nie można zmienić ogłoszenia o wersji.

Najlepsze sposoby zabezpieczenia sshd to:

  1. Zmień domyślny numer portu.
  2. Zabroń logowania roota.
  3. Wymuś protokół 2 (zakładając, że nie jest to domyślnie wykonywane).
  4. Umieść na białej liście serwery, które mogą korzystać z SSH.

Pierwsze trzy można wykonać, modyfikując / etc / sshd_config

Czwarty zależy od używanego oprogramowania zapory.

Satanicpuppy
źródło
1/2/3 już zrobione. za pomocą certyfikatów bez passowrds. Fail2ban (IMAP, POP, SMTP, VPN, WEB) i denyhosts (SSH) Pytanie dotyczy ogłoszeń wersji dla innych usług.
Lerikun
6

Jak wspomniano powyżej, zmiana numeru wersji to

  1. Ciężko zrobić
  2. Bezpieczeństwo dzięki niejasnościom
  3. Nie elastyczny

Sugeruję wdrożenie Port Knocking. Jest to dość prosta technika ukrywania wszystkiego, co działa na twoim serwerze.

Oto dobre wdrożenie: http://www.zeroflux.org/projects/knock

W ten sposób zaimplementowałem go na moich serwerach (inne numery), aby otworzyć SSH tylko dla osób, które znają „tajne pukanie”:

[openSSH]
    sequence = 300,4000,32
    seq_timeout = 5
    command = /opencloseport.sh %IP% 2305
    tcpflags = syn

To da 5-sekundowe okno, w którym 3 pakiety SYN muszą zostać odebrane w odpowiedniej kolejności. Wybierz porty, które są daleko od siebie i nie są sekwencyjne. W ten sposób skaner portów nie może przypadkowo otworzyć portu. Porty te nie muszą być otwierane przez iptables.

Skrypt, który nazywam, jest tym. Otwiera określony port na 5 sekund dla adresu IP wysyłającego pakiety SYN.

#!/bin/bash
/sbin/iptables -I INPUT -s $1 -p tcp --dport $2  -j ACCEPT
sleep 5
/sbin/iptables -D INPUT -s $1 -p tcp --dport $2  -j ACCEPT

Wysyłanie pakietów SYN może być bardzo uciążliwe, więc używam skryptu do łączenia się z SSH moich serwerów:

#!/bin/bash
knock $1 $2
knock $1 $3
knock $1 $4
ssh $5@$1 -p $6

(To całkiem oczywiste, co się tutaj dzieje ...)

Po ustanowieniu połączenia port można zamknąć. Wskazówka: Użyj uwierzytelniania klucza. W przeciwnym razie musisz bardzo szybko wpisać swoje hasło.

Bart De Vos
źródło