Archives de catégorie : System

[Linux] comment activer son wifi en ligne de commande ?

Fichu WIFI, parfois il s’active bien, d’autres fois je me galère pour le lancer. Du coup, je me préfère le gérer en ligne de commande. A terme cela peut permettre d’aboutir à un script si vraiment j’en ai raz le bol.

Vérifiez les paramètres de votre interface wiki

Pour cela on utilise le binaire « iw »

└─ $ ▶ /sbin/iw dev
phy#0
Interface wlp3s0
ifindex 3
wdev 0x1
addr xx:xx:xx:xx:xx:xx
type managed

Ainsi vous pouvez retenir le nom de votre interface.

Vérifiez si l’interface wifi est UP

On utilise le binaire « ip » comme ceci

└─ $ ▶ ip link show wlan0
Device "wlan0" does not exist.

Et là confirmation, je n’ai pas de wifi.

Montez votre interface

Toujours avec IP on tente de monter la carte.

└─ $ ▶ sudo ip link set wlp3s0 up 
RTNETLINK answers: Operation not possible due to RF-kill

Mais là on a un message d’erreur. On ne peut pas remonter la carte car il y a un verrou. Donc on va le lever.

└─ $ ▶ rfkill list all
0: tpacpi_bluetooth_sw: Bluetooth
Soft blocked: yes
Hard blocked: no
1: tpacpi_wwan_sw: Wireless WAN
Soft blocked: no
Hard blocked: no
2: phy0: Wireless LAN
Soft blocked: yes
Hard blocked: no

Bon pour simplifier on va tous les délockés.

sudo rfkill unblock all

et ensuite on retente de monter notre wlp3s0

└─ $ ▶ sudo ip link set wlp3s0 up
└─ $ ▶ ip link show wlp3s0
3: wlp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff

et là pas de souci.

Vérification et connexion

Maintenant vérifions si nous avons du wifi de connecter dessus.

└─ $ ▶ sudo /sbin/iw wlp3s0 link
Not connected.

Donc rien pour l’instant. Alors on lance un scan des réseaux wifi à disposition.

└─ $ ▶ sudo /sbin/iw wlp3s0 scan
BSS xx:xx:xx:xx:xx:xx (on wlp3s0)
	TSF: 4058009 usec (0d, 00:00:04)
	freq: 2462
	beacon interval: 100 TUs
	capability: ESS Privacy SpectrumMgmt ShortSlotTime RadioMeasure (0x1511)
	signal: -6.00 dBm
	last seen: 88 ms ago
	Information elements from Probe Response frame:
	SSID: iPhone
	Supported rates: 1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0 
	DS Parameter set: channel 11
	Country: FR	Environment: Indoor/Outdoor
		Channels [1 - 13] @ 20 dBm
	Power constraint: 0 dB
	TPC report: TX power: 15 dBm
	ERP: <no flags>
	Extended supported rates: 6.0 9.0 12.0 48.0 
	RSN:	 * Version: 1
		 * Group cipher: CCMP
		 * Pairwise ciphers: CCMP
		 * Authentication suites: PSK
		 * Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)

Puis connexion au wpa/wpa2

sudo wpa_supplicant -B -D wext -i wlp3s0 -D nl80211 -c /etc/wpa_supplicant.conf

/sbin/iw wlp3s0 link
Connected to xx:xx:xx:xx:xx:xx

Utiliser DHCP pour obtenir une adresse IP

sudo dhclient wlp3s0

Et voilà, vous n’avez plus qu’à faire quelques ping pour tester.

 

[Linux] : générez une adresse MAC et changez la votre -> triche wifi

Avant de commencer par travailler sur votre adresse MAC, la première chose à faire est de vous créer une sauvegarde pour savoir faire demi-tour. Eh oui on ne change pas son adresse MAC sans filet de secours car elle correspond à votre matériel. J’imagine que vous savez comment faire ?

14:06:12 - oki @ doki ~ 
└─ $ ▶ ifconfig > backup_ifconfig.txt

Maintenant on peut commencer à bosser. Comment générer une adresse MAC ?

14:02:57 - oki @ doki ~ 
└─ $ ▶ openssl rand -hex 6 | sed 's/\(..\)/:/g; s/.$//'

On utilise donc openssl en mode random et en hexa. Et grâce à sed on ajoute les « : » et on nettoie la variable obtenue.

Maintenant on peut passer à la modification de l’adresse MAC. Petit rappel, l’adresse MAC de votre PC est définie en usine et quoiqu’il arrive vous ne pourrez pas changer cette adresse « physique ». Ainsi, avec un reboot de votre PC vous pourrez récupérer la bonne (de toute façon on a notre backup).

Alors pour changer cette adresse il faut que vous déterminiez votre interface principale avec ifconfig.

Ifconfig va aussi vous permettre de la changer de cette manière :

sudo ifconfig eth0 ether manouvelleadresse

Attention dans mon cas mon interface principale est eth0. Mais cela peut changer.

Donc si vous souhaitez intégrer la génération de l’adresse MAC et le changement en une ligne, voici la commande :

sudo ifconfig eth0 ether`openssl rand -hex 6 |\
sed 's/\(..\)/:/g; s/.$//'`

Vous venez de changer votre adresse MAC au niveau système.

Alors cette méthode, si simple, permet parfois de « hacker » ou plutôt tromper certains wifi (pas si courants). La triche se fera dès lors que vous tomberez sur des wifi avec des périodes gratuites (par exemple les 30 premières minutes). Dès le temps écoulé, vous faites un backup et vous lancez la commande et c’est reparti.

N’oubliez pas que vous pouvez récupérer votre adresse intiale en faisant un reboot de votre machine ou encore avec la commande.

sudo ifconfig eth0 ether votreancienneMAC

Retrouvez d’autres astuces linux et bash sur cette page.

[Linux] : rsync – entre deux machines en définissant le port à utiliser

Rsync est un super outil qui permet comme son nom le laisse deviner, de synchroniser des fichiers ou des répertoires. Il permet notamment de gagner du temps pour ne synchroniser que le nécessaire si une modification intervient. Bref une brave bête ce rsync.

Comment synchroniser un fichier ou un répertoire entre 2 machines en fixant un port particulier ?

rsync -avz -e "ssh -p $portutilise" utilisateur@serveur2:/chemin/source/ /chemin/destination/

Donc :

  • rsync -avz : mode archive (a), mode compressé (z) et verbose
  • -e pour lancer une commande en l’occurence la connexion ssh

[Linux][Sécurité] : nmap : comment scanner les ports d’un serveur ?

Avec nmap, il est temps de parler un peu réseau. En tout cas, un sysadmin se doit de savoir faire un bon scan de ports sur une machine ou une adresse (derrière laquelle il y a une machine). Et nmap est l’outil le plus facile à utiliser et à installer pour faire ce genre de travail.

N’oubliez pas vous aussi de partager en commentaire vos commandes. Je suis preneur.

Comment scanner un site ?

#installation
sudo apt-get install nmap

└─ $ ▶ sudo nmap -v google.fr

Starting Nmap 7.01 ( https://nmap.org ) at 2018-08-05 21:32 CEST
Initiating Ping Scan at 21:32
Scanning google.fr (216.58.206.227) [4 ports]
Completed Ping Scan at 21:32, 0.21s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 21:32
Completed Parallel DNS resolution of 1 host. at 21:32, 3.63s elapsed
Initiating SYN Stealth Scan at 21:32
Scanning google.fr (216.58.206.227) [1000 ports]
Discovered open port 1723/tcp on 216.58.206.227
Discovered open port 53/tcp on 216.58.206.227
Discovered open port 21/tcp on 216.58.206.227
Discovered open port 443/tcp on 216.58.206.227
Discovered open port 554/tcp on 216.58.206.227
Discovered open port 80/tcp on 216.58.206.227
Discovered open port 8080/tcp on 216.58.206.227
Completed SYN Stealth Scan at 21:33, 9.83s elapsed (1000 total ports)
Nmap scan report for google.fr (216.58.206.227)
Host is up (0.035s latency).
Other addresses for google.fr (not scanned): 2a00:1450:4007:817::2003
rDNS record for 216.58.206.227: par10s34-in-f3.1e100.net
Not shown: 993 filtered ports
PORT     STATE SERVICE
21/tcp   open  ftp
53/tcp   open  domain
80/tcp   open  http
443/tcp  open  https
554/tcp  open  rtsp
1723/tcp open  pptp
8080/tcp open  http-proxy

On peut donc voir les ports ouverts et le type de service ui correspond. C’est déjà bien sympa non ?

Comment scanner les ports d’une machine ?

# scan de la machine 172.20.10.2
nmap -T4 -A -v -oG - 1725.20.10.2

# résultat
# Nmap 7.01 scan initiated Sun Aug  5 18:16:21 2018 as: nmap -T4 -A -v -oG - 172.20.10.2
# Ports scanned: TCP(1000;1,3-4,6-7,9,13,17,19-26,30,32-33,37,42-43,49,53,70,79-85,88-90,99-100,106,109-111,113,119,125,135,139,143-144,146,161,163,179,199,211-212,222,254-256,259,264,280,301,306,311,340,366,389,406-407,416-417,425,427,443-445,458,464-465,481,497,500,512-515,524,541,543-545,548,554-555,563,587,593,616-617,625,631,636,646,648,666-668,683,687,691,700,705,711,714,720,722,726,749,765,777,783,787,800-801,808,843,873,880,888,898,900-903,911-912,981,987,990,992-993,995,999-1002,1007,1009-1011,1021-1100,1102,1104-1108,1110-1114,1117,1119,1121-1124,1126,1130-1132,1137-1138,1141,1145,1147-1149,1151-1152,1154,1163-1166,1169,1174-1175,1183,1185-1187,1192,1198-1199,1201,1213,1216-1218,1233-1234,1236,1244,1247-1248,1259,1271-1272,1277,1287,1296,1300-1301,1309-1311,1322,1328,1334,1352,1417,1433-1434,1443,1455,1461,1494,1500-1501,1503,1521,1524,1533,1556,1580,1583,1594,1600,1641,1658,1666,1687-1688,1700,1717-1721,1723,1755,1761,1782-1783,1801,1805,1812,1839-1840,1862-1864,1875,1900,1914,1935,1947,1971-1972,1974,1984,1998-2010,2013,2020-2022,2030,2033-2035,2038,2040-2043,2045-2049,2065,2068,2099-2100,2103,2105-2107,2111,2119,2121,2126,2135,2144,2160-2161,2170,2179,2190-2191,2196,2200,2222,2251,2260,2288,2301,2323,2366,2381-2383,2393-2394,2399,2401,2492,2500,2522,2525,2557,2601-2602,2604-2605,2607-2608,2638,2701-2702,2710,2717-2718,2725,2800,2809,2811,2869,2875,2909-2910,2920,2967-2968,2998,3000-3001,3003,3005-3007,3011,3013,3017,3030-3031,3052,3071,3077,3128,3168,3211,3221,3260-3261,3268-3269,3283,3300-3301,3306,3322-3325,3333,3351,3367,3369-3372,3389-3390,3404,3476,3493,3517,3527,3546,3551,3580,3659,3689-3690,3703,3737,3766,3784,3800-3801,3809,3814,3826-3828,3851,3869,3871,3878,3880,3889,3905,3914,3918,3920,3945,3971,3986,3995,3998,4000-4006,4045,4111,4125-4126,4129,4224,4242,4279,4321,4343,4443-4446,4449,4550,4567,4662,4848,4899-4900,4998,5000-5004,5009,5030,5033,5050-5051,5054,5060-5061,5080,5087,5100-5102,5120,5190,5200,5214,5221-5222,5225-5226,5269,5280,5298,5357,5405,5414,5431-5432,5440,5500,5510,5544,5550,5555,5560,5566,5631,5633,5666,5678-5679,5718,5730,5800-5802,5810-5811,5815,5822,5825,5850,5859,5862,5877,5900-5904,5906-5907,5910-5911,5915,5922,5925,5950,5952,5959-5963,5987-5989,5998-6007,6009,6025,6059,6100-6101,6106,6112,6123,6129,6156,6346,6389,6502,6510,6543,6547,6565-6567,6580,6646,6666-6669,6689,6692,6699,6779,6788-6789,6792,6839,6881,6901,6969,7000-7002,7004,7007,7019,7025,7070,7100,7103,7106,7200-7201,7402,7435,7443,7496,7512,7625,7627,7676,7741,7777-7778,7800,7911,7920-7921,7937-7938,7999-8002,8007-8011,8021-8022,8031,8042,8045,8080-8090,8093,8099-8100,8180-8181,8192-8194,8200,8222,8254,8290-8292,8300,8333,8383,8400,8402,8443,8500,8600,8649,8651-8652,8654,8701,8800,8873,8888,8899,8994,9000-9003,9009-9011,9040,9050,9071,9080-9081,9090-9091,9099-9103,9110-9111,9200,9207,9220,9290,9415,9418,9485,9500,9502-9503,9535,9575,9593-9595,9618,9666,9876-9878,9898,9900,9917,9929,9943-9944,9968,9998-10004,10009-10010,10012,10024-10025,10082,10180,10215,10243,10566,10616-10617,10621,10626,10628-10629,10778,11110-11111,11967,12000,12174,12265,12345,13456,13722,13782-13783,14000,14238,14441-14442,15000,15002-15004,15660,15742,16000-16001,16012,16016,16018,16080,16113,16992-16993,17877,17988,18040,18101,18988,19101,19283,19315,19350,19780,19801,19842,20000,20005,20031,20221-20222,20828,21571,22939,23502,24444,24800,25734-25735,26214,27000,27352-27353,27355-27356,27715,28201,30000,30718,30951,31038,31337,32768-32785,33354,33899,34571-34573,35500,38292,40193,40911,41511,42510,44176,44442-44443,44501,45100,48080,49152-49161,49163,49165,49167,49175-49176,49400,49999-50003,50006,50300,50389,50500,50636,50800,51103,51493,52673,52822,52848,52869,54045,54328,55055-55056,55555,55600,56737-56738,57294,57797,58080,60020,60443,61532,61900,62078,63331,64623,64680,65000,65129,65389) UDP(0;) SCTP(0;) PROTOCOLS(0;)
Host: 172.20.10.2 ()	Status: Up
Host: 172.20.10.2 ()	Ports: 22/open/tcp//ssh//OpenSSH 7.2p2 Ubuntu 4ubuntu2.4 (Ubuntu Linux; protocol 2.0)/	Ignored State: closed (999)
# Nmap done at Sun Aug  5 18:16:26 2018 -- 1 IP address (1 host up) scanned in 4.79 seconds

Donc ça crache du log, j’ai hésitez à couper mais bon c’est pour vous dire que vous risquez pas de passer à côté d’un port non testé.

Donc pour les options :

  • -oG : sortie output grepable
  • -T4 : l’agressivité (pour scanner plus ou moins vite)
  • -v : verbeux
  • -A : détection de la version et OS

Le plus important c’est l’avant dernière ligne :

Host: 172.20.10.2 ()	Ports: 22/open/tcp//ssh//OpenSSH 7.2p2 Ubuntu 4ubuntu2.4 (Ubuntu Linux; protocol 2.0)/	Ignored State: closed (999)

On y apprend donc que les ports et leurs status sont :

    • 22 : pour le ssh et il est fermé
    • … et c’est tout(j’ai pas de postgres et autres trucs sur cette machine. Autant vous dire que l’on ne pentest pas celle-ci facilement.

Vous comprenez donc pourquoi cette commande est quasi fétiche chez les hackers. En effet, ça donne des idées par où entrer. Eux vont d’embler chercher les ports OPEN.

Vous pouvez aussi utiliser nmap pour scanner un réseau (lan ou vlan) et ainsi connaître les ip déjà utilisé et up. Voici comment faire :

└─ $ ▶ sudo nmap -sP 172.20.10.* 
Starting Nmap 7.01 ( https://nmap.org ) at 2018-08-05 21:20 CEST
Nmap scan report for 172.20.10.1
Host is up (0.34s latency).
MAC Address: xx:xx:xx:xx:xx:xx (Unknown)
Nmap scan report for 172.20.10.2
Host is up (0.00045s latency).
MAC Address: xx:xx:xx:xx:xx:xx (Oracle VirtualBox virtual NIC)
Nmap scan report for 172.20.10.3
Host is up.

On a donc 3 ip up : 172.20.10.1 / 172.20.10.2 / 172.20.10.3

De cette manière, vous pouvez aussi récupérer les adresses mac… et faire des usurpation d’adresse lol. Je déconne c’est pas le but. Faudrait aller vers ceci :

nmap --spoof-mac xx:xx:xx:xx:xx:xx 127.0.0.1

Bon le but n’est pas de devenir un hacker, pour aller plus loin rendez vous sur le site de nmap.

[Linux] : recenser les ports en écoute sans netstat et LSOF

Hier nous avions vu comment lister les ports en écoute sur une machine en utilisant netstat ou lsof. Aujourd’hui nous allons faire la même chose sans binaire ah ah ah.

Bien sûr c’est nettement moins facile il va falloir fouiller dans les données du système. En l’occurence nous allons fouillé dans /proc/net/tcp car c’est bien le protocole tcp qui nous intéresse.

La difficulté réside simplement dans le fait que les données sont en hexadécimales et il faut donc les convertir en décimale. Voici donc la ligne de commande que je vous propose :

array=($(tail -n +2 /proc/net/tcp | cut -d ":" -f "3" | cut -d " " -f "1")) && for port in ${array[@]}; do echo $((0x$port)); done

Donc :

  • on fait un tail pour virer l’entête
  • un premier cut avec pour séparaateur « : » et on garde la 3ème colonne
  • un deuxième cut avec pour séparateur un espace  »  » et on garde la première colonne
  • pour tous les éléments recueillis on convertit l’hexadécimal en décimal.

[Sécurité] : Comment encrypter vos fichiers avec Vim ?

Cet article aurait peut être eu simplement sa place dans le top commande de la semaine mais c’est un focus qui parle un peu sécurité et je pense que l’on y fait pas assez attention. J’imagine que sur votre micro vous disposez de fichiers sensibles avec des données perso voir pire avec des mots de passe et des secrets. C’est pas bien lol.

Comment remédier à cela ? en encryptant vos fichiers.

Tout de suite le mot est laché et certains ont les poils qui se dressent. Mais n’ayons pas peur des mots. Encrypter peut se limiter à n’avoir qu’un mot de passe pour consulter vos fichiers. Et c’est ce que Vim permet de faire très simplement avec l’option « :X ». Déjà ça rassure un peu de se dire que Vim peut le faire lol.

Comment encrypter avec Vim ?

  • éditer votre fichier
  • lancer « :X » avant de sauvegarder
  • rentrer votre mot de passe

Et voilà seul Vim peut ouvrir votre fichier et il vous demandera systématiquement votre mot de passe. C’est un premier pas.

Vim propose un simple cryptage symétrique avec mot de passe donc. Mais attention à la méthode que celui-ci utilise. Pour consulter la méthode par défaut faites :

:setlocal cm?

Et pour définir une méthode un peu plus fiable vous pouvez définir la méthode blowfish (ou blowfish2 suivant votre version de Vim). Pour cela lancez :

:setlocal cm=blowfish

Pour encrypter d’autres fichiers (hors de portée pour Vim comme images…), vous pouvez aussi utiliser :

Et surtout n’oublions pas qu’au minimum pour éviter les problèmes en cas de vol, vous pouvez encrypter facilement votre partition de travail sur Ubuntu si c’est votre distribution.

Par ailleurs, s’il s’agit de stocker des mots de passe tournez vous plutôt vers des outils spécifiques comme keepass par exemple.

[Ansible] : comment installer un client et un serveur ntp ?

Cet article fait suite à mon fil rouge sur ansible. L’idée c’est de vous relater quelques moments de mon autoformation dans ce domaine. Pour moi c’est aussi le moment de me pencher différement sur ce que je fais et de constituer mon bloc-note.

Avant de commencer, je ne vais pas revenir dessus dans le détail mais j’utilise un script sympa (enfin je trouve). Il permet de me créer un ensemble de conteneurs façon VM (debian et redhat depuis la dernière évolution). Ainsi j’ai une plateforme de développement et je peux simuler des lancements de playbook sur un parc de machines. Pour en savoir plus rendez-vous sur cet article qui présente le script et les grandes lignes.

Donc j’ai lancé deux fois le script et je possède pour l’exemple 4 machines (2 debian stretch et 2 centos7).

Et voilà. Maintenant comment je peux faire pour avoir 1 serveur ntp et 3 serveurs clients ? L’idée c’est de faire en sorte qu’un seul serveur soit exposé et soit utilisé pour contacter les ntp externes.

ansible-ntp

Ainsi on veut avoir le schéma :

ntp_externes >> ntp_serveur >> ntp_clients

1. Les principes des clients et du serveur (sans ansible)

Là encore on va aller à l’essentiel de la configuration. Vous trouverez facilement des articles clairs et courts comme celui-ci qui vous donnera ce qu’il faut pour installer un ntp.

D’un côté, sur le serveur ntp est installé ntp. Il doit au niveau de sa conf taper vers les serveurs externes et surtout accepter les requêtes des autres serveurs. Pour cela il faut supprimer simplement dans /etc/ntp.conf la ligne :

restrict default nomodify notrap nopeer noquery

Et ajouter la localisation ntp :

ntp_area: 'fr'

De l’autre côté pour les serveurs clients, il faut juste modifier les serveurs vers lesquels on fait la synchro dans /etc/ntp.conf. Les serveurs par défaut deviennent par exemple :

server 172.17.0.2 ibusrt

Pour vérifier le bon fonctionnement, il suffira de faire un ntpq -p et voir où les machines vont se synchroniser.

2. NTP avec ansible c’est facile

Bien sûr que c’est facile car ntp est un utilitaire de base des serveurs web ou autres. Ansible Galaxy vous propose donc de très bon rôles. Et j’aurais tendance à dire comme d’habitude c’est geerlingguy qui va vous le proposer avec geerlingguy.ntp.

Alors pour le mettre en place dans votre répertoire de rôles il suffit de faire :

ansible-galaxy install -p roles geerlingguy.ntp

et dedans on a ceci mais on ne va toucher à rien :

.
├── defaults
│   └── main.yml
├── handlers
│   └── main.yml
├── LICENSE
├── meta
│   └── main.yml
├── README.md
├── tasks
│   ├── clock-rhel-6.yml
│   └── main.yml
├── templates
│   ├── clock.j2
│   └── ntp.conf.j2
├── tests
│   ├── README.md
│   └── test.yml
└── vars
├── Archlinux.yml
├── Debian.yml
├── FreeBSD.yml
├── RedHat.yml
└── Suse.yml

Nous avons donc un rôle ntp qui ne demande qu’à tourner. Pour cela mettons à jour notre liste de hosts.yml de notre inventory :

all:
  children:
    ntp-client:
      hosts:
        172.17.0.3:
        172.17.0.4:
        172.17.0.5:
    ntp-server:
      hosts:
        172.17.0.2:

Vous voyez que j’ai entré les ip de mes conteneurs docker. Elles sont classées en 2 groupes ntp-server et ntp-client.

Maintenant je vais créer 2 group_vars (deux répertoires avec un fichier yaml chacun) :

.
├── group_vars
│   ├── ntp-client
│   │   └── ntp-client.yml
│   └── ntp-server
│       └── ntp-server.yml

Puis je complète les fichiers de la manière suivante (en prenant en compte ce que nous avons abordé dans le paragraphe 1.).

ntp-client.yml

ntp_manage_config: True
ntp_servers:
- "172.17.0.2 ibusrt"

ntp-server.yml

ntp_manage_config: True
ntp_restrict:
- "127.0.0.1" 
- "::1" 
- "-4 default kod notrap nomodify nopeer noquery" 
- "-6 default kod notrap nomodify nopeer noquery"

Et là c’est terrible car je vous dis « nous avons fait le plus dur » ! Car maintenant on lance le playbook :

ansible-playbook -i hosts.yml --user=oki playbook-ntp.yml

Et la bingo

PLAY RECAP ************************************************************************************
172.17.0.2 : ok=7 changed=0 unreachable=0 failed=0 
172.17.0.3 : ok=8 changed=0 unreachable=0 failed=0 
172.17.0.4 : ok=8 changed=0 unreachable=0 failed=0 
172.17.0.5 : ok=8 changed=0 unreachable=0 failed=0

Comme vous le voyez moi je n’ai pas de changement car j’ai fait tourner le playbook deux fois.

Maintenant rendez vous sur le serveur ntp :

[root@7dcab8fb52ed ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
================================================================
dev.rudloff.pro 209.176.15.122 3 u 53 64 1 35.024 -29.279 8.299
clients0.arcani 131.188.3.223 2 u 53 64 1 41.120 -23.491 9.220
myminers.net 10.21.137.1 2 u 53 64 1 28.079 -27.255 13.304
*master.servme.f 213.251.128.249 2 u 53 64 1 22.207 -30.641 11.5

et sur le client :

[root@6c6c89bc23ac ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
================================================
172.17.0.2 178.33.111.48 3 u 1 64 1 0.079 0.018 0.000

Nos avons donc bien installé un serveur ntp qui se met à jour sur des serveurs externes et des clients ntp qui se mettent à jour sur notre serveur maitre.

Si cet article vous a plus partagez-le et n’hésitez pas à vous abonner pour ne pas manquer les prochains articles.

[Linux] : lister les ports en écoute sur une machine

La base pour les sysadmin, on a souvent besoin pour diagnostiquer des problèmes de lister les ports en écoute sur un serveur. Deux binaires peuvent réaliser ceci sans problème : netstat ou lsof.

Avec lsof :

sudo lsof -i -P | egrep LISTEN | awk -F ":" '{print $2}' |sort -u


Avec netsat :

netstat -ntaup | awk '/LISTEN/ && match($0,/:[0-9]+/) {print substr( $0, RSTART+1, RLENGTH )}' | sort -u


De la même manière on peut lister les connexions établies pour connaître les machines connectées :

netstat -ntaup | awk '/ESTABLISHED/ {print $5}'


[Linux] : grapher l’utilisation de la mémoire machine

Les outils ps ou top sont surement les plus utilisés pour observer l’état de la mémoire des serveurs. Mais parfois ça manque de charme lol.

En tout cas on peut avoir envie de faire vite fait un graphe plutôt que des chiffres.

Si c’est votre cas vous pouvez installer smem et lancer :

15:29:48 - oki @ doki ~ 
└─ $ ▶ smem --pie name -s pss


Et là vous obtiendrez ce genre de résultats :
figure_1
Bon c’est pas le paradie niveau mise en forme mais faut savoir que ça existe.

[Awk][Linux] : Lister les processus non killable et le stopper avec ps aux + awk

La commande PS possède une multitude d’options et un affiche un grand nombre d’éléments. On ne va pas tous les passés en revue rassurez vous. Aujourd’hui, je vous propose un moyen simple de lister les process non killable. C’est ultra simple car il suffit de lire la colonne status de PS.

Cette colonne contient généralement une ou deux lettres :

  • R : en cours
  • S : interrompable
  • s : c’est une session maitre
  • l : multi-threadé
  • < : priorité haute
  • + : processus d’arrière plan
  • D : non killable

C’est se dernier cas qui peut être plus gênant car ce process ne peut être arrêté. Et pour lister les processus en fonction d’un statut c’est awk :

ps aux | awk '{if ($8 ~ "D") print $0}'

Pour le stopper ce n’est pas simple car un kill -9 du pid ne marchera pas. On peut éventuellement tenter un reboot forcé :

reboot -n -f

C’est un peu moche c’est clair. J’imagine qu’avec un lsof on peut aussi identifié le filesystem utilisé et le démonté. C’est pas beaucoup plus jolie.

Plus d’infos sur le site noah.org et bien sûr la man page de PS

[Bash] : lister et calculer les fréquences des erreurs apache depuis les logs… et un peu de SEO

Comment visualiser la santé d’un serveur web ? ou comment suivre son seo par les logs apache ?

Statistiques des logs apache

Dans le premier cas, une partie de la solution  pourrait être de commencer par lister les erreurs apache et de faire quelques statistiques avec. La plupart d’entre vous le savent, les logs apache ce situent dans /var/log/apache2/error.log.

Il peut exister des petites variantes en fonction de la configuration des vhost. Pour vérifier, je vous invite donc à vous rendre dans le vhost en question /etc/apache2/sites-enabled/monvhost. Ouvrez ce fichier et vérifiez la localisation des erreurs, c’est la ligne commençant par « ErrorLog. Parfois à la place de apache2 vous pouvez avoir du httpd suivant les daemons.

images

Par exemple, il peut être intéressant de lister les différentes erreurs et de voir celles qui reviennent le plus souvent. Voici comment éplucher /var/log/apache2/error.log à coup de awk. A adapter en fonction de la localisation des logs (à voir avec la conf de vos vhosts).

cat /var/log/apache2/error.log\
| awk '{out=$9;for(i=9;i<=NF;i++){out=out" "$i}; print out}'\
| sed s/,\ referer.*// | uniq -c | sort -nr

Donc :

  • on ouvre error.log
  • on remet en forme les erreurs
  • on limite les recherches aux lignes qui nous intéressent
  • on tri et on regroupe avec sort et uniq

Pour aller plus loin, n’oubliez pas que vous pouvez augmenter le niveau de log avec la variable « LogLevel » qui peut prendre la valeur (par ordre de criticité) :

  • emerg
  • alert
  • crit
  • error
  • warn
  • notice

Enfin, vous pouvez aussi améliorer les lignes de logs en redéfinissant les CustomLog.

Et le SEO là-dedans ?

L’idée est simplement d’expertiser le passage des crawler (google ou autres) sur vos url.

Pour ceux qui réalisent du SEO, vous pouvez aussi faire une analyse spécifique des logs. Voici un article spécifique sur ce domaine assez pointu. D’autres chercheront à supprimer les logs relatifs au bot SEO car ils leur apporteront peu d’informations utiles.

Et toujours dans le domaine du SEO, pour pousser toujours plus loin votre expertise, vous pouvez installer un conteneur docker intitulé oncrawl-elk. Ce conteneur s’installe en parallèle de votre apache. Il vous servira à analyser vos logs apache avec l’aide de kibana, logstash et elasticsearch.

[Linux] : DD – Comment tester la vitesse d’écriture et de lecture d’un disque ? (IO)

Sysadmin, encore un classique pour vous avec la commande DD. Cette commande permet de recopier des iso sur un disque mais ça on le verra une prochaine fois. Comment tester la vitesse d’écriture ou de lecture sur un disque ? (on parle aussi d’IO).

Voici une commande assez logique :

└─ $ ▶ dd if=/dev/zero of=tempfile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 9,30887 s, 115 MB/s

Donc :

  • if : le fichier input (en l’occurence on peut tester avec /dev/zero)
  • of : le fichier output (on teste sur tempfile pour l’exemple)
  • bs : taille des blocks
  • count : nombre de blocks

On a donc un débit d’écriture de 115 MB/s.

Pour la lecture, ile st préférable de vider le cache pour lire sur le disque directement :

sudo /sbin/sysctl -w vm.drop_caches=3

Et maintenant on lance le test :

└─ $ ▶ dd if=tempfile of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 13,3231 s, 80,6 MB/s

Rien de plus simple on inverse la première commande. Et là on perd un peu en lecture 80,6 MB/s. Vous avez donc un moyen de voir la qualité de votre clé usb par exemple. Ou vous pouvez aussi faire des tests pour notamment si votre disque est rapide en IOps pour avoir des perfs en écriture (bases de données par exemple).

Et vous vous utilisez DD comment ?