Author Archives: Toledo12

  • -

Quelques outils de monitoring sous Linux

Category:Linux,Monitoring,Sécurité,Surveillance Tags : 

But du document

Il n’est pas toujours simple d’identifier les problèmes de performances sous Linux, mais on sera plus efficace avec ces quelques outils, qui constituent la trousse de secours de tout administrateur système.

Note

L’auteur fournit tel quel cette liste d’outils, et ne prend aucune responsabilité sur leur utilisation qui doivent être effectuée par des personnes confirmées sur un système de production.

1. htop

htop est une évolution de top, permettant une excellente vision des processus ou des threads s’exécutant sur le système en mode utilisateur ou en mode kernel, htop permet de trier ou stopper les processus d’une manière entièrement interactive. Pour l’installer

sudo yum install htop

2. glances

Outil de monitoring général similaire à htop permettant d’afficher un maximum d’information sur le moins d’espace possible. Pour l’installer

sudo yum install glances

3. iotop

iotop indique des informations sur les I/O des différents processus sur le disque dur, permettant de détecter d’éventuels latences ou autres goulets d’étranglements par rapport à la performance du sous-système disque. Pour l’installer

sudo yum install iotop

4. df

df signifie Disk Free et permet de voir l’occupation des volumes sur n’importe quel système UNIX ou Linux, il est préinstallé par défaut. Pour visualiser les informations de manière confortable, utiliser l’option –h (Pour Human…)

df -h

5. lshw

Un outil qui extrait les informations du matériel, que ce soit du processeur à la carte mère. Pour l’installer

sudo yum install lshw

Et pour le lancer, simplement

lshw

6. apachetop

apachetop monitor les performances globales de votre serveur apache en affichant le nombre d’accès en lecture et en écriture, comme le nombre global de requêtes effectuées. Pour l’installer

sudo yum install apachetop

7. ftptop

ftptop indique des informations de base sur les connections ftp courantes, comme le nombre d’utilisateurs connectés et les chargements et téléchargements en cours. Pour l’installer

sudo yum install ftptop

8. mytop

mytop indique des informations concernant les threads en cours et la performance d’une base mysql ou mariadb. Pour l’installer

sudo yum install mytop

Pour se connecter à une base du serveur

mytop –d nom_de_la_base –u utilisateur –p mot_de_passe

9. powertop

powertop vous donne une vision de la consommation électrique des processus et du matériel, et peut vous aider à effectuer les réglages adéquats pour limiter la consommation du système.

sudo yum install powertop

Il faut ensuite utiliser la touche <TAB> pour passer d’une vue à l’autre.

10. Netstat

Netstat affiche des statistiques sur les paquets entrants et sortants, ainsi que sur les interfaces réseaux. Il est installé par défaut dans le système, et l’exemple d’utilisation est le suivant :

netstat -pan | less

11. Nmap

Nmap est un scanner permettant de connaitre les ports ouverts, sur sa machine ou un host distant. Pour l’installer

sudo yum install –y nmap

L’exemple d’utilisation est le suivant :

nmap 127.0.0.1

12. iftop

Outil de visualisation du réseau indiquant le connexions entrantes et sortantes avec le serveur ainsi que la consommation de la bande passante pour chaque connexion, la résolution des hosts ainsi que les ports utilisés. Un must to have ;>)

sudo yum install iftop

13. jnettop

jnettop est un autre outils de visualisation des arcanes du réseau. Pour l’installer, télécharger la dernière version depuis

http://li.nux.ro/download/nux/dextop/el7/x86_64/

sudo rpm -Uvh jnettop-0.13.0-15.el7.nux.x86_64.rpm

sudo yum install jnettop

Pour l’utiliser, lancer

jnettop

Et choisissez ensuite votre carte réseau en pressant les touches de 0 à 9 jusqu’à ce que vous ayez trouvé votre carte.

14. Iptraf-ng

Encore un autre outil d’analyse des métriques réseaux.

sudo yum install Iptraf-ng

15. bmon

Un outil qui mesure la bande passante de votre carte et les affiche sous la forme d’un graphique

sudo yum install bmon

16. tcpdump

tcpdump est un outil de capture du trafique réseau aux possibilités quasi infinies, demandant toutefois une certaine expertise largement documentée sur Internet. Pour installer tcpdump

sudo yum install tcpdump

Exemple d’utilisation : Capturer tout le trafic mais exclure son adresse IP et son protocol ssh en combinant ces 2 exclusions afin de ne pas visualiser votre trafique parasite :

tcpdump -i eth0 port not 22 and host 85.218.71.41

Capturer tout le trafic depuis une adresse de destination

tcpdump -i eth0 dst 50.116.66.139

Capturer tout le trafic depuis une adresse source

tcpdump -i eth0 src 192.168

16. lsof

Un outil préinstallé lisant tous les fichiers ouverts et les connections réseaux. Outil puissant, il permet de trouver quel fichier est ouvert par quel processus, basé sur son nom, ou sur un utilisateur. Et pour le lancer, simplement

lsof

Maria Perez


  • -

Mettre à jour le kernel sur CentOS 7.3

Category:Linux,Sécurité Tags : 

But

Passer CentOS 7.3 à une version de kernel de génération 4.

Note

L’auteur fournit tel quel  cette procédure et ne prend aucune responsabilité sur son bon fonctionnement. Changer le kernel sur une distribution peut amener des dysfonctionnements majeurs sur un système de production. Le repository communautaire proposant le nouveau kernel est ELRepo, qui n’est pas officiel, et dont les sources doivent être ajoutées manuellement.

Mise à jour du kernel

Contrôler la version actuelle du kernel

uname –a

La version retournée sera 3.X. Il faut pour poursuivre ajouter la clé GPG du repository ELRepo. (Note : cette commande peut avoir été changée ; elle est visible sur le site de ELRepo http://elrepo.org/)

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

Ensuite, le repository ELRepo dans CentOS 7 / RHEL 7 ou Scientific Linux 7. (Note : cette commande peut avoir été changée ; elle est visible sur le site de ELRepo http://elrepo.org/)

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

Activer les miroirs rapides de ELRepo afin de télécharger les sources depuis une position géographique plus proche de vous :

yum install yum-plugin-fastestmirror

Maintenant, installer le kernel Linux 4.10 (ou supérieur…) avec la commande

yum --enablerepo=elrepo-kernel install kernel-ml

Redémarrer et choisir le nouveau kernel dans le menu de démarrage, car les anciennes versions seront toujours présentes. Contrôler avec uname –a qu’il s’agit du bon kernel…

Après s’être assuré que le matériel et les logiciels fonctionnent correctement, il faut modifie le loader grub pour le charger par défaut. Pour lister les entrées de Grub, tapez

grep '^menuentry' /boot/grub2/grub.cfg

Ou plus clair encore…

awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

Dans les 2 cas on voit que l‘entrée comportant le kernel le plus récent est la première…qui porte donc le numéro d’entrée 0. Demander à grub de charger par défaut la valeur 0

grub2-set-default 0

Et sauvegarder la configuration…

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Rebooter et contrôler avec uname –a que nous avons bien la version attendue du kernel.

Maria Perez


  • -

Installer fail2ban sous CentOS 7.3

Category:Linux,Sécurité,Surveillance Tags : 

But

Mettre en quarantaine les tentatives d’accès et les signaler par courriel en utilisant une passerelle GMAIL. Fail2ban est un script qui lit le journal /var/log/secure et bannit les adresses IP dans le firewall en suivant certains critères.

Note

L’auteur fournit la procédure de l’installation de fail2ban tel quel et ne prend aucune responsabilité sur son bon fonctionnement. fail2ban est une contre-mesure aux attaques courantes, mais n’est qu’un élément sécuritaire parmi d’autres.

Installer fail2ban

Fail2ban n’est pas disponible dans le repository officiel de CentOS, il faut ajouter celui du projet EPEL.

sudo yum install -y epel-release

Installer maintenant le package fail2ban

sudo yum install -y fail2ban

Activer le service

sudo systemctl enable fail2ban

Configure Local Settings

Les fichiers de configuration se trouvent dans /etc/fail2ban. Le fichier de configuration par défaut est jail.conf, qui peut être modifié en tout temps par des nouvelles versions de package. Il ne faut en aucun cas l’éditer, mais en faire une copie jail.local qui contiendra les paramètres que nous souhaitons écraser.

Ce fichier contient une section [DEFAULT], suivies par des sections individuelles. Ce fichier peut être à la limite vide si l’on se contente des paramètres par défaut, mais sera populé au besoin des modifications souhaitées.

Les paramètres sont appliqués dans l’ordre des fichiers suivants :

  1. /etc/fail2ban/jail.conf
  2. /etc/fail2ban/jail.d/*.conf, alphabetically
  3. /etc/fail2ban/jail.local
  4. /etc/fail2ban/jail.d/*.local, alphabetically

Chaque fichier peut contenir une section [DEFAULT] exécutée en premier, ainsi que d’autres sections pour les prisons individuelles.

Par défaut tous les jails sont désactivés dans le jail.conf et il faut les créer dans le fichier jail.local.

Créons notre premier fichier

sudo nano /etc/fail2ban/jail.local

Créer les éléments suivants :

[DEFAULT]
#BAN HOSTS FOR 2 heures
# maxretry = 4 bloque l’adresse IP fans le firewall après 4 tentatives
bantime = 7200
#OVERRIDE
banaction = iptables-multiport
[sshd]
enabled = true
maxretry = 4
[sshd-ddos]
enabled = true
maxretry = 4
[php-url-fopen]
enabled = true
maxretry = 4
[apache-auth]
enabled = true
maxretry = 4
[apache-badbots]
enabled = true
maxretry = 4
[apache-overflows]
enabled = true
maxretry = 4

Redémarrer fail2ban

sudo systemctl restart fail2ban

La commande doit se terminer sans erreurs. Nous pouvons le statut de fail2ban en invoquant son statut :

systemctl status fail2ban

Nous pouvons le statut de fail2ban en invoquant son client :

sudo fail2ban-client status

Nous pouvons avoir des informations concernant une prison particulière :

sudo fail2ban-client status sshd

Il est possible de checker le journal de fail2ban depuis son dernier démarrage

sudo journalctl -b -u fail2ban

Il est aussi possible de checker directement le journal de fail2ban

sudo tail –f –n 2000 /var/log/fail2ban.log

Ou de contrôler les rôles courants définis par fail2ban dans iptables:

sudo iptables -L

Ou de lister les entrées sous la forme des commandes employées dans iptables.

sudo iptables -S

Ou encore de voire toutes les adresses IP bannies par fail2ban

sudo iptables -L -n

Lorsqu’on est certain que fail2ban fonctionne correctement, on peut l’ajouter en démarrage automatique et redémarrer le serveur pour tester.

systemctl enable fail2ban

Envoyer des emails d’alertes

Attention: Il faut compter environ une dizaine de tentative par heure sur le port SSH pour un serveur qui vient d’être activé sur Internet.

Toutefois il y’a un prérequis pour envoyer des courriels, c’est d’installer un MTA. Inutile d’installer Postfix ou Sendmail, des produits qui risquent de vous ouvrir à de nouvelles vulnérabilités, il faut juste pouvoir envoyer des messages en ligne de commande, et surtout passer par un gateway authentifié sur GMAIL pour que vos messages ne soient pas rejetés par le système de messagerie du destinataire.

Installer Heirloom mailx

yum install -y mailx

Créer un lien symbolique sur email

ln -s /bin/mailx /bin/email

Configurer mail.rc

nano /etc/mail.rc

#Use TLS
set smtp-use-starttls
# Ignore SSL
set ssl-verify=ignore
set nss-config-dir=set nss-config-dir=/root/.certs
# set smtp=smtp://smtp.server.tld:port_number
set smtp=smtp://smtp.gmail.com:587
# tell mailx that it needs to authorise
set smtp-auth=login
# set the user for SMTP
# set smtp-auth-user=user@domain.tld
set smtp-auth-user=votreuser@gmail.com
# set the password for authorisation
set smtp-auth-password=votremotdepasseducomptegmail

Importer les certificats nécessaires à l’implémentation TLS avec GMAIL

Créer un dossier pour les certificats

mkdir ~/.certs

Créer une nouvelle base de données (Ne pas oubleir d’y rentrer et noter votre mot de passe)

certutil -N -d ~/.certs

Créer 3 fichiers pour stocker les chaines de certificats

touch ~/.certs/google ~/.certs/geotrust ~/.certs/equifax

Copier la chaine de certificats pour smtp.google.com:465 dans le fichier my_certs. (Utiliser l’option -showcerts, et terminer par CTRL + C)

openssl s_client -showcerts -connect smtp.gmail.com:465 > ~/.certs/my_certs

Maintenant copier chaque certificat en incluant

–BEGIN CERTIFICATE—

Jusqu’à

–END CERTIFICATE—

Et les coller dans les fichiers respectifs créés auparavant (google, geotrust, equifax), puis les sauvegarder.

Ouvrir le fichier my_certs créé précédemment et copier le certificat Google (En général le premier)

nano ~/.certs/my_certs

Ouvrir le fichier google, et y coller le certificat. Sauvegarder et fermer.

nano ~/.certs/google

Ouvrir le fichier my_certs créé précédemment et copier le certificat geotrust (En général le second)

nano ~/.certs/my_certs

Ouvrir le fichier geotrust, y coller le certificat geotrust. Sauvegarder et fermer

nano ~/.certs/geotrust

Ouvrir le fichier my_certs créé précédemment et copier le certificat equifax (En général le troisième)

nano ~/.certs/my_certs

Ouvrir le fichier equifax, y coller le certificat equifax. Sauvegarder et fermer

nano ~/.certs/equifax

Importer chaque certificat dans la DB

Importer le certificat Google dans la DB :

certutil -A -n "Google Internet Authority" -t "TC,," -d ~/.certs -i ~/.certs/google

Importer le certificat geotrust dans la DB :

certutil -A -n "GeoTrust Global CA" -t "TC,," -d ~/.certs -i ~/.certs/geotrust

Importer le certificat equifax dans la DB :

certutil -A -n "Equifax Secure Certificate Authority" -t "TCP,," -d ~/.certs -i ~/.certs/equifax

Contrôler que l’opération été effectuée correctement :

certutil -L -d ~/.certs

Sortie d’exemple :

Certificate Nickname                                         Trust Attributes
SSL,S/MIME,JAR/XPI
Google Internet Authority                                  CT,,
GeoTrust Global CA                                           CT,,
Equifax Secure Certificate Authority                         CT,,

Tester l’envoi de message

Tapez la ligne pour envoyer un message

echo "Votre message" | mail -s "Sujet" email@votrechoix

Configurer fail2ban pour envoyer des alertes par email

Pour utiliser mailx, la première chose à faire est de dupliquer le fichier mail.conf en mail-whois.conf

cp /etc/fail2ban/action.d/mail.conf /etc/fail2ban/action.d/ mail-whois.conf

Editer à nouveau le fichier précédent /etc/fail2ban/jail.local

sudo nano /etc/fail2ban/jail.local

Dans la section [DEFAULT] du fichier local, il faut rajouter les paramètres de configuration qui vont écraser ceux du fichier de base :

[DEFAULT]
destemail = mail@votrechoix
mta = mail
sender = votrecompte@gmail.com
sendername = votrenom
action = %(action_mw)s

Redémarrer fail2ban

sudo systemctl restart fail2ban

Vous devriez commencer à recevoir vos emails

Maria Perez


  • -

Se connecter en utilisant des clés SSH

Category:Linux,Sécurité Tags : 

Si l’on souhaite automatiser des tâches administratives, comme lancer des sauvegardes sans mettre chaque fois le mot de passe, il est nécessaire d’implémenter des clés ssh pour approuver la sécurité des hosts entre eux.

L’exemple utilise ici toujours l’utilisateur root. Ce n’est pas forcément une bonne idée…

Avertissement

Ce tutoriel est livré sans garanties aucune, et vous seuls êtes responsables de son éventuelle implémentation.

La plupart des tutoriaux proposent de créer une clé avec la commande

ssh-keygen -t rsa

Toutefois, il s’agit d’un ancien algorithme basé sur la difficulté de factoriser des grands nombre. Aujourd’hui ce niveau de sécurité est caduc, quand bien même il faudrait au moins utiliser une clé de 4096 bits avec l’option ssh-keygen -t rsa -b 4096

ssh-keygen -t dsa

Un autre algorithme ancien qui n’est plus du tout recommandé…

ssh-keygen -t ecdsa -b 521

Un nouvel  algorithme utilisé par le gouvernement américain, dont la taille des clés peut être 256, 84, and 521 bits. Toujours utiliser la version looongue

Et le bon est…

ssh-keygen -t ed25519

Un nouvel algorithme implémenté maintenant dans OpenSSH. Pas forcément implémenté dans tous les systèmes, c’est pourtant le choix à retenir par défaut.

Etape 1 : Créer votre pair de clés

Ouvrir un terminal shell et taper

ssh-keygen -t ed25519

Il vous sera demandé dans quel fichier enregistrer la clé. Laisser les propositions par défaut.

[root@localhost ~]# ssh-keygen -t ed25519

Generating public/private ed25519 key pair.

Enter file in which to save the key (/root/.ssh/id_ed25519):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_ed25519.

Your public key has been saved in /root/.ssh/id_ed25519.pub.

The key fingerprint is:

f2:58:5e:39:0f:d8:43:10:07:e7:0b:33:bb:8b:b7:8d root@localhost.localdomain.ch

The key's randomart image is:

+--[ED25519  256--+

|        +oo      |

|         =       |

|        + o      |

|         O o     |

|      . S O      |

|       * o =     |

|      . +   .    |

|       ..+       |

|      ..E..      |

+-----------------+

[root@localhost ~]#

Les deux fichiers suivants sont créés

/root/.ssh/ id_ed25519                La clé privée, qu’il ne faudra jamais partager…

/root/.ssh/ id_ed25519.pub       La clé publique, qui sera copiée sur le host que l’on souhaitera atteindre sans le mot de passe.

Il est possible de changer ou d’ajouter le mot de passe aux fichiers par la suite en tapant

Ssh-keygen -p

Etape 2 : Copier la clé publique sur la machine distante

Lancer l’utilitaire suivant suivis du nom du host

ssh-copy-id root@192.168.50.133

Ceci ajoutera automatiquement la clé publique la plus récemment modifiée sur la machine locale en mettant à jour le fichier  ~/.ssh/authorized_keys sur la machine distante. (Si le fichier existe déjà, l’information sera simplement ajoutée).

Le résultat sera le suivant dans le shell

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

root@192.168.50.133's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.50.133'"

and check to make sure that only the key(s) you wanted were added.

Note : Si l’on ne souhaite pas copier des clés se trouvant dans plusieurs fichiers, on peut aussi spécifier le fichier à copier

ssh-copy-id -i ~/.ssh/id_ecdsa.pub root@192.168.50.133

Ensuite on pourra se connecter en utilisant…

ssh root@192.168.50.133

directement sans mot de passe

Auteur: OBF


  • -

Installer un certificat SSL Let’s Encrypt pour sécuriser votre site

Category:Linux,Sécurité Tags : 

Avertissement

L’informatique, cela ne fonctionne jamais su premier coup, alors backuper préalablement votre site WEB et la base de données associée…

Livré sans résultats garantis…

Prérequis

La première chose est d’autoriser le firewall à accepter les connexions HTTPS, pour la simple et bonne raison que sans cela, une étape de vérification aura lieu plus en aval, et se terminera par un message d’erreur de type suivant :

Failed to connect to x.x.x.x:443 for TLS-SNI-01 challenge

Donc

sudo ufw allow https

Installer le mode SSL pour Apache

yum -y install mod_ssl

Redémarrer le servcice Apache

systemctl restart httpd.service 

Installer le repository EPEL, qui nous servira à installer des packages en dépendances

yum install epel-release

Installer GIT

yum install git

Aller dans le répertoire approprié pour rafraichir GIT

cd /usr/local/

Rafraichir GIT pour ramener les fichiers en local

git clone https://github.com/letsencrypt/letsencrypt

Aller dans le répertoire approprié pour invoquer la commande de demande de certificat

cd /usr/local/letsencrypt

Lancer la commande appropriée. Très important : Générer tant pour le nom de domaine que pour le site web, sinon les navigateurs vous sonneront une erreur plutôt moche…

./letsencrypt-auto --apache -d mercise.ch -d www. mercise.ch

Un certain nombre de dépendances supplémentaires seront certainement téléchargées…

Tester le site

Aller sur

https://www.ssllabs.com/ssltest/analyze.html

Entrer votre nom de domaine (sans www…)

Un rapport est issu, avec nombre d’informations…

Si vous recevez une note de C, c’est que votre domaine est vraiment mal sécurisé, et des ajustements sont nécessaires. Éditez le fichier concernant la configuration SSL avec

nano /etc/httpd/conf.d/ssl.conf

Chercher pour la ligne commençant par

SSLProtocol

Et ajouter

-SSLv3

A la fin de la ligne.

Continuer votre recherche, et commenter avec un dièse la ligne commençant par

SSLCipherSuite

Créer une nouvelle ligne en copiant la (longue…) ligne suivante :

SSLCipherSuite          ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

Et rajouter encore 2 lignes supplémentaires en-desous…

SSLHonorCipherOrder     on

et

SSLOptions +StrictRequire

Re-Tester le site

Aller sur

https://www.ssllabs.com/ssltest/analyze.html

Refaire le test mais cliquer sur « Clear cache »

Un rapport est issu, avec nombre d’informations… Et on devrait avoir quelque chose de mieux maintenant ;>)

Renouveler automatiquement le certificat Let’s Encrypt sur Apache

Et oui, cette béat crée un certificat qui expire après …. 90 jours. C’est court, et très moche, mais un script a été créé afin de renouveler automatiquement le certificat.

Ce script sera schedulé par la commande « cron » afin d’être lancée au moment approprié.

Pour renouveler manuellement le certificat, vous devez taper la ligne suivante :

cd /usr/local/letsencrypt

Et exécuter

./letsencrypt-auto certonly --apache --renew-by-default  -d mercise.ch –d www. mercise.ch

Alors, un script a été créé sur cette base là…

Insérer un script de renouvellement de certificat Let’s Encrypt

Avec votre éditeur préféré (j’ai le mien…), taper

nano /usr/local/bin/le-renew-centos

Et coller le contenu suivant, créé par Erika Heidi, dont le script est disponible sur GitHub

!/bin/bash

domain=$1

le_path='/usr/local/letsencrypt'

le_conf='/etc/letsencrypt'

exp_limit=30;

get_domain_list(){

certdomain=$1

config_file="$le_conf/renewal/$certdomain.conf"

if [ ! -f $config_file ] ; then

echo "[ERROR] The config file for the certificate $certdomain was not found."

exit 1;

fi

domains=$(grep --only-matching --perl-regex "(?<=domains \= ).*" "${config_file}")

last_char=$(echo "${domains}" | awk '{print substr($0,length,1)}')

if [ "${last_char}" = "," ]; then

domains=$(echo "${domains}" |awk '{print substr($0, 1, length-1)}')

fi

echo $domains;

}

if [ -z "$domain" ] ; then

echo "[ERROR] you must provide the domain name for the certificate renewal."

exit 1;

fi

cert_file="/etc/letsencrypt/live/$domain/fullchain.pem"

if [ ! -f $cert_file ]; then

echo "[ERROR] certificate file not found for domain $domain."

exit 1;

fi

exp=$(date -d "`openssl x509 -in $cert_file -text -noout|grep "Not After"|cut -c 25-`" +%s)

datenow=$(date -d "now" +%s)

days_exp=$(echo \( $exp - $datenow \) / 86400 |bc)

echo "Checking expiration date for $domain..."

if [ "$days_exp" -gt "$exp_limit" ] ; then

echo "The certificate is up to date, no need for renewal ($days_exp days left)."

exit 0;

else

echo "The certificate for $domain is about to expire soon. Starting renewal request..."

domain_list=$( get_domain_list $domain )

"$le_path"/letsencrypt-auto certonly --apache --renew-by-default --domains "${domain_list}"

echo "Restarting Apache..."

/usr/bin/systemctl restart httpd

echo "Renewal process finished for domain $domain"

exit 0;

fi

Donner les permissions d’exécution sur ce script (évidemment…)

chmod +x /usr/local/bin/le-renew-centos

Installer le package bc

yum install bc

Et lancer votre script pour le tester…

/usr/local/bin/le-renew-centos mercise.ch

Vous devriez obtenir le nombre de jour restant…

Scheduler votre script avec crontab

Lancer la commande pour ajouter une entré…

crontab -e

Pressez « Insert » pour passer en mode insertion (Oui c’est du VI). Et coller

0 1 1 */2 * /usr/local/bin/le-renew-centos ordi.ch >> /var/log/ mercise.ch -renew.log 2>&1

Taper <ESC> pour sortir du mode d’édition et taper

:wq

Relancer votre service cron….

sudo systemctl restart crond.service

Et contrôler que votre entrée est bien présente…

crontab –l

Voilà, n’oubliez pas de contrôler après 90 jours si votre site est toujours fonctionnel….

Changer les liens sur votre site Internet…

Pour accéder à votre dossier principal en HTTPS…. Par exemple dans WordPress…

Remplacer les chemins d’accès dans vos réglages généraux

Et changer aussi votre fichier htaccess comme suit dans

/var/www/html /.htaccess

En modifiant la ligne suivante

RewriteRule ^(.*)$ https://www. mercise.ch/$1 [R,L]

Dans le fichier

/var/www/html/wordpress/wp-config.php

Ajouter à la fin la ligne

define('FORCE_SSL_ADMIN', true);

Et retravailler tous vos menus dans WordPresss….

Puis redémarrer le serveur….

sudo reboot

Et surtout…

Tester, et tester

Auteur: OBF


  • -

ATTENTION aux bases de données ISAM & accès fichiers par le réseau

Category:Sécurité,Windows Tags : 

Parmi les logiciels de développement, on trouve couramment une vieille casserole connue ayant eu autrefois son heure de gloire, appelée Visual FoxPro.

Ce RAD inclut aussi un gestionnaire de base de données utilisant la technologie ISAM.

Dans un système de base de données ISAM, c’est le client qui gère ses propres accès aux tables de la base données en accédant directement aux tables ainsi qu’aux index.

Le client se repose donc sur un mécanisme de verrouillage des fichiers pour maintenir l’intégrité et la consistance du jeu de données global.

Cette méthode est simple et efficace en termes de vitesse, et permet de se passer d’un gestionnaire de base de données centralisé comme SQL Server ou Oracle.

Toutefois, par la nature même de cette technologie, la protection des données est très inférieure à un système SGBD centralisé, qui deviennent ainsi extrêmement sensibles aux différentes erreurs d’écritures, pouvant facilement corrompre l’entier des données.

Au début, Windows NT, à travers son protocole réseau SMB 1, mettait en jeu un certains nombres de mécanisme permettant d’accélérer les écritures en réseau au travers de différentes techniques de cache, dont la plus connue appelée Opportunistic locking or oplocks.

Le problème de oplocks est que si plusieurs demande d’accès avaient lieu sur un même fichier, le cache était relâché et les données écrites sur le disque, et potentiellement des corruptions pouvaient se produire dans le dit fichier.

Cette optimisation étant quelquefois non souhaitée, il était possible de la désactiver dans SMB1 (Q219022).

Par la suite, la couche réseau de Windows a passablement évolué. Depuis Windows Vista, le protocole est passé à la version SMB2, et avec Windows 8, SMB3.

L’inconvénient est que dans ses dernières versions SMB2 et SMB3, oplocks ne peut plus être désactivé, et les bases de données reposant sur la technologie ISAM ne fonctionnent plus correctement sans avoir continuellement des problèmes de corruption.

Selon Microsoft (Voir plus bas l’article original en anglais) oplocks ne permet plus de faire fonctionner en toute sécurité des bases de données utilisant la technologie ISAM, et une solution est de désactiver les protocoles récents SMB2 et SMB3 dans Windows 8 ou Windows 10, ainsi que sur le serveur Windows 2016, solution préconisée d’ailleurs par certains éditeurs sur leur site Internet, et de n’utiliser que SMB1.

Cette solution est extrêmement dangereuse, car le protocole SMB1 contient un grand nombre de problèmes de sécurité qui ne sera plus corrigé par Microsoft, au point même que l’éditeur désactive SMB1 dans ses dernières versions de Windows. De plus, cela rend plus lent le fonctionnement du réseau entre les postes clients et le serveur.

La seule solution que nous recommandons est dès lors de ne plus accéder directement aux données d’une base ISAM en passant par le réseau, mais de confiner le programme et ses données dans une session de type Services Bureaux à Distances sur un serveur.

Ainsi, en ne déportant que l’affichage sur les postes clients du logiciel, les informations de la base de données ne transitent plus par le réseau entre le programme et ses fichiers, ce qui élimine les risques de corruption.

La seconde recommandation que nous faisons est claire: Ne plus acquérir de logiciels utilisant la technologie de base de données de type ISAM. Les outils permettant de développer des programmes sur ce modèle, comme Visual Foxpro, sont maintenant totalement dépassés (Visual Foxpro n’est même plus supportés par Microsoft…), car ils n’ont plus la possibilité de suivre les évolutions de Windows.

Avant d’acquérir une solution informatique, il est de votre devoir de connaitre avec quel outil elle a été conçue, ce qui vous donnera une idée sur sa pérennité et son évolutivité,

Des éditeurs créant encore des logiciels avec des RAD utilisant la technologie ISAM prétendent faussement que si leurs solutions connaissent des problèmes de fonctionnement, il s’agit de « problèmes réseaux », mettant ainsi la faute sur les infrastructures des clients, ce qui est évidemment malhonnête, ou pour le moins démontre une méconnaissance totale de l’architecture des systèmes modernes.

“If a multiuser or single user database application accesses a common data store on a Windows NT file server using opportunistic locks (or OPLOCKS), it is possible for a given user to cache partial transactions on the client systems hard drive. This is a performance enhancement to the Windows client redirector to reduce network file I/O between the client and server. The data being cached on the client redirector is later written back to the server. However, in some cases, a client system may stop responding (hang), do a hard reboot, lose its network connection to the server, or experience any number of other technical difficulties. In such cases, the content of the local cache that has not yet been written to the server can be lost. As a result, the transaction integrity of the database structures on the server is compromised and the data on the file server can become corrupted.” (see Q224992)

The only thing that developers utilizing ISAM database systems can do to help mitigate the problem posed by network communications issues and optimistic locking, is to perform more regular flushes (writes of buffered information) to disk.  This process will both lessen performance, but may also still not resolve the issues that can arise from optimistic locking and network communications failures.

Our recommended solution is to place the data access inside a safe environment where file access and requests are not handled over the network at all.  We recommend accessing our software via Remote Desktop Services and to have the data stored directly on the server managing the remote access.  If file access is handled locally, and no network access is handled, the cache / locking / race conditions that can occur during read/write over the network are veritably eliminated.

If network file access is required, following Microsoft suggestion to downgrade to SMB 1.0 and disabling optimistic locking is the recommended solution.  There are known side effects with performance and file access is going to generally be slower after doing this.  This solution may still not eliminate all potential network file access issues, and has no effect on mitigating communications problems or failures leading to data corruption.

Maria Perez


  • -

Une qualité parfaite des vidéos Netflix sous Linux

Category:Linux Tags : 

Avertissements: A vos risques et périles Msieursd’ames ;>)

Les vidéophiles l’auront constaté…

Visionner Netflix sur Windows en 1080P est d’une simplicité déconcertante sous Windows: Il suffit d’utiliser Internet Explorer ou Edge. Sous OSX, Safari en fera de même, et si les drivers sont un minimum à jour dans ces environnements, la fluidité sera assurée.

Concernant Linux, c’est bien plus pénible: Firefox ou Chrome sont limités en 720P. De plus, de nombreux problèmes Vsync apparaissent, qui rendent l’image atroce, genre une zone qui apparaît au milieu des scènes rapides et traumatise l’expérience vidéo de la chaîne VDO au point que n’importe quel cinéphile jurera que l’on ne l’y reprendra plus…

Sans compter que voir une vidéo en 720P sur un écran 1080P natif de 24 pouces est affligeant par rapport à ce que l’œuvre pourrait délivrer dans son format natif.

Et pourtant, tous ceux qui regardent Netflix depuis l’application idoine sur leurs Smart TV utilisent généralement sans le savoir aussi Linux, et ci cela fonctionne dans ce cas, on imagine qu’il doit en être de même sur leurs ordinateurs.

Il est difficile de trouver des solutions à tous les problèmes sous Linux, tant les environnements sont différents et complexes.

D’un côté nous avons les paramètres afférents au noyau, ensuite le serveur graphique utilisé, puis l’environnement de présentation, et enfin des paramètres sur le compositeur vidéo.

Donc, je vais vous indiquer ce qui a fonctionné pour moi, et peut être cela sera t’il utilisable sur d’autres environnements. Sauvegardez votre système préalablement !

Configuration Linux

OSKubuntu 18.04 LTS
Kernel4.17 RC5
Environnement graphiqueKDE Plasma
Carte vidéoGeForce GTX 1070
RAM8192 MB
Ecran 1DELL U2415 1920 X 1200
Ecran 2Fujitsu P24W-5 ECO 1920 X 1200
Driver NvidiaPropriétaire 396.24

Détecter son matériel

Détecter le modèle de sa carte ainsi que les drivers recommandés

root@Linux-All-Series:~# ubuntu-drivers devices 
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001B81sv00001043sd00008598bc03sc00i00
vendor   : NVIDIA Corporation
model    : GP104 [GeForce GTX 1070]
driver   : nvidia-driver-390 - third-party free
driver   : nvidia-driver-396 - third-party free recommended
driver   : xserver-xorg-video-nouveau - distro free builtin

Installation des drivers Nvidia propriétaire

Ajouter le repository officel de Nvidia

sudo add-apt-repository
ppa:graphics-drivers/ppa

Update du repository et installation des drivers Nvidia

sudo apt update

sudo apt install nvidia- et presser sur <TAB> pour afficher les différentes versions disponibles

Choisissez par exemple la version de driver nvidia-396, donc

sudo apt install nvidia-396

Au redémarrage, vous devrez trouver l’utilitaire Nvidia disponible sur votre système Linux.

Paramètres matériel / Affichage et écran

Paramètres standards

Paramètres matériel / Compositeur

Vitesse d’animation : Ultra-rapide

Méthode de mise à l’échelle : Précise

Moteur de rendu : OpenGl 3.1

Prévention de déchirement VSYNC : Rafraîchissement de tout l’écran

Conserver les vignettes des fenêtres : Toujours

Avec cela, on a déjà réglé une partie du problème, mais ce n’est pas terminé.

Passer en mode super-utilisateur

sudo -s

Créer le fichier suivant :

nano /etc/profile.d/Tearing.sh file

Le contenu doit être

export KWIN_TRIPLE_BUFFER=1

Rendre le fichier exécutable

chmod +x /etc/profile.d/Tearing.sh

Redémarrer

Note : Si cela n’apporte pas d’amélioration, il est possible de remplacer le contenu du fichier par une autre commande, à essayer donc :

export __GL_YIELD="USLEEP"

Naviguateur Chrome

Comme indiqué, Chrome limite la vidéo à 720P, mais cela est contournable avec une extension qui indique un useragent particulier, CrOS (On imagine bien qu’il s’agit de Chrome OS…) ainsi que quelques paramètres spécifiques.

Donc sous Chrome, installer l’extension suivante :

Netflix 1080p

Important : Ensuite, il faut entièrement vider le cache de Chrome, puis redémarrer Chrome.

Et cette fois, le contenu Netflix apparaîtra en 1080P, sans aucuns problème d’affichage ou de rafraîchissement. Aussi bien, voir mieux que dans Edge;>)

En pressant sur les touches

<SHIFT>+<CTRL>+<ALT>+<D>

On devra avoir la confirmation que nous sommes bien en 1920X1080

C’est gagné ! Plus besoin de rebooter sous Windows pour regarder Netflix.

Notez que ces paramètres corrigeront également les problèmes pouvant survenir sous d’autres plates-formes vidéos, comme YouTube par exemple.

Pour la 4K, il faudra encore attendre un peu, cela n’est possible que sous Edge, avec les processeurs Intel Génération 8 ou supérieur. Tout a un temps.

Maria PEREZ


  • -

VRG5-31412SFP-CW-AC-DR router on Bridge Mode

Category:Network,Réseaux,Routeur,Sunrise,Swisscom,WAN Tags : 

The VRG5-31412SFP-CW-AC-DR

This modem is built by Connection Technology Systems Inc. (CTS), and used in many countries, like in Switzerland with Sunrise provider.

Thanks to – Mr. Jovi Chen 產品管理部 陳思瑋, Application Engineer /PM /CTS – for all informations.

Goals

A) The device is set by default to 192.168.0.1, and the administrator username is admin with blank password.

B) The FBO Internet Access for Sunrise is using the VLAN ID 11 (Using Swisscom infrastructure), at least in the French part of Switzerland

C) You want to configure it in bridge mode to use it with another security appliance, like a Zyxel USG 210

D) For that, you need to configure the VRG5 in Bridge Mode

Step 1 – Connect everything together

1) VRG5 Port 1 connected to Zyxel

2) VRG5 WAN side(fiber port) will take VLAN 11 out to internet

3) Zyxel USG through VRG5 Port 1(bridge) and out from VRG5 WAN port also take VLAN 11 out to internet.

Step 2 – Configure the VRG5

1) Use DHCP Client, nothing else to configure on « Wan Interface »

On VLAN Settings,

1) LAN – 1 Interface set to “Bridge” / Access(PVID) = 11

2) WAN – VLAN Mode set to “Trunk” /  Trunk VLAN = 11

After setting done, you also can check VLAN State for sure.

(VLAN ID 11 / LAN 1 and WAN should be « V« )


  • -

Performance Vs. Security on Intel Plateform

Category:Sécurité,Windows Tags : 

All this is manipulations are experimentals and may not be used on production environnement. It decrease the security of your computer / server.

By disabling the security againt those threats, in can gain up to 30% of general performance.

All those commands must be run on a command line with « Admin Rights », at your own risks.

To disable mitigations for CVE-2017-5715 (Spectre Variant 2) and CVE-2017-5754 (Meltdown)

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 3 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f

Restart the computer for the changes to take effect.

To disable Variant 2: (CVE-2017-5715  « Branch Target Injection ») mitigation:

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 1 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 1 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f

Restart the computer for the changes to take effect.

To disable mitigations for CVE-2018-3639 (Speculative Store Bypass) AND mitigations for CVE-2017-5715 (Spectre Variant 2)  and CVE-2017-5754 (Meltdown)

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 3 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /fRestart the computer for the changes to take effect.

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f

Restart the computer for the changes to take effect.

Maria Perez, April 2019


  • -

Secure SSH with Google Authenticator Two-Factor Authentication on CentOS 7

Category:Linux,Sécurité Tags : 

SSH access is always critical and you might want to find ways to improve the security of your SSH access.

In this article we will see how we can secure SSH with simple two factor authentication by using Google Authenticator. Before using it you have to integrate the SSH daemon on your server with Google Authenticator one time password protocol TOTP and another restriction is that you must have your android phone with you all the time or at least the time you want SSH access

First of all we will install the open source Google Authenticator PAM module by executing the following command on the shell.

yum install google-authenticator

The next step is to get the verification code. It’s a very simple command to get the verification code and scratch codes by just answering simple questions of server which he will ask you.

google-authenticator
Do you want authentication tokens to be time-based (y/n) y

You will get an output like the following screenshot which is being displayed to help you step by step as this step is very important and crucial.

Write down the emergency scratch codes somewhere safe, they can only be used one time each, and they’re intended for use if you lose your phone.

Do you want me to update your "/root/.google_authenticator" file? (y/n)y
Do you want
to disallow multiple uses of the same authentication token? This restricts you
to one login about every 30s, but it increases your chances to notice or even
prevent man-in-the-middle attacks (y/n) y
By default, a new token is generated every 30 seconds by the mobile app. In order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. This allows for a time skew of up to 30 seconds between authentication server and client. If you experience problems with poor time synchronization, you can increase the window from its default size of 3 permitted codes (one previous code, the current code, the next code) to 17 permitted codes (the 8 previous codes, the current code, and the 8 next codes). This will permit for a time skew of up to 4 minutes between client and server.
Do you want to do so? (y/n) y
If the
computer that you are logging into isn't hardened against brute-force login
attempts, you can enable rate-limiting for the authentication module. By
default, this limits attackers to no more than 3 login attempts every 30s. Do you want
to enable rate-limiting? (y/n) y

Now download Google authenticator application – or much better Authy – on your Mobile phone, the app exists for Android and Iphone. Well I have Android so I will download it from Google Play Store where I searched it out just by typing « google authenticator » or « Authy ». « Authy » is able to backup your accounts in their Cloud in case you loose your phone…

Scan the code above with your authenticator. The Account Name should be named like root@www.ordi.ch

The next step is to change some files which we will start by first changing /etc/pam.d/sshd.

nano /etc/pam.d/sshd

Add the following line to the bottom of line:

auth required pam_google_authenticator.so 

–> Save the file

Change the next file which is /etc/ssh/sshd_config.

nano /etc/ssh/sshd_config

Add the following line in the file and if its already placed then change the parameter to « yes »:

ChallengeResponseAuthentication yes 

–> Save the file

Now restart the service of ssh by the following command:

service sshd restart

Last step is to test the service by connecting with SSH to the server to see if it will require verification code. You can see the following screenshot which shows the verification code that keeps on changing time after time and you have to login with it: