Archives auteur

Apache : désactiver le support SSLv2

<VirtualHost 172.16.0.14:443>
   ServerName www.site.fr
   DocumentRoot /home/www/sites/site.fr/www/html
   ErrorLog /home/www/sites/site.fr/www/logs/error_log
   Customlog /home/www/sites/site.fr/www/logs/access_log combined

   SSLEngine on
   SSLProtocol -all +SSLv3 +TLSv1
   SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM
   SSLCertificateFile /etc/apache2/ssl/www_site_fr.crt
   SSLCertificateKeyFile /etc/apache2/ssl/www_site_fr.key
</VirtualHost>

Nginx : désactiver le support SSLv2

server {
   listen       172.16.0.15:443;
   server_name  mon.site.fr;
   root         /usr/local/www/mon.site.fr;
   index        index.php;

   ssl                  on;
   ssl_certificate      ssl/mon_site_fr.crt;
   ssl_certificate_key  ssl/mon_site_fr.key;
   ssl_session_timeout  5m;
   ssl_protocols SSLv3 TLSv1;
   ssl_ciphers HIGH:!ADH:!MD5;
   ssl_prefer_server_ciphers   on;
}

Java : JAX-WS & exception utilisateur

La gestion des exceptions utilisateur au sein d’un webservice utilisant l’API JAX-WS doit respecter quelques contraintes afin de  transmettre l’ensemble des informations au client SOAP.

Voici un exemple pour une classe d’exception UserFault dont les détails optionnels sont implémentés par la classe UserFaultDetail :

@WebFault
public class UserFault extends Exception {
	private static final long serialVersionUID = 1L;
	private UserFaultDetail userFaultDetail;

	/**
	 * Constructs an <code>UserFault</code> object.
	 *
	 * @param message
	 *            the error message.
	 * @param userFaultDetail
	 *            the error details.
	 */
	public UserFault(String message, UserFaultDetail userFaultDetail) {
		super(message);
		this.userFaultDetail = userFaultDetail;
	}

	/**
	 * Constructs an <code>UserFault</code> object.
	 *
	 * @param message
	 *            the error message.
	 * @param userFaultDetail
	 *            the error details.
	 * @param cause
	 *            the error cause.
	 */
	public UserFault(String message, UserFaultDetail userFaultDetail,
			Throwable cause) {
		super(message, cause);
		this.userFaultDetail = userFaultDetail;
	}

	/**
	 * Returns the error details.
	 *
	 * @return the error details.
	 */
	public UserFaultDetail getFaultInfo() {
		return userFaultDetail;
	}
}
public class UserFaultDetail {
	public static final int ERROR_UNKNOWN = 0;
	public static final int ERROR_INVALIDAPIKEY = -1;
	private int code;

	/**
	 * Constructs a new <code>UserFaultDetail</code> object.
	 */
	public UserFaultDetail ()
	{
		this.code = UserFaultDetail.ERROR_UNKNOWN;
	}

	/**
	 * Constructs a new <code>UserFaultDetail</code> object.
	 * @param code the code of the fault.
	 */
	public UserFaultDetail (int code)
	{
		this.code = code;
	}

	/**
	 * Returns the code of the fault.
	 * @return the code.
	 */
	public int getCode() {
		return code;
	}

	/**
	 * Sets the code of the fault.
	 *
	 * @param code
	 */
	public void setCode(int code) {
		this.code = code;
	}
}

Munin : monitorer la température des disques durs sous FreeBSD & Mac OS X


Je vous fais part de mon patch pour le plugin hddtemp_smartctl de Munin afin que la température des disques durs puisse être monitorée sous FreeBSD, OpenBSD, NetBSD et Mac OS X :

http://exchange.munin-monitoring.org/plugins/hddtemp_smartctl/details

Pour rappel, ce plugin nécessite le port sysutils/smartmontools. La commande smartctl n’étant fonctionnelle que sous root, il faut adapter la configuration de Munin dans le fichier /usr/local/etc/munin/plugin-conf.d/plugins.conf :

[hddtemp_smartctl]
user root

Pour tester le bon fonctionnement du plugin, rien de plus simple :

$ perl /usr/local/etc/munin/plugins/hddtemp_smartctl
disk0.value 50

MySQL : activer le mode lecture seule

Pour empêcher les modifications de vos bases de données lors des opérations de maintenance, il est utile d’activer le mode read only de MySQL :

mysql> set GLOBAL read_only=true;

A cet instant, toutes les requêtes d’écritures seront refusées et seul l’utilisateur root pourra effectuer des modifications. Une fois terminées, il faut réactiver le mode read/write :

mysql> set GLOBAL read_only=false;

A noter qu’il existe la méthode du verrou exclusif. Dans ce cas, la connexion client de l’utilisateur root ne doit pas être coupée (le verrou serait automatiquement relâché) et toutes les requêtes d’écriture des utilisateurs, y compris root, seront mises en attente puis exécutées à la libération du verrou :

mysql> FLUSH TABLES WITH READ LOCK;
mysql> [...]
mysql> UNLOCK TABLES

OpenSSL : vérifier la date d’expiration d’un certificat de sécurité

Script pour vérifier la date d’expiration de vos certificats SSL :

#!/bin/bash
#
# check_cert.sh
#
# Boris HUISGEN <bhuisgen@hbis.fr>
#

if [ $# -eq 0 ];
then
   echo "$Usage: $0 <certificate_file>" ;
   exit 1;
fi

FILE=$1

if [ ! -e $FILE ] ; then
   echo "$1 file does not exist."
   exit 2;
fi

EXPIRE_DATE=$(openssl x509 -in $FILE -noout -enddate | cut -f2 -d=);

echo "Certificate file: $FILE";
echo "Expiration date: $EXPIRE_DATE";

exit 0;

Exemple :

# check_cert.sh /usr/local/etc/openvpn/server.crt
Certificate file: /usr/local/etc/openvpn/server.crt
Expiration date: Jun 24 14:31:45 2011 GMT

Mac OS X : placer les widgets Dashboard directement sur le bureau

Pour pouvoir utiliser vos widgets Dashboard directement depuis votre bureau, un paramètre caché est à activer :

$ defaults write com.apple.dashboard devmode YES

Il faut relancer le Dock ensuite :

$ killall Dock

Activez ensuite Dashboard par la touche F12, sélectionnez le widget et commencez à le déplacer. Tout en ne relâchant pas le bouton de la souris, appuyez sur F12. Le widget demeure à présent sur le bureau. Pour l’enlever, faites l’opération inverse.

Note : ce n’est vraiment utile qu’en configuration multi-écrans, étant donné que les widgets seront toujours au premier plan.

Apache : activer la compression gzip

Après avoir compilé et activé le module mod_deflate d’Apache, la directive suivante est à ajouter au virtual host :

<IfModule mod_deflate.c>
   SetOutputFilter DEFLATE

   # disable compression for broken browsers
   BrowserMatch ^Mozilla/4 gzip-only-text/html
   BrowserMatch ^Mozilla/4\.0[678] no-gzip
   BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
   BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

   # disable compression for images
   SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
   # disable compression for PDF files
   SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
   # disable compression for binaries and archives
   SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
   # proxy cache support
   Header append Vary User-Agent env=!dont-vary

   # deflate log support
   #DeflateFilterNote Input instream
   #DeflateFilterNote Output outstream
   #DeflateFilterNote Ratio ratio
   #LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
   #Customlog /var/log/apache2/deflate_log deflate
</IfModule>

FreeBSD : activer le support SSH depuis l’installation en mode ‘fixit’

Le mode ‘Fixit’ présent sur le CD / DVD d’installation de FreeBSD 8 est utile pour dépanner votre système ou encore effectuer une installation custom (ZFS et cie).

Pour améliorer votre confort, un vrai terminal est préférable, encore faut-il que le support SSH soit activé. Pour ce faire, on commence par l’initialisation réseau :

Fixit# ifconfig em0 192.168.1.166
Fixit# route add default 192.168.1.254
Fixit# echo 'nameserver 192.168.100.254' > /etc/resolv.conf

Ensuite, la configuration du serveur SSH :

Fixit# mkdir /etc/ssh
Fixit# cp /dist/etc/ssh/sshd_config /etc/ssh
Fixit# echo PermitRootLogin yes >> /etc/ssh/sshd_config
Fixit# ssh-keygen -t rsa1 -b 1024 -f /etc/ssh/ssh_host_key -N ''
Fixit# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
Fixit# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''

Et la configuration d’un environnement minimal pour l’utilisateur root (qui n’aura d’ailleurs aucun mot de passe) :

Fixit# mkdir /root
Fixit# ln -s /mnt2/bin/csh /bin/csh
Fixit# echo "setenv PATH ‘/bin:/sbin:/usr/bin:/usr/sbin:/stand:/mnt2/stand:/mnt2/bin:/mnt2/sbin:/mnt2/usr/bin:/mnt2/usr/sbin’" > /root/.cshrc
Fixit# echo “setenv EDITOR ‘/mnt2/usr/bin/ee’” >> /root/.cshrc
Fixit# echo “set prompt=’Fixit# ‘” >> /root/.cshrc
Fixit# /mnt2/usr/sbin/sshd

Et c’est parti, on peut maintenant agir à distance :

$ ssh root@192.168.1.166
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
	The Regents of the University of California.  All rights reserved.

Fixit#


Vi : conversion d’encodage des fichiers

L’éditeur vi permet de convertir rapidement l’encodage des fichiers.

Pour l’encodage UTF-8 :

$ vi fichier.txt
:set fileencoding=utf-8
:x

Pour l’encodage ISO-8859-1 :

$ vi fichier.txt
:set fileencoding=latin1
:x
Haut de page