Newsgroup: it.comp.reti.locali
Titolo: ho avuto paura

Ciao a tutti,
ho messo su un piccolo router / firewall con una macchina linux che
serve una rete locale di una ventina di pc. Ho usato iptables ed ho
loggato quasi tutto. Da quando ho messo in funzione il sistema (circa
quattro mesi) non vi è stato mai neanche un tentativo di intrusione
dall'esterno, anche perchè le porte esterne erano tutte chiuse.
Siccome tale sistema si trova presso una sede remota della nostra
azienda ho pensato di usare openssh per potermi collegare dal mio
ufficio e fare amministrazione da remoto in maniera sicura. Ho usato le
chiavi RSA con la chiave privata protetta da passwd ed ho disabilitato
la passwd sul server ssh, così che posso entrare solo io dal mio pc.
Ho aperto la porta 22 in ingresso e, come per il resto, ho messo un log
in iptables anche per gli accessi ssh in ingresso. Con mio grande
stupore il giorno dopo ho trovato già una ventina di tentativi di
accesso. Ed ho avuto paura.
Ma sono solo tentativi? Sono macchine che provano a casaccio e dove
trovano la porta aperta tentano?
Vorrei sapere da voi se il sistema da me adottato di chiavi RSA è
sufficiente ad evitare l'intrusione di altri nella macchina o se c'è
ancora qualcosa che può garantire meglio la sicurezza.
Grazie per i consigli.

> Ma sono solo tentativi?
al 90% si . 

 trovano la porta aperta tentano?
Si', e' normale. Sono attacchi brute-force e spesso mi capita di 
trovarli nei log di alcuni Clienti.
La cosa migliore da fare e' forzare SSHv2, in modo da evitare una 
modalita' vulnerabile, e impostare *un* unico account autorizzato 
all'accesso, in modo da ridurre al minimo le possibilita' che lo script 
brute-force azzecchi una combinazione username/password valida.
Dall'unico login puoi fare su root e sei a posto.
Ciao
Luca
-- 
"Keyboard not present - Press F1 to continue"
[tipico messaggio di errore di molti BIOS]

 brute-force azzecchi una combinazione username/password valida.
droppare tutto, tranne le subnet da cui entri, tanto al 95% sono coreani,
brasiliani e compagnia

 Grazie per i consigli.
Allora, se vuoi tenere un ssh server aperto su internet,
ti consiglio di modificare le seguenti cose per avere un
livello di sicurezza maggiore, sopratutto su un bugs zeroday
che rischierebbe di compromettere la sicurezza:
- - Cambia le porte su cui ascolta il demone
  su porte non standard sulla interfaccia pubblica
  tramite il comando *ListenAddress*, una porta
  per esempio 5342.
- - Disabilita il protocollo 1 con la entry
  *Protocol*
- - *StrictModes* e *UsePrivilegeSeparation* Yes
- - *AllowTcpForwarding* No
- - Imposta *ClientAliveCountMax*,*ClientAliveInterval*,
  *LoginGraceTime* e *MaxStartups* con valori assai restrittivi.
- - Usare come algoritmo DSS e non RSA.
- - Limita gli utenti che si possono collegare
  con la entry *AllowUsers*
- - Disabilita l'accesso di root con
  *PermitRootLogin*
- - Configura l'accesso tramite chiave e non tramite
  password. Questo consiste nel generarti una coppia
  pubblica/privata DSS sul tuo pc personale con una pw
  per usarle (un po' come pgp) e copierai la pubblica
  sul server nella home del tuo utente abilitato.
  Disabilita' l'accesso con password dell'utente
  con *PasswordAuthentication*
  Cambia il nome del file per *AuthorizedKeysFile*.
- - Metti un banner con il comando *Banner* in cui dichiari
  esplicitamente che l'accesso a tale server e' limitato
  e ogni accesso non autorizzato sara' perseguito penalmente.
- - Limitare l'accesso da internet da ip ben definiti se possibile.
Il man delle varie opzioni lo puoi leggere sul server con il comando
man sshd_config oppure a questo link:
http://www.openbsd.org/cgi-bin/man.cgi?query=sshd_config&sektion=5&arch=&apropos=0&manpath=OpenBSD+Current
Si ridurranno il numero di tentate connessioni verso il tuo ssh...
Quelle che vedrai, dopo tali modifiche saranno per lo piu' scan...
- --
==
"Vorrei solo sapere che sei morto.
Cosi', per stare un po meglio."
- -
Per scrivermi una email o avere la mia PGP Key, posta
un messaggio con il seguente soggetto:"REQUEST EMAIL HARTIGAN".
==
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (MingW32)
iD8DBQFFHkV2uuxRXtjsR9sRAtYYAJ44Rua+mxTaaiFq0DPH0btxV0/CnwCg8Lsu
lwc3XHzJETYeEPqSsg/Z9SI=
=iA/B
-----END PGP SIGNATURE-----

 all'accesso,
Cioè dovrei creare un utente ed un gruppo "ssh" sul server?
E poi per dire al server che solo l'utente "ssh" è autorizzato ad
eseguire il demone sshd lo devo scrivere in sshd_config, vero?
Grazie.

Vi ringrazio per la precisione delle vostre risposte e per aver messo a
mia disposizione la vostra competenza.
Ora farò prima delle prove "sul banco di lavoro" e riattiverò il
servizio ssh solo dopo aver compreso meglio il suo funzionamento.
Ciao.

 eseguire il demone sshd lo devo scrivere in sshd_config, vero?
Beh, direi che dovresti creare un utente dal nome complesso (es. con un 
generatore di password, cosi' come la password stessa) e settarlo come 
unico utente con accesso al sistema mediante il parametro AllowUsers in 
sshd_config.
Per il resto, segui i consigli che ti ha dettagliato Hartigan.
Ciao
Luca

Ok, ti ringrazio. 
Ciao

 sshd_config.
A questo punto per rendere la cosa più sicura, dato che il login dovrà
essere effettuato da un unico utente, direi che il server sshd non ha
bisogno di girare con i privileggi di root. Quindi puoi avviarlo con i
privileggi dell'utente che deve accedere.

 privileggi dell'utente che deve accedere.
Dovrei farlo mediante il comando sudo o impostando i permessi
all'eseguibile?
Grazie

Openssh è nato come servizio di accesso multiutente.
Quindi farlo girare deprivileggiato è un po' un hack.
Openssh ha bisogno di poter leggere alcuni file e se non li trova, o non
hanno i permessi giusti, allora si suicida.
Dunque creiamo una cartella per i nostri file:
$mkdir $HOME/.sshd_personale
$chmod 700 $HOME/.sshd_personale
Incuminciamo a creare una coppia di chiavi rsa:
$ssh-keygen -t rsa -b 1024 -N '' -C 'chiave host per sshd personale' \
-f $HOME/.sshd_personale/chiave_host
$chmod 600 $HOME/.sshd_personale/chiave_host*
Un file di configurazione è richiesto, anche vuoto va bene per le prove:
$touch $HOME/.sshd_personale/config
Ora puoi avviare il tuo server su una qualunque porta deprivileggiata.
$sshd -p 12345 -h $hmoe/.sshd_personale/chiave_host \
-f $HOME/.sshd_personale/config
Se sei root per deprivilegiarlo puoi usare 
#sudo -u $UTENTE_TUO comando-precedente
Inseriscilo in uno script di avvio ed è fatta.
Nota di sicurezza: 
Al dipartimento di meccanica ho usato questo sistema per aiutare i miei 
amici con matlab. (Matlab su linux, ma non potevano usare octave o
scilab???)
Se avvii sshd con l'opzione -qq il server non genera alcun log (in verità
dipende da come è stato compilato).
Come avrai capito, sshd è un arma a doppio taglio, può essere usato dagli
utenti di un sistema come un cavallo di Troia ed una volta ucciso non
lascia tracce.
Sshd usa le chiamate a syslog, se vedi sul manule questa funzione richiede
certi privilegi, non ho ancora provato come permettere a sshd
deprivileggiato di lasciare i suoi log, daltronde era proprio quello che
non volevo.
P.S. Se siete amministratori di un laboratorio per studenti universitari
chiudete un occhio ;-)
Credo che la discussione sia diventata un po' off-topic, meglio spostarla su 
it.comp.os.linux.sys

remigio ha scritto:

Più che sufficente per una distro enterprise RHEL/Centos non so per 
altre dipende dalla compilazione e dalla configurazione (default) di sshd.
Comunque pare strano che uno che tira su un firewall non abbia pensato 
alla cosa più ovvia (e banale) del mondo per veri paranoici...
iptable -t filters -A INPUT -p tcp -s ip-sede-centrale-azienda --dport 
22 -j REJECT
così l'unico a potersi connettere è l'ip della vostra azienda.
Sono perplesso mah!