Posts Tagged ‘ssh’
apache2 + php5 + fcgid + suexec
Ceci est la configuration rapide de apache2, php5, fcgid et suexec sur une debian, ça peut marcher aussi pour ubuntu. J’ai utilisé ces logiciels pour mutualiser un serveur web qui utilise php5.
J’ai utilisé fcgid au lieu de fastcgi car c’est plus libre et il marche très bien avec suexec en plus son popcon ici est supérieur à fastcgi ici mais c’est juste un détail . Suexec sert à exécuter les scripts php par un utilisateur/groupe spécifique et limité donc ça augmente la sécurité du serveur, si vous voulez en savoir plus veuillez consulter la doc complète ici.
Installer les packages utilisés :
aptitude install apache2-mpm-worker libapache2-mod-fcgid apache2-suexec php5-cgi
Activer/Désactiver les modules et les virtualhosts :
a2dismod fastcgi
a2enmod suexec
a2enmod actions
a2enmod headers
a2enmod include
a2enmod deflate
a2enmod mem_cache
a2dissite default
J’ai désactivé le virtualhost default car il a accès directe sur /var/www alors qu’on l’utilisera comme racine de nos scripts, si vous voulez encore l’utiliser, il va falloir modifier la configuration dans /etc/apache2/sites-available/default. Par exemple créer un répertoire /var/www/default/ puis modifier la ligne en DocumentRoot /var/www/default .
Editer le fichier de configuration de fcgid /etc/apache2/mods-available/fcgid.conf :
<IfModule mod_fcgid.c> AddHandler fcgid-script .fcgi FcgidConnectTimeout 20 PHP_Fix_Pathinfo_Enable 1 </IfModule>
Redémarrer apache pour prendre en compte les modifs : /etc/init.d/apache2 restart
Créer un site avec l’utilisateur correspondant :
groupadd site1
useradd -s /bin/false -d /var/www/site1 -m -g site1 site1
mkdir -p /var/www/site1/{web,ini}
cp /etc/php5/cgi/php.ini /var/www/site1/ini/
chown site1:site1 /var/www/site1/{web,ini}
mkdir -p /var/www/php-fcgi/site1
Modifier le fichier /var/www/site1/ini/php.ini , il faut décommenter la ligne cgi.fix_pathinfo = 1
Créer le script cgi /var/www/php-fcgi/site1/fcgi :
#!/bin/sh PHPRC="/var/www/site1/ini/" export PHPRC export PHP_FCGI_MAX_REQUESTS=10000 export PHP_FCGI_CHILDREN=8 exec /usr/lib/cgi-bin/php
Changer les droits :
chmod 755 /var/www/php-fcgi/site1/fcgi
chown -R site1:site1 /var/www/php-fcgi/site1
Créer le fichier de configuration de notre site dans /etc/apache2/sites-available/site1 qui contient :
<VirtualHost *:80>
ServerName site1.com
DocumentRoot /var/www/site1/web
ServerAdmin sysadmin@site1.com
ErrorLog /var/log/apache2/site1.com_error.log
CustomLog /var/log/apache2/site1.com_access.log combined
<IfModule mod_fcgid.c>
SuexecUserGroup site1 site1
<Directory /var/www/site1/web/ >
Options +ExecCGI
AllowOverride All
AddHandler fcgid-script .php
FcgidWrapper /var/www/php-fcgi/site1/fcgi .php
Order allow,deny
Allow from all
</Directory>
</IfModule>
</VirtualHost>
Activer le site :
a2ensite site1
Redémarrer Apache :
/etc/init.d/apache2 restart
Il vous reste qu’à tester en mettant vos scripts dans le répertoire /var/www/site1/web …
Sécuriser ses connexions Internet avec un tunnel SSH et SQUID
Un des moyens de sécuriser ses trafics traversant un réseau public ou non sécurisé comme les réseaux sans fil (wifi), dans un cybercafé, … est le tunnel SSH vers un serveur proxy SQUID.
Effectivement il n’est pas difficile de sniffer les données sur ces réseaux publics et il est plus ‘secure’ d’utiliser un tunnel SSH pour ses données. On a besoin d’un serveur (unix/linux) disponible sur Internet qu’on peut utiliser. L’une des raisons que j’utilise aussi cette solution c’est que mon provider (Blueline/GulfSat) utilise un proxy transparent qui n’est pas très rapide je trouve, j’ai toujours des timeout ces derniers jours. Je veux contourner ce proxy de m… , même google.com fait un timeout avec !!
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 …
