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