Sysadmin & Infrastruttura

Trasferimento File Sicuro su Server Bloccati

Aggirare le restrizioni usando una shell POSIX pura e OpenSSL.

Se hai passato abbastanza tempo a gestire ambienti di produzione, ti sarai sicuramente trovato in questa situazione: sei connesso via SSH a un server bloccato e devi estrarre un file di log enorme, un dump del database o un archivio di configurazione. Il problema? Il server non ha strumenti di build, nessun runtime Go, niente Python e nessun accesso di root per installare utility standard come rsync o scp. Inoltre, l'ambiente monta le directory con il flag noexec, impedendoti di portare i tuoi binari compilati staticamente.

Questa è una policy comune in reti aziendali fortemente regolamentate e in ambienti CI/CD restrittivi. I team di sicurezza bloccano tutto, lasciandoti solo una shell POSIX essenziale. Quando i popolari strumenti di trasferimento file come Magic Wormhole o Croc falliscono perché richiedono un binario client, devi diventare creativo.

Il Fallback POSIX: Usare ciò che si ha

Quasi ogni sistema Unix-like include due strumenti fondamentali: curl e openssl. Se riusciamo a concatenarli, possiamo costruire una pipeline di dati crittografata e in streaming senza mai scrivere un file eseguibile su disco.

Il concetto base è semplice. Sulla tua macchina locale (dove hai i privilegi), crittografi i dati e li invii in streaming a un server relay. Sul server restrittivo, usi curl per estrarre lo stream crittografato, lo passi ad openssl per la decrittografia e reindirizzi l'output su un file.

Generare la Pipeline

Costruire manualmente i comandi OpenSSL corretti, generare una chiave PBKDF2 sicura e assicurarsi che la modalità AES-256-CTR sia configurata correttamente è noioso e prono ad errori. Questo è il motivo per cui abbiamo costruito Tubo.

Tubo è uno strumento di trasferimento file zero-install. Il client sul server restrittivo è un semplice script shell POSIX. Se ti rifiuti di usare curl | sh per motivi di sicurezza, Tubo fornisce una modalità manuale che stampa l'esatta pipeline che devi eseguire.

curl -sN https://tubo.endlessite.com/run/xyz | openssl enc -d -aes-256-ctr -pass pass:LA_TUA_CHIAVE > database_dump.sql

Analizziamo perché questo approccio funziona in ambienti restrittivi:

Limitazioni e Casi Limite

Sebbene questo approccio risolva il problema immediato, non è privo di compromessi. Il comportamento standard di openssl enc può variare su distribuzioni Unix meno comuni (come vecchie versioni di AIX o Solaris). Inoltre, poiché questa pipeline si basa su uno stream HTTP stateless, non c'è un meccanismo integrato per riprendere i trasferimenti (resumable) se la connessione cade a metà di un file da 50GB.

Per la maggior parte delle operazioni di emergenza—estrarre log per eseguire il debug di un incidente o scaricare uno snapshot veloce—questa pipeline in pura shell è la soluzione più pragmatica disponibile. Abbiamo progettato Tubo per automatizzare esattamente questo flusso di lavoro, riducendo al minimo gli attriti quando si ha a che fare con infrastrutture rigide.

Se vuoi ispezionare il codice del relay o rivedere i comandi POSIX manuali, la repository è open source. Puoi trovarla qui.