0
Ott 05 2017

OpenSSH: disattivare la password per le sessioni remote

Da quasi un anno ho una Raspberry Pi e ho più volte questo trucchetto, solo che mi sono reso conto di non averlo ancora mai condiviso.

Per ragioni di sicurezza, ho deciso di disabilitare l’autenticazione tramite password per quando mi connetto tramite Internet, ma di lasciarla per quando mi connetto dalla stessa rete locale della Raspberry.

Ci sono diversi metodi per implementare questa cosa, tutti basati sull’istruzione Match che, citando le manpages, introduce un blocco condizionale.

Le condizioni che può verificare riguardano utenti, gruppi, host, indirizzi e la porta locale.

In particolare io ho scelto di fare una distinzione in base a quest’ultima: una strategia spesso suggerita per aumentare la sicurezza di SSH è quella di cambiare porta e, per esempio, metterlo in ascolto sulla porta 22022. Io ho quindi deciso di ascoltare sulla porta 22 per la LAN e sulla porta 22022 per le sessioni remote e di disabilitare l’autenticazione tramite password per queste ultime.

Il procedimento è molto facile. Serve solo modificare il file /etc/ssh/sshd_config. Per prima cosa bisogna esplicitare entrambe le porte su cui ascoltare:

Port 22
Port 22022

Dopodiché bisogna aggiungere la parte di matching solo per la porta secondaria:

Match LocalPort 22022
	PasswordAuthentication no

In alternativa si potrebbe disabilitare l’autenticazione tramite password sempre e riabilitarla solo se l’indirizzo del peer appartiene alla classe della rete LAN.

0
Nov 21 2016

La live della salvezza

Sabato sono andato ad aiutare con un po’ di manutenzione di un laboratorio di una scuola dotato di computer vecchiotti riportati in vita con Linux Mint.

In base alle mie esperienze avute finora con le diverse distribuzioni Linux, fare l’aggiornamento da Linux Mint Rosa a Linux Mint Sarah mi è sembrata una buona idea.

In effetti su due-tre macchine è andato tutto liscio, ma in una si è verificato un problema: l’aggiornamento si è interrotto, non so ancora il motivo preciso, e il successivo riavvio non si è mai completato, a causa di un Kernel Panic.

A peggiorare la situazione poi c’era un altro mix di fattori:

  • non mi ero portato la mia attrezzatura solita (computer, chiavette varie etc…), quindi non avevo alcun modo di avviare un ambiente di rispristino
  • era sabato alle 10:30 di mattina, un’ora dopo avevo un impegno e lunedì sarei stato a decine di km di distanza
  • in quel computer c’erano dei dati che sarebbero serviti ad inizio della settimana.

La soluzione allora è stata di sfruttare il server SSH della mia Raspberry Pi, accessibile da Internet, e una live dotata di server e client SSH configurati in modo da fare reverse SSH - la live della salvezza per l’appunto. Avendo… [Leggi il resto...]

0
Nov 17 2014

Python SSH Tunnel Server

SSH tunnels are great!

They allow to bypass firewalls and NAT problems, and you can use as unprivileged user, since you don’t have to install virtual network devices such as TUN or TAP.

Another good reason to chose SSH is that it is a standard protocol, so there are many implementations: OpenSSH on most Unices, PuTTY on Windows and cross platform libraries (Java, Python…).

However there is a great disadvantage: the SSH server. If you have a server you probably already use SSH, therefore you don’t want to share your custom port and grant access to your server, or create accounts to allow it.

A solution could be creating a chroot or something like that, but I wasn’t really confident in it, therefore I looked for an alternative SSH server, and I’ve come up with this library: TunnelServer.

Python already has a brilliant SSH library: Paramiko. It’s very transparent: it manages the packages for you, but you are the one who should manage the rest (login check, shell comunication, PTY allocation…, socket-ssh channel synchronization). That’s great, but sometimes unhandy, so I’ve written this class, which is a middleware: the class user still has to check login, but you don’t have to create… [Leggi il resto...]