Archives For Ricerca e Sviluppo

Tutto parte da una segnalazione di bug arrivata tramite il mio bug bounty program (openbugbounty.org/reports/809068) e, seppur protetto da alcuni metodi di cui ti ho già parlato in passato, effettivamente il file XML-RPC di WordPress risultava raggiungibile dall’esterno, mostrando potenzialmente il fianco a un qualche attacco poco gradito. Per questo motivo ho voluto aggiungere un ulteriore strato di sicurezza che gli permette di continuare a rimanere disponibile per Jetpack e nulla più. Per farlo mi è bastato mettere mano al file .htaccess del dominio.

WordPress: 5 step per la sua (e tua) sicurezza

La documentazione a cui fare riferimento è quella ufficiale di Jetpack, disponibile all’indirizzo jetpack.com/support/hosting-faq. Nello specifico ciò che a te interessa è quel paragrafo relativo a “Whitelist all communications between WordPress.com and Jetpack“, utile per permettere al tuo sito e al servizio messo a disposizione da WordPress.com di parlare senza incontrare ostacoli, lasciando fuori tutto il resto.

Al solito, prima di cominciare, il consiglio resta sempre lo stesso:

ATTENZIONE: Prima di eseguire qualsiasi modifica ai tuoi file e/o dispositivi sei pregato/a di effettuare un backup di questi (o lavorare in ambiente di test e mai di produzione). Solo così sarai capace di tornare indietro ponendo rimedio a eventuali errori di distrazione.

Una questione di .htaccess

Pronto? Cominciamo. Il trucco è semplice e sta tutto nel file che può limitare l’accesso alle risorse contenute nel tuo sito web. Apri il file .htaccess con un editor di testo degno (Notepad++ o Atom), non toccare nulla che sia stato messo lì dal tuo WordPress o da qualsiasi altro plugin da te utilizzato (penso a iThemes Security o W3 Total Cache e simili), trova uno spazio nuovo da occupare con una porzione di codice che dovrebbe essere quanto più simile a questa proposta di seguito:

<Files xmlrpc.php>
    Order Allow,deny
    Allow from 122.248.245.244
    Allow from 54.217.201.243
    Allow from 54.232.116.4
    Allow from 192.0.64.1/192.0.127.254
    Allow from 192.0.80.0/20
    Allow from 192.0.96.0/20
    Allow from 192.0.112.0/20
    Allow from 195.234.108.0/22
    Deny from all
    Satisfy All
    ErrorDocument 403 https://gioxx.org/403.shtml
</Files>

Io ho inserito il codice subito prima del termine del “paragrafo” modificato da WordPress (per capirci, prima di “# END WordPress“). Una volta terminato il tuo lavoro, salva la modifica e sovrascrivi il file presente sul tuo spazio FTP. Ciò che hai appena fatto consiste nel bloccare ogni possibile comunicazione con il file xmlrpc.php a esclusione degli IP appartenenti a WordPress.com, come una sorta di Firewall che taglia fuori tutti tranne loro. Chiunque proverà a puntare a quel file php sul tuo spazio hosting, si troverà davanti a una pagina di errore (nel mio caso https://gioxx.org/403.shtml, nel tuo ti consiglio di modificarla con qualsiasi altro tipo di indirizzo).

La modifica è immediata e dovrebbe portare beneficio alla tua installazione WordPress – in termini di sicurezza, nda – che non risentirà così alcun problema nell’utilizzo del sempre troppo mastodontico JetPack, in attesa che quest’ultimo si decida a utilizzare un diverso metodo per comunicare con le installazioni del CMS in giro per il mondo.

Al solito: per qualsiasi ulteriore dubbio o informazione l’area commenti è a tua totale disposizione (anche per suggerire metodi alternativi a quello proposto poco sopra).


fonti:
namehero.com/startup/how-to-safely-disable-xmlrpc-in-wordpress-while-keeping-jetpack
jetpack.com/support/hosting-faq
Condividi l'articolo con i tuoi contatti:

Ci ho messo del tempo per partorire il titolo dell’articolo, fai il bravo. Cos’è 0patch? (così ci leviamo subito di torno l’incombenza di descriverlo accuratamente) È un agente che si installa sul tuo PC e ti permette di scaricare e mettere immediatamente in produzione delle correzioni a bug conosciuti di programmi terze parti e – soprattutto – del Sistema Operativo. Devi pensare al concetto di WSUS (ammesso tu lo conosca, altrimenti guarda qui) in maniera decisamente più distribuita, a livello mondiale, un po’ quello che accade con i server di Microsoft che Windows Update sfrutta quando il tuo PC necessita di correzioni.

0patch: micropatching in un macro-mondo di insicurezze

0patch in realtà è più di tutto questo. È chiaramente un progetto e quindi un’azienda alle spalle, con i suoi sviluppatori e tutto il suo business model che deve in qualche maniera poter fruttare qualcosa nelle tasche di chi ci ha prima di tutto investito e che lo ha perciò tirato in piedi. Il concetto è di per sé vincente: gli sviluppatori sono troppo spesso lenti nel rendere pubbliche le correzioni delle falle dei propri programmi, spesso addirittura non verranno mai neanche pubblicate per mancanza di tempo, fondi o chissà cos’altro. 0patch vuole in qualche maniera “metterci la pezza” e intervenire andando a correggere quelle falle e impedendo quindi a exploit e in generale malware di sfruttarle per arrivare a danneggiare il tuo sistema.

In maniera del tutto logica e conseguenziale questo si traduce nella possibilità di continuare a utilizzare determinate applicazioni e Sistemi Operativi evidentemente abbandonati ma in qualche maniera (tu sai quale, voglio sperare) assolutamente irrinunciabili. È in questo frangente che vorrei farti capire che Windows XP non lo si può più ritenere tale (e tra un po’ anche Windows 7, nda), ma capisco che alcune situazioni molto delicate e particolari possano andare contro questa mia affermazione. Ecco: 0patch può aiutarti a far sì che quel sistema sia meno vulnerabile agli attacchi provenienti non solo dal web, ma anche da locale. L’agente è pari a un qualsiasi suo simile (mi viene in mente l’agente Kace che utilizziamo in azienda, tanto per dire), scaricherà e installerà il necessario senza costringerti al riavvio della macchina, dettaglio che ritengo non tanto trascurabile (un punto a favore di questa soluzione).

Nella sua versione Free 0patch permette ben pochi movimenti, in tutta onestà è anche giusto così e non lo dico perché “prendi quello che è gratuito e ringrazia“, bensì perché sono grosso modo convinto che non ci sia molto spazio libero da lasciare all’utente quando si tratta di proteggere un sistema da possibili attacchi di terze parti offensive. Puoi dare un’occhiata alle patch installate (che saranno scaricate e applicate in base ai software che hai a bordo della tua macchina, per evitare sprechi di spazio e banda in download per ciò che non ti interessa), puoi chiedere di essere informato riguardo i download dei codici più importanti, puoi conoscere l’attuale situazione di patching del sistema dalla dashboard, fine dei giochi. 0patch è uno di quei software che una volta installato imparerai a ignorare, funziona, ne prendi semplicemente atto (il mio funziona è stato riportato dopo aver provato ad attaccare il sistema tramite un bug conosciuto di un’applicazione, fallito e notificato proprio da 0patch).

Ammetto di aver scoperto 0patch tardi rispetto al dovuto, sono stato forse tra gli ultimi a provare la sua versione Free (per qualche mese) prima dell’arrivo della versione professionale a pagamento. La mail è datata 3 aprile e annuncia proprio la variante dedicata agli amministratori di sistema che possono scegliere di proteggere singole macchine corrispondendo un gettone annuale alla Acros Security:

Dear 0patch friends,

After several years of being a “beta” product (and probably competing for the longest beta period in the history of software development with Google’s Gmail) we’ve finally reached the point where we can start offering our commercial version of 0patch for business use.  Now we have a FREE and PRO version available and if you already have our 0patch Agent installed, you are automatically using our FREE plan that includes free patches.

What are the differences between FREE and PRO plans?

We are offering the FREE plan for personal and non-profit educational use, implementing the same technology as 0patch PRO, but with a limited set of micropatches and limited support.

In the future, when we issue a micropatch, we will decide whether it will only be offered to users with 0patch PRO license or also to users without one (i.e., 0patch FREE users), using these rough guidelines:

  • Patches for vulnerabilities affecting predominantly home users and users in educational institutions (e.g., WinRAR or Equation Editor patches) shall be FREE patches.
  • Patches for 0days that affect many home/educational users shall be FREE patches until official vendor fixes for such 0days are issued, at which time they will turn into PRO patches.
  • Patches for issues affecting predominantly organizations (e.g., Windows Server issues) shall be PRO patches.
  • Patches for end-of-life products (e.g., old Java runtime versions, Windows Server 2003, or Windows 7 after January 14, 2020) shall be PRO patches.
  • PRO users will be entitled for an email support with guaranteed response in 24 hours.

[…]

What will change for you if you stay on the FREE plan?

Right now, if you are using 0patch for personal or non-profit educational use, nothing is changing for you. All patches that we’ve published until today are and will always stay free and will continue to protect you. You will also be able to use all FREE patches published in the future.

What else is changing?

Most importantly, with the revenue generated from PRO licenses we’ll be able to produce more micropatches – and we certainly need more of them to keep up with the growing number of vulnerabilities. We’ll also be able to continue improving our technology and further minimize the impact on your computers while pushing the limits of what we can patch.

We are kindly advising you to make an upgrade of your existing 0patch Agents to the latest version if you haven’t already, as older agents will soon become unsupported.

Please note that since today our former “Beta Test Agreement” is not valid anymore and is replaced with the “0patch End-User License Agreement”. It’s a long boring document but please read it as it defines our new relationship.

Provo a riassumere quindi ciò che oggi avresti a disposizione con la versione gratuita di 0patch e cosa cambia rispetto alla neonata professionale:

  • Tutte le patch installate in fase di rilascio beta resteranno tue, non le perderai in alcun modo (per questo, se non hai conosciuto e usato prima 0patch, è ormai troppo tardi).
  • Tutte le patch che correggono problemi relativi al Sistema Operativo e applicazioni di terze parti tipicamente per uso privato verranno rilasciate gratuitamente, diventeranno patch di tipo professionale se e quando gli autori rilasceranno le correzioni in maniera ufficiale.
  • Tutte le patch riguardanti sistemi tipicamente aziendali (pensa a Windows Server) verranno esclusivamente rilasciate per il canale professionale.
  • Tutte le patch riguardanti prodotti abbandonati (Sistema Operativo in primis, ma anche applicazioni di terze parti) saranno rilasciate per il canale professionale, questo riguarda anche Windows 7 a partire dal 14 gennaio 2020 (un grande punto a sfavore se si considera la quantità di installazioni casalinghe che non verranno mai aggiornate a Windows 10 per i più svariati motivi).
  • Com’è giusto che sia, tutte le installazioni professionali di 0patch avranno accesso a un canale di supporto dedicato a mezzo posta elettronica, con risposta garantita entro 24 ore dalla segnalazione.

Per approfondire l’argomento ti rimando a qualche articolo pubblicato sul centro di supporto di 0patch:

Condividi l'articolo con i tuoi contatti:

Quando si parla di backup lo scopo principale del gioco è sempre e solo uno: cercare di non perdere i propri file. Che tu li voglia salvare in copia singola o doppia poco importa, ciò che spesso serve è la delocalizzazione dei file per evitare che il Single Point of Failure sia dietro l’angolo (ho i file sul disco in casa! Ok, e se ti entrano in casa?). Per fare questo mestiere esistono già diverse soluzioni NAS in grado di replicarsi tra loro anche su differenti reti fisiche e in Cloud, ma se volessimo farlo tramite RPi?

Dato che ci stiamo per addentrare un po’ più nella ciccia, è il momento giusto per il doveroso (e assente da un po’) …

Attenzione: articolo ad alto tasso di tecnicismi lavorativi, nerditudine, viaggi mentali che potrebbero non interessare ai più, comunque vada perdete ogni speranza o voi che leggete.
RPi3 e rclone: sincronizzazione dei file tra locale e Cloud

source: unsplash.com / author: Fredy Jacob

rclone

Si chiama rclone e permette di sincronizzare file (in più modi / vie) tra locale e Cloud, non necessariamente con ambo i protagonisti presi in causa. Cosa vuol dire? Vuol dire che nessuno ti vieta di utilizzare rclone per scambiare dati tra due punti in locale (forse poco utile) o tra due punti in Cloud (e qui torna utile in caso di migrazioni), o locale misto Cloud che riguarda forse la maggior parte dei casi. Si tratta di una soluzione completamente open, trovi tutto il progetto su GitHub.

rclone è in grado di dialogare con una quantità molto elevata di servizi di Cloud Storage, è un po’ un coltellino svizzero da tenere a portata di mano (anche sotto forma di soluzione portable). Esistono alcune interfacce grafiche per Windows o macOS ma alcune di queste non vengono più sviluppate e supportate, quindi ti consiglio caldamente di imparare a utilizzare la sua riga di comando: rclone.org/docs.

Qualche esempio pratico

Con l’arrivo di RPi3 B+ in casa, ho scelto di iniziare a giocare con rclone e migrare (in test) quei backup oggi portati a termine da Windows e SyncBack Free. Ti faccio quindi qualche esempio pratico di come sia possibile ottenere lo stesso risultato passando da tutt’altro Sistema Operativo e relativo software di copia dati.

Partendo dal presupposto che tu abbia già configurato rclone e inserito quindi i vari connettori che ti servono (in questo caso parliamo di puro SFTP e nulla più), ti basterà realizzare un piccolo script bash contenente poche e semplici istruzioni, come questo:

rclone sync "gioxx_org:html/wp-content/backupwordpress" "Dropbox:DBBackup/gioxx.org" -P --transfers 9 --include *.zip

La stringa si traduce in questa maniera:

  • gioxx_org è il nome che ho dato al connettore rclone che si occupa di collegarsi a questo blog, dopo i due punti occorre inserire il percorso della cartella che si intende raggiungere. Per arrivare alla backupwordpress mi servirà attraversare prima html/wp-content. Questo percorso è lo stesso che vedresti utilizzando un qualsiasi client FTP per collegarti al tuo spazio web.
  • Dropbox è il nome (molto banale, ne sono consapevole) che ho dato al connettore rclone che si collega al mio account Dropbox. All’interno della home del mio Dropbox esiste una cartella chiamata DBBackup e al suo interno un’ulteriore cartella chiamata gioxx.org, è qui che finiscono tutti i file zip contenenti i backup del mio database MySQL (nota infatti il --include *.zip finale nella riga di comando, che obbliga rclone a scaricare solo file di tipo ZIP).
  • Il parametro -P equivale al “Progress“, rclone mi mostrerà a video l’avanzamento delle operazioni.
  • Il parametro --transfers 9 serve a forzare rclone a trasferire fino a 9 file alla volta, contemporaneamente, perché la mia macchina e la connettività possono sopportarlo. Più è alto il numero, più consumerai RAM e CPU della tua macchina (e occuperai banda internet in download e upload dato che il trasferimento viene eseguito dallo spazio FTP a Dropbox).

Tutto chiaro? Vuoi un altro esempio?

rclone sync "fuorigioco:html" "Dropbox:WebBackup/fuorigio.co" -P --transfers 9 --filter-from /home/pi/exclude-fCo.txt

Cosa è cambiato?

  • Nulla cambia per il sync in sé. Sto chiedendo a rclone di tenere sincronizzati tutti i file della cartella html di fuorigioco (connettore che si collega al buon vecchio fuorigio.co) con una apposita cartella sull’account Dropbox. Restano i 9 trasferimenti contemporanei e la visualizzazione dei progressi, ma.
  • Ma in questo caso utilizzo il filtering messo a disposizione da rclone per escludere una lista di file e cartelle che non mi interessano (vedi: rclone.org/filtering). Sto chiedendo a rclone di aprire il file di testo exclude-fCo.txt e leggere cosa non voglio che venga sottoposto a sincronizzazione, per capirci:
# Esclusioni Fuorigio.co
- /wp-admin/**
- /wp-includes/**

Salta la prima riga, un commento per capire di che lista stiamo parlando nel momento in cui apro il file di testo. Da lì in poi potrai notare un elenco fatto di cartelle che voglio saltare a piè pari, che rclone quindi ignorerà passando oltre. Nessuno ti vieta, come specificato nella documentazione ufficiale, di inserire ulteriori cartelle o singoli file, anche utilizzando delle wildcard che possono quindi fare match con più dati contemporaneamente.

Non ti resta che il crontab

Se non sai di cosa stiamo parlando (sei serio? E hai avuto la pazienza di leggere fino a qua? Fatti abbracciare!), trovi tutto ciò che c’è da sapere riguardo crontab su Raspbian (ma non solo) all’indirizzo raspberrypi.org/documentation/linux/usage/cron.md.

L’attività via rclone la sappiamo padroneggiare e lo script bash è pronto. Lo hai già reso eseguibile, non ti resta che programmarne l’esecuzione secondo esigenza. In questo momento possono quindi tornarti utili un paio di siti web dedicati alla generazione di righe crontab da copiare e riportare facilmente nel file di sistema (sudo crontab -e):

Io utilizzo un pelo più il primo che il secondo (quest’ultimo è molto utile quando vuoi immediatamente leggere in maniera più sensata una riga di Crontab più che crearla da zero). Specifica l’intervallo di esecuzione del tuo script e fornisci ogni dettaglio richiesto, così arriverai a un risultato che potrebbe essere simile a questo:

0 2 * * * /home/pi/DBBackup.sh

Come lo si legge? Ecco: lo script di backup verrà eseguito alle ore 2 del mattino (il 2) in punto (lo 0, che diversamente avrebbe dovuto riportare un altro numero da 1 a 59 se avessi voluto un diverso orario più “esotico“), di ogni giorno (il primo asterisco, avrebbe potuto avere valore da 1 a 31), di ogni mese (il secondo asterisco, avrebbe potuto avere valore da 1 a 12), di ogni giorno della settimana (l’ultimo asterisco, e questo sta a indicare che l’esecuzione deve essere quotidiana, altrimenti avrebbe potuto avere valore da 0 a 6). Ti sembra difficile? Inizialmente lo è, ma poi si entra nell’ottica e lo si capisce immediatamente, ti ho fornito quei due siti web poco sopra proprio per iniziare a fare pratica.

Salva la modifica al crontab e attendi fiducioso che i tuoi file finiscano correttamente nella cartella di backup (ovviamente controlla che vada tutto liscio).

L’articolo si conclude qui (per la tua certa felicità), in caso di problemi o dubbi puoi sempre lasciare un commento. Utilizzi già rclone? Se sì, come gestisci i tuoi backup? Sono curioso di confrontarmi con altre persone nella mia stessa situazione e voglia di sperimentare 🙂

Condividi l'articolo con i tuoi contatti:

YOURLS in installazione self-hosted propone un proprio logo in alto a destra con relativo titolo (H1) bene in evidenza e, contrariamente per esempio a DokuWiki, non permette nativamente di modificarlo o eliminarlo (né il logo, né il titolo); avevo per questo motivo modificato manualmente il file PHP che inserisce il titolo e richiama l’immagine / logo, inserendo la mia icona e nulla più, “una roba un pelo più pulita“, inutile dire che questa soluzione è sconsigliata e da non percorrere (per svariati motivi che ti spiego tra un attimo), ecco perché alla fine ho deciso di scrivere un plugin per YOURLS che ti permette di fare tutto questo senza sporcarti le mani.

YOURLS: cambiare il logo con un plugin (GWallChangeLogo) YOURLS: cambiare il logo con un plugin (GWallChangeLogo) 1

GWallChangeLogo

Perché non modificare manualmente la pagina PHP?

Per svariati motivi, te ne cito un paio fondamentali (il secondo più del primo):

  • se non hai ben presente cosa stai facendo e dove stai mettendo le mani, potresti fare danni anche solo modificando una virgola;
  • ogni modifica operata manualmente verrà certamente sovrascritta al prossimo aggiornamento del software che installerai per questioni di sicurezza (vero che lo farai?), vuoi davvero andare a modificare ogni volta quel richiamo logo e titolo? Suggerimento: No.

È per questo che ho scritto un plugin: gratuito, codice pubblicamente disponibile (puoi lavorarci anche tu, che schifo non mi farebbe), facile da installare e configurare, puoi disattivarlo quando ti pare e decidere di tornare al logo originale di YOURLS, come nulla fosse mai accaduto, pillola azzurra.

Scarica il file PHP del plugin dallo spazio GitHub che gli ho dedicato (questo: github.com/gioxx/YOURLS-GWallChangeLogo), quindi caricalo nella cartella user/plugins del tuo YOURLS così ritrovarlo nella console amministrativa (contoso.com/admin/plugins.php dove contoso.com dovrà essere sostituito con l’URL della tua installazione YOURLS, ovviamente) e attivalo.

A questo punto spostati nella voce di menu GWall Change Logo Plugin Config e specifica i 3 parametri richiesti: URL dell’immagine da utilizzare al posto del logo originale, tag Alt e Title:

YOURLS: cambiare il logo con un plugin (GWallChangeLogo) 2

Non c’è limitazione sull’Image URL, il plugin proverà in ogni caso a fare l’img src dell’indirizzo che gli darai in pasto, occhio quindi a cosa gli riporti all’interno. I tag Alt e Title possono non essere specificati, ma per una questione di standard ti consiglio di farlo inserendo un testo alternativo all’immagine nel caso in cui questa non venisse trovata all’indirizzo specificato. Quando hai terminato, fai clic su Update values per confermare e permettere al plugin di terminare il suo lavoro.

Questo è quanto. Per qualsiasi dubbio l’area commenti è a tua disposizione così come l’area supporto / Issue di GitHub dove potrai segnalare malfunzionamenti o richiedere modifiche al plugin. Crediti e fonti utilizzate sono riportate all’interno del file PHP del plugin, grazie a chi mi ha permesso di imparare qualcosa in più su questo aspetto di YOURLS.


immagine di copertina: rawpixel.com from Pexels
Condividi l'articolo con i tuoi contatti: