URL: https://linuxfr.org/users/somm15/journaux/ossec-et-reponse-active-pour-asterisk Title: OSSEC et réponse active pour Asterisk Authors: Simon Gillet Date: 2013年12月17日T23:04:23+01:00 License: CC By-SA Tags: sécurité, linux, asterisk, sip et téléphonie Score: 13 SPOILER: a la fin, je met un décodeur correct pour bloquer les brute force sur asterisk avec OSSEC Comme beaucoup d'entre vous, j'héberge un serveur Asterisk et je reçois beaucoup de tentatives de brute-forces tous les jours. Mon amis [OSSEC](http://www.ossec.net) est censé m'aider à gérer ces situations. Pour ceux qui ne connaissent pas, OSSEC est un host IDS assez bien foutu et Open Source (bon, ok, j'ai pas vérifié la licence). Les lignes de lot ressemblent à ça: Dec 17 22:37:25 new asterisk[20110]: NOTICE[20127]: chan_sip.c:25030 in handle_request_register: Registration from '"6100" ' failed for '85.25.110.243:5188' - Wrong password Sauf que OSSEC, ben il s'en fout. Il détecte bien des problèmes (dans /var/ossec/logs/alerts/alerts.log: ** Alert 1387311140.2271: - syslog,asterisk,authentication_failed, 2013 Dec 17 21:12:20 new->/var/log/syslog Rule: 6210 (level 5) -> 'Login session failed.' Dec 17 21:12:18 new asterisk[5364]: NOTICE[5387]: chan_sip.c:25030 in handle_request_register: Registration from '"6001" ' failed for '85.25.110.243:5581' - Wrong password Hélas, il ne veut pas faire de réponse active (pcq oui, OSSEC fait de la réponse active). Par défaut, OSSEC bloque toutes les alertes de niveau supérieur ou égal à 10. Je me dis c'est bien, je vais augmenter le niveau des alertes asterisk (pour ceux qui sont malin, mon alerte, la 6210 est de niveau 5). Facile, je vais dans /var/ossec/rules/asterisk_rules.xml et je mets ma règle au niveau 10... et là... ben ça marche pas non plus. Mais c'est cool, j'ai dit à OSSEC que attaquer asterisk, c'est vraiment pas bien. Je vous passe environs 102 autres essais. Enfin, je décide de m'attaquer aux décodeurs. Il y a une super commander qui permet de tester une ligne de log et de voir comment elle est traitée: root@new:/var/ossec/logs# ../bin/ossec-logtest 2013年12月17日 22:33:32 ossec-testrule: INFO: Reading local decoder file. 2013年12月17日 22:33:32 ossec-testrule: INFO: Started (pid: 26097). ossec-testrule: Type one log per line. Dec 17 22:31:37 new asterisk[20110]: NOTICE[20127]: chan_sip.c:25030 in handle_request_register: Registration from '"6100" ' failed for '85.25.110.243:5188' - Wrong password **Phase 1: Completed pre-decoding. full event: 'Dec 17 22:31:37 new asterisk[20110]: NOTICE[20127]: chan_sip.c:25030 in handle_request_register: Registration from '"6100" ' failed for '85.25.110.243:5188' - Wrong password' hostname: 'new' program_name: 'asterisk' log: 'NOTICE[20127]: chan_sip.c:25030 in handle_request_register: Registration from '"6100" ' failed for '85.25.110.243:5188' - Wrong password' **Phase 2: Completed decoding. decoder: 'asterisk' **Phase 3: Completed filtering (rules). Rule id: '6210' Level: '10' Description: 'Login session failed.' **Alert to be generated. Et là, bingo! C'est quoi ce décodeur "asterisk" qui me met 3 fois rien comme détails. Il n'extrait même pas la source IP ou le port de destination! Là j'édite /var/ossec/etc/decoder.xml et je remarque que c'est un décodeur super basique qui est utilisé, ceux qui extraient les infos utiles, ne fonctionnent pas. ^asterisk Ca c'est bon, c'est le parent de base. Le problème est plus là: asterisk ^NOTICE[\d+]: \S+ in \S+: Registration from ^\S+ failed for '(\d+.\d+.\d+.\d+)' srcip C'est pas du tout le format de mes lots. Ce serait plus ça qui est bon? asterisk ^NOTICE[\d+]: \S+ in \S+: Registration from \S+ \S+ ^failed for '(\S+):(\d+)' srcip,srcport De même asterisk Registration from failed for '(\d+.\d+.\d+.\d+)' srcip Doit être remplacé par: asterisk Registration from failed for '(\S+):(\d+)' srcip,srcport Pour ceux qui suivent, j'ai commenté les décodeurs foireux et j'en ai fait de nouveau, sans doutes un peu foireux aussi, mais qui au moins bloquent les alertes de mauvais login asterisk. Maintenant, à chaque mauvais login, on reçoit un bon gros ban de 3600 secondes grâce à la réponse active activée par défaut pour tous les événements de niveau 10 ou plus. Demain, si ça intéresse quelqu'un, on verra comment ne pas modifier la priorité des règles asterisk (pcq c'est quand même pas très propre) et faire une règle spécifique pour asterisk. Pcq avec la version actuelle, vous vous faites bloquer 10 minutes si vous vous trompé de mot de passe (ça pousse à la discipline).

AltStyle によって変換されたページ (->オリジナル) /