Catégorie : Mémo

3 janvier 2017 /

Je reprend l’exemple d’un fichier texte contenant une multitude d’identifiants.
Des identifiants qui commencent par 4 chiffres puis 2 lettres (exemple: 1502KQ) respecte le standard voulu, les autres non.

Nous souhaitons donc isoler les identifiants ne correspondant pas à ce standard.

Pour cela, crée un fichier, test.txt par exemple, et on y inscrit cette liste d’identifiants:

7737OM
8053HR
8184MH
8579MX
9254NF
1034AP
ADMIN01
ADMIN26
BIZOT
4569DF
BOURGAINET
CHACONNI
4126NR
4685ET
D?ALES
5016NW
DESOUSASSE06
FITGERERT
FRANCINETTE

Pour afficher les occurrences qui correspondent à notre expression régulière, [0-9]{4}[a-zA-Z]{2} (pour 4 chiffres et 2 lettres en minuscule ou majuscule):

egrep "[0-9]{4}[a-zA-Z]{2}" test.txt

7737OM
8053HR
8184MH
8579MX
9254NF
1034AP
4569DF
4126NR
4685ET
5016NW

Pour afficher au contraire les occurrences qui correspondent pas à notre expression régulière, on rajoute l’option « -v »:

egrep -v "[0-9]{4}[a-zA-Z]{2}" test.txt

ADMIN01
ADMIN26
BIZOT
BOURGAINET
CHACONNI
D?ALES
DESOUSASSE06
FITGERERT
FRANCINETTE

Note: On peut également utiliser grep avec l’option « -E » qui forcer grep à se comporter comme egrep:

grep -E "[0-9]{4}[a-zA-Z]{2}" test.txt

Autres exemples:

Recherche les mots dont b n’est pas suivi de o:

egrep "b[^o]" test.txt

Recherche toute ligne qui commence par « De: », « Sujet: » ou « Date: »:

egrep "^(De|Sujet|Date):" test.txt

Recherche et affiche chaque ligne du fichier test.txt qui contient l’occurence bonjour ou Bonjour, les numéros de ligne sont également affichés (option -n):

egrep -n "[bB]onjour" test.txt

Liste toute les lignes du fichier test.txt commençant avec le caractère $:

egrep "^\\$" test.txt

Liste tous les fichiers et répertoires dans le répertoire courant qui ne se terminent pas avec .txt:

ls -l | egrep "[^.txt]$"

Liste tous les fichiers et répertoires dans le répertoire courant qui se terminent avec .txt:

ls -l | egrep "[.txt]$"

Affiche uniquement les lignes dont le numéro de téléphone commence par un 1:

egrep "^1" test.txt

Recherche les lignes avec un 2 à la seconde position et n’importe quel caractère en première position:

egrep "^.2" test.txt

Recherche les lignes dont le premier caractère est différent de 1:

egrep "^[^1]" test.txt

27 décembre 2016 /

Notepad++ permet de filtrer un texte avec des expressions régulières.

Prenons l’exemple d’un fichier texte contenant une multitude d’identifiants.
Les identifiants qui commencent par 4 chiffres puis 2 lettres (exemple: 1803KQ) respecte le standard voulu, les autres non.

Nous souhaitons donc isoler les identifiants ne correspondant pas à ce standard.

Pour cela, on ouvre le fichier texte contenant l’ensemble des identifiants avec Notepad++.
Voici un exemple de texte à ouvrir avec Notepad++:

7737OM
8053HR
8184MH
8579MX
9254NF
1034AP
ADMIN01
ADMIN26
BIZOT
4569DF
BOURGAINET
CHACONNI
4126NR
4685ET
D?ALES
5016NW
DESOUSASSE06
FITGERERT
FRANCINETTE

Dans le menu de Notepad++, on va dans Recherche -> Remplacer…:

Dans cette fenêtre, on va mettre dans le champ « Recherche » notre expression régulière, [0-9]{4}[a-zA-Z]{2} (pour 4 chiffres et 2 lettres en minuscule ou majuscule).

On va également cocher « Expression régulière » dans la case « Mode de recherche« :

Une fois que cela est fait, on clique sur « Remplacer tout« .

Notre liste devrait maintenant ressembler à cela:

ADMIN01
ADMIN26
BIZOT
BOURGAINET
CHACONNI
D?ALES
DESOUSASSE06
FITGERERT
FRANCINETTE
KANNAOUITTET

Tout les identifiants correspondant au REGEX ont été supprimé, ne laissant que les identifiants ne le respectant pas.

4 décembre 2016 /

Pour augmenter la taille d’un .vmdk sur une appliance vCenter 6.x:

  1. Connectez-vous en ssh (en root) sur le vCenter.
  2. Exécutez cette commande pour activer le shell Bash:

    Shell.set --enabled true

  3. Il faut maintenant taper le mot « shell » puis on valide en appuyant sur entrée pour le lancer.
  4. On utilise la commande « df » pour identifier la partition à augmenter:

    df -h

  5. Une fois identifiée, on peut en déduire son numéro de VMDK, on va donc cette fois sur le client Vsphere (web ou client lourd) et on augmente la taille du disque VMDK.
  6. On retourne sur notre connexion ssh, et on exécute cette commande pour que le volume logique prenne en compte l’espace ajouté dans l’étape précédente:

    vpxd_servicecfg storage lvm autogrow

  7. Si tout c’est bien passé, le message suivant apparaîtra :
    VC_CFG_RESULT=0 
  8. On peut alors vérifier que la taille a bien été augmenté avec la commande df:

    df -h

Rappel:

Disque VMDK Taille par défaut Point de montage
VMDK1 12 Go / (10Go), /boot (132Mo), SWAP (1Go)
VMDK2 1,3 Go /tmp
VMDK3 25 Go SWAP
VMDK4 25 Go /storage/core
VMDK5 10 Go /storage/log
VMDK6 10 Go /storage/db
VMDK7 5 Go /storage/dblog
VMDK8 10 Go /storage/seat
VMDK9 1 Go /storage/netdump
VMDK10 10 Go /storage/autodeploy
VMDK11 5 Go /storage/invsvc

Source

14 novembre 2016 /

Le Domain Name System (ou DNS, système de noms de domaine) est un service permettant de traduire un nom de domaine en informations de plusieurs types qui y sont associées, notamment en adresses IP de la machine portant ce nom.

BIND (pour Berkeley Internet Name Daemon, ou parfois Berkeley Internet Name Domain) est le serveur DNS le plus utilisé sur Internet, spécialement sur les systèmes de type UNIX et est devenu de facto un standard. La première version de BIND a été conçue par quatre étudiants diplômés de l’Université de Californie (Berkeley) sur la base du système d’exploitation BSD 4.3

Nous allons installer Bind sur un serveur CentOS 6.5 (configuration également testée sur un CentOS7 avec succès) nommé dns, ayant pour adresse IP 10.148.14.36 et pour domaine starmate.fr.

Installation:

yum -y install bind bind-utils

On modifie la configuration DNS du système pour que les requêtes DNS se fassent désormais vers le DNS local, pour cela on modifie le paramètre « nameserver » du fichier resolv.conf:

vi /etc/resolv.conf

search starmate.fr
nameserver 127.0.0.1
nameserver 10.148.14.36

On va maintenant configurer la zone.
La mise en place d’une zone, aussi appelé nom de domaine, se fait par la création d’un fichier dans /var/named/.
Ce fichier contiendra l’ensemble des enregistrements DNS du domaine. Ce sont ces informations qui seront envoyées lors d’une requête DNS. Ils donnent notamment les adresses IP de plusieurs services, les IP des sous-domaines, machines, le TTL, etc…

Pour une zone starmate.fr :

vi /var/named/starmate.fr.db

Et on mets ça dedans:

$TTL 604800
@ IN SOA dns.starmate.fr. root.starmate.fr. (
2 ; Serial
3600 ; Refresh [1h]
600 ; Retry [10m]
86400 ; Expire [1j]
600 ) ; Negative Cache TTL [1h]
;
@ IN NS dns.starmate.fr.
dns.starmate.fr. IN A 10.148.14.36

On créer la configuration de la zone inversé:

vi /var/named/10.148.14.zone.db

Et on y met ca:

$TTL 604800
@ IN SOA dns.starmate.fr. root.starmate.fr. (
2 ; Serial
3600 ; Refresh [1h]
600 ; Retry [10m]
86400 ; Expire [1j]
600 ) ; Negative Cache TTL [1h]
;
@               IN      NS      dns.starmate.fr.
36              IN      PTR     dns.starmate.fr.

il faut maintenant inclure cette zone dans la liste des domaines de bind

On va commencer par sauvegarder le fichier de configuration initial:

cp -p /etc/named.conf /etc/named.conf.sav

On va vider le fichier:

> /etc/named.conf

Maintenant le fichier est sauvegardé et vidé de son contenu, on y ajoute ça:

vi /etc/named.conf

options
{
directory "/var/named"; // "Working" directory
dump-file "data/cache_dump.db";
statistics-file "data/named_stats.txt";
memstatistics-file "data/named_mem_stats.txt";

listen-on port 53 { any; };
//listen-on port 53 { 127.0.0.1; };

listen-on-v6 port 53 { any; };
//listen-on-v6 port 53 { ::1; };

allow-query { any; };
allow-query-cache { any; };

recursion yes;

};

logging
{
channel default_debug {
file "data/named.run";
severity dynamic;
};
};

view "internal"
{
match-clients { localnets; };
recursion yes;

zone "." IN {
type hint;
file "/var/named/named.ca";
};

include "/etc/named.rfc1912.zones";

zone "starmate.fr" {
type master;
file "starmate.fr.db";
};

zone "14.148.10.in-addr.arpa" {
type master;
file "10.148.14.zone.db";
};
};

On vérifie que l’on a pas fait d’erreur de syntaxe:

named-checkzone starmate.fr /var/named/starmate.fr.db
named-checkzone starmate.fr /var/named/10.148.14.zone.db

Si pas d’erreur, on redémarre le service:

service named restart

Pour CentOS6, voici les règles iptables pour ouvrir le port DNS qu’il faut ajouter dans /etc/sysconfig/iptables :

vi /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT

Ou via la commande iptables directement:

iptables -t filter -A OUTPUT -p tcp –dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp –dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp –dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp –dport 53 -j ACCEPT

Pour CentOS7, le mieux est de passer par la commande firewall-cmd:

firewall-cmd --permanent --add-port=53/tcp
firewall-cmd --permanent --add-port=53/udp
firewall-cmd --reload

Vérification de la résolution depuis un autre poste:

dig @10.148.14.36 dns.starmate.fr +short

10.148.14.36

Dig nous a bien retourné l’adresse IP correspondante au nom dns, « dns.starmate.fr »

Vérification de la résolution inversée depuis un autre poste:

dig @10.148.14.36 -x 10.148.14.36 +short

dns.starmate.fr.

Dig nous a bien retourné le nom DNS de la machine ayant l’adresse IP, « 10.148.14.36 »

7 novembre 2016 /

La commande sudo  permet de fournir à un utilisateur de confiance, un accès avec privilèges sur un système, sans avoir à partager le mot de passe de l’utilisateur root.

Lorsque les utilisateurs ayant des droits sudo, précèdent une commande administrative avec sudo, ils sont invités à entrer leur mot de passe. Une fois authentifié, et en supposant que la commande est autorisée, la commande administrative est exécutée comme si elle est exécutée par l’utilisateur root.

On commence en éditant le fichier /etc/sudoers via la commande visudo:

visudo

On cherche les lignes qui donne le droit sudo au utilisateur du groupe Wheel:

## Allows people in group wheel to run all commands
# %wheel        ALL=(ALL)       ALL

Cette ligne de configuration demandera un mot de passe lors de l’appel de sudo

## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL

Cette ligne de configuration ne demandera pas de mot de passe lors de l’appel de sudo

On supprime le croisillon de la ligne « #%wheel ALL….  » souhaitée pour activer la configuration voulue.

Une fois que l’on a utilisé sudo dans un terminal, on dispose de 20 minutes pour utiliser sudo avec d’autres commandes, sans que la console nous redemande un mot de passe. Pour passer de 20 minute à une journée (en minute):

Defaults env_reset,timestamp_timeout=1440

Pour une durée illimitée, on met « -1 » :

Defaults env_reset,timestamp_timeout=-1

Puis on sauvegarde et on quitte visudo.
Il ne nous reste plus qu’a ajouter l’utilisateur voulu au groupe wheel.

Pour cela nous éditons le fichier /etc/group :

vi /etc/group

Et nous ajoutons le login de l’utilisateur (ici antoine) à qui l’on donne le droit sudo directement dans le groupe wheel:

root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon
tty:x:5:
disk:x:6:
lp:x:7:daemon
mem:x:8:
kmem:x:9:
wheel:x:10:starmate,antoine
mail:x:12:mail,postfix
uucp:x:14:

Antoine peut maintenant utiliser sudo pour exécuter des commandes comme si il était connecté en root.

Quelques règles de sécurité

Pour empêcher sudo d’agir ailleurs qu’en mode console, il faut déclarer le paramètre suivant dans le fichier /etc/sudoers lors de son édition avec visudo :

Defaults requiretty

Pour enregistrer dans un fichier de logs spécifique, les actions effectuer via sudo  :

Defaults log_host,log_year,logfile="/var/log/sudoers"

Il peut être également utile de bloquer certaine commande comme « su« , « passwd« , « bash » ou encore « sh« , pour cela il suffit de faire précéder la commande à bloquer par un point d’exclamation « !« .
Dans ce cas, nous allons directement déclarer l’utilisateur, ici Antoine, pour lui donner les droits sudo dans le fichier sudoers (donc sans passer par le groupe wheel) de cette façon, via visudo:

antoine ALL=(ALL) ALL,!/bin/su,!/usr/bin/passwd,!/bin/bash,!/bin/sh

Ce qui aura pour résultat:

sudo su

Sorry, user antoine is not allowed to execute '/bin/su' as root on Centos_server.