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
fr_FRFR