<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cntlm on Zwindler's Reflection</title><link>https://blog.zwindler.fr/tags/cntlm/</link><description>Recent content in Cntlm on Zwindler's Reflection</description><generator>Hugo -- gohugo.io</generator><language>fr</language><copyright>Licensed under CC BY-SA 4.0</copyright><lastBuildDate>Sat, 18 Nov 2017 12:45:25 +0000</lastBuildDate><atom:link href="https://blog.zwindler.fr/tags/cntlm/index.xml" rel="self" type="application/rss+xml"/><item><title>Monitorez le fait que les URLs bloquées sont bien bloquées par le proxy</title><link>https://blog.zwindler.fr/2017/11/18/supervisez-vos-urls-bloquees-proxy/</link><pubDate>Sat, 18 Nov 2017 12:45:25 +0000</pubDate><guid>https://blog.zwindler.fr/2017/11/18/supervisez-vos-urls-bloquees-proxy/</guid><description>&lt;img src="https://blog.zwindler.fr/2017/11/check_proxy_http_url.webp" alt="Featured image of post Monitorez le fait que les URLs bloquées sont bien bloquées par le proxy" /&gt;&lt;h2 id="comment-je-vérifie-que-les-sites-bloqués-par-mon-proxy-sont-bien-bloqués-"&gt;Comment je vérifie que les sites bloqués par mon proxy sont bien bloqués ?
&lt;/h2&gt;&lt;p&gt;Il y a plein de raisons qui peuvent expliquer qu’un site non légitime soit bloqué sur un lieu de travail (par exemple). Et autant de raisons qui font que, parfois, les proxies ne bloquent pas bien des sites que vous aviez pourtant bloqués !&lt;/p&gt;
&lt;p&gt;Pour tout ce qui est supervision des pages web, Nagios fourni le plugin &lt;strong&gt;check_http&lt;/strong&gt;, dans les &lt;em&gt;nagios-plugins&lt;/em&gt; (collection officielle de plugins), et qui permet de vérifier qu’une page web donnée est accessible (ou non).&lt;/p&gt;
&lt;h2 id="limitations"&gt;Limitations
&lt;/h2&gt;&lt;p&gt;Cependant, il existe plusieurs cas où ce plugin ne « fonctionne pas » comme je le souhaite :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;D’abord, dans le cas où l’URL checkée renvoie un 30x (redirection), le check_http considère que c’est bon et ne va pas chercher plus loin. Hors, il arrive que le site soit down au-delà de la redirection. Dans ce cas là, check_http ne nous notifie pas de l’échec.&lt;/li&gt;
&lt;li&gt;Ensuite, dans le cas où vous voulez traverser un proxy pour vérifier si une page est accessible ou non comme dans mon introduction, vous ne pouvez pas spécifier si un code retour 40x est une bonne chose ou non. Dans tous les cas, avec check_http, un 40x sera considéré comme un WARNING, jamais comme un CRITICAL ou un OK.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour résoudre ces problèmes, j’ai donc réécris un petit script bash simple, permettant de résoudre tous les cas ci-dessus. Avec &lt;strong&gt;check_proxy_http_url&lt;/strong&gt;, vous pouvez vérifier des URLs en spécifiant un proxy, suivre correctement les redirections (301 ou 302 par ex.) et spécifier si le fait qu’une page soit accessible (ou pas accessible) est une bonne chose ou non.&lt;/p&gt;
&lt;h2 id="installation"&gt;Installation
&lt;/h2&gt;&lt;p&gt;Le script est simplissime. Pour des raisons de facilité je me suis simplement appuyé sur un script &lt;strong&gt;bash&lt;/strong&gt; et de &lt;strong&gt;wget&lt;/strong&gt;, présents sur la plupart des serveurs par défaut. Il n’y a pas d’autres prérequis.&lt;/p&gt;
&lt;p&gt;Dans un futur (plus ou moins) proche j’ajouterai également une compatibilité avec &lt;strong&gt;cURL&lt;/strong&gt;, qui a tendance à le remplacer.&lt;/p&gt;
&lt;h2 id="usage"&gt;Usage
&lt;/h2&gt;&lt;p&gt;Là encore, j’ai fait au plus simple. Le script dispose d’un nombre limité d’arguments, permettant de réaliser les usecases indiqués précédemment.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;/var/lib/nrpe/plugins/check_proxy_http_url.sh -u TARGET_URL [-p PROXY_ADDRESS:PROXY_PORT] [-r] [-v]
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;TARGET_URL : obligatoire - l’URL que vous souhaitez superviser. Par défaut, un code retour de type 200 induira un OK, un 4XX/5XX un CRITICAL&lt;/li&gt;
&lt;li&gt;PROXY_ADDRESS &amp;amp; PROXY_PORT : optionnels - le hostname ou l’adresse de votre proxy, si nécessaire&lt;/li&gt;
&lt;li&gt;-r : optionnel - permet d’inverser les codes retours de Nagios. Un code retour 200 induira un CRITICAL (URL qui est accessible alors qu’elle ne le devrait pas) et un 4XX/5XX induira un OK&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="exemples"&gt;Exemples
&lt;/h2&gt;&lt;p&gt;Vérifier que http://@IPsome_forbidden_website.com n’est pas accessible et renvoyer un CRITICAL sinon.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[root@lanhost ~]# /var/lib/nrpe/plugins/check_proxy_http_url.sh -u some_forbidden_website.com -r
OK: URL some_forbidden_website.com isn&amp;#39;t available and it shouldn&amp;#39;t - 403
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Vérifier que http://@IPsome_allowed_website_that_isnt_accessible.com n&amp;rsquo;est pas accessible et renvoyer un CRITICAL sinon.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@lanhost ~&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="c1"&gt;# /var/lib/nrpe/plugins/check_proxy_http_url.sh -p internal_proxy:8181 -u some_allowed_website_that_isnt_accessible.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CRITICAL: URL some_allowed_website_that_isnt_accessible.com isn&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;t available and it should - &lt;span class="m"&gt;403&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="code-source"&gt;Code source
&lt;/h2&gt;&lt;p&gt;Comme d’habitude avec mes plugins « Nagios compatibles », les sources sont disponibles sur Github à l’adresse suivante :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/zwindler/check_proxy_http_url" target="_blank" rel="noopener"
&gt;github.com/zwindler/check_proxy_http_url&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le lien pour &lt;a class="link" href="https://exchange.nagios.org/directory/Plugins/Network-Protocols/HTTP/check_proxy_http_url/details" target="_blank" rel="noopener"
&gt;Nagios Exchange est également disponible ici !&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mes autres plugins sont également disponibles sur le Github :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.zwindler.fr/2015/07/16/plugin-check_mem_ng-sh-compatible-rhel-7/" &gt;Plugin check_mem_ng.sh compatible RHEL 7+&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.zwindler.fr/2017/04/25/plugin-de-supervision-rlp-emc%C2%B2-check_emc_rlp/" target="_blank" rel="noopener"
&gt;check_emc_rlp : supervision des LUNs dans le RLP sur baies VNX EMC²&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.zwindler.fr/2016/11/09/plugin-check_wlst_sessions-weblogic-9/" &gt;Plugin de supervision check_wlst_sessions (WebLogic 9+)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Utiliser le gestionnaire d’extension Perl CPAN derrière un proxy</title><link>https://blog.zwindler.fr/2017/03/29/utiliser-perl-cpan-derriere-proxy/</link><pubDate>Wed, 29 Mar 2017 12:00:26 +0000</pubDate><guid>https://blog.zwindler.fr/2017/03/29/utiliser-perl-cpan-derriere-proxy/</guid><description>&lt;img src="https://blog.zwindler.fr/2017/03/cpan.webp" alt="Featured image of post Utiliser le gestionnaire d’extension Perl CPAN derrière un proxy" /&gt;&lt;h2 id="aaaah-cpan-un-vrai-bonheur"&gt;Aaaah, CPAN, un vrai bonheur
&lt;/h2&gt;&lt;p&gt;Ceux qui me suivent savent que, bien qu’il m’arrive d’utiliser Perl de temps en temps (et même de coder un peu de Perl, ce qui m’a fait acheter Learning Perl et Programing Perl de chez O’Reilly), je passe surtout la plupart de mon temps à pester contre le CPAN (&lt;a class="link" href="https://blog.zwindler.fr/2010/09/08/installer-3-plugins-nagios-dans-eon-1-2-coupe-dinternet-level-2/" &gt;voir cet article où je détaille entièrement comment installer un simple plugin Nagios sans accès à Internet&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/11/cpan.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Car CPAN et les modules/dépendances Perl, c’est bien, mais c’est quand même mieux quand on a accès à Internet !&lt;/p&gt;
&lt;h2 id="pas-dinternet-dans-mon-dc-ou-presque"&gt;Pas d’Internet dans mon DC (ou presque)
&lt;/h2&gt;&lt;p&gt;Il n’est pas rare que je n’ai pas accès à Internet lorsque j’installe un serveur, et c’est généralement dans ce genre de cas qu’on essaye de trouver des bidouilles.&lt;/p&gt;
&lt;p&gt;Par exemple, dans les DC qui n’ont accès qu’à un proxy avec authentification NTLMv2 (Microsoft), je n’hésite pas à installer &lt;a class="link" href="http://cntlm.sourceforge.net/" target="_blank" rel="noopener"
&gt;cntlm&lt;/a&gt; (ou avant ntlmaps). C’est crade, mais ça me permet d’avoir mon proxy pour Yum, wget, etc&amp;hellip; qui ne seraient pas (ou mal) gérés autrement. Et ça m’a sauvé bien des fois !&lt;/p&gt;
&lt;p&gt;Dans le cas qui nous concerne dans cet article sur CPAN, j’ai découvert avec stupeur qu’il existe un « shell » CPAN, auquel on peut tout simplement ajouter une configuration particulière, notamment pour lui donner un proxy !&lt;/p&gt;
&lt;p&gt;Voilà de quoi régler une partie de mes problèmes !&lt;/p&gt;
&lt;p&gt;Pour activer le shell CPAN, deux méthodes (similaires) :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;perl -MCPAN -e shell
#ou
cpan
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="configurer-le-proxy-pour-cpan"&gt;Configurer le proxy pour CPAN
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;o conf init /proxy/
If you&amp;#39;re accessing the net via proxies, you can specify them in the
CPAN configuration or via environment variables. The variable in
the $CPAN::Config takes precedence.
&amp;lt;ftp_proxy&amp;gt;
Your ftp_proxy? [] @IP:&amp;lt;port&amp;gt;
&amp;lt;http_proxy&amp;gt;
Your http_proxy? [] @IP:&amp;lt;port&amp;gt;
&amp;lt;no_proxy&amp;gt;
Your no_proxy? [] @IP:&amp;lt;port&amp;gt;
Please remember to call &amp;#39;o conf commit&amp;#39; to make the config permanent!
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Et comme nous sommes disciplinés, nous n’oublierons pas d’enregistrer les modifications avec la commande indiquée plus haut&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;o conf commit
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="désactiver-le-proxy"&gt;Désactiver le proxy
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;o conf no_proxy 1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Et on sauvegarde !&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;o conf commit
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="bonus-track--forcer-le-proxy-http-plutôt-que-ftp"&gt;Bonus track : forcer le proxy HTTP plutôt que FTP
&lt;/h3&gt;&lt;p&gt;Je me suis retrouvé avec CPAN qui essayait à un moment donner de passer par FTP pour télécharger les packages alors que je n’avais qu’un proxy HTTP. Et pour ce problème particulier, je suis tombé sur cette page sur serverrfault qui donne quelques clés pour s’en sortir :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Simplest way of having it not use FTP is to shove HTTP URLs on the front of your urllist - or replace it completely like sebastionopilla said.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pour afficher les URLs utilisées&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;o conf urllist
urllist
0 [http://example.org/]
1 [http://example.org/]
2 [http://example.org/CPAN/]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Exclure une URL de la configuration (un miroir par exemple)&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;o conf urllist unshift http://example.org/here/
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pour tout vider&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;o conf urllist -
o conf urllist shift
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Source : &lt;a class="link" href="http://serverfault.com/questions/130690/force-cpan-to-download-via-http/292696" target="_blank" rel="noopener"
&gt;serverfault.com/questions/130690/force-cpan-to-download-via-http/292696&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>