Strumenti SSH anche in terreno nemico

SSH è un’ottima tecnologia per connettersi al proprio computer da Internet e controllarlo completamente in modalità testuale, e volendo, anche grafica. È una tecnologia abbastanza semplice da usare grazie ai vari strumenti in circolazione, ed è anche sicura perché usa dei metodi di crittografia per proteggere i dati.

Nonostante sia stata portata anche verso altri sistemi, su Linux essendo di per sé nativa è molto più integrata e spesso semplice da installare, configurare ed utilizzare.

Per prima cosa vediamo come installare un server SSH sul nostro pingue computer.😀

Come mio solito utilizzerò le istruzioni per Ubuntu. Il sistema dovrebbe disporre già del client SSH, ovvero il software per connettersi ad altri computer che usano questo protocollo, ma non il server. Per installarlo basta il classico:

sudo aptitude install ssh-server

A questo punto è bene disabilitare l’accesso di root da ssh, in questo modo si impedisce a dei software malevoli di individuarne la password e fare danni. Per fare ciò modificate il file di configurazione:

sudo gedit /etc/ssh/sshd_config

E alla riga PermitRootLogin sostituite yes con no. Riavviate il demone ssh:

sudo /etc/init.d/ssh restart

Ora dovrebbe essere tutto funzionante.

Se utilizzate un router permettete le connessioni alla porta 22 in ingresso, altrimenti il firewall bloccherà tutto. Vi consiglio anche di permettere le connessioni in ingresso alla porta 115, se volete avere la possibilità di trasferire file.

Per provare il funzionamento del tutto, per prima cosa aprite un terminale e date il comando:

ssh localhost

Se vi chiede username e password allora funziona. In questo modo siete entrati nel vostro stesso PC. Non serve a nulla ma è comodo per provare.😉

Ovviamente potete usare il comando exit per uscire. A questo punto provate anche il trasferimento dei file. Aprite Risorse > Connetti al server e come tipo di servizio scegliete SSH. Immettete il solito indirizzo del server localhost e come nome utente quello del vostro account Linux.

A questo punto sulla Scrivania avrete la cartella indicante la connessione di rete. Quando vi verrà chiesta, inserite la password. Ed ecco a voi, i vostri file! Anche questa volta non serve a tanto, ma è per verificare che funzioni.🙂

Ora avrete bisogno di un indirizzo per ricordare semplicemente il vostro computer. Se avete un IP fisso (caso raro) potete anche impararlo a memoria, ma se avete un IP variabile (caso molto frequente) allora è il caso di ricorrere a Dyndns. Se invece avete un router cercate di usare la sua funzionalità integrata a riguardo, se ce l’ha, per gestire Dyndns. Altrimenti installate un client di aggiornamento sul vostro computer.

Adesso avete capito perfettamente come fare per gestire il vostro computer in remoto. Lasciatelo acceso e connesso, andate su un altro computer con Linux connesso ad Internet ed usate le istruzioni precedenti per vedere i file o dare comandi via terminale. Per SSH da terminale vi consiglio l’opzione -X che vi permette di avviare applicazioni grafiche.😉

Questo se volete, è già di per sé alquanto utile, interessante e divertente.

Ma ovviamente la parte migliore è che ci possiamo collegare anche da computer che usano altri sistemi operativi, come ad esempio Windows. Ho provato di persona la cosa mostrando ad un mio amico come dal suo computer io potessi accedere ai miei file.

Per quanto riguarda l’accesso via terminale, abbiamo a disposizione uno strumento eccellente che si chiama Putty. Ecco uno screenshot:

Dove c'è console c'è casa
Dove c’è console c’è casa

Ovviamente il software possiede anche una interfaccia iniziale semplice da usare, abbastanza analoga quella della connessione al server di Ubuntu:

Semplice interfaccia del programma
Semplice interfaccia del programma

Connettetevi e usate i comandi che preferite.

Per quanto riguarda i file, scordatevi l’integrazione che vi offrono gli ambienti desktop su Linux, ma accontentatevi di WinSCP:

Non male, dopotutto
Non male, dopotutto

Chiaramente può tornare molto utile il fatto di controllare programmi e file da remoto anche quando ci si trova in “territorio nemico”.

Ma la sapete la cosa divertente? Per provare e recensire questi programmi non ho assolutamente usato Windows. Mi è bastato il buon Wine.🙂

28 pensieri su “Strumenti SSH anche in terreno nemico

  1. Non ti conviene utilizzare la porta di default. Meglio utilizzarne una random non occupata da altri servizi

  2. io conisglio di installare denyhost, la descrizione del pacchetto deb spiega tutto; in due parole se qualcuno tenta di indovinare la password e l’utente con molteplici connessioni il prog lo mette in blacklist temporanea🙂

  3. @ blood, grazie.🙂
    @ LuCa, sto lavorando per voi.😉
    @ Luca, ho messo denyhosts quindi sto tranquillo.🙂 Mi ha già bloccato 4 ip…

  4. cambiare la porta é come disegnare una porta sul muro per evitare che i ladri entrino…
    certo, quelli tontoloni daranno due tre spallate al muro e poi vanno, ma quelli che vogliono entrare guardano anche altrove…

    nmap sa fare miracoli.

    se si vuole evitare un intrusione via ssh si passa all’autentificazione via chiave privata/pubblica e si disattiva la password.

    cmq denyhost fa già abbastanza contro i lamer e gli script kid.

  5. leggendo un articolo abbastanza interessante mi sono accorto dell’esistenza di dropbear, un rimpiazzo piccoletto per ssh… forse a qualcuno può interessare.

  6. Lazza scusa se non è il posto giusto per fare questo commento, ma volevo sapere come hai fatto a inserire quell’immagine in alto a sinistra del tuo blog.
    E’ con la scritta “un post a casa”, se me lo spiegassi in poche parole mi faresti un gran favore.
    Bye

  7. io avrei una curiosità…
    … se abilito – come ho fatto in effetti – l’accesso chiave pubblica/privata + password, ottengo una protezione comunque MAGGIORE della sola chiave pubblica/privata, no?

    sembra banale, ma pur avendo capito i 2000 segreti di ssh mi sfugge il metodo che unisce i due tipi di accesso.

    — sicurezza estrema —

    come aggiunta maniacale, ho creato un utente che NON ha privilegi di sorta. io entro con questo UTENTE via ssh e questo è l’unico utente abilitato ad autenticarsi in ssh. da quell’utente faccio un “su – mioutente” e da li posso usare SUDO.

    secondo me questo aggrava con un bel problema la vita di un eventuale “personaggio che non ha di meglio da fare che cercare di accedere al mio pc”!

    ho inoltre forzato l’utilizzo del protocollo SSH2.

    un pochino di opzioni per i curiosi?
    ok…

    DA /etc/ssh/sshd_config:

    AllowUsers mio_utente_non_privilegiato # Per intenderci un utente creato come USER
    Port 666 #un numero di porta libera sul vostro pc (non tra queste )
    Protocol 2
    PermitRootLogin no #yes
    StrictModes yes
    RSAAuthentication yes
    PubkeyAuthentication yes
    PasswordAuthentication no
    UsePAM no #yes

    Tutto qua in quando un utente non privilegiato non può usare SUDO causa “AllowUsers” in “/etc/ssh/sshd_conf” e quindi il mio utente abilitato all’accesso ssh non potrà ottenere accesso amministrativo (ne leggere i file di root) a meno di aver ottenuto ANCHE l’accesso al mio utente di sistema standard (quello che uso per la sessione grafica, tipicamente l’uid 1000 su debian-like-gnu/linux-systems.

    In pratica ho una quadrupla autenticazione: chi volesse accedere dovrebbe conoscere la porta sulla quale faccio girare ssh, avere la mia chiave, conoscere la password dell’utente dedicato ad ssh, conoscere la password del mio utente di sistema.
    😉
    Lazza è stato meno prolisso e più chiaro di me, ma magari qualcuno può trarre spunto.

    ciao

  8. ho usato winSCP: fantastico.
    grazie della dritta… era un po che non usavo windows!
    😉

    PS – chiaramente la password nell’esempio di prima è la passphrase della chiave privata!

  9. @franganghi: allora, é chiaro che password + chiave non aumenta la sicurezza, in quanto dai due modi per loggarsi sulla macchina, e come sai, se ti trovi davanti una finestra non rinforzata e una porta blindata con dobermann tenterai di entrare dalla finestra.
    La sicurezza l’ottieni con l’auth via coppia di chiavi e disabilitando l’auth via password.
    riguardo la porta mascherata non cambia molto, con nmap puoi sapere esattamente quali sistemi girano su una determinata macchina, e riesci a scoprire anche altre cosette, tipo la versione del kernel🙂
    L’idea dell’utente povero e castrato attraverso cui loggarsi per poi salire puo’ essere un’idea, ma a quel punto dagli una shell limitata e impediscili l’accesso a compilatori et similia… solitamente una volta entrati in un sistema si tenta di scalare i diritti con exploit e bug, non indovinando le password…

    ultima cosa: la chiave é spesso più che abbastanza. il sistema di auth basato su chiavi rende impossibile un accesso senza possedere la chiave privata, e indovinarla beh, é assurdamente improbabile.

    (ti consiglio la lettura del debian security book, ci sono ottimi spunti se ti interessa questo campo)

  10. Pingback: Installare i Mysql Gui tools (specialmente Mysql Workbench) in Ubuntu « Il blog di Andrea Lazzarotto

  11. post molto interessante soprattutto gli spunti di franganghi…

    io uso da diverso tempo “Free NX” della (italiana) “no machine” che mi permette
    di avere l’intero desktop grafico in remoto via ssh!!

    http://www.nomachine.com/select-package.php?os=linux&id=1

    basta installare sul proprio server in sequenza i pacchetti deb

    nxnode
    nxserver
    nxclient

    e aggiungere utenti linux in nx con:

    sudo /usr/NX/bin/nxserver –useradd

    sul client (portatile) basta installare solo il pacchetto

    nxclient (c’è anche x winzoz!)

    io lo uso da diversi punti d’accesso esterni, opportunamente filtrati a casa mia, ed è molto veloce (a casa ho una Alice 7 Mb)

    Volevo inoltre segnalare che:

    putty esiste nativo anche per linux (apt-get install putty)
    invece di winscp, il nativo filezilla permette sia ftp che sftp via ssh (apt-get install filezilla)
    esiste inoltre un bel server ssh free per winzoz se necessario……

    http://www.freesshd.com/

    Un saluto a tutti

  12. Per i paranoidi an*l-retentivi (come me), provate a dare un’occhiata a tecniche di port-knocking.
    Qualche regoletta di iptables e un semplice demone permette di aprire la porta dove avete installato il server ssh solamente a seguito di una determinata combinazione di tentativi di accesso su alcune porte.
    Se qualcuno è curioso qui è spiegato meglio😛
    Port Knocking (ArchLinux guide)
    Port Knocking (wikipedia)

  13. @ francesco, ok ma Putty serve a poco su Linux… Basta la cara bash con ssh.😉 Stesso dicasi per Filezilla. Ho anche provato a far andare quelle funzioni, ma è più comodo WinScp, che comunque si usa su Windows, su Linux si può montare un dispositivo ssh come se fosse una cartella, sia da Gnome che da Kde.🙂
    @ ZiK, urca, addirittura?😀 Io non ho bisogno di tutta questa sicurezza, ma grazie per aver segnalato il link.

  14. Pingback: Ubuntu 8.10 sul Dell XPS M1530 « Il blog di Andrea Lazzarotto

  15. ciao
    ho trovato il tuo post cercando di risolvere un problema nel trasferimento
    file via ftp. uso come server un pc con linux da cui prelevo i file che mi servono.
    usando come client ftp fugu oppure filezilla.
    senza aver apportato alcuna modifica alla rete o al router da qualche giorno la
    velocità di trasferimento tra il server e i gli altri pc si è drasticamente abbassata
    e in qulache caso si blocca in partenza.
    se faccio l’operazione inversa invece tutto nella norma.
    il server ha installato ubuntu.
    come posso intervenire??

Che cosa ne pensi?

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...