« Installation VPS » : différence entre les versions
(Création de la page) |
(Création de la page) |
||
Ligne 81 : | Ligne 81 : | ||
vi /etc/init.d/firewall | vi /etc/init.d/firewall | ||
< | <pre> | ||
#!/bin/bash | #!/bin/bash | ||
Ligne 202 : | Ligne 202 : | ||
iptables -A INPUT -s 0/0 -j DROP | iptables -A INPUT -s 0/0 -j DROP | ||
iptables -A OUTPUT -d 0/0 -j DROP | iptables -A OUTPUT -d 0/0 -j DROP | ||
</ | </pre> | ||
chmod +x /etc/init.d/firewall | chmod +x /etc/init.d/firewall |
Version du 9 mai 2012 à 20:56
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
#!/bin/bash ### BEGIN INIT INFO # Provides: Firewall # Required-Start: # Required-Stop: # Should-Start: # Should-Stop: # X-Start-Before: # X-Stop-After: # Default-Start: # Default-Stop: # X-Interactive: true # Short-Description: VPS Firewall # Description: ### END INIT INFO # VPS Firewall script # Copyright (C) 2011, James Carnegie me@kipz.org # This program may be freely redistributed under the terms of the GNU GPL # External interface name here EXTIF="venet0" # VPS main IP here EXTIP="37.59.224.169" # Your DNS server NSIP="213.186.33.99" # Flush iptables iptables -F # Setting default filter policy DROP all iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # 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 # 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 # Block weird some stuff iptables -A INPUT -s $EXTIP -j DROP iptables -A OUTPUT -d $EXTIP -j DROP # 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 # Drop all incoming fragments iptables -A INPUT -f -j DROP # Drop all incoming malformed XMAS packets iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP # Drop all incoming malformed NULL packets iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP # Bad incoming source ip address 0.0.0.0/8 iptables -A INPUT -s 0.0.0.0/8 -j DROP # Bad incoming source ip address 127.0.0.0/8 iptables -A INPUT -s 127.0.0.0/8 -j DROP # Bad incoming source ip address 10.0.0.0/8 iptables -A INPUT -s 10.0.0.0/8 -j DROP # Bad incoming source ip address 172.16.0.0/12 iptables -A INPUT -s 172.16.0.0/12 -j DROP # Bad incoming source ip address 192.168.0.0/16 iptables -A INPUT -s 192.168.0.0/16 -j DROP # Bad incoming source ip address 224.0.0.0/3 iptables -A INPUT -s 224.0.0.0/3 -j DROP # 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 # Incoming SMTP #iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d $EXTIP --dport 25 -j ACCEPT #iptables -A OUTPUT -p tcp -s $EXTIP --sport 25 -d 0/0 --dport 1024:65535 -j ACCEPT # 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 # 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 # 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 # Outgoing traceroute iptables -A OUTPUT -p udp -s $EXTIP --sport 1024:65535 -d 0/0 --dport 33434:33523 -j ACCEPT # Outgoing SMTP #iptables -A OUTPUT -p tcp -s $EXTIP --sport 1024:65535 -d 0/0 --dport 25 -j ACCEPT #iptables -A INPUT -p tcp -s 0/0 --sport 25 -d $EXTIP --dport 1024:65535 -j ACCEPT # Outgoing SSH #iptables -A OUTPUT -p tcp -s $EXTIP --sport 513:65535 -d 0/0 --dport 22 -j ACCEPT #iptables -A INPUT -p tcp -s 0/0 --sport 22 -d $EXTIP --dport 513:65535 -j ACCEPT # 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 # 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:
- 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:
- /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