mardi 8 décembre 2009

atftpd[23943]: Requested file to big, increase BLKSIZE

Si vous avez ce message, c'est que le serveur tftp atftp a reçu/envoyé un fichier très gros et qu'il ne supporte pas, il y a des manips sur Internet et j'ai testé mais rien à faire, le problème c'est au niveau du code. Donc ma solution est encore simple, utilisez un autre serveur tftp, c'est tftpd .


# aptitude install tftpd


Editer le fichier de conf de inetd avec votre éditeur favori :


# emacs /etc/inetd.conf


Changer la ligne qui commence par tftp par

tftp  dGram   udp4    wait    nobody /usr/sbin/tcpd /usr/sbin/in.tftpd --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /tftpboot


Ici le répertoire de destination est le /tftpboot , pour relancer inetd c'est simple:


# killall inetd ; inetd &

mardi 17 novembre 2009

Comment monter un répertoire FTP distant en local

La solution est simple :


# aptitude install curlftpfs
# mkdir remote_dir
# curlftpfs ftp://username:mypass@ftp.example.mg/ remote_dir
# ls -al remote_dir/


Et voilà, on peut vérifier :


# df -h
Filesystem Size Used Avail Use% Mounted on
...
curlftpfs 7.5T 0 7.5T 0% /home/thierry/remote_dir

Pour démonter la commande est simple :

fusermount -u remote_dir

vendredi 16 octobre 2009

Automatiser les accès FTP,SFTP,SSH avec python pexpect

Voici un des moyens d'automatiser le téléchargement avec FTP,SFTP ou le lancement d'une commande avec ssh ou telnet, dans l'exemple, j'utilise le module python pexpect qui se connecter sur un serveur SFTP puis telecharge des fichiers. Pour ssh on peut utiliser le système de clés mais pour FTP, telnet ce n'est pas possible et si vous n'etes pas aussi l'admin du serveur distant.

Voici de code, évidemment il faut installer les paquets openssh-client et python-pexpect si vous utilisez ubuntu ou debian


#!/usr/bin/env python

import pexpect

p=pexpect.spawn('sftp -C -R 128 thierry@113.231.167.XXX')
p.expect("thierry@113.231.167.XXX's password: ")
p.sendline('MyVerySecurePassword')
p.expect('sftp> ')
p.sendline('get foo.bar /home/thierry/')
p.expect('sftp> ',timeout=None)
p.sendline('bye')


Ceci est un simple exemple vous pouvez l'améliorer en ajoutant un expect s'il demande d'accepter la clé du serveur ...

lundi 28 septembre 2009

debian + squid + dansguardian + antivirus + havp

Je vais expliquer rapidement comment installer et configurer un serveur proxy transparent sur une debian dans mon cas c'est Lenny.
Le serveur proxy filtera aussi les contenu des site visités avec Dansguardian et vérifiera si les fichiers reçus par l'utilisateur contient des virus avec Clamav. Dans la configuration le proxy n'agira que sur le protocole HTTP sur le port 80 si vous cherchez un 'full transparent' utiliser plutôt tproxy . Le principe est simple, on redirige les trafics sur le port 80 vers le port 8080 de Dansguardian qui filtre selon les règles puis redirige sur le port 8090 de HAVP enfin Squid le reçoit sur le port par défaut 3128.


Selon les informations sur le net Squid est plus performant sur une partition en resiserfs qui gère mieux une grande quantité de petits fichiers. Choisissez aussi des disques rapides.
Dans l'exemple j'ai utilisé Debian 5.0 ou Lenny, ajouter cette ligne dans /etc/apt/sources.list :

deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

Puis on installe les packets :

aptitude update
aptitude install squid3 dansguardian clamav clamav-base havp


Configuration de dansguardian :
Le fichier de configuration est le /etc/dansguardian/dansguardian.conf

cp /etc/dansguardian/dansguardian.conf /etc/dansguardian/dansguardian.conf.orig

Modifier le fichier et ça donne :

# grep -v '^#' dansguardian.conf | sed -e '/^$/d'
reportinglevel = 3
languagedir = '/etc/dansguardian/languages'
language = 'french'
loglevel = 2
logexceptionhits = 2
logfileformat = 3
syslog = on
loglocation = '/var/log/dansguardian/access.log'
filterip = 192.168.0.200
filterport = 8080
proxyip = 127.0.0.1
proxyport = 8090
accessdeniedaddress = 'http://YOURSERVER.YOURDOMAIN/cgi-bin/dansguardian.pl'
nonstandarddelimiter = on
usecustombannedimage = on
custombannedimagefile = '/usr/share/dansguardian/transparent1x1.gif'
filtergroups = 1
filtergroupslist = '/etc/dansguardian/lists/filtergroupslist'
bannediplist = '/etc/dansguardian/lists/bannediplist'
exceptioniplist = '/etc/dansguardian/lists/exceptioniplist'
showweightedfound = on
weightedphrasemode = 2
urlcachenumber = 5000
urlcacheage = 900
scancleancache = on
phrasefiltermode = 2
preservecase = 0
hexdecodecontent = off
forcequicksearch = off
reverseaddresslookups = off
reverseclientiplookups = off
logclienthostnames = off
createlistcachefiles = on
maxuploadsize = -1
maxcontentfiltersize = 128
maxcontentramcachescansize = 2000
maxcontentfilecachescansize = 20000
filecachedir = '/tmp'
deletedownloadedtempfiles = on
initialtrickledelay = 20
trickledelay = 10
downloadmanager = '/etc/dansguardian/downloadmanagers/fancy.conf'
downloadmanager = '/etc/dansguardian/downloadmanagers/default.conf'
contentscannertimeout = 60
contentscanexceptions = off
recheckreplacedurls = off
forwardedfor = off
usexforwardedfor = off
logconnectionhandlingerrors = on
logchildprocesshandling = off
maxchildren = 180
minchildren = 32
minsparechildren = 8
preforkchildren = 10
maxsparechildren = 64
maxagechildren = 500
maxips = 0
ipcfilename = '/tmp/.dguardianipc'
urlipcfilename = '/tmp/.dguardianurlipc'
ipipcfilename = '/tmp/.dguardianipipc'
nodaemon = off
nologger = off
logadblocks = off
loguseragent = off
softrestart = off
mailer = '/usr/sbin/sendmail -t'
root@proxy:/etc/dansguardian#


Vous avez remarqué que mon proxy utilise l'IP 192.168.0.200 . Passons à HAVP, la configuration est simple :

root@proxy:~# grep -v '^#' /etc/havp/havp.config | sed -e '/^$/d'
PARENTPROXY 127.0.0.1
PARENTPORT 3128
FORWARDED_IP true
PORT 8090
BIND_ADDRESS 127.0.0.1
TEMPLATEPATH /etc/havp/templates/fr
ENABLECLAMLIB true
ENABLECLAMD false
ENABLEFPROT false
ENABLEAVG false
ENABLEAVESERVER false
ENABLESOPHIE false
ENABLETROPHIE false
ENABLENOD32 false
ENABLEAVAST false
ENABLEARCAVIR false
ENABLEDRWEB false
root@proxy:~#


Comme vous l'avez constaté HAVP peut être utilisé avec d'autre antivirus Avast, Nod32, ... dans notre cas nous utilisons Clamav. Dans le fichier de configuration de HAVP nous avons redirigé les  traffic sur 127.0.0.1:3128, c'est le port par défaut de Squid.
Modifier votre fichier de configuration de Squid, changer la ligne qui commence par http_port :

http_port 127.0.0.1:3128 transparent



Pour spécifier la taille maximale de votre cache vous pouvez changer la ligne suivante ici dans l'exemple spécifie que squid peut utiliser 12000MB :

cache_dir ufs /var/spool/squid3 12000 16 256


Redémarrer les services :

# /etc/init.d/dansguardian restart
# /etc/init.d/havp restart
# /etc/init.d/squid3 restart


Il nous reste qu'à rediriger le trafic, vous pouvez utiliser des logiciels comme Shorewall, mais  ici pour simplifier, on utilise directement iptables :

# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080



Pour tester que ça marche vous pouvez vérifier avec les fichiers log

root@proxy:~# tail -f /var/log/dansguardian/access.log
root@proxy:~# tail -f /var/log/squid3/access.log
root@proxy:~# tail -f /var/log/havp/access.log



Vita tompoko, j'espère que ce petit post vous a aidé.

vendredi 25 septembre 2009

Comment envoyer un mail sous console via smtp

Parfois on veut envoyer un mail sous console en bash et la machine n'est pas configuré pour utiliser la commande mail ou sendmail, donc on doit passer par un serveur smtp, voici une solution simple et pratique :


#aptitude install nail
$nail -r "me@home.mg" -s "test nail" -S smtp=smtp.myisp.com friend@other.mg < content.txt

mercredi 2 septembre 2009

Configurer sur un routeur Cisco avec Minicom

Juste un post qui peut aider certain pour connecter son linux avec un routeur ou switch Cisco avec l'outil Minicom .
Dans l'exemple, j'utilise Debian mais ça peut marcher aussi pour Ubuntu et Linux/Unix en général.

sudo apt-get install minicom

Brancher votre rollover cable avec le routeur Cisco bien sur au port console, puis connecter le sur votre ordinateur.
Dans mon cas, j'utilise un portable qui n'a plus de port série DB9, donc j'utilise un convertisseur USB to DB9 .
Quand je branche le convertisseur sur le port usb, je vois que le device utilisé sera /dev/ttyUSB0 car avec la commande dmesg j'ai :


[21226.833044] usb 6-1: new full speed USB device using uhci_hcd and address 3
[21227.015088] usb 6-1: New USB device found, idVendor=0403, idProduct=6001
[21227.015097] usb 6-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[21227.015103] usb 6-1: Product: USB Serial
[21227.015108] usb 6-1: Manufacturer: FTDI
[21227.015279] usb 6-1: configuration #1 chosen from 1 choice
[21227.021145] ftdi_sio 6-1:1.0: FTDI USB Serial Device converter detected
[21227.021190] usb 6-1: Detected FT232BM
[21227.021261] usb 6-1: FTDI USB Serial Device converter now attached to ttyUSB0


Nous pouvons vérifier le fichier :

$ ls -al /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 0 2009-09-02 13:50 /dev/ttyUSB0


Pour lire le fichier ttyUSB0 il faut que l'utilisateur soit dans le group dialout dans le cas de Debian :

$ sudo adduser test dialout
Adding user `test' to group `dialout' ...
Adding user test to group dialout
Done.
$ id test
uid=1002(test) gid=1002(test) groups=1002(test),20(dialout),46(plugdev)


Si vous avez oublié de faire ça vous aurez le message en lançant minicom en utilisateur normal :

minicom: cannot open /dev/ttyUSB0: Permission denied

Pour aller plus vite créer/modifier le fichier /etc/minicom/minirc.dfl avec le contenu suivant :


# Machine-generated file - use "minicom -s" to change parameters.
pu port /dev/ttyUSB0
pu baudrate 9600
pu bits 8
pu parity N
pu stopbits 1
pu rtscts No


Testons :

$ minicom

Vous pouvez avoir le menu de config avec les touches Controle-A puis Z .

mardi 1 septembre 2009

Comment supprimer des fichiers datant plus d'une minute ?

find /var/spool/snmptt/*snmptt* -mmin +1 | xargs rm -f