Installation VPS

De Wiki Arthion
Révision datée du 9 mai 2012 à 21:55 par Maelli (discussion | contributions) (Création de la page)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Installation

Configurer le sous domaine vers l'IP dans l'admin OVH

Config de base

Compte Root, user et SSH

Modifier le mot de passe root ayant été envoyé par mail

 passwd root

Créer un user de base pour la connexion ssh

 adduser nouveauuser 
 aptitude install sudo
 
 visudo 
 

ajouter nouveuuser dans la liste des sudoers

Ajouter la clé publique pour la future connexion ssh de l'utilisateur

  su nouveauuser

Clé publique à déposer dans :

  ~/.ssh/authorized_keys

Modifier la configuration SSH vi /etc/ssh/sshd_config

 Port 10000                  # Changer le port par défaut
 PermitRootLogin no         # Ne pas permettre de login en root
 Protocol 2                 # Protocole v2
 #AllowUsers nouveauuser     # N'autoriser qu'un utilisateur
 PubkeyAuthentication yes   # Autoriser uniquement l'authentification par clé
 #PasswordAuthentication no  # Refuser l'authentification par mot de passe - N'activer qu'après avoir confirmé connexion par clé.


Redémarrer le service SSH après ces modifications :

 /etc/init.d/ssh restart


Configuration des locales ainsi que du fuseau horaire

 dpkg-reconfigure locales
 dpkg-reconfigure tzdata

Mettre a jour le system et reboot

 aptitude update && aptitude full-upgrade 

Configuration réseau

vi /etc/hostname et indiquer le reverse configuré chez OVH

vi /etc/hosts

 127.0.0.1       localhost  
 xx.x.xxx.xxx    truc.machin.com 

vi /etc/resolv.conf

 nameserver ip_serveur_maitre
 nameserver ip_serveur_dns_2

Ne pas répondre aux ping broadcast

 echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

Désactiver le routage de paquets d'origine interne (a tester si ne pose pas de pb avec les VM)

 echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route

Refuser les messages de réponse icmp invalides

 echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

Redémarrer le reseau

 /etc/init.d/networking restart

Vérifications

 hostname -f

doit retourner le FQDN soit truc.machin.com

 hostname -s

doit retourner le nom court, soit openvz

 hostname -d

doit retourner le domaine, soit machin.com

 hostname -i

retourne l'adresse IP

Firewall

Modifier le fichier sysctl.conf afin de permettre le forwarding ipv4 :(ne devrait pas etre nécéssaire)

Consulter /etc/network/interfaces et voir quelles interfaces sont établies par défaut par OVH.

vi /etc/init.d/firewall

  1. !/bin/bash
      1. BEGIN INIT INFO
  1. Provides: Firewall
  2. Required-Start:
  3. Required-Stop:
  4. Should-Start:
  5. Should-Stop:
  6. X-Start-Before:
  7. X-Stop-After:
  8. Default-Start:
  9. Default-Stop:
  10. X-Interactive: true
  11. Short-Description: VPS Firewall
  12. Description:
      1. END INIT INFO


  1. VPS Firewall script
  2. Copyright (C) 2011, James Carnegie me@kipz.org
  3. This program may be freely redistributed under the terms of the GNU GPL
  1. External interface name here

EXTIF="venet0"

  1. VPS main IP here

EXTIP="37.59.224.169"

  1. Your DNS server

NSIP="213.186.33.99"

  1. Flush iptables

iptables -F

  1. Setting default filter policy DROP all

iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP

  1. Allow unlinited traffic on both lo and $EXTIF

iptables -A INPUT -i $EXTIF -s 127.0.0.1 -j ACCEPT iptables -A OUTPUT -o $EXTIF -d 127.0.0.1 -j ACCEPT

  1. Allow loop back to speak to loop back

iptables -A INPUT -i lo -s 127.0.0.1 -j ACCEPT iptables -A OUTPUT -o lo -d 127.0.0.1 -j ACCEPT

  1. Block weird some stuff

iptables -A INPUT -s $EXTIP -j DROP iptables -A OUTPUT -d $EXTIP -j DROP

  1. Stop floods

iptables -N flood iptables -A INPUT -p tcp --syn -j flood iptables -A flood -m limit --limit 1/s --limit-burst 3 -j RETURN iptables -A flood -j DROP

  1. Drop all incoming fragments

iptables -A INPUT -f -j DROP

  1. Drop all incoming malformed XMAS packets

iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

  1. Drop all incoming malformed NULL packets

iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

  1. Bad incoming source ip address 0.0.0.0/8

iptables -A INPUT -s 0.0.0.0/8 -j DROP

  1. Bad incoming source ip address 127.0.0.0/8

iptables -A INPUT -s 127.0.0.0/8 -j DROP

  1. Bad incoming source ip address 10.0.0.0/8

iptables -A INPUT -s 10.0.0.0/8 -j DROP

  1. Bad incoming source ip address 172.16.0.0/12

iptables -A INPUT -s 172.16.0.0/12 -j DROP

  1. Bad incoming source ip address 192.168.0.0/16

iptables -A INPUT -s 192.168.0.0/16 -j DROP

  1. Bad incoming source ip address 224.0.0.0/3

iptables -A INPUT -s 224.0.0.0/3 -j DROP

  1. Incoming HTTP/HTTPS

iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d $EXTIP --dport 80 -j ACCEPT iptables -A OUTPUT -p tcp -s $EXTIP --sport 80 -d 0/0 --dport 1024:65535 -j ACCEPT iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d $EXTIP --dport 443 -j ACCEPT iptables -A OUTPUT -p tcp -s $EXTIP --sport 443 -d 0/0 --dport 1024:65535 -j ACCEPT

  1. Incoming SMTP
  2. iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d $EXTIP --dport 25 -j ACCEPT
  3. iptables -A OUTPUT -p tcp -s $EXTIP --sport 25 -d 0/0 --dport 1024:65535 -j ACCEPT
  1. Incoming SSH

iptables -A INPUT -p tcp -s 0/0 --sport 513:65535 -d $EXTIP --dport 10000 -j ACCEPT iptables -A OUTPUT -p tcp -s $EXTIP --sport 10000 -d 0/0 --dport 513:65535 -j ACCEPT

  1. Outgoing DNS

iptables -A OUTPUT -p udp -s $EXTIP --sport 1024:65535 -d $NSIP --dport 53 -j ACCEPT iptables -A INPUT -p udp -s $NSIP --sport 53 -d $EXTIP --dport 1024:65535 -j ACCEPT iptables -A OUTPUT -p tcp -s $EXTIP --sport 1024:65535 -d $NSIP --dport 53 -j ACCEPT iptables -A INPUT -p tcp -s $NSIP --sport 53 -d $EXTIP --dport 1024:65535 -j ACCEPT

  1. Outgoing ICMP

iptables -A OUTPUT -p icmp -s $EXTIP -d 0/0 -j ACCEPT iptables -A INPUT -p icmp -s 0/0 -d $EXTIP -j ACCEPT

  1. Outgoing traceroute

iptables -A OUTPUT -p udp -s $EXTIP --sport 1024:65535 -d 0/0 --dport 33434:33523 -j ACCEPT

  1. Outgoing SMTP
  2. iptables -A OUTPUT -p tcp -s $EXTIP --sport 1024:65535 -d 0/0 --dport 25 -j ACCEPT
  3. iptables -A INPUT -p tcp -s 0/0 --sport 25 -d $EXTIP --dport 1024:65535 -j ACCEPT
  1. Outgoing SSH
  2. iptables -A OUTPUT -p tcp -s $EXTIP --sport 513:65535 -d 0/0 --dport 22 -j ACCEPT
  3. iptables -A INPUT -p tcp -s 0/0 --sport 22 -d $EXTIP --dport 513:65535 -j ACCEPT
  1. outgoing HTTP/HTTPS

iptables -A OUTPUT -p tcp -s $EXTIP --sport 1024:65535 -d 0/0 --dport 80 -j ACCEPT iptables -A INPUT -p tcp -s 0/0 --sport 80 -d $EXTIP --dport 1024:65535 -j ACCEPT iptables -A OUTPUT -p tcp -s $EXTIP --sport 1024:65535 -d 0/0 --dport 443 -j ACCEPT iptables -A INPUT -p tcp -s 0/0 --sport 443 -d $EXTIP --dport 1024:65535 -j ACCEPT

  1. Drop everything else

iptables -A INPUT -s 0/0 -j DROP iptables -A OUTPUT -d 0/0 -j DROP

chmod +x /etc/init.d/firewall

En cas d'erreur, redémarrer le serveur

Afin de l'ajouter aux scripts appelés au démarrage :

 update-rc.d firewall defaults

Pour le retirer, utiliser la commande suivante :

 update-rc.d -f firewall remove

/etc/init.d/firewall pour activer le filtrage.


Applications

Synchro du temps

Applis

 aptitude install fail2ban rkhunter

Configuration pound

 ## redirect all requests on port 8080 ("ListenHTTP") to the local webserver (see "Service" below):
 ListenHTTP
 Address 91.121.173.80
 Port    80
 # my services definition
 Service
 HeadRequire "Host:.*www.domaine.net.*"
 BackEnd
 Address vz-opensso
 Port    8180
 End
 End
 Service
 HeadRequire "Host:.*abcd.domaine.net.*"
 BackEnd
 Address vz-pouet
 Port    81
 End
 End
 End


Configuration Fail2ban (pour ssh)

 vi /etc/fail2ban/fail2ban.conf

Copier le fichier d'exemple puis le modifier

 cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
 vi /etc/fail2ban/jail.local

Configuration rkhunter

 vi /etc/default/rkhunter
 vi /etc/rkhunter.conf
 aptitude install bind9 bind9-host dnsutils

Installation RVM et Ruby

  sudo apt-get install git-core -y
  sudo apt-get install build-essential -y
  
  #install rvm and gems
  curl -s -o rvm-installer https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer
  chmod u+x rvm-installer
  # install globally as sudo. VERY IMPORTANT
  sudo ./rvm-installer stable
  source /usr/local/rvm/scripts/rvm
  sudo usermod -a -G rvm chad
  newgrp - rvm # the - is VERY important
  rvm pkg install zlib
  rvm install 1.9.2
  rvm use 1.9.2@jekyll
  rvm default 1.9.2@jekyll
  gem install jekyll compass rdiscount --no-ri --no-rdoc


Installation lighttpd et php5

  apt-get install lighttpd libterm-readline-gnu-perl php5-cgi
  which php5-cgi

/usr/bin/php-cgi

  Open lighttpd configuration file:
  1. vi /etc/lighttpd/lighttpd.conf

First add the module mod_fastcgi (lighttpd provides an interface to a external programs that support the FastCGI interface via this module). Make sure your server.modules loades mod_fastcgi:

server.modules = (

           "mod_access",
           "mod_accesslog",
           "mod_fastcgi",
           "mod_rewrite",
           "mod_auth"

)

Now add following lines to configuration:

fastcgi.server = ( ".php" => ((

                    "bin-path" => "/usr/bin/php-cgi",
                    "socket" => "/tmp/php.socket"
                )))

Save the configuration and close all the files. Restart the lighttpd:

  1. /etc/init.d/lighttpd restart
     sudo apt-get install php5-cgi -y
     
     

Installation Mysql

aptitude install mysql-server-5.1 mysql-client-5.1 php5-mysql