mercoledì 4 maggio 2022

Resize dischi VM



se il disco è in xfs il resize può essere fatto a caldo

con il comando "blkid" vedo se è in xfs

verificare il disco a quale storage domain appartiene

verificare lo spazio libero

andare sulla VM -> disco -> modificare -> Estendi la dimensione di > estendere di quanti giga vogliamo

andare in ssh sulla macchina

[root@test]# fdisk -l

Disk /dev/sdb: 171.8 GB, 171798691840 bytes, 335544320 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x559918b3


Device Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048   335544319   167771136   83  Linux


Disk /dev/sda: 80.5 GB, 80530636800 bytes, 157286400 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x00035d0f


Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *        2048     2099199     1048576   83  Linux

/dev/sda2         2099200   157286366    77593583+  8e  Linux LVM


estendere con growpart

growpart /dev/ sda 2


a questo punto abbiamo il Volume Group esteso e possiamo estendere il Logical Volume

lvextend -r -L +10G /dev/mapper/centos-root  -> estensione del Logical Volume

esempio di un estensione di un disco di boot xfs in LVM:

estendere il disco sul Virtual Manager

vgs

growpart /dev/sda 2

pvresize /dev/sda2

vgs

lvextend -r -L +10G /dev/mapper/centos-root


Se la partizione non è LVM:

xfs_growfs /home/jboss/


Estensione dei dischi ext4

aumentare lo spazio del disco sull'hypervisor

fdisk -lc /dev/vdb

resize2fs  -p /dev/vdb

Estensione disco Ubuntu con partizione LVM su dischi iscsi

nel mio caso ho voluto estendere la partizione di / che era in LVM

prima di tutto fare:

fdisk -l

copiare l'output

Esteso il disco sull'hyp di VMware

ls /sys/class/scsi_device/

echo 1 > /sys/class/scsi_device/32\:0\:0\:0/device/rescan

a questo punto se faccio:

fdisk -l /dev/sda  -> otterrò un errore sulla tabella delle partizioni

parted -l

Fix

Creare la nuova partizione

fdisk /dev/sda

n

p

inserire il nuovo numero partizione, che dovrebbe già assegnarlo lui automaticamente

inserire il primo valore del settore, che corrisponde al''ultimo +1

root@zabbix:~# fdisk -l /dev/sda

Device               Start                End         Sectors     Size     Type

/dev/sda1           2048             4095           2048        1M      BIOS boot

/dev/sda2           4096       2101247      2097152       1G       Linux filesystem

/dev/sda3      2101248    31455231    29353984       14G     Linux filesystem


ad esempio, se sto creando la partizione 4 il primo settore sarà 31455232 (ma verrà comunque suggerito di default), inserire l'ultimo settore

t  -> tipo partizione

8e -> LVM

w → salvare


ls -ltra /dev/sd*  -> vediamo la nuova partizione creata (/dev/sda4)

pvcreate /dev/sda4   ->  creiamo il volume fisico

vgextended "nome volume" /dev/sda4   -> estendiamo il volume group

lvextend -r -L +5G /dev/mapper/ubuntu--vg-ubuntu--lv   -> estendiamo il logical volume

giovedì 8 aprile 2021

Connessione remota a un database MYSQL 8

Da MYSQL 8 sono un pò cambiate le modalità per l'accesso a un db da remoto. Infatti nelle precedenti versioni bastava modificare il .cnf e dare le Grant e il gioco era fatto, adesso è necessario creare prima l'utente.

Nel dettaglio:

modificare il file:

/etc/mysql/mysql/mysql.conf.d/mysqld.cnf

e modificare questo campo da:

bind-address = 127.0.0.1 a bind-address = 0.0.0.0

entrare in mysql

shell# mysql -u root -p

mysql> CREATE USER 'pippo'@'%' IDENTIFIED BY 'pluto';

dove pippo sarà la user, pluto la password e il carattere % sta a significare da qualsiasi IP

dopo aver creato la user si può procedere con il dare i privilegi

mysql>  GRANT ALL ON database.* TO 'pippo'@'%';

con questo comando stiamo dando tutti i privilegi all'utente pippo, al posto di database inserire il nome del db al quale si vuole dare i permessi.

a questo punto si può riavviare mysql

systemctl restart mysql

un altra cosa che consiglio e di impostare un retention per i log binari, altrimenti andranno a riempire il disco dove si trova la partizione:

/var/lib/mysql

 modificare il file:

/etc/mysql/mysql/mysql.conf.d/mysqld.cnf

e aggiungiere in fondo al file:

 expire_logs_days = 7

questo farà in modo che i file binari per il restore saranno conservati per solo sette giorni 

 

 

 

 

venerdì 12 marzo 2021

RESTART automatico servizi linux

Una corretta amministrazione di un server consiste nel verificare e nel caso restartare i servizi che devono girare sul nostro server Linux.

Inanzitutto occorre creare uno script, nel mio caso è in Bash

#!/bin/bash
# Nome del servizio Zabbix Server
SERVICE="zabbix-server"
# Controlla se Zabbix Server è in esecuzione
if ! systemctl is-active --quiet $SERVICE; then
    echo "$SERVICE non è in esecuzione. Tentativo di avvio..."
    systemctl start $SERVICE
    sleep 5  # Attendere qualche secondo per verificare se riparte
    if systemctl is-active --quiet $SERVICE; then
        echo "$SERVICE avviato con successo."
    else
        echo "Avvio fallito. Terminazione forzata e riavvio..."
        pkill -9 zabbix_server
        sleep 2
        systemctl start $SERVICE
        if systemctl is-active --quiet $SERVICE; then
            echo "$SERVICE avviato con successo dopo il riavvio forzato."
        else
            echo "Errore: impossibile avviare $SERVICE."
        fi
    fi
else
    echo "$SERVICE è già in esecuzione. Nessuna azione necessaria."
fi
oppure
#!/bin/bash
service zabbix-server status | grep 'active (running)' > /dev/null 2>&1
if [ $? != 0 ]
then
        service zabbix-server restart > /dev/null
fi
oppure
#!/bin/bash
/etc/init.d/zabbix-agent status | grep running > /dev/null
if [ $? != 0 ]
then
        /etc/init.d/zabbix-agent restart > /dev/null
fi
Salvare lo script con estensione .sh e dare i permessi di scrittura:

chmod +x script.sh

A questo punto è necessario inserirlo nel crontab, impostando quando lo vogliamo eseguire.
Per vedere gli attuali crontab:

crontab -l

Per editare i crontab:

crontab -e
premere "i" per entrare nella modalità d'inserimento

La figura sotto spiega il criterio del Crontab









di seguito alcuni esempi:
0 */1 * * * /root/script.sh
Lo script viene eseguito ogni ora
0 8 1 1 * /root/script.sh
Lo script viene eseguito alle ore 8.00 ogni primo dell'anno
* * * * * sleep 30; /root/script.sh
Lo script viene eseguito ogni 30 sec.
Per salvare e uscire
ESC --> : --> wq


domenica 21 febbraio 2021

Installazione Zabbix 5.0 LTS su Ubuntu server 20.04 Focal

Tra i software di monitoraggio più completi, troviamo sicuramente Zabbix, che permette il monitoraggio dei server linux e windows tramite agent installato, che dei vari device di rete tramite SNMP. Di seguito la procedura per installare un Zabbix 5.0LTS su Ubuntu server 20.04

Installazione di Apache
apt install apache2
scaricare la versione
wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+focal_all.deb
Aggiornamento dei repository
apt update
Installazione di Mysql. Tra le opzioni si ha la possibilità di utilizzare MySQL o PostgreSQL. Entrambi sono molto validi, ognuno di loro ha pregi e difetti. Personalmente ho scelto MySQL in quanto è più veloce nella lettura del DB.
apt install mysql-server
Installazione dei componenti di Zabbix
apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent
Impostazione della password di root per MySQL
mysql -u root -p

 insereire una password

Creazione del database e dello user
mysql> create database zabbix character set utf8 collate utf8_bin; mysql> create user zabbix@localhost identified by 'password'; mysql> grant all privileges on zabbix.* to zabbix@localhost; mysql> quit;
Importazione del database
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
inserire la password precedentemente creata, nel nostro caso è: password in caso di successo non viene fornito alcun output, attendere fino a che non si avrà il prompt Impostazione del file di configurazione di Zabbix editare il file /etc/zabbix/zabbix_server.conf andare alla voce DBPassword togliere il commento e inserire la password del database precedentemente inserita es. DBPassword= 'password database' salvare e uscire.

Configurare il PHP per il frontend di Zabbix editare il file:
/etc/zabbix/apache.conf
decommentare la riga: php_value date.timezone Europe/Riga e inserire il corretto timezone, farlo sia per il modulo 5 che 7 di php es. php_value date.timezone Europe/Rome

Avvio di zabbix e dei processi
systemctl restart zabbix-server zabbix-agent apache2 systemctl enable zabbix-server zabbix-agent apache2
Primo accesso a Zabbix
http://indirizzo_ip/zabbix
Seguire il wizard iniziale per configurare il frontend Dopo aver fatto accesso a zabbix, sotto User Settings è possibile modificare tema e lingua Se nel cambio lingua viene visualizzato il messaggio: You are not able to choose some of the languages, because locales for them are not installed on the web server. e non ci sono lingue disponibili, la soluzione è:
dpkg-reconfigure locales
scorrere con le freccie fino alla lingua desiderata, in questo caso sarà: it_IT.UTF-8, selezionare con lo spazio riavviare il servizio di apache2
service apache2 restart

mercoledì 20 gennaio 2021

Error access ssh

Se collegandovi in SSH a vecchi sistemi legacy, dovesse apparire nel terminale questo errore:

no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1

è necessario editare il file config di ssh.

editare /home/emy/.ssh/config

se il file config non dovesse essere presente è necessario crearlo

aggiungere queste righe:

Host ip address a cui ci si vuole connettere

    KexAlgorithms +diffie-hellman-group1-sha1


es.

Host 192.168.1.1

    KexAlgorithms +diffie-hellman-group1-sha1

salvare e uscire.

Nel caso si voglia anche fare accesso senza inserire la password è necessario copiare la propria chiave SSH.  Verificare se sotto ~/.ssh$ sono presenti i file id_rsa e id_rsa.pub, se non fossero presenti crearli con:

~/.ssh$ ssh-keygen

Adesso dobbiamo copiare la chiave ssh, ci sono due metodi:

1° metodo

~/.ssh$ ssh-copy-id -i id_rsa.pub root@192.168.1.1

2° metodo

copiare il contenuto di id_rsa.pub e copiarlo all'interno del file 

/root/.ssh/authorized_keys

giovedì 8 novembre 2018

TLS negotiation failed

Se dopo un aggiornamento della vostra distro, all'improvviso non dovesse più funzionare la vostra connessione OpenVPN, il vostro client Owncloud, la vostra connessione WIFI Enterprise o la vostra connessione RDP tramite Remmina; probabilmente vi è capitato ciò che è successo a me./

Partiamo con un troubleshotting sulla nostra connessione OpenVPN:/
Da terminale/

sudo openvpn /home/emy/OPenVPN/test.conf

OpenVPN 2.4.6 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Jul 30 2018

library versions: OpenSSL 1.1.1 11 Sep 2018, LZO 2.10

Enter Auth Username: emy

Enter Auth Password: ********

WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.

TCP/UDP: Preserving recently used remote address: [AF_INET]81.xxx.xxx.xxx:1194

UDP link local: (not bound)

UDP link remote: [AF_INET]81.xxx.xxx.xxx:1194

UID/GID downgrade will be delayed because of --client, --pull, or --up-delay

TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)

TLS Error: TLS handshake failed



Continuiamo con una connessione RDP con Remmina



Quello che ne esce è che il protocollo TLS (Transport Layer Security) non è compatibile con il server o viceversa.

Nel mio caso, l'aggiornamento della distro a portato all'aggiornamento di OPENSSL e del suo file di configurazione, impostando la versione minima a TLSv1.2, ma se dall'altra parte questa versione non è supportata, si viene a creare un fallimento nella negozazione.

Risoluzione:
editare /etc/ssl/openssl.cnf
andare in fondo al file e modificare:
MinProtocol = TLSv1.2

impostare:
MinProtocol = TLSv1.0



venerdì 6 luglio 2018

Create and Restore Raid Software Linux

Se su un server abbiamo a disposizione due dischi, il modo migliore per avere una ridondanza e quindi un backup è creare un Raid. Esistono Raid di tipo Hardware e Software.
Nel nostro caso vedremo come creare un Raid 1 software.
Raid 1 vuol dire che i dati saranno scritti su entrambi i dischi, ma lo spazio a disposizione è di un solo disco. Si consiglia di utilizzare dischi della stessa capacità, o il Raid prenderà come riferimento il disco più piccolo.

Verifica delle partizioni:
#ls -ltra /dev/sd*
brw-rw---- 1 root disk 8, 16 Apr  7 10:42 /dev/sdb
brw-rw---- 1 root disk 8, 17 Apr  7 10:42 /dev/sdb1
brw-rw---- 1 root disk 8,  0 Apr  7 10:55 /dev/sda
brw-rw---- 1 root disk 8,  1 Apr  7 10:57 /dev/sda1

Se sono dischi usati in precedenza per altri Raid, dare:
#mdadm --zero-superblock /dev/sda1
#mdadm --zero-superblock /dev/sdb1

Creazione del raid:
#mdadm --create --verbose --assume-clean --level=1 --raid-devices=2 /dev/md0 /dev/sda1 /dev/sda2

  • --verbose = aumenta la verbosità sull'output d'uscita
  • --assume-clean = evita che l’array venga ricostruito e quindi fatto il resync. Su partizioni di grandi dimensioni può metterci molto tempo. E’ da utilizzare solo per la creazione di nuovi array vuoti
  • --level = indica che tipo di Raid si utilizza, nel nostro caso è un Raid1
  • --raid-devices = indica quanti devices fanno parte del Raid
  • /dev/md0 = indica il nome del device che punterà al nuovo array
  • /dev/sda1 /dev/sdb1/ = sono le partizione che andranno a formare il nuovo array
Per visualizzare la creazione del Raid:
#cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 sda1[2] sdb1[1]
      204736 blocks super 1.2 [2/2] [UU]
     
L'assegnazione del comando bitmap permette la ricostruzione del Raid più velocemente:
#mdadm --grow --bitmap=internal /dev/md0




TCP MSS

L'MSS (Maximum segment size) è un parametro TCP che indica la quantità massima di paylod (unità di misura byte) che un dispositivo di co...