Installer un serveur SOCKS sous Debian/Ubuntu

Posté par seiyar81 le 8 janvier 2010 | Laisser un commentaire (10)

C’est quoi SOCKS ? Et bien SOCKS est un protocole réseau qui permet à des applications client-serveur d’employer d’une manière transparente les services d’un pare-feu.
Nous allons l’utiliser dans cet article pour créer un serveur proxy qui va nous permettre de passer outre les différentes restrictions mises en places sur le réseau.
Il s’agit souvent de ports ou de sites bloqués dans les réseaux d’entreprises ou d’universités.

Personnellement l’école au sein de laquelle je suis mes études, autorise les port 80 (HTTP), 22 (SSH), 21 (FTP), 443 (SSL), 1863 (MSN) et quelques autres seulement. Impossible donc de jouer à un quelconque jeu en ligne (même si je rappelle que les études sont faites pour étudier !). 
Je m’en sers pour jouer de temps en temps et surtout pour me connecter en SSH à mon serveur qui n’écoute pas sur le port 22 (histoire d’éviter le spam de bots).

J’ai choisi d’utiliser Dante Server car il est plutôt simple à configurer, mais sachez qu’il en existe d’autres tels que WinSocks pour Windows ou bien Nylon pour OpenBSD.

On commence donc par installer le paquet :

 
sudo apt-get install dante-server 

Ensuite on va s’intéresser au fichier de configuration du serveur.

Voici un exemple de contenu pour /etc/danted.conf :

logoutput: syslog stdout /var/log/sockd

internal: ip_du_serveur port = port_proxy
external: eth0

method: username

user.notprivileged: sockd

client pass {
  from: ip_du_serveur/0 port 1-65535 to: 0.0.0.0/0
  log: connect disconnect

}

pass {
  from: ip_du_serveur/0 to: 0.0.0.0/0
  method: username
}

Petite explication du bloc ci-dessus :
logoutput indique où l’on souhaite rediriger la sortie du programme
internal/external définissent l’adresse/l’interface utilisée pour l’écoute et la sortie
Placez-y donc l’IP de votre serveur, le port souhaité et l’interface
method: username indique que l’on souhaite une authentification par login/mot de passe
user.notprivileged : l’utilisateur et le groupe sockd sont créés à l’installation du programme

– les zones client pass et pass définissent le traffic autorisé, ici on autorise tout !

On termine en ajoutant une règle iptables pour autoriser le traffic sur le port choisit
et on démarre le serveur :

iptables -A INPUT -d ip_du_serveur -p tcp --dport port_proxy -j ACCEPT

/etc/init.d/danted start

Et voilà c’est aussi simple que ça ! Vous avez maintenant un serveur proxy complètement fonctionnel.
Ne vous reste plus qu’à configurer vos logiciels clients soit directement dans les propriétés des logiciels qui proposent la connexion par proxy soit en utilisant un logiciel du type Proxifier sous Windows ou bien Dante Client.

Catégorie: Internet, Linux | Laisser un commentaire (10)

Les modules indispensables pour Apache 1/2

Posté par seiyar81 le 27 novembre 2009 | Laisser un commentaire (0)
apache

EDIT : Un bug d’affichage (dû à une balise mal fermée :s) cachait une bonne partie de l’article.

Apache est aujourd’hui et depuis longtemps le serveur HTTP le plus utilisé dans le monde ! Loin devant IIS le serveur de Microsoft, et ses autres concurrents.

D’après Netcraft en Novembre 2009 parmi le million de sites le plus visités :
Apache 67.00%
Microsoft 17.75%
nginx 3.87%
Google 1.98%

Gratuit et open-source son succès tient sûrement à sa stabilité, au fait qu’il soit disponible pour plusieurs OS, et surtout à sa grande modularité !
En effet de très nombreux modules sont disponibles afin de lui rajouter des fonctions, d’améliorer sa sécurité, de l’optimiser etc…
Je vais donc vous présenter les modules qui, selon-moi, sont quasi-indispensables de nos jours pour un serveur Apache.

Je prend ici l’exemple d’un serveur Apache version 2.2.9 tournant sous Debian.

En premier lieu s’il n’est pas déjà installé : le module php5_module si votre serveur est destiné à héberger des pages php pour Apache.

sudo apt-get install php5
// Vous pouvez également rajouter ceci
// php5-dev php5-gd php5-mysql php5-pear 

a2enmod php5
// a2dismod pour décharger un module

/etc/init.d/apache2 restart

Ensuite on peut activer le module deflate_module qui va nous permettre de compresser sans perte soit les pages ou bien les fichiers css et javascript. Un gain de 20 à 40% est alors enregistré, toutefois au dépend des ressources système.
Le module deflate dépend du module headers.

// On active les deux modules
a2enmod headers
a2enmod deflate

Vous pouvez ensuite placer cette configuration dans vos Virtual Host ou vos Directory.

   SetOutputFilter DEFLATE

   # example of how to compress ONLY html, plain text and xml
   # AddOutputFilterByType DEFLATE text/plain text/html text/xml

   # Don't compress binaries
   SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|iso|tar|bz2|sit|rar)$ no-gzip dont-vary

   # Don't compress images
   SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|jpg|ico|png)$  no-gzip dont-vary

   # Don't compress PDFs
   SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary

   # Don't compress flash files (only relevant if you host your own videos)
   SetEnvIfNoCase Request_URI \.flv$ no-gzip dont-vary

   # Netscape 4.X has some problems
   BrowserMatch ^Mozilla/4 gzip-only-text/html

   # Netscape 4.06-4.08 have some more problems
   BrowserMatch ^Mozilla/4\.0[678] no-gzip

   # MSIE masquerades as Netscape, but it is fine
   BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

   # Make sure proxies don't deliver the wrong content
   Header append Vary User-Agent env=!dont-vary

   # Setup custom deflate log
   DeflateFilterNote Input instr
   DeflateFilterNote Output outstr
   DeflateFilterNote Ratio ratio
   LogFormat '"%r" %{outstr}n/%{instr}n %{ratio}n%%' DEFLATE
   CustomLog /var/log/apache2/deflate_log DEFLATE

   # Add file types
   AddOutputFilterByType DEFLATE text/php text/HTML text/txt text/css text/javascript

Affichez quelques pages via votre navigateur et vous verrez que les types de fichiers concernés sont bien compressés.

Un autre module qui va nous permettre de réduire la bande passante utilisée par le serveur : expires_module. Ce module permet de contrôler l’en-tête HTTP Expires. Ainsi lorsqu’une ressource est demandée au serveur et qu’elle est disponible dans le cache du client il ne la demandera pas au serveur à moins que la date ai expirée.

Une configuration classique :

  
       ExpiresActive on 
       ExpiresByType image/jpg "access 1 month"
       ExpiresByType image/gif "access 1 month"
       ExpiresByType image/png "access 1 month"
       ExpiresByType application/x-shockwave-flash "access 1 month"
       ExpiresByType text/html "access 1 day"
       ExpiresDefault "access 2 days" 
  

Les images de types jpg, gif et png ont une date d’expiration d’un mois, les pages html d’un jour et tous les autres types de ressources 2 jours.
Les types MIME sont listés dans le fichier /etc/mime.types.

Maintenant un module qui va contrôler les requêtes effectuées et bannir les IP qui abusent : mod_evasive.

L’installation :

// Choississez le dossier d'installation
cd dossier_installation
wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz
tar-zxvf mod_evasive_1.10.1.tar.gz 
cd mod_evasive
// Compilation du module
apxs2 -cia mod_evasive20.c

// Activation, change selon l'emplacement et l'organisation de vos fichiers de configuration
cd /usr/local/conf/
vim httpd.conf
// Ajoutez ceci
LoadModule evasive20_module   modules/mod_evasive20.so

Un exemple de configuration :


        DOSHashTableSize 3097

        # Nbre d'affichage de la même page par IP
        DOSPageCount 10

        # Nbre d'affichage du même site par IP
        DOSSiteCount 50

        # Interval d'affichage de la même page par IP
        DOSPageInterval 1

        # Interval d'affichage du même site par IP
        DOSSiteInterval 1

        # Durée du blocus (exprimé en secondes)
        DOSBlockingPeriod 5

        # Notification par adresse email pour être prévenu
        DOSEmailNotify mail@domain.com

        # Nouveau dossier pour y placer le logs du module
        DOSLogDir "/var/log/apache2/evasive/"

        # Utlisation d'iptables pour bannier l'IP qui tente de saturer le serveur
        DOSSystemCommand "/sbin/iptables -I INPUT -s %s -j DROP"

        # Liste blanche permettant à une IP d'effecuer un nombre illimité de requètes
        DOSWhiteList 127.0.0.1

Et un petit /etc/init.d/apache2 restart pour redémarrer le serveur.

Dans la prochaine partie j’ajouterai d’autres modules et complèterai peut-être la configuration des modules de cet article.

Bonne configuration.

Catégorie: Apache, Internet, Linux | Laisser un commentaire (0)