Archives pour la catégorie ‘Système’

Linux : modifier l’IP de sortie en configuration multi-alias

# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 00:1e:c9:ae:fc:6f brd ff:ff:ff:ff:ff:ff
inet 172.16.170.4/16 brd 172.29.255.255 scope global eth0:1
inet 172.16.170.5/16 brd 172.29.255.255 scope global secondary eth0:2
inet 172.16.170.6/16 brd 172.29.255.255 scope global secondary eth0:3
inet 172.16.170.7/16 brd 172.29.255.255 scope global secondary eth0:4
inet 172.16.0.3/16 brd 172.29.255.255 scope global secondary eth0
inet6 fe80::21e:c9ff:feae:fc6f/64 scope link
valid_lft forever preferred_lft forever
# ip route
default via 172.16.0.1 dev eth0
172.16.0.0/16 dev eth0  proto kernel  scope link  src 172.16.170.4
# ip route get 8.8.8.8
8.8.8.8 via 172.16.0.1 dev eth0  src 172.16.170.4
cache
# ip route replace default via 172.16.0.1 src 172.16.0.3
# ip route get 8.8.8.8
8.8.8.8 via 172.16.0.1 dev eth0  src 172.16.0.3
cache

Systemd : unité timer pour simuler un script cron

# cat cleanup.1.timer
[Unit]
Description=Cleanup Timer

[Timer]
OnCalendar=06:00
Unit=cleanup.1.service

[Install]
WantedBy=timers.target

[X-Fleet]
MachineID=b39596623f6540568ea3ea25a4fa8752
# cat cleanup.1.service
[Unit]
Description=Cleanup Service

[Service]
TimeoutStartSec=0
ExecStart=/bin/bash -c "docker rmi $(docker images|grep \"^<none>"|awk \"{print \$3}\""

[X-Fleet]
MachineID=b39596623f6540568ea3ea25a4fa8752

Pour le déploiement avec fleet :

# fleetctl submit cleanup.1.service
# fleetctl load cleanup.1.service
# fleetctl submit cleanup.1.timer
# fleetctl load cleanup.1.timer
# fleetctl start cleanup.1.timer

Fleet : afficher un fichier service

# fleetctl cat monitoring.1.service
[Unit]
Description=monitoring
Requires=docker.service
Requires=logging.1.service
After=docker.service
After=logging.1.service

[Service]
ExecStartPre=-/usr/bin/docker kill monitoring
ExecStartPre=-/usr/bin/docker rm monitoring
ExecStartPre=/usr/bin/docker pull 1.2.3.4:5000/monitoring:latest
ExecStart=/usr/bin/docker run --name monitoring -p 10050:10050 -v /var/run/docker.sock:/coreos/var/run/docker.sock -v /proc:/coreos/proc:ro -v /sys:/coreos/sys:ro -v /dev:/coreos/dev:ro -v /tmp/logging/dev/log:/dev/log --restart=always 1.2.3.4:5000/monitoring:latest coreos1 80.81.82.83
ExecStop=/usr/bin/docker stop monitoring
TimeoutStartSec=900

[X-Fleet]
MachineID=b39596623f0000568ea3ea25a4fa0000

Docker : forcer le rédémarrage d’un container

# docker run --restart=always logging
# docker run --restart=on-failure:5 monitoring

CoreOS : monitoring d’un serveur avec Zabbix

Je viens de publier mes sources nécessaires à la création d’un container Docker avec un agent Zabbix patché par mes soins dans le but de monitorer un serveur CoreOS et ses containers Docker.

URL du dépôt : https://github.com/bhuisgen/docker-zabbix-coreos

PHP-FPM : effectuer un strace en live

# ps auxw | grep php | awk '{print"-p " $2}' | xargs strace

Debian : réinstaller un package

# apt-get install --reinstall package

Linux : installation d’un générateur d’entropie

# apt-get install haveged

OpenSSH : récupération des clés publiques depuis un serveur OpenLDAP

Les dernières versions d’OpenSSH (version 6) permettent de récupérer les clés SSH des utilisateurs depuis une source externe. Je présente ici les étapes nécessaires à la mise en place d’une récupération des clés publiques depuis un serveur LDAP.

Installation

Sous Debian 7, il est nécessaire d’installer les packages depuis les backports Wheezy pour pouvoir bénéficier des dernirès versions d’OpenSSH :

deb http://ftp.debian.org/debian/ wheezy-backports main
# apt-cache show openssh-server
# apt-get install openssh-server=1:6.4p1-1~bpo70+1 openssh-client=1:6.4p1-1~bpo70+1

Configuration

Le script de récupération des clés publiques est le suivant :

# touch /etc/ssh/ldap-authorizedkeys.sh && chmod +x /etc/ssh/ldap-authorizedkeys.sh
# vim /etc/ssh/ldap-authorizedkeys.sh
URI="ldap://ldap1.my.domain,ldap://ldap2.my.domain"
BASE="dc=my,dc=domain"
BINDDN="cn=proxy,dc=my,dc=domain"
BINDPW="$ecret"
OPTIONS="-ZZ"

LOGIN=$1

ldapsearch -H ${URI} -D "${BINDDN}" -w "${BINDPW}" -b "${BASE}" ${OPTIONS} '(&(objectClass=posixAccount)(uid='"$LOGIN"'))' 'sshPublicKey' \
    | sed -n '/^ /{H;d};/sshPublicKey:/x;$g;s/\n *//g;s/sshPublicKey: //gp'

Au niveau de la configuration du serveur SSH :

# vim /etc/ssh/sshd_config
AuthorizedKeysCommand /etc/ssh/ldap-authorizedkeys.sh
AuthorizedKeysCommandUser root

Le serveur SSH doit être redémarré :

# /etc/init.d/ssh restart

Reste à modifier la base LDAP en ajoutant l’attribut sshPublicKey contenant la clé publique à chaque objet LDAP utilisateur :

dn: uid=bhuisgen,ou=titi,ou=tata,ou=toto,dc=my,dc=domain
objectClass: ldapPublicKey
sshPublicKey: ******************

CentOS : lenteur des logins SSH

L’authentification GSS ralentit l’établissement des connexions SSH sous CentOS 6; la désactivation permet de corriger le problème :

# GSSAPI options
#GSSAPIAuthentication yes
#GSSAPICleanupCredentials yes
Haut de page