Python pour les nuls

Vous savez déjà programmer en PHP ou en bash ? Vous connaissez la POO ? Mais vous avez toujours rêvé de vous mettre à un vrai langage (1) ? Alors voici quelques bonnes lectures sur Python, que je vous recommande :

 

(1) : ce post a été rédigé un trolldi, je n’avais pas le choix !

Tags: , ,

Vendredi 22 juillet 2011 Développement, Logiciels Libres Commentaires fermés
 

OWASP Appsec Tutorial Series

OWASP (Open Web Application Security Project) vient de lancer une nouvelle série de petites vidéos (5 à 10 min) de présentation des grandes notions de sécurité. Pour l’instant il n’y a que « Injection Attacks » (SQLi) et « Cross Site Scripting » (XSS), mais d’autres vont suivre. C’est bien fait, c’est clair (mais en anglais), c’est vivant, et sur un fond de samba. Donc à suivre de près :-)

C’est par ici : OWASP Appsec Tutorial Series

OWASP Appsec Tutorial Series

Tags: ,

Mardi 12 juillet 2011 Sécurité Commentaires fermés
 

LAMP + monitoring Zabbix sur un serveur virtuel avec 256 Mo de RAM

Est-il possible d’avoir un serveur web avec PHP + MySQL + des virtual hosts, ainsi qu’un service de monitoring (Zabbix), tout ça dans un VPS avec seulement 256 Mo de RAM ? Et en plus pour 4 € / mois ? Difficile, n’est-ce pas ? :-) En fait non, c’est même large… 140 Mo de RAM suffisent ! En m’inspirant d’un article sur lowendbox.com, et en utilisant un VPS chez l’excellent QuickWeb (OpenVZ VPS Germany 256 à $6/mois), voici rapidement la procédure d’installation sur une base d’install Ubuntu 10.10 toute fraiche :

  • On fait un peu de ménage en virant rsyslog, et on installe syslog-ng à la place. Dans la foulée on bazarde portmap, ainsi que bind9 (les DNS de QuickWeb font parfaitement l’affaire) :
apt-get install syslog-ng && dpkg --purge rsyslog
apt-get remove --purge portmap
apt-get remove --purge bind9
  • On supprime openssh, et on installe le tout petit dropbear à la place :
touch /etc/ssh/sshd_not_to_be_run
apt-get install dropbear
sed -i "s/NO_START=1/NO_START=0/" /etc/default/dropbear
/etc/init.d/ssh stop && /etc/init.d/dropbear start
echo -e "PATH=/usr/bin:/bin:/usr/sbin:/sbin\nexport PATH" >> ~/.bashrc
  • Voilà, on a déjà gagné quelques megs. Passons aux poids lourds… Apache en premier, qui va poliment laisser sa place à lighttpd (et son module de gestion des vhosts) :
/etc/init.d/apache2 stop
update-rc.d -f apache2 remove
apt-get remove --purge apache2
apt-get install lighttpd
mkdir -p /var/www/monitoring.monsite.fr/html
lighttpd-enable-mod simple-vhost
/etc/init.d/lighttpd force-reload
  • Que serait le web sans PHP et MySQL ?
apt-get install mysql-server php5-cgi php5-mysql
cat > /etc/lighttpd/conf-enabled/10-cgi-php.conf
server.modules += ("mod_cgi")
cgi.assign = (".php" => "/usr/bin/php5-cgi")
^D
/etc/lighttpd/conf-enabled/10-simple-vhost.conf :
  simple-vhost.server-root         = "/var/www"
  simple-vhost.document-root       = "html"
/etc/init.d/lighttpd force-reload
  • On va immédiatement calmer le gros apétit de MySQL :
cat > /etc/mysql/conf.d/mon_tuning.cnf
[mysqld]
key_buffer = 16K
max_allowed_packet = 1M
table_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 64K
query_cache_limit = 256K
query_cache_size = 1M
^D
  • Au tour de Zabbix !
apt-get install zabbix-server-mysql zabbix-frontend-php zabbix-agent
  le pass root mysql
  puis le pass db zabbix
  mysql
  puis le pass frontend zabbix
ln -s /usr/share/zabbix /var/www/monitoring.monsite.fr/html
  • On customise un peu le /etc/php5/cgi/php.ini pour faire plaisir à Zabbix :
 date.timezone = Europe/Paris
 post_max_size = 16M
 max_execution_time = 300
 max_input_time = 300
  • Un peu de SSL pour sécuriser le tout :
cd /etc/lighttpd/conf-available/
ln -s /etc/lighttpd/conf-available/10-ssl.conf
openssl req -new -x509 -keyout server.pem -out server.pem -days 3650 -nodes
  du bla bla pour generer le certificat... :-)
/etc/init.d/lighttpd restart
  • Et voilà, secouez bien fort votre VPS, et Zabbix s’offre à vous :
https://monitoring.monsite.fr

Pour 4 petits € / mois, voilà un beau serveur de monitoring, oui ma bonne dame :-) Et rassurez vous, il reste de la RAM dispo, vous pourrez donc y installer encore quelques vhosts (puisqu’il y a du PHP/MySQL, autant se faire plaisir) :

root@quickweb:~# free -m
 total       used       free     shared    buffers     cached
Mem:           384        138        245          0          0          0
-/+ buffers/cache:        138        245
Swap:            0          0          0

Tags: , , ,

Trouver, exploiter et corriger des failles de sécurité dans un site web

Learn how to make web apps more secure. Do the Gruyere codelab.

XSS, XSRF, XSSI, path traversal, code execution, SQL injection, etc… :  des noms barbares qui désignent des types de failles de sécu. Si vous ne connaissez pas, ou pas bien, la question et que ça vous interpelle, Google met à disposition Gruyere (anciennement Jarlsberg). Comme son nom l’indique :-), il s’agit d’une appli web pleine de trous (de sécurité), et vous apprenez au fil des exercices à repérer et exploiter un certain nombre de failles, puis ensuite comment s’en protéger. C’est plutôt très bien fait, assez bien expliqué. Si le sujet vous intéresse et que vous n’êtes pas allergique à l’anglais, je vous le recommande vivement ! A noter également : quelques cours intéressants sur la programmation web (Google Code University), qui peuvent aider, en particulier les deux vidéos de présentation de Javascript.

Update (31/03/2011) : Je viens de tomber sur Web Security Dojo, il s’agit d’une machine virtuelle (VirtualBox ou VMware, au choix) qui contient un paquet d’outils de sécurité web (dont Gruyere) :

  • OWASP’s WebGoat
  • Google Gruyere
  • DVWA (Damn Vulnerable Web App)
  • Hacme Casino
  • OWASP InsecureWebApp
  • w3af
  • et d’autres sites fournis par Maven Security

Et les outils classique de tout bon pentester : metasploit, burp suite, dirbuster, etc…

Update (11/05/2011) : Une liste assez complète de sites et d’outils pour « s’entrainer » : Pentesting Vulnerable Study Frameworks Complete List

Tags: ,

Mercredi 30 mars 2011 Sécurité 2 commentaires
 

I/O consommés par un process

/proc regorge d’informations sympathiques. On pourra par exemple y voir les I/O consommés par un process. Pour cela, on va regarder dans le /proc/<pid>/io. En regardant ce « fichier » pour un PID donné, on peut entre autres voir le nombre d’octets lus et écrits sur/depuis les disques, avec les champs rchar et wchar. Voilà un petit exemple :

$ dd if=/dev/zero of=bidon bs=1M count=1000 &
[1] 5224
$ cat /proc/5224/io
rchar: 793778451
wchar: 1587738016
syscr: 194481
syscw: 388188
read_bytes: 0
write_bytes: 795377664
cancelled_write_bytes: 0

Il s’agit de compteurs incrémentaux, un peu comme dans /proc/net/dev pour mesurer les débits sur les interfaces réseau. En faisant la différence entre deux mesures, divisé par le temps entre les deux mesures, on peut ainsi facilement obtenir les débits en lecture et écriture sur les disques du process mesuré ! Ou bien sinon, plus simple : iotop fait ça très bien. Il permet de voir quels process sont en train de tuer vos disques durs, à la manière de top pour les CPU :-)

Tags: ,

Mercredi 9 mars 2011 Linux Un commentaire