Archives pour mai, 2010

Bind : journaliser les requêtes DNS

Pour enregistrer l’ensemble des requêtes soumises à votre serveur DNS bind, il faut ajouter ce bloc à votre fichier de configuration :

// Logging
logging {
 category "default" { "debug"; };
 category "general" { "debug"; };
 category "database" { "debug"; };
 category "security" { "debug"; };
 category "config" { "debug"; };
 category "resolver" { "debug"; };
 category "xfer-in" { "debug"; };
 category "xfer-out" { "debug"; };
 category "notify" { "debug"; };
 category "client" { "debug"; };
 category "unmatched" { "debug"; };
 category "network" { "debug"; };
 category "update" { "debug"; };
 category "queries" { "debug"; };
 category "dispatch" { "debug"; };
 category "dnssec" { "debug"; };
 category "lame-servers" { "debug"; };

 channel "debug" {
 file "/var/log/named.log" versions 3 size 10m;
 print-time yes;
 print-category yes;
 };
};

L’ensemble des requêtes et opérations effectuées par le serveur sera alors logué. Voici un exemple de sortie type :

18-May-2010 09:46:06.775 queries: client 192.168.2.26#64549: query: www.liberation.fr IN A +
18-May-2010 09:46:06.776 queries: client 192.168.2.26#64550: query: images.apple.com IN A +
18-May-2010 09:46:06.776 queries: client 192.168.2.26#64551: query: permanent.nouvelobs.com IN A +
18-May-2010 09:46:06.823 queries: client 192.168.1.4#58414: query: pagead2.googlesyndication.com IN A +
18-May-2010 09:46:06.997 queries: client 192.168.2.26#64552: query: tempsreel.nouvelobs.com IN A +
18-May-2010 09:46:07.022 queries: client 192.168.1.4#57886: query: googleads.g.doubleclick.net IN A +
18-May-2010 09:46:08.023 queries: client 192.168.1.4#57582: query: oswald.pages.de IN A +
18-May-2010 09:46:08.024 queries: client 192.168.1.4#61346: query: twitter.com IN A +
18-May-2010 09:46:08.024 queries: client 192.168.1.4#51376: query: www.facebook.com IN A +
18-May-2010 09:46:08.733 queries: client 192.168.100.25#43974: query: 10.1.168.192.sbl-xbl.spamhaus.org IN A +
18-May-2010 09:46:08.797 queries: client 192.168.100.25#43974: query: 10.1.168.192.bl.spamcop.net IN A +
18-May-2010 09:46:08.859 queries: client 192.168.100.25#43974: query: 10.1.168.192.cbl.abuseat.org IN A +
18-May-2010 09:46:08.859 queries: client 192.168.100.25#43974: query: 10.1.168.192.rbl.mail-abuse.org IN A +
18-May-2010 09:46:09.317 queries: client 192.168.2.29#57087: query: www.facebook.com IN A +
18-May-2010 09:46:09.516 queries: client 192.168.100.25#43974: query: hookah.nl IN MX +
18-May-2010 09:46:09.558 lame-servers: host unreachable resolving 'ns2.sekeris.nl/A/IN': 2a00:d78:0:102:193:176:144:2#53
18-May-2010 09:46:09.558 lame-servers: host unreachable resolving 'ns2.sekeris.nl/AAAA/IN': 2001:7b8:606::28#53
18-May-2010 09:46:09.558 lame-servers: host unreachable resolving 'ns2.sekeris.nl/A/IN': 2001:500:2e::1#53
18-May-2010 09:46:09.558 lame-servers: host unreachable resolving 'ns2.sekeris.nl/AAAA/IN': 2a00:d78:0:102:193:176:144:2#53
18-May-2010 09:46:09.558 lame-servers: host unreachable resolving 'ns2.sekeris.nl/AAAA/IN': 2001:610:0:800d::2#53

Exim : loguer le sujet des mails

Suite à mon article pour Postfix, voici la méthode pour ajouter le sujet des mails dans les logs d’Exim. L’option suivante est à ajouter dans votre fichier de configuration :

log_selector = +subject

Postfix : loguer le sujet des mails

Un serveur mail produit un ou plusieurs journaux détaillés de l’ensemble de ses traitements. Il est pourtant difficile de retrouver la trace d’un envoi de mail, si bien qu’on regrette que le sujet n’y soit pas enregistré.

Pour y remédier sous Postfix, il faut ajouter l’option de configuration suivante à votre fichier main.cf :

header_checks = regexp:/etc/postfix/header_checks

et créer le fichier header_checks, ici dans le répertoire /etc/postfix, avec ce contenu :

/^Subject:/ WARN

Une fois le serveur SMTP redémarré, le journal enregistre le sujet des mails :

Apr 16 01:29:12 mail postfix/smtpd[66160]: setting up TLS connection from ANancy-156-1-12-239.w83-203.abo.wanadoo.fr[83.203.135.239]
Apr 16 01:29:12 mail postfix/smtpd[66160]: Anonymous TLS connection established from ANancy-156-1-12-239.w83-203.abo.wanadoo.fr[83.203.135.239]: TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)
Apr 16 01:29:13 mail postfix/smtpd[66160]: 07CE52AA2085: client=ANancy-156-1-12-239.w83-203.abo.wanadoo.fr[83.203.135.239], sasl_method=PLAIN, sasl_username=bhuisgen@hbis.fr
Apr 16 01:29:13 mail postfix/cleanup[66165]: 07CE52AA2085: message-id=<4BC7A148.8070204@hbis.fr>
Apr 16 01:29:13 mail postfix/cleanup[66165]: 07CE52AA2085: warning: header Subject: test header check from ANancy-156-1-12-239.w83-203.abo.wanadoo.fr[83.203.135.239]; from= to= proto=ESMTP helo=
Apr 16 01:29:13 mail postfix/qmgr[66156]: 07CE52AA2085: from=, size=1527, nrcpt=1 (queue active)
Apr 16 01:29:13 mail dovecot: deliver(bhuisgen@hbis.fr): sieve: msgid=<4BC7A148.8070204@hbis.fr>: stored mail into mailbox 'INBOX'
Apr 16 01:29:13 mail postfix/pipe[66166]: 07CE52AA2085: to=, relay=dovecot, delay=0.25, delays=0.23/0/0/0.01, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 16 01:29:13 mail postfix/qmgr[66156]: 07CE52AA2085: removed

Réseau : détecter les adresses IP utilisées

Pour détecter automatiquement l’ensemble des IP utilisées sur un réseau particulier, le scanneur nmap est d’un grand secours :

$ sudo nmap -T4 -sP 192.168.1.0/24

La sortie peut être plus verbeuse (adresse MAC, constructeur de la carte réseau) si le poste est connecté sur le réseau scanné.

Amavis : autoriser les archives protégées par mot de passe

Par défaut, Amavis vérifie les extensions des pièces jointes aux messages électroniques filtrés. Les fichiers binaires sont bloqués tout comme les extensions de fichiers Windows sensibles. Les archives de fichiers sont également analysées et bannies si un des fichiers contient ces extensions.

Pour bypasser cette analyse, la pratique courante est d’archiver les fichiers et de protéger l’archive par un mot de passe. Toutefois, la configuration d’Amavis doit être adaptée en y insérant un test en ligne 5 :

$banned_filename_re = new_RE(
### BLOCKED ANYWHERE
# qr'^UNDECIPHERABLE$',  # is or contains any undecipherable components
# Allow if it is or contains any undecipherable components:
[ qr'^UNDECIPHERABLE$'=> 0 ],
qr'^\.(exe-ms|dll)$',                   # banned file(1) types, rudimentary

Les utilisateurs de votre messagerie pourront alors recevoir et envoyer des messages avec des archives protégées contenant des fichiers sensibles.

OpenSSH : journaliser les transferts SFTP

OpenSSH journalise par défaut les évènements d’erreur et d’authentification. Ceci n’est pas suffisant dans le cas d’un serveur SFTP public, où une trace complète des transferts est nécessaire. Pour rectifier le tir et obtenir un fichier journal dédié aux connexions SFTP, il est nécessaire de modifier la configuration d’OpenSSH, en particulier celle du processus sftp-server.

Pour ce faire, dans le fichier de configuration du serveur /etc/ssh/sshd_config, ajoutez les deux options suivantes :

# override default of no subsystems
Subsystem       sftp    /usr/lib/misc/sftp-server  -f LOCAL7 -l INFO

On déclare donc que le serveur SFTP doit envoyer tous les évènements possibles (niveau INFO) vers la facilité LOCAL7 du serveur de journalisation système. Vous pouvez évidemment la modifier si celle-ci est déjà utilisée par une autre application.

La seconde étape est dépendante de votre serveur de journalisation. Je présume ici qu’il s’agit de syslog-ng. Il convient donc de déclarer une destination, un filtre et la la règle associée. Tout ceci étant éclaté dans votre fichier de configuration pour respecter l’ordre de définition :

# destinations
destination sftp { file("/var/log/sftp.log"); };
[...]
# filters
filter f_sftp { facility(local7); };
[...]
# logs
log { source(src); filter(f_sftp); destination(sftp); };

Une fois le serveur OpenSSH et le serveur de journalisation redémarré, le logging est en place :

# tail sftp.log
May  2 21:15:54 tele2itwww1 sftp-server[15332]: opendir "/home/www/sites/tele2.it/www/scripts/exports/subscriptions_reports/2010/05/02"
May  2 21:15:54 tele2itwww1 sftp-server[15331]: closedir "/home/www/sites/tele2.it/www/scripts/exports/subscriptions_reports/2010/05/02"
May  2 21:15:54 tele2itwww1 sftp-server[15332]: closedir "/home/www/sites/tele2.it/www/scripts/exports/subscriptions_reports/2010/05/02"
May  2 21:15:55 tele2itwww1 sftp-server[15331]: open "/home/www/sites/tele2.it/www/scripts/exports/subscriptions_reports/2010/05/02/subscriptions_address_coverage_report_2010-05-02_1272808802.xls" flags READ mode 0666
May  2 21:15:55 tele2itwww1 sftp-server[15332]: open "/home/www/sites/tele2.it/www/scripts/exports/subscriptions_reports/2010/05/02/subscriptions_number_coverage_report_2010-05-02_1272808802.xls" flags READ mode 0666
May  2 21:15:55 tele2itwww1 sftp-server[15331]: close "/home/www/sites/tele2.it/www/scripts/exports/subscriptions_reports/2010/05/02/subscriptions_address_coverage_report_2010-05-02_1272808802.xls" bytes read 9728 written 0
May  2 21:15:55 tele2itwww1 sftp-server[15332]: close "/home/www/sites/tele2.it/www/scripts/exports/subscriptions_reports/2010/05/02/subscriptions_number_coverage_report_2010-05-02_1272808802.xls" bytes read 24576 written 0
May  2 21:15:57 tele2itwww1 sftp-server[15331]: session closed for local user cdevincenzo from [83.103.25.92]
May  2 21:15:57 tele2itwww1 sftp-server[15332]: session closed for local user cdevincenzo from [83.103.25.92]
May  2 21:15:57 tele2itwww1 sftp-server[14759]: session closed for local user cdevincenzo from [83.103.25.92]

Exim : désactiver les requêtes IDENT

Exim réalise par défaut des requêtes IDENT, correspondant à des connexions sortantes vers le port 113 des hôtes, afin de les identifier.  N’étant pas nécessaires d’un point de vue sécurité, ces requêtes ralentissent le traitement de chaque message. Pour y remédier, il est possible de les désactiver en ajoutant à votre fichier de configuration l’option suivante :

rfc1413_query_timeout = 0s

Le traitement des messages n’est donc plus ralenti inutilement.

Système : copie d’un disque par le réseau

Sur la machine cible :

# netcat -vv -l -p 7000 | dd of=/dev/hdb
listening on [any] 7000 ...
connect to [192.168.100.166] from maggie.interact.lu [192.168.100.100] 53106

Sur la machine source :

# dd if=/dev/hdb | netcat -vv 192.168.100.166 7000
Warning: Inverse name lookup failed for `192.168.100.166'
192.168.100.166 7000 (afs3-fileserver) open

OpenSSH : restreindre l’accès utilisateur en SFTP

Pour limiter l’accès sécurisé d’un utilisateur au mode SFTP uniquement, le plus simple est d’utiliser un shell prévu à cet effet. C’est le cas de rssh (Restricted Secure Shell) qui autorise l’accès unique, et au choix, aux commandes suivantes : scp, sftp, rsync et cvs. L’environnement peut être également chrooté (pour éviter le parcours de l’arborescence) mais cela implique une cohérence dans les accès au répertoire de base du chroot (par exemple /home), auquel sera ajouté automatiquement le login de l’utilisateur (/home/user).

Voici un exemple de fichier de configuration /etc/rssh.conf où seul l’accès SFTP est autorisé par défaut :

logfacility = LOG_USER
# Leave these all commented out to make the default action for rssh to lock
# users out completely...
#allowscp
allowsftp
#allowcvs
#allowrdist
#allowrsync
# set the default umask
umask = 022
# If you want to chroot users, use this to set the directory where the root of
# the chroot jail will be located
chrootpath = /home

La configuration étant faite, les comptes utilisateurs sont à modifier avec le changement du shell et également du groupe primaire, afin de gérer au mieux les permissions d’accès aux fichiers :

# usermod -s /usr/bin/rssh bhuisgen
# usermod -g clients bhuisgen

Enfin, un petit test de connexion :

$ ssh bhuisgen@127.0.0.1
Password:
Last login: Fri Mar 26 11:46:29 CET 2010 from bart.interact.lu on pts/3

This account is restricted by rssh.
Allowed commands: sftp

If you believe this is in error, please contact your system administrator.

Connection to 127.0.0.1 closed.

C’est bon, l’utilisateur n’a donc plus d’accès shell et il doit utiliser obligatoirement un client SFTP.

Système : trier les processus par nombre de descripteurs

# lsof -n | awk '{print $1}' | sort |  uniq -c | sort -rn | head

Pour classer uniquement par descripteur de type socket :

# lsof -ni | awk '{print $1}' | sort |  uniq -c | sort -rn | head
Haut de page