Impedisci a SSH di pubblicizzare il suo numero di versione


13

Il server che sto usando è Ubuntu 10.10. Per garantire la sicurezza, desidero modificare il banner che il server invia al client.

Se telnet al mio host sulla porta 22 mi dice la versione esatta di SSH che sto eseguendo (SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu4). La situazione è la stessa con MySQL e Cyrus.

Eventuali suggerimenti? Almeno per SSH?

Grazie


5
Spero che anche tu realizzi che ci vuole molto di più che rimuovere semplicemente questi banner per garantire che il tuo server sia sicuro.
Ben Pilbrow,

10
Quelle informazioni sono in gran parte irrilevanti, i robot proveranno hack che funzionano su versioni precedenti indipendentemente dalle informazioni sulla versione fornite dal server. Gli utenti ostili che attaccano maliziosamente il tuo server sono l'ultima delle tue preoccupazioni; gli utenti negligenti di solito sono molto più pericolosi.
Chris S,

Ben, penso di sapere cosa sto chiedendo. E so come proteggere un server NIX grazie. Chris, anche fare brontolone al buio è buono. Indipendentemente da snort, failtaban iptables ecc.
Lerikun,

finché sai che questa è una delle tante cose da fare, va bene. Non volevo che te ne andassi dopo aver pensato che il tuo sistema fosse super sicuro, tutto qui.
Ben Pilbrow,

Come ha sottolineato Auticracy, voglio almeno nascondere "Debian-3ubuntu4".
Lerikun,

Risposte:


17

Quasi universalmente, l'identificazione dei banner fa parte del codice compilato e non ha opzioni di configurazione per modificarli o eliminarli. Dovrai ricompilare quei software.


Grazie. L'unica vera risposta utile qui. Che dire di TCP Wrapper aggiungono solo un banner ma non nascondono le informazioni effettive?
Lerikun,

6
Non solo viene compilato, ma viene anche utilizzato dai client per determinare i livelli di connessione compatibili.
Jeremy Bouse,

32

Mentre è proibizionalmente difficile nascondere il numero di versione del tuo demone SSH, puoi facilmente nascondere la versione di Linux (Debian-3ubuntu4)

Aggiungi la seguente riga a /etc/ssh/sshd_config

DebianBanner no

E riavvia il tuo demone SSH: /etc/init.d/ssh restartoservice ssh restart


7
Grazie, funziona perfettamente! Concordo sul fatto che la rimozione delle informazioni sulla versione è sicurezza per oscurità e potrebbe introdurre più problemi che risolve. Con Debian, però, OpenSSH non solo annuncia la propria versione, ma la versione e il sapore specifico del sistema operativo, ad esempio "SSH-2.0-OpenSSH_6.7p1 Raspbian-5 + deb8u3". Congratulazioni, senza alcun tipo di autenticazione, ora sei consapevole che stai parlando con un RaspberryPi con Raspbian e il tuo prossimo ovvio passo sarebbe provare a connetterti come "pi" con la password predefinita. IMHO questo sta dando via MODO a molte informazioni al primo appuntamento.
Saustrup,

Brillante, una delle migliori gemme nascoste trovate qui.
Rui F Ribeiro,

19

Nasconderli non proteggerà il tuo server. Esistono molti altri modi per eseguire l'impronta digitale di ciò che il sistema è in esecuzione. Per SSH in particolare, l'annuncio della versione fa parte del protocollo ed è necessario.

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


Meno persone vengono a conoscenza del tuo sistema ... Puoi non essere d'accordo. E gli altri servizi? Sto parlando in generale di Cyrus (IMAP / POP3) e MySQL e altri. E se ci sono due amministratori: non devo attenermi al protocollo ?!
Lerikun,

3
@lerikun: non si tratta di condividerlo con hacker spaventosi. Si tratta di SSH che non è in grado di connettersi perché non sa quale protocollo utilizzare. SSHD deve annunciare.
Satanicpuppy,

9
"meno persone conoscono il tuo sistema, meglio è". Sì certo, è un'affermazione che suona bene ma non fa molto, come "Se vincessi alla lotteria, vado ...". La sicurezza attraverso l'oscurità è nella migliore delle ipotesi una scarsa sicurezza.
Rob Moir,

1
Robert, questa è un'affermazione che significa molto. Perché la cassaforte è nella stanza buia dove nessuno può vederla? ... Non importa. Non chiedo come proteggere il mio server. Penso che la mia domanda fosse chiara. Sì, autocrazia Voglio almeno liberarmene.
Lerikun,

2
Per quello che vale, Robert Moir ha perfettamente ragione.
Sirex,

8

Sono abbastanza sicuro che non puoi effettivamente cambiare l'annuncio della versione.

I modi migliori per proteggere sshd sono:

  1. Modifica il numero di porta predefinito.
  2. Vieta l'accesso root.
  3. Forza protocollo 2 (supponendo che non sia fatto di default).
  4. Inserite nella whitelist i server autorizzati a SSH.

I primi tre possono essere fatti modificando / etc / sshd_config

Il quarto dipende dal software firewall che stai utilizzando.


1/2/3 già fatto. utilizzando certificati senza passowrds. Fail2ban (IMAP, POP, SMTP, VPN, WEB) e denyhosts (SSH) La domanda riguarda gli annunci di versione per altri servizi.
Lerikun,

6

Come detto sopra, la modifica di un numero di versione è

  1. Difficile da fare
  2. Sicurezza attraverso l'oscurità
  3. Non flessibile

Quello che suggerisco è implementare il Port Knocking. È una tecnica abbastanza semplice per nascondere tutto ciò che è in esecuzione sul tuo server.

Ecco una buona implementazione: http://www.zeroflux.org/projects/knock

È così che l'ho implementato sui miei server (altri numeri) per aprire SSH solo alle persone che conoscono "il colpo segreto":

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

Questo darà una finestra di 5 secondi in cui i 3 pacchetti SYN devono essere ricevuti nell'ordine giusto. Scegli porte distanti tra loro e non sequenziali. In questo modo, un navigatore non può aprire la porta per caso. Queste porte non devono essere aperte da iptables.

Lo script che chiamo è questo. Apre una porta particolare per 5 secondi per l'IP che invia i pacchetti 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

Può essere una vera seccatura inviare i pacchetti SYN, quindi uso lo script per connettermi all'SSH dei miei server:

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

(È abbastanza ovvio cosa sta succedendo qui ...)

Dopo aver stabilito la connessione, la porta può essere chiusa. Suggerimento: utilizzare l'autenticazione con chiave. Altrimenti devi essere molto veloce per digitare la password.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.