Filed under Internet

Installation d’un serveur dédié « from scratch » sous Debian5

Le serveur est fournit par Gandi que je recommande fortement à tous ceux qui ne savent pas vers quel hébergeur se tourner.

Tout d’abord les pré-requis:

Mise à jour du système avec aptitude: Explication aptitude [apt]

root@host: apt-get update
root@host: apt-get upgrade
root@host: apt-get dist-upgrade

Installation des librairies de base:

root@host: apt-get install build-essential

Installation de webmin

WebMin permet d’administrer à distance une machine Linux à partir d’un simple navigateur.
Voici les instructions pour installer rapidement l’interface d’administration WebMin sous Debian (et Ubuntu):

1) Installez les paquets nécessaires à WebMin: sudo apt-get install libnet-ssleay-perl libauthen-pam-perl libio-pty-perl libmd5-perl
2) Allez sur http://www.webmin.com/download.html
2) Téléchargez le .deb (par exemple webmin_1.390_all.deb)
3) Installez WebMin (en double-cliquant le .deb ou en tapant: sudo dpkg –install webmin_1.390_all.deb )
4) Mettez un mot de passe: sudo /usr/share/webmin/changepass.pl /etc/webmin root votre_mot_de_passe (Il ne s’agit pas de modifier le mot de passe de root, mais le mot de passe de l’admin WebMin qui s’appelle « root ».)
5) Allez sur https://localhost:10000/ et loguez-vous avec le compte « root » et votre mot de passe.

Installation du serveur web Apache 2

root@host: apt-get install apache2
Répondez oui pour installer les packages dépendants:

The following extra packages will be installed:
  apache2-mpm-worker apache2-utils apache2.2-common libapr1 libaprutil1
  libexpat1 libmagic1 libpcre3 libpq4 libsqlite3-0 mime-support

Et c’est tout pour l’instant! Le serveur est accessible à l’adresse: http://IP_SERVEUR/. La page qui s’affiche se trouve dans /var/www/

Nous verrons plus tard la configuration d’apache

  • Installation de PHP5
  • Installation du serveur MySQL
  • Installation de phpmyadmin
  • Tagged ,

    Serveur Python XMLRPC multithreadé

    But:

    Le but premier était exécuter des commandes bash depuis une page web. Ceci est très simple en passant par PHP et son lot de commandes système style exec();. Mais ces commandes sont désactivée par le SAFE_MODE de PHP. Reste encore la possibilité exécuter des CGI si la configuration d’apache le permet.
    Bref, un serveur XML-RPC répondait à ces attentes.
    Mise en œuvre:

    Le fichier server.py

    import SocketServer
    from SimpleXMLRPCServer import SimpleXMLRPCServer,SimpleXMLRPCRequestHandler
    import sys
    import os
    
    # Threaded mix-in
    class AsyncXMLRPCServer(SocketServer.ThreadingMixIn,SimpleXMLRPCServer) :
    pass
    
    # Example class to be published
    class TestObject:
    def sysReq(self,data):
    return os.system(data)
    def pow(self, x, y):
    return pow(x, y)
    def add(self, x, y) :
    return x + y
    def divide(self, x, y):
    return float(x) / float(y)
    
    # Instantiate and bind to localhost:8080
    server = AsyncXMLRPCServer(('localhost', 8080), SimpleXMLRPCRequestHandler)
    
    # Register example object instance
    server.register_instance(TestObject())
    server.register_introspection_functions()
    # run!
    server.serve_forever()
    

    Démarrage du serveur:

    user@host: python server.py

    Le fichier client.py

    import xmlrpclib
    import sys
    
    s = xmlrpclib.ServerProxy('http://localhost:8080')
    
    print s.pow(2,3) # Returns 2**3 = 8
    print s.add(2,3) # Returns 5
    print s.div(5,2) # Returns 5//2 = 2
    
    # Print list of available methods
    print s.system.listMethods()
    
    print s.sysReq(sys.argv[1])
    

    Ressources:

    Tagged ,

    Activer un accès https sur apache

    Afin de sécuriser les accès à une page de login sur un serveur Web mail, je voulais rediriger le trafic http sur le port https, et donc dire au serveur Apache d’écouter sur ce port. La configuration se fait en plusieurs étapes :

    • Création d’un certificat, qui sera utilisé par le serveur http(s)
    • Activation du SSL pour Apache
    • Configuration d’un Virtual Host apache

    Voyons ces étapes dans l’ordre.

    Création d’un certificat

    La création d’un certificat auto-signé, sous Linux, est assez simple dès que l’on a installé le paquet openssl.

    # openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/mailserver.crt -keyout /etc/ssl/private/mailserver.key

    On précise ici que l’on veut un nouveau certificat, qui va durer 365 jours (sinon c’est 30 jours par défaut), de type X509, et le nom et l’emplacement des fichiers de certificat et de clé privé.

    Cette commande va demander la saisie de plusieurs paramètres. Le plus important est le name (Common Name). Il faut mettre à ce niveau le nom complet du host. Par exemple pour un serveur accédé par l’URL webmail.mondomaine.com

    Common Name (eg, YOUR name) [] : webmail.mondomaine.com

    Remarque : il s’agit ici de certificat auto-signé. Généralement cela signifie que les navigateurs internet vont émettre une alerte de sécurité. Comme c’est pour un usage interne, on peut s’en satisfaire. Dans le cas d’un site public, il vaut mieux avoir un certificat signé par une autorité de confiance.

    On sécurisé l’accès au fichier de clés privés :

    # chmod 440 /etc/ssl/private/mailserver.key

    Activation du SSL pour apache

    L’action se fait simplement par l’activation du module mod_ssl :

    a2enmod ssl

    Création du Virtual Host

    On va ensuite créer un virtual host pour notre URL, qui écoute sur le port 443:

    # vhost https
    <VirtualHost *:443>
      DocumentRoot /var/www/webmail
      ServerName  webmail.mondomaine.com
    
      ServerSignature Off
      ErrorLog ${APACHE_LOG_DIR}/error_webmail.log      
      LogLevel info      
      CustomLog ${APACHE_LOG_DIR}/access_webmail.log combined      
    
      SSLEngine on
      SSLCertificateFile /etc/ssl/certs/mailserver.crt
      SSLCertificateKeyFile /etc/ssl/private/mailserver.key
    </VirtualHost>

    Puis on active le site et on redémarre apache :

    a2ensite webmail
    /etc/init.d/apache2 reload

     

    Tagged , ,