Featured image of post Monitorez le fait que les URLs bloquées sont bien bloquées par le proxy

Monitorez le fait que les URLs bloquées sont bien bloquées par le proxy

Ecrit par ~ zwindler ~

Comment je vérifie que les sites bloqués par mon proxy sont bien bloqués ?

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 !

Pour tout ce qui est supervision des pages web, Nagios fourni le plugin check_http, dans les nagios-plugins (collection officielle de plugins), et qui permet de vérifier qu’une page web donnée est accessible (ou non).

Limitations

Cependant, il existe plusieurs cas où ce plugins ne « fonctionne pas » comme je le souhaite :

  • 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.
  • 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.

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 check_proxy_http_url, 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.

Installation

Le script est simplissime. Pour des raisons de facilité je me suis simplement appuyé sur un script bash et de wget, présents sur la plupart des serveurs par défaut. Il n’y a pas d’autres prérequis.

Dans un futur (plus ou moins) proche j’ajouterai également une compatibilité avec cURL, qui a tendance à le remplacer.

Usage

Là encore, j’ai fais au plus simple. Le script dispose d’un nombre limité d’arguments, permettant de réaliser les usecases indiqués précédemment.

/var/lib/nrpe/plugins/check_proxy_http_url.sh -u TARGET_URL [-p PROXY_ADDRESS:PROXY_PORT] [-r] [-v]
  • 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
  • PROXY_ADDRESS & PROXY_PORT : optionnels - le hostname ou l’adresse de votre proxy, si nécessaire
  • -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

Exemples

Vérifier que http://some_forbidden_website.com n’est pas accessible et renvoyer un CRITICAL sinon.

[root@lanhost ~]# /var/lib/nrpe/plugins/check_proxy_http_url.sh -u some_forbidden_website.com -r
OK: URL some_forbidden_website.com isn't available and it shouldn't - 403

Vérifier que http://some_allowed_website_that_isnt_accessible.com est pas accessible et renvoyer un CRITICAL sinon.

[root@lanhost ~]# /var/lib/nrpe/plugins/check_proxy_http_url.sh -p internal_proxy:8181 -u some_allowed_website_that_isnt_accessible.com
CRITICAL: URL some_allowed_website_that_isnt_accessible.com isn't available and it should - 403

Code source

Comme d’habitude avec mes plugins « Nagios compatibles », les sources sont disponibles sur Github à l’adresse suivante :

Le lien pour Nagios Exchange est également disponible ici !

Mes autres plugins sont également disponibles sur le Github :

Généré avec Hugo
Thème Stack conçu par Jimmy