Affichage des articles dont le libellé est adminsys. Afficher tous les articles
Affichage des articles dont le libellé est adminsys. Afficher tous les articles

27 mars 2024

Différences majeures entre Red Hat 6, 7, 8 et 9

Quelles sont les différences majeures entre RHEL 6, 7, 8 et 9 ?

Système de fichiers

  • RHEL 6: Par défaut : ext4. Autres : ext2, ext3 supportés ; XFS en aperçu technologique.
  • RHEL 7: Par défaut : XFS, supportant jusqu'à 500 To. Déprécié : Btrfs en aperçu technologique.
  • RHEL 8: Support continu de XFS.
  • RHEL 9: Améliorations attendues sur Stratis, avec possibilité d'en faire la solution principale de gestion des volumes.

Réseau

  • RHEL 6: Scripts : Gérés dans /etc/sysconfig/network-scripts/.
  • RHEL 7: NetworkManager devient l'outil dominant.
  • RHEL 8: Les scripts hérités sont dépréciés.
  • RHEL 9: Prévu pour se concentrer sur les interfaces réseau cloud et virtuelles, en s'intégrant davantage à NetworkManager.

Noyau

  • RHEL 6: Noyau 2.6.32.
  • RHEL 7: Noyau 3.10.
  • RHEL 8: Noyau 4.18.
  • RHEL 9: Noyau 5.14.

Autres différences notables

  • RHEL 7: Introduction de Systemd comme init.
  • RHEL 8: Ajout de conteneurs Buildah et Podman.
  • RHEL 9: Prise en charge native de Wayland, suppression de Python 2.

Fin de vie

  • RHEL 6: Fin de vie le 30 novembre 2024.
  • RHEL 7: Fin de vie le 30 juin 2024.
  • RHEL 8: Fin de vie le 31 mai 2029.
  • RHEL 9: Fin de vie le 31 mai 2032.

20 avr. 2023

[Network]change route

In RHEL 

add new route

ip route add 10.2.0.0/16 via 172.27.25.1

delete existing route

route del -net 10.2.38.0 gw 172.27.25.1 netmask 255.255.255.0 dev eth1

display route:

route


To ensure it is ok after reboot :

modify /etc/sysconfig/network-scripts/route-eth1

then

nmcli con reload && nmcli networking off && nmcli networking on

2 déc. 2020

[ANSIBLE] ça marche sur la machine mais pas sur ansible !


 Il m'est arrivé récemment, alors que je lançais un script via ansible (je sais c'est mal) un problème.

Quand je lançais le script sur la machine  en mode :

# ./installation.sh

il se trouve que le script se lançait correctement et envoyait à la fin un code retour 0

# echo $?
0

Cependant quand je lançais un role ansible avec le paramètre:

#- name: Lancement du script d'installation (shell)
#  shell: ./installation.sh
#  args:
#    chdir: "/tmp/install"


Le script plantait au niveau ansible.


J'ai alors créé un script chapeau (templates j2)

#!/bin/bash

su -
cd /tmp/install/
./installation.sh

qui était déposé et ensuite

namecopie du script de lancement (launch_installer.sh)
  template:
    srclaunch_installer.sh.j2
    dest/tmp/launch_installer.sh
    ownerroot
    grouproot
    mode'0777'

name"Lancement du script d'installation (shell module)"
  shell/tmp/launch_installer.sh


Cela fonctionne même si c'est pas forcément le plus propre

[ANSIBLE] comment créer un fichier (touch)

 

 

 

 

 Aujourd'hui on va voir comment créer un fichier en mode "touch" avec Ansible.

Nous allons ici utiliser le Module "file" avec comme state : "touch"

 

- hosts: all
  tasks:
  - name: Ansible create file if it doesn't exist example
    file:
      path: "/mnt/shared/astunix_directory/test_file.txt"
      state: touch

Cela permet de créer un fichier de test pour par exemple checker si un point de montage est accessible en Lecture / écriture (read/write).
 
👍 

7 déc. 2018

[Docker] Installer ELK via Docker

Installer la suite Elasticsearch Logstash Kibana n'est pas une mince affaire surtout si c'est juste pour découvrir et se faire la main. Docker peut être bien pour cela, et en prod aussi (mais ça c'est une autre histoire)

Ma configuration :

  • Machine : VM VirtualBox (5.2.22) https://www.virtualbox.org/wiki/Downloads
  • OS utilisé : Debian 9 (stretch) - Linux elasticsearch 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux
  • Docker version 18.09.0, build 4d60db4
  • curl installé sur la machine (yum install curl -y ou apt-get install curl -y)

Pré-requis (liens utiles)

Installation docker: https://docs.docker.com/install/
Installer Docker Compose : https://docs.docker.com/compose/install/

Nous allons utiliser cette configuration : https://github.com/deviantony/docker-elk

Procédure

Télécharger la dernière version :
$ wget https://github.com/deviantony/docker-elk/archive/master.zip
Décompresser l'archive et entrer dans le répertoire :
$ unzip master.zip
$ cd docker-elk-master/
Lancer la commande docker-compose up :
$ docker-compose up

Tester

maintenant vous pouvez maintenant tester l'accès à elasticsearch :
$ curl localhost:9200 #### ou curl http://:9200 depuis un autre host
{
  "name" : "OMP0ap4",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "TFSNW5vfRQqOVcJXIGR7HA",
  "version" : {
    "number" : "6.4.2",
    "build_flavor" : "oss",
    "build_type" : "tar",
    "build_hash" : "04711c2",
    "build_date" : "2018-09-26T13:34:09.098244Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}
Tester kibana :
$ curl localhost:5601 #### ou curl http://:5601 depuis un autre host
$ curl localhost:5601
 

12 janv. 2018

[SYSADMIN/Linux] Alternative à "tail -F" avec "less"

Une alternative simple à "tail -F" est d'utiliser less

et même plus qu'une alternative, permet de naviguer dans le fichier sans sortir pour faire un more ou un less

la manière de procéder :
less xxxx.log
taper ensuite :
SHIFT+F
Laisser défiler

Pour arrêter de défiler :
CTRL+C 

24 nov. 2017

[Windows] logiciels pour se faciliter la vie

Cet article est en quelque sorte une suite de l'article suivant :

Mais plus personnel.

Le monde du travail est assez contraignant en matière de d'outils et nous contraint souvent à travailler avec des solutions logicielles non voulues et notamment de l'OS.
C'est le cas de l'OS.
J'ai commencé à travailler sur Windows 2000 puis Windows XP et maintenant Windows 7 et bientôt Windows 10.

Ce que j'ai constaté c'est que l'offre logicielles a bien évoluée avec un changement de stratégie de Microsoft qui est passé d'un point de vu très hostile à Linux à maintenant une interopérabilité.
Je préférerais bien évidemment travailler sur Linux mais cela deviendrait extrèmement compliqué, m'obligerais à installer une VM Windows non standard (avec l'entreprise) et ne pas pouvoir bénéficier du VPN par exemple.

En travaillant sous Windows voici une liste de logiciel que j'utilise pour me faciliter la vie :

Un éditeur : Notepad++

J'utilise Notepad++ qui me permet de formater de fichier, les analyser, les comparer, faire des petits scripts, etc.
Notamment car il y a une offre assez intéressante de Plugins permettant comme Compare (diff) , JSON viewer, XML tools, AutoSave2, etc.


Une IDE : Visual Studio Code

Pour le code plus sérieux, j'utilise l'IDE Visual Studio Code comme j'ai pu l'expliquer ici : http://astunix.blogspot.fr/2017/11/code-ide-pour-devops-sysadmin.html
J'utilisais surtout Notepad++ mais cela devenait un peu lourd par exemple pour pousser les changements directement dans le git.
Visual Studio Code a vraiment une plus valus et j'était un peu réticent au début du fait que ce soit Microsoft.
Un panel de Plugins est disponible.

Une bonne surprise.



Un SHELL + un client SSH : MobaXterm

Avant j'utilisais principalement Putty et Cygwin
MobaXterm a permis d'allier à la fois le Shell et le client SSH avec en plus un apt-get qui fonctionne pour installer des outils. Il y a un client SFTP intégrer qui permet de bouger facilement des fichiers entre mon poste local et mes machines distantes.

Même si la version gratuite est agréable à utiliser, la version payante permet de se faciliter la vie en enregistrant plein de hosts par exemple.


Pour faire des Requêtes HTTP : Postman

Ayant besoin de faire régulièrement des requêtes HTTP, j'utilise Postman qui est vraiment un plus car on peut enregistrer les requêtes


Gestion de sources : TortoiseGit

TortoiseGit marche plutôt bien et s'intègre à mon environnement


Virtualisation : VirtualBox

N'ayant pas trop besoin de VMs sur mon poste de travail car ayant à disposition un serveur ESXi et une offre cloud. J'utilise néanmoins VirtualBox pour tester des OS, etc. 


22 nov. 2017

[ANSIBLE] commande à distance

Comment lancer une commande à distance sur différents noeuds ?

Par exemple si l'on veut redémarrer plusieurs noeuds, cela peut être embêtant de taper plusieurs fois la même commande.

$ ansible all -m shell -a "sudo systemctl restart pm2" -i environment/env1/env1 --become

Plus d'informations ici : http://www.mydailytutorials.com/running-ad-hoc-command-ansible-tutorial/

27 sept. 2016

pm2 - quelques astuces

Installer pm2

online
npm install -g pm2

offline
aller sur https://github.com/Unitech/PM2/releases et télécharger la dernière version en tar.gz (ex: https://github.com/Unitech/pm2/archive/2.0.15.tar.gz)

$ sudo npm install 2.0.15.tar.gz

Configurer pm2 pour le lancer au démarrage :
Paramétrer pm2 (ici sur centos 7 avec systemd)
# Auto-detect platform
$ pm2 startup
# OR
# Render startup-script for a specific platform, the [platform] could be one of:
#   ubuntu|centos|redhat|gentoo|systemd|darwin|amazon
$ pm2 startup [platform] -

pm2 startup systemd

Générer le fichier systemd
$ sudo su -c "env PATH=$PATH:/usr/bin pm2 startup systemd -u stan --hp /home/stan"
ensuite il faut lancer la commande :
$ pm2 start process.json
puis ensuite enregistrer le process  :
$ pm2 save
et au redémarrage c'est bon. Après il suffit de gérer le service comme il suit :

sudo systemctl status pm2-init.service

commandes pm2

Liste processus

$ pm2 list
┌──────────┬────┬──────┬──────┬────────┬─────────┬────────┬─────────────┬──────────┐
│ App name │ id │ mode │ pid  │ status │ restart │ uptime │ memory      │ watching │
├──────────┼────┼──────┼──────┼────────┼─────────┼────────┼─────────────┼──────────┤
│ index    │ 0  │ fork │ 1314 │ online │ 0       │ 5h     │ 34.801 MB   │ disabled │
└──────────┴────┴──────┴──────┴────────┴─────────┴────────┴─────────────┴──────────┘
 Use `pm2 show ` to get more details about an app

 Plus de détails sur le processus:

$ pm2 show 0

Plus d'informations sur PM2 : http://pm2.keymetrics.io/docs/usage/startup/

11 mars 2016

Sécurité informatique : 10 bonnes résolutions pour une année 2016 sereine !

Article destiné à tout un chacun et qui mériterait d'être lu. La sécurité informatique est l'affaire de tous, du particulier à la PME jusqu'au grand Groupe en passant par les associations et coopératives.

Des gestes simples peuvent être mis en place pour éviter des catastrophes dont on peut difficilement se relever.

Source : http://www.itrnews.com/articles-top10-jour/161628/securite-informatique-10-bonnes-resolutions-annee-2016-sereine.html


Alors que 2015 s’est achevée sur un arrière goût de cyber-attaque (piratages des réseaux PSN de
Sony et Xbox Live de Microsoft par le groupe Lizard Squad à Noël pour ne citer qu’eux), Wooxo, expert français de la sauvegarde et de l’exploitation sécurisées de données informatiques professionnelles, s’adresse aux TPE et PME pour leur proposer quelques bonnes pratiques en matière de sécurité informatique pour bien débuter l'année.

S’initier aux fondements de la sécurité informatique


La sécurité informatique s’appréhende sous trois aspects élémentaires et complémentaires : la prévention, la détection et la réaction. Elle vise généralement cinq principaux objectifs.
- L’intégrité : garantir que les données sont bien celles que l’on croit être.
- La disponibilité : maintenir le bon fonctionnement du système d’information.
- La confidentialité : rendre l’information inintelligible à d’autres personnes que les seuls acteurs de la transaction.
- La non répudiation : garantir qu’une transaction ne peut être niée.
- L’authentification : assurer que seules les personnes autorisées ont accès aux ressources.

Sécuriser l’accès physiques aux locaux de la société


La première des règles de vigilance est bien sûr la bonne sécurisation des locaux, et plus particulièrement la protection des espaces dits sensibles comme les salles d’hébergement des serveurs informatiques. Il faut conditionner leurs accès à des habilitations, clés, digicodes, badges nominatifs, etc.

Sécuriser les transferts de fichiers


Chaque jour les collaborateurs échangent et transfèrent des dizaines de fichiers à des tiers. Il faut alors s’assurer de sécuriser ces échanges par des mots de passe temporaires et de conserver le détail et l’historique de ces transferts (date de l’envoi, fichier mis à disposition, expéditeur et destinataire).

Formaliser une politique de sécurité du système d’information


L’évaluation de l’impact sur la sécurité informatique est un préalable à tout projet lié au système d’information. Il faut recenser les règles relatives à la sécurité informatique dans un document écrit et accessible à tous les collaborateurs. Il évoluera au rythme des modifications apportées au système d’information. Ce document dresse l’inventaire des vulnérabilités de l’exploitation informatique de la société, des menaces potentielles, des outils de monitoring (surveillance) ou contrôles mis en place pour détecter les menaces éventuelles.

Sauvegarder les données informatiques


Savoir-faire, procédures, fichiers clients, comptabilité, emails, les données informatiques constituent le patrimoine informationnel. Il s’agit de la richesse de l’entreprise, peut-être même son principal avantage concurrentiel, d’où la nécessité de les mettre en sécurité !
Différents systèmes de sauvegarde existent (cloud privé avec sauvegarde sur le site de l’entreprise, cloud public en data-center, cloud hybride), il faut alors choisir le plus adapté aux profils et besoins de sa société.

Anticiper les risques informatiques


Pour pouvoir relancer son activité dans les meilleurs délais suite à un incident, il est important de rédiger une procédure d’urgence explicative du fonctionnement des serveurs. Les données sauvegardées doivent être stockées sur les disques durs de serveurs dédiés, eux-mêmes sauvegardés régulièrement. Il est impératif également de stocker les supports de sauvegarde dans des serveurs conçus pour résister aux
catastrophes naturelles ou sinistres majeurs, ou de les stocker dans locaux distincts et fortement protégés. Si le parc informatique est renouvelé, les machines en fin de vie doivent être physiquement détruites ou débarrassées de leur disque dur. Les périphériques de stockages amovibles doivent aussi être formatés avant réparation, recyclage ou changement d’utilisateur.

Sécuriser les postes de travail sédentaires et nomades


Pour prévenir toute utilisation frauduleuse, les ordinateurs de chaque collaborateur de l’entreprise doivent être paramétrés afin qu’ils se verrouillent automatiquement en cas d’absence ou d’inactivité prolongée. Sur les postes contenant des données critiques, un système de contrôles des ports USB doit être installé en complément.

Mettre en place un processus de création et de suppression des comptes utilisateurs


Sur tous les postes de travail de l’entreprise, il faut créer des comptes utilisateurs nominatifs afin de pouvoir tracer les actions des usagers et ainsi les responsabiliser.

Protéger les réseaux : local et sans fil


Aujourd’hui de plus en plus de malwares peuvent potentiellement nuire au système d’information : virus, chevaux de troie, keyloggers, spywares et autres vers. Des dispositifs de sécurité existent pour aider à limiter la vulnérabilité face aux attaques extérieures : routeurs filtrants, pare-feux, etc. Il faut veiller tout particulièrement à la protection des messageries électroniques, réseaux sans fils et accès distants.

Effectuer régulièrement des tests de restauration des fichiers des serveurs et ordinateurs


Tester régulièrement (au moins une fois par an) la capacité de restauration de ses données pour s’assurer d’une reprise d’activité rapide après un incident. Il faut s’assurer également de sauvegarder les images système des serveurs et PC. Seule la sauvegarde de l’environnement (Mac, Windows, Linux, etc.) permettra de remonter les applications, logiciels métier et datas.



3 mars 2016

[Sécurité] DROWN, la vulnérabilité dans le protocole SSLv2

Affecte près d'un serveur HTTPS sur trois

Le 3 mars 2016, par Stéphane le calme, Chroniqueur Actualités
Des chercheurs en sécurité ont découvert une faille dans le protocole SSLv2, protocole qui a, soit dit en passant, fêté ses 21 ans d'existence le mois passé et a été officiellement abandonné par l'ITEF en 2011. La faille répertoriée comme étant CVE-2016-0800 a été baptisée DROWN (pour Decrypting RSA using Obsolete and Weakened eNcryption).

Sur un site dédié, les chercheurs expliquent que DROWN est une vulnérabilité sérieuse qui affecte le HTTPS et d'autres services qui reposent sur SSL et TLS, quelques-uns des protocoles de chiffrement utilisés sur internet. «  Ces protocoles permettent à tout le monde de naviguer sur le web, d'utiliser des courriels, de faire des achats en ligne et d'envoyer des messages instantanés sans que des parties tierces ne soient en mesure de lire les communications », ont rappelé les chercheurs.

C'est ici que DROWN intervient dans la mesure où la faille permet aux attaquants de déchiffrer les communications et de lire, voire subtiliser des données sensibles de communication parmi lesquelles les mots de passe, les numéros de carte de crédit, les échanges secrets ou même les données bancaires. Selon les calculs des chercheurs, près d'un serveur HTTPS sur trois serait vulnérable à ce type d'attaque (25 % parmi le million de domaines les plus populaires se servant de HTTPS, 22 % parmi les sites de confiance de tous les navigateurs se servant de HTTPS et 33 % parmi les sites HTTPS).

D'où provient le problème ? Malheureusement d'une mauvaise configuration des serveurs web affectés : « les clients et serveurs modernes utilisent le protocole de chiffrement TLS. Malheureusement, suite à des erreurs de configuration, de nombreux serveurs supportent également SSLv2, un prédécesseur de TLS daté des années 90 ».

Nombreux sont les clients qui se connectent aux serveurs web et qui ne supportent pas SSLv2. D'ailleurs, les transactions sont généralement faites en se servant d'un protocole de chiffrement plus récent. C'est pourquoi les chercheurs précisent que « ce support n'était pas dérangeant dans la pratique, étant donné qu'aucun client mis à jour ne se sert de SSLv2. Aussi, bien que SSLv2 soit connu pour son insécurité, prévoir simplement un support pour SSLv2 n'a pas été considéré comme un problème étant donné que les clients ne s'en servaient pas ».

Cependant, la simple présence du support de SSLv2 s'avère être une menace pour les serveurs modernes et les clients : « elle permet aux attaquants de déchiffrer les connexions modernes TLS entre les clients et serveurs mis à jour en envoyant des sondes à un serveur qui prend en charge SSLv2 et en se servant de la même clé privée ».

Les chercheurs expliquent être parvenus à mettre en place une attaque de ce type à l’aide d’une infrastructure basée sur Amazon EC2 et pour un coût total de 440 dollars et environ 8 heures d’analyse des échanges : « environ 40 000 connexions de la sonde et 2^50 opérations sont nécessaires pour déchiffrer une connexion TLS de la victime sur 900 ». Selon eux, l’attaque peut être considérablement simplifiée dès lors qu'elle est combinée à une autre faille découverte dans OpenSSL et colmatée l'année dernière. Aussi, si le serveur utilise une version d'OpenSSL plus ancienne que les 1.0.2a, 1.0.1m, 1.0.0r ou 0.9.8zf, alors l'attaque prendra « moins d'une minute à l'aide d'un seul PC ».

Comment savoir si un serveur est vulnérable à DROWN ? L'une des conditions ci-dessous est suffisante pour que ce soit le cas :

    le serveur autorise les connexions SSLv2 : ce cas de figure est plutôt récurrent, à cause d'une mauvaise configuration et des paramètres par défaut inappropriés. Les chercheurs ont estimé que 17 % des serveurs HTTPS continuent d'autoriser des connexions SSLv2 ;
    la clé privée du serveur est utilisée sur n'importe quel serveur qui autorise des connexions SSL2v, même pour un protocole différent : plusieurs entreprises réutilisent le même certificat et la même clé sur leur serveur web et mail par exemple. Dans le cas d'espèce, si le serveur mail supporte SSL2v et le serveur web ne le supporte pas, un attaquant peut se servir du serveur mail pour briser le chiffrement des connexions TLS du serveur web. Les chercheurs avancent que lorsqu'ils prennent en considération les clés réutilisées, ce sont 16 % des serveurs HTTPS qui viennent s'ajouter à la liste des serveurs vulnérables, rendant donc le total à 33 % de serveurs vulnérables.

Aussi, pour corriger cette faille, il convient aux opérateurs côté serveur de s'assurer que les clés privées ne sont pas réutilisées avec un serveur qui autorise les connexions SSL2v : ceci inclut les serveurs web, les serveurs SMTP, les serveurs IMAP et POP, ou tout autre logiciel prenant en charge SSL / TLS.

Il convient également de désactiver SSLv2. Les chercheurs ont reconnu que cette tâche pouvait s'avérer un peu compliquée et relative au serveur logiciel spécifique. Raison pour laquelle ils ont donné quelques instructions pour des produits populaires comme OpenSSL, Microsoft IIS (Windows Server), Network Security Service (NSS).

Source : https://drownattack.com/
Source : http://www.developpez.com/actu/96623/DROWN-la-vulnerabilite-dans-le-protocole-SSLv2-affecte-pres-d-un-serveur-HTTPS-sur-trois/

25 févr. 2016

[SysAdmin] 10 logiciels windows très pratiques

Voici une liste de logiciels gratuits pratiques sous Windows, qui peuvent être pratique à l'sysadmin ou autre admin réseau, developpeur ou bidouilleur!

1. MobaXterm (émulateur Linux)

MobaXterm est un émulateur de terminal Linux pour Windows. Celui-ci vous offre la possibilité de vous connecter à distance au serveur du Département par la commande ssh. Un serveur X est intégré au logiciel, donc vous pouvez l'utiliser pour démarrer des logiciels employant l'interface graphique.
Comme pour le logiciel PuTTY, vous devrez, une fois connecté au réseau, entrer des commandes UNIX dans un terminal pendant votre session de travail. Si vous ne croyez pas être suffisamment habile avec ce mode de fonctionnement, consultez la page Commandes élémentaires pour apprendre quelques commandes utiles. 
Source : https://dms.umontreal.ca/wiki/index.php/MobaXterm
URL de téléchargement : http://mobaxterm.mobatek.net/download-home-edition.html

C'est une bonne alternative à PuTTY car nous pouvons nous connecter à plusieurs hôtes distant et passer de l'un à l'autre grace à un systeme d'ongle. Cela évite aussi d'avoir des logiciels annexes commes Xming, l'échange de clé, etc. c'est un logiciel tout en un.
Une version payante existe avec plus de fonctionnalité mais je me sert bien de la version de base.

2. WinSCP (transfert de fichier entre linux et windows)

WinSCP est un client SFTP graphique pour Windows. Il utilise SSH et est open source. Le protocole SCP est également supporté. Le but de ce programme est de permettre la copie sécurisée de fichiers entre un ordinateur local et un ordinateur distant.

Voici l’introduction pour les utilisateurs Français. La quasi-totalité de la documentation de WinSCP est en Anglais et les liens présents sur cette page mènent à cette documentation anglaise.
Source: https://winscp.net/eng/docs/lang:fr
URL de téléchargement : https://winscp.net/eng/download.php

3. Notepad++ (éditeur de texte)

Editeur de texte pra
Notepad++ est un éditeur de texte générique codé en C++, qui intègre la coloration syntaxique de code source pour les langages et fichiers C, C++, Java, C#, XML, HTML, PHP, JavaScript, makefile, art ASCII, doxygen, .bat, MS fichier ini, ASP, Visual Basic/VBScript, SQL, Objective-C, CSS, Pascal, Perl, Python, R, MATLAB, Lua, TCL, Assembleur, Ruby, Lisp, Scheme, Properties, Diff, Smalltalk, PostScript et VHDL ainsi que pour tout autre langage informatique, car ce logiciel propose la possibilité de créer ses propres colorations syntaxiques pour un langage quelconque.

Ce logiciel, basé sur la composante Scintilla, a pour but de fournir un éditeur léger (aussi bien au niveau de la taille du code compilé que des ressources occupées durant l’exécution) et efficace. Il est également une alternative au bloc-notes de Windows (d’où le nom). Le projet est sous licence GPL.

Il ne bloque pas le fichier en cours d'édition et détecte toute modification apportée à celui-ci par un autre programme (il propose de le recharger).

Source : https://fr.wikipedia.org/wiki/Notepad%2B%2B
URL de téléchargement : https://notepad-plus-plus.org/download/all-versions.html


4. Google Chrome (navigateur)


Chrome est un navigateur web propriétaire développé par Google basé sur le projet libre Chromium fonctionnant sous Windows, Mac, Linux, Android et iOS. Google Chrome est identique à Chromium hormis un logo différent et quelques fonctionnalités en moins ou en développement3.

Il est annoncé le 1er septembre 2008 dans une bande dessinée de Scott McCloud4, la veille de la sortie de la première version beta. La première version stable est quant à elle dévoilée le 11 décembre 2008. Selon l'institut StatCounter, Google Chrome devient en juin 2012 le navigateur le plus utilisé dans le monde, avec environ un tiers des utilisateurs.
Source: https://fr.wikipedia.org/wiki/Google_Chrome

Pourquoi je le conseille? bien pour analyser du code et faire des tests de requête, tapez sur !

5. KeePass (gestionnaire de mot de passe)

KeePass est un gestionnaire de mots de passe publié sous GPL v2 ou ultérieure, qui sauvegarde les mots de passe dans un fichier chiffré appelé « base de données ». Cette base est accessible avec le mot de passe principal. Il peut être accompagné d'une clé sous la forme d'un fichier (dont le suffixe est .key) pour renforcer la sécurité d'accès au fichier chiffré.

KeePass existe sous deux versions différentes. La première utilise deux algorithmes de chiffrement : AES (avec des blocs de 128 bits et une clé de 256 bits) et Twofish (avec des blocs de 128 bits et une clé de 256 bits). La deuxième n'utilise qu'AES (avec des blocs de 128 bits et une clé de 256 bits).

KeePass s'installe sous Windows, et avec mono sous Mac OS, Linux, FreeBSD et autres systèmes d'exploitation. La deuxième version du logiciel ajoute premièrement la possibilité de lier un utilisateur Windows à une base de données (avec toujours la saisie du mot de passe principal et éventuellement l'ajout d'une clé sous forme de fichier) et deuxièmement d'incorporer des pièces jointes dans les entrées.
Source : https://fr.wikipedia.org/wiki/KeePass
URL de téléchargement : http://keepass.info/download.html

6. WireShark (ex-Ethereal : analyseur réseau)

Wireshark est un analyseur de paquets libre utilisé dans le dépannage et l'analyse de réseaux informatiques, le développement de protocoles, l'éducation et la rétro-ingénierie. Son appellation d'origine (Ethereal) est modifiée en mai 2006 pour des questions relatives au droit des marques.

Wireshark utilise la bibliothèque logicielle GTK+ pour l'implémentation de son interface utilisateur et pcap pour la capture des paquets ; il fonctionne sur de nombreux environnements compatibles UNIX comme GNU/Linux, FreeBSD, NetBSD, OpenBSD ou Mac OSX, mais également sur Microsoft Windows.
Source: https://fr.wikipedia.org/wiki/Wireshark
URL de téléchargement : https://www.wireshark.org/download.html

7. 7-zip (archiveur)

7-Zip est un logiciel de compression de données et d’archivage de fichiers fonctionnant sous Windows développé par le Russe Igor Pavlov. Il peut également être utilisé avec d’autres systèmes d’exploitation (GNU/Linux…) grâce, par exemple, au projet Wine ou au portage de sa version console sous GNU/Linux, nommé p7zip.

C’est un logiciel libre distribué sous licence LGPL, le code LZMA est dans le domaine public, le code AES est sous licence BSD et le code unRAR est sous licence mixte (LGPL + des restrictions unRAR).
Source: https://fr.wikipedia.org/wiki/7-Zip
URL de téléchargement : http://www.7-zip.org/

8. PSPad (éditeur de texte)

Autre éditeur de texte pour ouvrir des gros fichiers
PSPad editor est un freeware permettant d'éditer du texte et du code sous Windows.
La première version date de 2001, ce logiciel est produit par un seul développeur tchèque Jan Fiala.
PSPad a été conçu pour être une interface graphique permettant d'éditer plusieurs langages dont PHP, Perl, HTML, et Java. Il intègre l'usage de projets pour traiter et sauver de multiples fichiers. Les autres fonctionnalités sont le complètement, l'interface à onglets, le client FTP et la recherche/remplacement avec des expressions rationnelles.
L'interface de PSPad est basée sur le MDI avec onglets pour éditer plusieurs fichiers et une meilleure manipulation des documents ouverts.
Ce logiciel peut être rendu intégralement portable après installation sur un ordinateur.
Source: https://fr.wikipedia.org/wiki/PSPad
URL de téléchargement: http://www.pspad.com/fr/download.php

9. Dropbox (Cloud)

Dropbox est un service de stockage et de partage de copies de fichiers locaux en ligne proposé par Dropbox, Inc., entreprise localisée à San Francisco, en Californie.

Dropbox fournit des logiciels client pour Microsoft Windows, Mac OS X, GNU/Linux, Android, iOS, BlackBerry OS,Windows Phone ainsi qu'une interface web. Il existe des portages non officiels pour Symbian et MeeGo.
Source: https://fr.wikipedia.org/wiki/Dropbox
URL de téléchargement: https://www.dropbox.com/downloading?src=index

10. PDFCreator (Imprimer dans un Pdf)

PDFCreator est un logiciel libre allemand, sous licence GNU GPL (mais contient un publiciel sous licence propriétaire de Spigot, Inc.) permettant de convertir des fichiers imprimables en fichiers PDF pour les applications Windows utilisant une imprimante virtuelle.
Source: https://fr.wikipedia.org/wiki/PDFCreator
URL de téléchargement: http://www.pdfforge.org/


19 févr. 2016

[RHEL/CENTOS 7] Installer NGINX avec PHP et MySQL

Nginx [engine x] est un logiciel libre de serveur Web (ou HTTP) ainsi qu'un proxy inverse écrit par Igor Sysoev, dont le développement a débuté en 2002 pour les besoins d'un site russe à très fort trafic (Rambler). Une partie de la documentation a été traduite du russe vers l'anglais.

Ses sources sont disponibles sous une licence de type BSD.
Source : https://fr.wikipedia.org/wiki/Nginx

Nous allons ici installer NGINX avec PHP et MySQL (mariadb) sur une CentOS 7.

J'ai suivi la procédure suivante :  https://www.howtoforge.com/how-to-install-nginx-with-php-and-mysql-lemp-stack-on-centos-7
Cet article est une traduction partielle, où certains détails tel que mon environnement et mes besoins diffère de l'originale.

1 - Note préliminaires 

J'utilise une machine de test avec le hostname lemp et l'adresse IP 10.250.0.134 qui différera surement par rapport à chez vous.
Remplacez-les donc par vos paramètres propres quand cela sera nécessaire.

2 - Ajouter un dépôt additionnel

Nginx n'est pas disponible dans les dépôts de CentOS, éditez donc le fichier /etc/yum.repos.d/nginx.repo

[root@lemp ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name = nginx repo
baseurl = http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck = 0
enabled = 1
3 - Installer MySQL (ou plutôt MariaDB)

Nous allons installer MariaDB un fork de MySQL avec la commande suivante:
[root@lemp ~]# yum install mariadb mariadb-server net-tools
On active ensuite le service "mariadb.service" et on le démarre:
[root@lemp ~]# systemctl enable mariadb.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@lemp ~]# systemctl start mariadb.service
[root@lemp ~]#
Nous pouvons maintenant vérifier si le port 10623 (mysqld) est en écoute:
[root@lemp ~]# netstat -tap | grep mysql
tcp        0      0 0.0.0.0:mysql           0.0.0.0:*               LISTEN      11051/mysqld
Dans l'exemple ci-dessus c'est bien le cas.

Ensuite il nous faut sécuriser l'accès à mariadb en indiquant un mot de passe avec la commande suivante:
[root@lemp ~]# mysql_secure_installation
/usr/bin/mysql_secure_installation: ligne379: find_mysql_client : commande introuvable

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] <= ENTRER
New password:<= nouveaumotdepasse
Re-enter new password:<= nouveaumotdepasse
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] <= ENTRER
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] <= ENTRER
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] <= ENTRER
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] <= ENTRER
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
[root@lemp ~]#





4 - Installer Nginx

Après l'étape 2 et donc l'ajout d'un dépôt additionnel pour nginx, il est possible d'installer nginx via yum:
[root@lemp ~]# yum install nginx
Activer et démarrer le service:
[root@lemp ~]# systemctl enable nginx.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
[root@lemp ~]# systemctl start nginx.service
En cas de pépin ...
 
Il y a des chances que vous ayez une erreur par rapport au port 80 qui serait déjà utilisé.
# service nginx start
Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
Cela peut indiquer qu'un autre service HTTP est lancé (par exemple apache). Dans ce cas : stopper ce service (et supprimez-le) :
systemctl stop httpd.service
yum remove httpd
systemctl disable httpd.service
et réessayez de lancer NGINX:
systemctl enable nginx.service
systemctl start nginx.service
Continuons :
Ouvrir maintenant les ports HTTP et HTTPS sur le firewall, si vous avez le firewall activer:
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
Dans certains cas, on peut aussi désactiver Firewalld et SELINUX (voir mon article correspondant : http://astunix.blogspot.fr/2016/01/rhelcentos-7-desactiver-selinux-et.html)

Tester l'accès grandeur nature


On peut maintenant tester l'accès au serveur depuis une autre machine du réseau en tapant dans le navigateur : http://10.250.0.134

5 - Installer PHP5 et APC

Installons PHP avec php-fpm (PHP-FASTCGI Process Manager) et php-cli:
[root@lemp ~]# yum install php-fpm php-cli php-mysql php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-pear php-mbstring php-xml php-xmlrpc php-mbstring php-snmp php-soap
Qu'est-ce qu'APC ?
APC is a free and open PHP opcode cacher for caching and optimizing PHP intermediate code. It's similar to other PHP opcode cachers, such as eAccelerator and Xcache. It is strongly recommended to have one of these installed to speed up your PHP page.

Installons d'abord les "Devlopment Tools":
yum install php-devel
yum groupinstall 'Development Tools'
Puis APC:
# pecl install apc
downloading APC-3.1.13.tgz ...
Starting to download APC-3.1.13.tgz (171,591 bytes)
.................done: 171,591 bytes
55 source files, building
running: phpize
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
Enable internal debugging in APC [no] : <= ENTRER
Enable per request file info about files used from the APC cache [no] : <= ENTRER
Enable spin locks (EXPERIMENTAL) [no] : <= ENTRER
Enable memory protection (EXPERIMENTAL) [no] : <= ENTRER
Enable pthread mutexes (default) [no] : <= ENTRER
Enable pthread read/write locks (EXPERIMENTAL) [yes] : <= ENTRER
building in /var/tmp/pear-build-rootVrjsuq/APC-3.1.13
......
Ensuiter, éditer /etc/php.ini
# vim /etc/php.ini
et modifier la ligne suivante
;cgi.fix_pathinfo=1
par
cgi.fix_pathinfo=0
et ajouter la ligne suivant à la fin du fichier :
extension=apc.so
De plus, pour parer à des messages d'erreurs concernant la timezone tel que :
[21-July-2014 10:07:08] PHP Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead in /usr/share/nginx/html/info.php on line 2
dans /var/log/php-fpm/www-error.log

Nous pouvons ajouter dans /etc/php.ini la ligne suivante :
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Europe/Paris"
Ensuite, nous allons activer php-frm et le démarrer:
[root@lemp ~]# systemctl enable php-fpm.service
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.
[root@lemp ~]# systemctl start php-fpm.service
Pour info, le processus de php-frm écoute sur le port 9000.

6 - Configurer Nginx

Le fichier de configuration de nginx est situé ici : /etc/nginx/nginx.conf
Editons-le:
[root@lemp ~]# vim /etc/nginx/nginx.conf
La configuration est facile à comprendre, on peut tout de même en apprendre plus aux adresses suivantes:
  • http://wiki.codemongers.com/NginxFullExample
  • http://wiki.codemongers.com/NginxFullExample2
[Optionnel] Nous allons augmenter le nombre de "worker_processes" et indiquer keepalive_timeout à un paramètre raisonnable :

[...]
events {
    worker_connections  1024;
    worker_connections  4;
}
[...]
    keepalive_timeout  65;
    keepalive_timeout  2;
[...]
Les virtual hosts sont définis dans les containers server {} dans /etc/nginx/conf.d. Nous allons ici modifié le vhost par défaut :
# vim /etc/nginx/conf.d/default.conf

[...]
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #

    location ~ \.php$ {
        root           /usr/share/nginx/html;
        try_files $uri =404;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

   
    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }

}
Pour décrire les modifications opérées ci-dessus:
  • server_name locahost; indique le nom du vhost par defaut, on peut aussi mettre un hostname specifique comme www.exemple.fr)
  • Dans "Location /" nous avons ajouter index.php à la ligne "index".
  • "root /usr/share/nginx/html;" est la localisation du répertoire racine
  • Le partie importante pour PHP est  "location ~ /\.ht {}" le fait que ce soit décommenté l'active.
  • PHP-FPM écoute sur le port 9000 sur 127.0.0.1 par défaut. Il est aussi possible de paramètrer PHP-FPM pour qu'il utilise un Socket Unix (partie 7)
Maintenant nous allons recharger nginx:
[root@lemp ~]# systemctl restart nginx.service
 Et crééons le fichier php à la racine du serveur (qui est /usr/share/nginx/html) :
[root@lemp ~]# vim /usr/share/nginx/html/info.php
phpinfo();
?>
Maintenant, nous pouvons appeler info.php dans le navigateur via l'adresse: http://10.250.0.134/html/info.php.


Comme on peut le voir, PHP5 est utilisé ici et il fonctionne avec FPM/FastCGI comme vu dans la ligne Server API. Si nous faisons défilé la page, on peut voirtout les modules qui sont déjà activés dans PHP5 incluant le module MySQL:


7 - Appliquer le socket Unix pour PHP-FRM

(OPTIONNEL)
Par défaut, nous avons pu voir que PHP-FRM écoute sur le port 9000 sur 127.0.0.1. Il est aussi possible de changer cela et faire en sorte que PHP-FRM utilise unix socket. Pour ce faire :
[root@lemp html]# vim /etc/php-fpm.d/www.conf
[...]
; Note: This value is mandatory.
;listen = 127.0.0.1:9000
listen = /var/run/php-frm/php5-frm.sock
[...]
Rédémarrer ensuite php-frm.service:
[root@lemp html]# systemctl restart php-frm.service
Ensuite, changeons la configuration de Nginx:
[root@lemp html]# vim /etc/nginx/conf.d/default.conf
[...]
fastcgi_pass   127.0.0.1:9000;
fastcgi_pass   unix:/var/run/php-fpm/php5-fpm.sock;
[...]
Et redémarrer nginx:
[root@lemp html]# systemctl restart nginx.service
8 - Liens


27 janv. 2016

[UNIX/LINUX] http_proxy avec des caractères spéciaux




Il arrive que l'on n'ai mis des caractères spéciaux dans son mot de passe pour le sécuriser au maximum.
Cependant, lorsque l'on veut faire un export http_proxy, on se retrouve avec des erreurs telles que Bad number port (Mauvais numéro de port) ou autre




Si notre mot de passe est F@o:o!B#ar$ et que l'on fait:
export http_proxy="http://user:F@ooB#ar$@proxyserver.test:8080/"
On va avoir une erreure due au caractères spéciaux...
Une solution existe! il s'agit de convertir les caractères problématiques en caractère hexadecimal.

on peut utiliser la commande urlencode pour avoir un code hexadecimal:
(sous CentOS il faut le package gridsite-clients)

Utiliser la commande "urlencode" en mettant bien le mot de passe entre guillemet:
$ urlencode "F@ooB#ar$"
F%40ooB%23ar%24
Après, il s'agit de remplacer le mot de passe par cette chaine de caractères:
& export http_proxy="http://user:F%40ooB%23ar%24@proxyserver.test:8080/"
On peut ensuite tester :
$ curl -I http://astunix.blogspot.com
$ wget http://astunix.blogspot.com

18 janv. 2016

Configuration réseau sur RHEL/CENTOS 7



Après avoir pas mal travailler sur des CentOS 5 puis CentOS 6 et un passage sur Ubuntu. Il est temps pour moi de passer à CentOS 7.

C'est cette marche irrésistible vers le progrès.

 J'ai trouvé un tuto assez sur l'excellent site server-world.info concernant la configuration du réseau, source : http://www.server-world.info/en/note?os=CentOS_7&p=initial_conf&f=3



Configuration réseaux

Vérification des interfaces réseaux:
# nmcli d
L'interface ens192 n'était pas montée...

Un petit tour dans /etc/sysconfig/network-scripts/ifcfg-ens192
Remplacer ONBOOT=no par ONBOOT=yes

Montage de l'interface :
# ifup ens192
Modification de l'adresse IP
# nmcli c modify ens192 ipv4.addresses 10.250.0.222/24

Modification de la passerelle (gateway)
# nmcli c modify ens192 ipv4.gateway 10.250.0.10
 Utiliser une IP statique "manual", pour remettre en DHCP c'est "auto":
# nmcli c modify ens192 ipv4.method manual

Redémarrer l'interface réseau:
# nmcli c down ens192; nmcli c up ens192
Connection 'ens192' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/0)
Connexion activée avec succès (chemin D-Bus actif : /org/freedesktop/NetworkManager/ActiveConnection/1)
 Un petit script permettant de configurer automatiquement le réseau:
 (centos-postinstall.sh)
#/bin/bash
#
echo "Post-install for CentOS 7"
###
# CONFIGURATION RESEAU
###
echo "[Configure your Hostname]"
read -p "Hostname ? " HOSTNAME
hostnamectl set-hostname $HOSTNAME
#echo HOSTNAME=$HOSTNAME >> /etc/sysconfig/network
#echo -e "NETWORKING=yes\nHOSTNAME=$HOSTNAME\nGATEWAY=10.250.0.10" > /etc/sysconfig/network
echo "---"
echo "[Configure your network]"
INT=`nmcli d status | grep ethernet | awk '{ print $1 }' | head -n1`
echo "Interface utilisée : $INT"
read -p "Entrer l'IP souhaitée (10.250.0.* network) " IP
echo "[IP]"
nmcli c modify $INT ipv4.addresses $IP/24
echo "[PASSERELLE]"
nmcli c modify $INT ipv4.gateway 10.250.0.10
echo "[DNS]"
nmcli c modify $INT ipv4.dns 10.250.0.10
echo "[IP STATIQUE]"
nmcli c modify $INT ipv4.method manual
echo "[ONBOOT YES]"
sed -i "/ONBOOT/ d" /etc/sysconfig/network-scripts/ifcfg-$INT
echo "ONBOOT=\"yes\"" >> /etc/sysconfig/network-scripts/ifcfg-$INT
echo "[REDEMARRAGE DE $INT]"
nmcli c down $INT; nmcli c up $INT
echo "[DETAILS DE $INT]"
nmcli d show $INT
###
# PROXY YUM
###
echo "[Configuration de yum.conf]"
echo -e "proxy=http://10.49.64.5:8080" >> /etc/yum.conf
sleep 5
reboot

5 janv. 2016

Télécharger un RPM sans l'installer



Depuis le dépôt yum


utiliser la commande yumdownloader, exemple :

$ yumdownloader libselinux-python
Modules complémentaires chargés : fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.mirrors.ovh.net
 * epel: epel.besthosting.ua
 * extras: centos.mirrors.ovh.net
 * updates: centos.crazyfrogs.org
libselinux-python-2.0.94-5.8.el6.x86_64.rpm
assez pratique pour juste télécharger un rpm sans l'installer.

Sinon pour rechercher des RPM sur Internet:

http://pkgs.org/
http://rpm.pbone.net/
https://rpmfind.net/linux/rpm2html/search.php
http://www.rpmseek.com/

16 déc. 2015

Bookmarks - useful websites

Useful websites for Sysadmin, Network administrator, IT Architects, developpers


http://www.kloth.net/services/
lot of services like: NSLOOKUP, DIG, WHOIS, TRACEROUTE
Useful when you're behind a Proxy.

http://meyerweb.com/eric/tools/dencoder/
Sometime you have "%20 %" when you copy some URL on the internet. You can decode that on this website.

http://pkgs.org/
Linux Packages Search: search engine to find packages on a large panel of Linux Distribution. Very useful for your dependencies!

http://www.cyberciti.biz/
Very good blog with tips for Linux systems.

More links are coming soon...

9 déc. 2015

Commande NETSTAT : utilisations pratiques

J'ai compilé ici des articles ayant un intérêt sur la commande netstat. Tout en réalisant les tests des commandes sur ma propre machine de test. Vous trouverez les sources.


Commande netstat utilisation basique

source http://openmaniak.com/fr/netstat.php

Netstat (NETwork STATistics) est un outil de ligne de commande qui fournit des informations sur votre configuration réseau ainsi que son activité.

Afficher la table de routage

#netstat -rn
-r: Tables de routage du noyau Linux.
-n: Affichage des adresses numériques à la place des noms d'hôtes.

root@VM-UBUNTU-01:~# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.250.0.10     0.0.0.0         UG        0 0          0 eth0
10.250.0.0      0.0.0.0         255.255.255.0   U         0 0          0 eth0
Afficher les statistiques rapides des interfaces

#netstat -i
-i: Interface

root@VM-UBUNTU-01:~# netstat -i
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500 0   5631321      0    143 0       2403793      0      0      0 BMRU
lo        65536 0      7752      0      0 0          7752      0      0      0 LRU
 Afficher les statistiques complètes des interfaces

#netstat -ie
-i: Interface
-e: Information étendue

root@VM-UBUNTU-01:~# netstat -ie
Kernel Interface table
eth0      Link encap:Ethernet  HWaddr 00:0c:29:e8:cc:d3
          inet addr:10.250.0.150  Bcast:10.250.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fee8:ccd3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5631385 errors:0 dropped:143 overruns:0 frame:0
          TX packets:2403806 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3038943399 (3.0 GB)  TX bytes:3907704626 (3.9 GB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:7752 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7752 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:704050 (704.0 KB)  TX bytes:704050 (704.0 KB)
On peut souligner que la commande "netstat -e" est équivalente à la commande "ifconfig -a".

Afficher toutes les sockets réseaux ouvertes

#netstat -uta
-u: UDP
-t: TCP
-a: All

root@VM-UBUNTU-01:~# netstat -uta
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 *:ssh                   *:*                     LISTEN
tcp        0      0 localhost:mysql         *:*                     LISTEN
tcp        0      0 10.250.0.150:ssh        10.250.0.50:40373       ESTABLISHED
tcp        0      0 10.250.0.150:ssh        10.250.0.50:46060       ESTABLISHED
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
tcp6       0      0 [::]:http               [::]:*                  LISTEN

 Les sockets dans l'état listen sont incluses dans la sortie écran seulement lorsqu'on spécifie les options --listening (-l) ou --all (-a).

Les états possibles des sockets sont les suivants:
(repris de la page "man netstat")


ESTABLISHED:
SYN_SENT:
SYN_RECV:
FIN_WAIT1:
FIN_WAIT2:
TIME_WAIT:
 
CLOSED:
CLOSE_WAIT:
LAST_ACK:
LISTEN:
 
CLOSING:
 
UNKNOWN:
La socket a une connexion établie.
La socket attend activement d'établir une connexion.
Une requête de connexion a été reçue du réseau.
La socket est fermée, et la connexion est en cours de terminaison.
La connexion est fermée, et la socket attend une terminaison du distant.
La socket attend le traitement de tous les paquets encore sur le réseau avant d'entreprendre la fermeture.
La socket n'est pas utilisée.
Le distant a arrêté, attendant la fermeture de la socket.
Le distant termine, et la socket est fermée. Attente d'acquittement.
La socket est à l'écoute de connexions entrantes. Ces sockets ne sont affichées que si le paramètre -a,--listening est fourni.
Les deux prises sont arrêtées mais toutes les données locales n'ont pas encore été envoyées.
L'état de la prise est inconnu.

 Afficher toutes les sockets réseaux ouvertes (informations étendues)

#netstat -aute
-a: All
-u: UDP
-t: TCP
-e: Information étendue

 root@VM-UBUNTU-01:~# netstat -aute
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode
tcp        0      0 *:ssh                   *:*                     LISTEN      root       9022
tcp        0      0 localhost:mysql         *:*                     LISTEN      mysql      2310050
tcp        0      0 10.250.0.150:ssh        10.250.0.50:40373       ESTABLISHED root       2686139
tcp        0    320 10.250.0.150:ssh        10.250.0.50:46060       ESTABLISHED root       2696343
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      root       9024
tcp6       0      0 [::]:http               [::]:*                  LISTEN      root       2311284

 Afficher toutes les sockets en état "listen"

#netstat -lt
-t: TCP
-l: Socket en état listen

root@VM-UBUNTU-01:~# netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 *:ssh                   *:*                     LISTEN
tcp        0      0 localhost:mysql         *:*                     LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
tcp6       0      0 [::]:http               [::]:*                  LISTEN
Afficher les statistiques par protocole

#netstat -s
-s: Statistiques résumées pour chaque protocole.

root@VM-UBUNTU-01:~# netstat -s
Ip:
    1778352 total packets received
    0 forwarded
    0 incoming packets discarded
    1778351 incoming packets delivered
    1244698 requests sent out
    1727 outgoing packets dropped
Icmp:
    3626 ICMP messages received
    0 input ICMP message failed.
    ICMP input histogram:
        destination unreachable: 3626
    3626 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
        destination unreachable: 3626
IcmpMsg:
        InType3: 3626
        OutType3: 3626
Tcp:
    4310 active connections openings
    124 passive connection openings
    0 failed connection attempts
    75 connection resets received
    2 connections established
    1766668 segments received
    2385158 segments send out
    47 segments retransmited
    0 bad segments received.
    104 resets sent
Udp:
    0 packets received
    3626 packets to unknown port received.
    0 packet receive errors
    3628 packets sent
UdpLite:
TcpExt:
    2 invalid SYN cookies received
    1480 TCP sockets finished time wait in fast timer
    7072 delayed acks sent
    18 delayed acks further delayed because of locked socket
    Quick ack mode was activated 24 times
    33 packets directly queued to recvmsg prequeue.
    4425586 bytes directly in process context from backlog
    7126 bytes directly received in process context from prequeue
    518714 packet headers predicted
    2240 packets header predicted and directly queued to user
    1076152 acknowledgments not containing data payload received
    115565 predicted acknowledgments
    21 times recovered from packet loss by selective acknowledgements
    24 congestion windows recovered without slow start after partial ack
    21 fast retransmits
    25 other TCP timeouts
    TCPLossProbes: 151
    TCPLossProbeRecovery: 54
    25 DSACKs sent for old packets
    89 DSACKs received
    40 connections reset due to early user close
    TCPDSACKIgnoredNoUndo: 51
    TCPSackShifted: 62
    TCPSackMerged: 47
    TCPSackShiftFallback: 68
    TCPDeferAcceptDrop: 55
    TCPRcvCoalesce: 181682
    TCPOFOQueue: 189
    TCPSpuriousRtxHostQueues: 31
IpExt:
    InMcastPkts: 2
    InBcastPkts: 4919
    InOctets: -1516352654
    OutOctets: -1698348110
    InMcastOctets: 72
    InBcastOctets: 1059047
    InNoECTPkts: 3222497
 Aller plus loin?

"Lister les ports ouverts avec Netstat"


source : http://www.memoinfo.fr/netstat-lister-ports-ouverts-linux.html

 La commande Netstat permet de lister tous les ports ouverts sur une machine, les connexions établies et enfin globalement les services réseaux en écoute.
Grâce à cette commande nous allons pouvoir vérifier tous les services installés, vérifier qu’ils fonctionnent bien sur les bons ports.
On pourra également, en profiter pour voir des services qui n’ont pas besoin d’être lancés et par conséquent les arrêter.
Et enfin, la commande Nestat permettra, en listant les ports ouverts, de configurer le firewall en fonction de nos besoins.

La commande netstat Linux peut prendre de nombreux paramètres. Mais voici une bonne base :

netstat -paunt

    -a : Tous les ports
    -t : Tous les ports TCP
    -u : Tous les ports UDP
    -l : Tous les ports en écoute
    -n : Affiche directement les IP. Pas de résolution de nom.
    -p : Affiche le nom du programme et le PID associé.

Ce qui donne un affichage du genre :

root@VM-UBUNTU-01:~# netstat -paunt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      820/sshd
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      26331/mysqld
tcp        0      0 10.250.0.150:22         10.250.0.50:40373       ESTABLISHED 19027/sshd: stanisl
tcp        0      0 10.250.0.150:22         10.250.0.50:46060       ESTABLISHED 19532/3
tcp6       0      0 :::22                   :::*                    LISTEN      820/sshd
tcp6       0      0 :::80                   :::*                    LISTEN      11762/apache2
 Comment lire les résultats de la commande netstat, par colonnes :

  •     Proto : le protocole utilisé. Les classiques TCP et UDP mais également TCP6 et UDP6 pour les variantes IPV6.
  •     Recv-Q : Le nombre de Bytes dans la file d’attente de réception. Devrait toujours être à zéro
  •     Send-Q : Le nombre de Bytes dans la file d’attente d’envoi. Devrait toujours être à zéro
  •     Adresse locale : l’adresse et le port utilisé sur la machine locale
  •     Adresse distante : l’adresse et le port utilisé par la machine distante
  •     Etat : LISTEN quand le programme écoute et attend une connexion. ESTABLISHED lorsque la connexion est établie.
  •     PID/Program name : Le numéro de processus et le nom du programme

Vous savez tout sur la commande netstat Linux. A vos analyses !

bref RTFM

# man netstat

http://linux.die.net/man/8/netstat

Différences majeures entre Red Hat 6, 7, 8 et 9

Quelles sont les différences majeures entre RHEL 6, 7, 8 et 9 ? Système de fichiers RHEL 6: Par défaut : ext4. Autres : ext2, ext3 supportés...