Skip to content →

Fabien Vincent Posts

[Bind] Bindgraph : surveiller l’usage de votre DNS

Utilisateur de Bind en tant que serveur local et de cache, j’ai découvert hier un outil assez sympa pour surveiller l’utilisation de Bind et les requêtes faites sur mon réseau local : BindGraph.

Pour l’installer :

$ sudo apt-get install bindgraph

Bien évidemment, il vous faut un serveur Bind et Apache fonctionnels, avec librrd4 et perl correctement installés !

Une fois installé, il est nécessaire de configurer un fichier de collecte pour le script Perl bindgraph.pl que l’on vient d’installer. Dans le fichier d’options de bind, dans la partie logging, créer le channel et la category suivants :

$ sudo vim /etc/bind/named.conf.options

logging {
        channel "querylog" {
                file "/var/log/named/query.log";
                print-time yes;
        };
        category queries { querylog; };
};

Une fois cela réalisé, une simple commande va permettre de lancer le script perl bindgraph.pl :

sudo nice -20 bindgraph.pl --daemon --logfile /var/log/named/query.log

Vous pourrez ensuite consulter l’usage last hours, quotidien, hebdomadaire, mensuel et annuel de votre serveur Bind, en vous rendant sur http://[server]//cgi-bin/bindgraph.cgi

bindgraph

Vous pouvez chercher sur Google inurl:bindgraph.cgi pour trouver des exemples de graph, comme celui-ci : https://dns.webhotel.net/cgi-bin/bindgraph.cgi

 

Comments closed

[Linux Samba] Montage automatique de partages avec autofs

Ayant un laptop que j’emmène partout avec moi, j’ai cherché longtemps une solution pour éviter de tout mettre dans le fichier /etc/fstab. Il y avait bien cette solution avec l’option noauto, mais cela est quand même plus propre. Qui plus est, lorsque que je monte mon VPN avec OpenVPN, les shares se montent tout seul !

Pour cela, il vous suffit d’installer le package autofs

$ sudo apt-get install autofs5

Ensuite, vous pouvez éditer le fichier /etc/auto.master, en spécifiant le dossier de montage principal (ici j’ai mis /media, mais vous trouverez beaucoup d’exemple avec /net), et le timeout de montage / démontage (ici 30sec) :

/media /etc/auto.cifs --ghost,--timeout=30

Ensuite, il suffit d’éditer le fichier des partages à monter dans /media :

$ sudo cat /etc/auto.cifs
data     -fstype=cifs,file_mode=0777,dir_mode=0755,uid=beufa,gid=users,username=beufa,password=nicepasswd,workgroup=HOME	://192.168.0.x/data
music    -fstype=cifs,file_mode=0777,dir_mode=0755,uid=beufa,gid=users,username=beufa,password=nicepasswd,workgroup=HOME	://192.168.0.x/music
video    -fstype=cifs,file_mode=0777,dir_mode=0755,uid=beufa,gid=users,username=beufa,password=nicepasswd,workgroup=HOME	://192.168.0.x/video

Bien évidemment, étant donné qu’on renseigne les mots de passe dans ce fichier, il est très important de le sécuriser un minimum :

$ chmod 400 /etc/auto.master
$ chmod 400 /etc/auto.cifs

Il y a juste 2 choses qui posent problème : normalement il est possible de spécifier les mots de passes dans un fichier credentials au format suivant :

username=beufa
password=nicepasswd
workgroup=HOME

Et ensuite spécifiez l’option suivante dans /etc/auto.cifs :

data     -fstype=cifs,file_mode=0777,dir_mode=0755,uid=beufa,gid=users,credentials=/etc/auto.auth	://192.168.0.x/data

Malheureusement, cette option me génère l’erreur suivante :

CIFS VFS: No username specified

Autre point génant, impossible de spécifier un nom de serveur, j’ai le même genre d’erreur si je remplace l’IP par le nom du serveur.

Mais voila, avec le détail de ce test autofs, vous devriez pouvoir monter vos partages Samba/Windows/CIFS à la maison ou au travers d’un VPN, et ce automatiquement !

Bon amusement !

Comments closed

[Perl] Vérifier vos sites automatiquement avec SafeBrowsing

SafeBrowsing est la base anti malware / anti phishing de Google. Intégré à Firefox et Google Chrome, il permet de valider que le site n’est pas un nid à malware ou tentative de phishing.

Exemple SafeBrowsing

Pour tester par site :

http://www.google.com/safebrowsing/diagnostic?site=beufa.net

Ou par AS :

http://www.google.com/safebrowsing/diagnostic?site=AS:15069

Des modules existent en Perl pour automatiser ces vérifications :

use Net::Google::SafeBrowsing2;
use Net::Google::SafeBrowsing2::Storage;
use Net::Google::SafeBrowsing2::Sqlite;

Ensuite, quelques lignes de Perl suffit à vérifier une liste de sites (qu’il est possible d’inclure depuis une base MySQL !)

my @sites =(
		'http://flashupdate.co.cc/',
		'https://beufa.net/',
		'http://www.fortinet.com/',
		'http://www.gumblar.cn'
		);

Créer une base locale, qui permettra de stocker les hashs localement

 my $storage_malware_db = Net::Google::SafeBrowsing2::Sqlite->new(file => 'goog-malware-shavar.db');
  my $malware_db = Net::Google::SafeBrowsing2->new(
        key     => "YOUR_KEY",
        storage => $storage_malware_db,
	error	=> 1,
##      debug   => 1,
##      mac     => 1,
        list    => MALWARE,
##	force	=> 1
  );

Il est possible de télécharger 2 bases (paramètre LIST) : MALWARE (goog-malware-shava.db) ou PHISHING (googpub-phish-shavar.db)

Vérifier les mises à jour :

  my $last_db1 = $storage_malware_db->last_update(list => 'goog-malware-shavar')->{time};
  my $next_db1 = $last_db1+$storage_malware_db->last_update(list => 'goog-malware-shavar')->{wait};
  my $last_db2 = $storage_phishing_db->last_update(list => 'googpub-phish-shavar')->{time};
  my $next_db2 = $last_db2+$storage_phishing_db->last_update(list => 'googpub-phish-shavar')->{wait};

  print color 'reset'; print color 'bold yellow';
  print "---   ----------------------------------   ----n";
  print "---   Updates of Google SafeBrowsing DBs   ----n";
  print "---   ----------------------------------   ----n";
  print color 'reset';  print color 'cyan';
  print "t > Last Up. (google-malware-shavar) : ".scalar(localtime($last_db1))."n";
  print "t > Next Up. (google-malware-shavar) : ".scalar(localtime($next_db1))."n";
  print "t > Last Up. (googpub-phish-shavar)  : ".scalar(localtime($last_db2))."n";
  print "t > Next Up. (googpub-phish-shavar)  : ".scalar(localtime($next_db2))."n";
  print color 'reset';

Vérifiez ensuite que chacun des sites n’est pas dans les hashs Google SafeBrowsing :

print color 'reset'; print color 'bold yellow';
  print "--- -------------------------------------- ----n";
  print "--- Checking for Malwares Distribution URL ----n";
  print "--- -------------------------------------- ----n";
  foreach $site (@sites) {
	my $match_malware = $malware_db->lookup(url => $site);
	if ($match_malware eq MALWARE) {
		print color 'reset'; print color 'bold red';
        	print "t(MAL)tNOK => ".$site." => MALWARE n";
	}
	else {
		print color 'reset'; print color 'green';
        	print "ttOK  => ".$site."n";
	}
  }
  print color 'reset';
  print color 'reset'; print color 'red';
  print "--- Errors for Malwares Distribution Check ----n";
  print "Last malware_db error: ", $malware_db->last_error(), "n";
  print "--- -------------------------------------- ----n";
  $storage_malware_db->close();

Le résultat :

user@pc:~$ perl Bureau/safeb
---   ----------------------------------   ----
---   Updates of Google SafeBrowsing DBs   ----
---   ----------------------------------   ----
	 > Last Up. (google-malware-shavar) : Fri Nov 11 10:44:43 2011
	 > Next Up. (google-malware-shavar) : Fri Nov 11 11:14:49 2011
	 > Last Up. (googpub-phish-shavar)  : Fri Nov 11 10:44:57 2011
	 > Next Up. (googpub-phish-shavar)  : Fri Nov 11 11:16:36 2011
--- -------------------------------------- ----
--- Checking for Malwares Distribution URL ----
--- -------------------------------------- ----
	(MAL)	NOK => http://flashupdate.co.cc/ => MALWARE
		OK  => https://beufa.net
		OK  => http://fortinet.com
		OK  => http://gumblar.cn
--- Errors for Malwares Distribution Check ----
Last malware_db error:
--- -------------------------------------- ----
--- -------------------------------------- ----
--- Checking for Phishing Distribution URL ----
--- -------------------------------------- ----
		OK  => http://flashupdate.co.cc/
		OK  => https://beufa.net
		OK  => http://fortinet.com
		OK  => http://gumblar.cn
--- Errors for Phishing Distribution Check ----
Last phishing_db error:
--- -------------------------------------- ----

Bon amusement !

A venir : scan de pages avec ClamAV et son module File::Scan::ClamAV

Comments closed
en_USEN