Linux

Seconda parte – Server Amule e gestione su Android

amule
Eccoci alla seconda tappa del nostro viaggio: l’installazione del server aMule (che sarebbe emule, ma dato che gira sotto linux hanno tolto la lettera “e” sostituendola con la “a”, con l’acronimo di “all platform”).
La presente guida tratterà l’installazione in ambito Debian su un sistema privo di ambiente grafico, ma se avete un’altra distribuzione o un server grafico (spreconi! ;D) la sostanza non cambia.
Bene, iniziamo con l’installazione.
Digitate da riga di comando
$ sudo apt-get install amule-daemon amule-utils
Una volta installata tutta la rava e la fava, è necessario mandare in esecuzione il demone la prima volta per fargli generare automaticamente dei file, tra cui quello di configurazione.
$ amuled
Il sistema risponderà con un errore, ma è la testimonianza del fatto che il lavoro sporco è stato eseguito. Se il programma non torna alla linea di comando, terminarlo con CTRL+C
Tutti i file ora si trovano in ~/.aMule/
Editiamo quindi il file amule.conf
nano amule.conf
Ecco le voci più importanti da settare
[eMule]
MaxUpload=0
MaxDownload=0
SlotAllocation=2
Port=4662
UDPPort=4672
TempDir=/home/nome_utente/.aMule/Incoming
IncomingDir=/home/nome_utente/.aMule/Temp

[ExternalConnect]
AcceptExternalConnections=1
ECPort=4712
ECPassword=tuapasswordMD5

[WebServer]
Enabled=1
Password=tuapasswordMD5
Port=4711

Innanzitutto le porte TCP ed UDP, per motivi di sicurezza sostituitele con due a vostro piacimento da 1001 a 65000. Tali porte dovranno inoltre essere inoltrate dal router (per essere accessibili dall’esterno); impostate anche un ulteriore inoltro sempre sul router della porta UDP impostandola a TCP+3
Avremo quindi:
1122 TCP –>192.168.10.10 (indirizzo vs server)
1142 UDP –>192.168.10.10
1125 UDP –>192.168.10.10
Se avete un firewall, cosa altamente consigliata (farò un articolo dedicato a questo prossimamente), dovete ovviamente abilitare l’accesso dall’esterno a queste porte. Di norma iptables è presente sulla maggior parte delle distribuzioni linux e se non configurato opportunamente, rimane silente facendo entrare ed uscire tutto il traffico senza alcun controllo. Quindi, se questa è la vostra situazione, non toccate nulla, altrimenti, impostate come segue:
iptables -A INPUT -p tcp --dport XX -j ACCEPT
iptables -A INPUT -p udp --dport XX+3 -j ACCEPT
iptables -A INPUT -p udp --dport YY -j ACCEPT

Le voci Tempdir ed IncomingDir servono a dire al demone dove scaricare i download non ancora completati ed i file interi, potete modificarle a vostro piacimento.
Le voci ExternalConnect e WebServer servono rispettivamente ad abilitare la gestione remota del demone (tramite ad es. Android come vedremo dopo) e la gestione tramite interfaccia web. Per motivi di sicurezza, vi consiglio di abilitare tali voci solo al traffico lan interno (non facendo quindi l’inoltro delle porte dal router) ed abilitandole sul firewall in tale maniera.
$iptables -A INPUT -p tcp --dport 4711 -m state --state NEW -s 192.168.10.0/24 -j ACCEPT
$iptables -A INPUT -p tcp --dport 4712 -m state --state NEW -s 192.168.10.0/24 -j ACCEPT

Impostiamo la voce “Enabled” su 1 per entrambe.
Un altro parametro è ECPPassword e Password. Sono rispettivamente le password per la gestione remota e per la gestione tramite interfaccia web. Vanno inserite in forma criptata con l’algoritmo MD5
Digitiamo quindi echo -n miapassword | md5sum ed incolliamo la stringa risultante nei campi ECPPassword e Password
Se proprio vogliamo essere sicuri, impostiamo due password diverse.
Modifichiamo quindi il file /etc/default/amule-daemon impostando l’utente che eseguirà amuled, modificando il seguente parametro:
AMULED_USER="utente"
Abbiamo quasi finito.
Aggiungiamo quindi le liste dei server eDonkey:
$ echo "http://www.gruk.org/server.met.gz" > ~/.aMule/addresses.dat
$ echo "http://www.peerates.net/servers.php" >> ~/.aMule/addresses.dat

Per la rete Kad scarichiamo una lista ulteriore prelevandola da http://www.nodes-dat.com/ e salviamola in ~/.aMule/
A questo punto avviamo il demone digitando
$ sudo service amule-daemon start
Se è tutto ok, il demone dovrebbe avviarsi caricando anche quello per la gestione dell’interfaccia web. Andate sul browser e digitate sulla barra indirizzo
ipdelserver:4711
ad esempio 192.168.10.10:4711

Per ogni altro dubbio e/o approfondimento vi consiglio di consultare la wiki di aMule
Vediamo ora la gestione tramite Android. Andate su Google play e scaricate “aMule Remote”, oppure a questo link
Il programma è semplicissimo da configurare, basta andare nelle impostazioni e digitare l’indirizzo del server, il numero della porta ECP (4712 se non è stata cambiata) e la password scelta, questa volta però da digitare in chiaro.
Fatto questo, il programma si collegherà automaticamente illustrando i file attualmente in download e le loro statistiche
amule1
amule2

Annunci
Standard
Linux

Installiamo un server multimedia/samba/torrent/Upnp/ssh/emule

Linux ovviamente!
Ovvero, come ridare nuova vita ad una macchina che giace inutilizzata da qualche parte perché ormai “vecchia” e farle fare cose davvero utili ed interessanti.
Questa guida sarà divisa in più parti, ognuna dedicata ad un server diverso (ssh già è presente a questo indirizzo) ed è basata su Debian.
Dedichiamo questa prima parte al reperimento del sistema operativo. Qui è possibile scaricare l’ultima versione di Debian per l’installazione via internet, ovvero un’immagine minima che ci consente di selezionare solo quello di cui realmente abbiamo bisogno. Qui c’è il manuale di installazione, dategli un’occhiata.
Avete quindi un vecchio pc con poca ram, una scheda video spompata ed una scheda di rete? Ottimo, è la macchina che fa al caso vostro.
Il mio server gira attualmente su una macchina headless (senza monitor) con 256Mb di ram, una cpu da 1ghz di clock ed un hd da 10Gb, oltre ad un hd da mezzo Tb usato come spazio di archiviazione.
Stiamo installando un ambiente server, quindi il desktop grafico non c’è. Fatevene una ragione. Con la shell potete fare di tutto, fidatevi. Anche navigare su internet, in via testuale ovvio, ma ne avete la possibilità. Ricordate i tempi dell’MS-Dos? Si faceva di tutto, senza ambiente grafico. Una volta inziati all’arte della shell, non tornerete più indietro, garantito!
Installiamo quindi il sistema operativo di base e poi andiamo a selezionare i server samba ed ssh. Il resto verrà installato da linea di comando successivamente.
Scegliamo il bootloader, la password di amministrazione (non ricordo se consente anche la creazione del primo utente o no, se si procedete alla sua creazione ed alla scelta di username e password) e la macchina è pronta. Noterete i tempi di avvio fulminei ed una scritta inquietante, su sfondo nero.
Debian GNU/Linux 3.X debian tty1
debian Login:
Siete arrivati! La macchina è viva! (Frankenstein docet)
Accedete con le credenziali da voi scelte (nome utente e password) e siete dentro. Il bello comincia proprio adesso.
Alla prossima puntata.

Standard
Linux

Installare e configurare un server SSH

openssh

Eccoci al dunque, si inizia a fare sul serio. OpenSSH. Cito da wikipedia: “OpenSSH (Open Secure Shell) è un insieme di programmi che rendono disponibili sessioni crittografate di comunicazione in una rete di computer usando il protocollo SSH. È stato creato come alternativa opensource al software proprietario Secure Shell.”

In poche parole, vi consente di collegarvi in remoto al vostro pc/server senza che i dati della vostra sessione vengano intercettati e decodificati, al contrario di quanto accade  con una sessione Telnet dove il flusso dati non è codificato ma trasmesso in chiaro.

Uno strumento di questo tipo è di una potenza eccezionale, pensate alla gestione di un server che si trova in un datacenter all’altro capo del globo, oppure più semplicemente alla possibilità di operare come se foste davanti al monitor del vostro pc di casa stando in spiaggia sotto l’ombrellone  (salvo rari casi, se avete fatto una cosa del genere avete dei seri problemi, sappiatelo 🙂 ) oppure al bar del centro commerciale sfruttando la connessione wifi gratuita per creare un ponte dati cifrato con l’adsl di casa per poi navigare tranquillamente. Per coloro che riterranno paranoie queste mie attenzioni, sappiate che le sessioni POP3 non sono crittografate, per cui tramite uno sniffer di pacchetti di rete (tipo wireshark) il vostro vicino di tavolino potrebbe spiare il vostro traffico dati e carpire informazioni sensibili, quali nomi utente e password di mail, dei vari social network, numeri di carte di credito e via dicendo. Creando invece un tunnel cifrato con SSH non correte nessun rischio.

Sono riuscito a convincervi e/o ad incuriosirvi? Ok, procediamo con l’installazione. I comandi di reperimento dei programmi fanno riferimento ad una distribuzione Debian based, per altre distribuzioni usate il gestore di pacchetti appropriato.

Installazione degli applicativi

Iniziamo installando sul server il pacchetto openssh-server ed il client ssh. Sul terminale da cui ci collegheremo, basterà installare solamente il client.

Digiteremo quindi sul server:

sudo apt-get install openssh-client
e
sudo apt-get install openssh-server

Per il lato client, basterà digitare

sudo apt-get install openssh-client

Configurazione

Il 99% del lavoro interessa il lato server, ed è a questo che ci rivolgeremo ora.
Iniziamo facendo una copia del file di configurazione originale del programma openssh-server, sshd è il nome del demone che viene lanciato all’avvio del sistema e che rimane in ascolto di eventuali richieste di connessione via client ssh, sulla base delle specifiche indicate nel file sshd_config, sito nella directory /etc/ssh/sshd_config

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
sudo chmod a-w /etc/ssh/sshd_config.original

Con il primo comando diciamo di creare una copia del file sshd_config e di nominarla sshd_config.original, con il secondo gli applichiamo i permessi in sola lettura.

Iniziamo quindi a modificare il file di configurazione, dando da terminale

sudo nano  /etc/ssh/sshd_config

Analizzando il file, tutto ciò che è preceduto dal carattere”#” viene considerato come un commento e dunque non preso in considerazione dal sistema.
Iniziamo quindi, con:

Disabilitare il login come amministratore

Il perché di questa scelta è semplice: pensate ai danni che un eventuale cracker potrebbe fare al vostro sistema se riuscisse a loggarsi come amministratore. Meglio consentire il login solo a normali utenti e poi se necessario, guadagnare permanentemente l’account di root con sudo-s (anche se non ve ne è affatto la necessità, per le normali funzioni di amministrazione basta sudo xxxxxx)
Nel nostro file di configurazione quindi, troviamo la riga

PermitRootLogin yes

e sostiuiamola con

PermitRootLogin no

Cambiare la porta in ascolto

Di default, sshd rimane in ascolto sulla porta TCP 22. Per motivi di sicurezza, è meglio cambiare questa porta con una non standard
Cambiamo quindi la riga

#Port 22

Con la seguente, se vogliamo che la porta TCP 2323 sia in ascolto

Port 2323

Ovviamente, sul router a cui è connesso il server va chiusa la porta 22 (se aperta) ed abilitata la 2323 TCP.
Sul pc client, per evitare ogni volta di specificare il collegamento a questa porta non standard, modificare il file di configurazione presente in /etc/ssh/ssh_config

sudo nano  /etc/ssh/ssh_config

troviamo la riga

#Port 22

e decommentiamola, modificandola in

Port 2323

In questo modo, il client saprà automaticamente a quale porta non-standard dovrà collegarsi.

Disabilitare il login mediante l’inserimento di username e password

Troviamo la riga

#PasswordAuthentication yes

e sostituiamola con

PasswordAuthentication no
(attenzione, il # non è volutamente presente)

Controlliamo poi che il login tramite chiavi SSH sia abilitato (se non lo fosse, facciamolo)

PubkeyAuthentication yes
RSAAuthentication yes

A questo punto, salviamo e chiudiamo il file sshd_config.

Rimanendo sul server, prepariamoci quindi alla

Generazione delle chiavi SSH

Le chiavi SSH vengono generate con il comando

ssh-keygen -t dsa

Verrà proposto un prompt per inserire una password di sicurezza, in caso di smarrimento delle chiavi o furto della macchina da cui ci si logga. E’ meglio inserirla, ed anche “robusta”, in quanto il cracker con le vostre chiavi in mano è padrone della/e vostre macchine. La password, rappresenta l’ultima forma di difesa contro un accesso non autorizzato, per il tempo di arrivare a casa e cambiare le chiavi di sicurezza.

A questo punto, nella directory ~/.ssh/ (attenzione, il prefisso “.” davanti ad una directory indica che è nascosta, ma è possibile visualizzarla da terminale oppure sul front-end grafico nautilus premendo Ctrl+H) avremo due files: id_rsa.pub (chiave pubblica, può essere tranquillamente distribuita a tutti) e id_rsa (chiave privata, da tenere segreta)

Le chiavi vanno generate sia sulla macchina server, sia su tutti i client da cui ci vogliamo collegare

Inserimento della chiave pubblica del client sul server

A questo punto, se non è già presente, sulla macchina server creiamo ed editiamo il file authorized_keys

sudo gedit ~/.ssh/authorized_keys

ed aggiungiamo il contenuto del file id_rsa.pub della macchina client
Rendiamo quindi eseguibile solo dal proprietario il file in lettura e scrittura

chmod 600 ~/.ssh/authorized_keys

In alternativa, è possibile copiare direttamente la chiave pubblica del client sul server dando sul pc client il comando
ssh-copy-id -i /home/<username>/.ssh/id_rsa.pub utente@indirizzo_ip

Riavvio del demone sshd

Riavviamo ora il demone sshd per fargli recepire tutte le modifiche apportate:

sudo /etc/init.d/ssh restart

in versioni più recenti, il comando è stato sostituito dal seguente :

sudo service ssh restart

Stabilire il collegamento alla macchina remota

Sul pc client digitare

ssh utente@indirizzo_ip o dominio

dove utente è il nome dell’utente di destinazione sulla macchina remota
esempio,

ssh –X marco@89.92.158.1

abilita l’inoltro del server grafico X e lancia il tunnelling ssh

Tipica schermata di login SSH

Schermata del 2014-10-11 08:36:24

Tips and tricks

Per impostare il messaggio di benvenuto all’avvio della sessione ssh, editare il file /etc/motd con i permessi da root ed editare il file di configurazione /etc/ssh/sshd_config ed abilitare la sezione Banner indicando il nome del file (/etc/motd). Inserire dunque in quest’ultimo il messaggio di benvenuto che verrà visualizzato ad ogni login.
Per mountare via ssh una directory remota per averla disponibile in locale senza ricorrere ad scp, è necessario installare il pacchetto sshfs tramite apt-get
Una volta installato, per montare la directory remota digitare:

sshfs -o allow_other user@remotehost:/mountpoint_remoto/ /mountpoint_locale

esempio :

sshfs -o allow_other marco@10.0.0.120:/media/disco_USB/BT/ /media/samba

Per inviare o ricevere un file tramite ssh utilizzare scp

copia dal client al server:
scp nomefile nomeutenteserver@indirizzo:/percorso/
esempio:
scp nodes.dat emule@10.0.0.120:/home/emule/.aMule/

copia dal server al client
scp nomeutenteserver@indirizzo:/percorso/nomefile /percorsolocale/

Standard