Sie sind auf Seite 1von 10

Le Petit Guide...

Du Rootard
host.domain.com

Informations Generiques

Service Tag --------


Langage Systeme Anglais
Clavier Francais
OS Linux
Date de Premiere Installation ??.??.20??
Date de Mise en Service ??.??.20??

Release & Versions

Distributor ID Ubuntu
Description Ubuntu 10.04.1 LTS
Release 10.04
Codename lucid
Noyau 2.6.32-25-server x86_64

Configuration Interface eth0

address XXX.XXX.XXX.XXX
netmask 255.255.255.0
network XXX.XXX.XXX.0
broadcast XXX.XXX.XXX.255
gateway XXX.XXX.XXX.YYY
dns-nameservers ZZZ.ZZZ.ZZZ.ZZZ

Acces aux services

MySQL root / triton486a


SSH adminal / triton486a
Webmin adminal / triton486a

Informations Mediactive :

Baie
Port/Switch
Prise/PDU
Versions et Noms de Code

4.10 Warty Warthog


5.04 Hoary Hedgehog
5.10 Breezy Badger
6.06 LTS Dapper Drake
6.10 Edgy Eft
7.04 Feisty Fawn
7.10 Gutsy Gibbon
8.04 LTS Hardy Heron
8.10 Intrepid Ibex
9.04 Jaunty Jackalope
9.10 Karmic Koala
10.04 LTS Lucid Lynx
10.10 Maverick Meerkat
11.04 Natty Narwhal

Connaitre la version courante et le nom de code

root(a)...:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 10.04.1 LTS
Release: 10.04
Codename: lucid

Installation de l'environnement LAMP

root(a)...:~# aptitude install apache2 mysql-server php5 phpmyadmin postfix

Installation de ssh

root(a)...:~# aptitude install ssh

Installation de Retroclient

root(a)...:~# dpkg --extract retroclient_7.5.112-2_i386.deb retroclient


root(a)...:~# cd retroclient
root(a)...:~# rsync -raz etc/ /etc/
root(a)...:~# rsync -raz usr/ /usr/
root(a)...:~# aptitude install ia32-libs
root(a)...:~# cd /etc/init.d/
root(a)...:~# ln -s /usr/local/dantz/client/rcl rcl
root(a)...:~# /usr/local/dantz/client/retroclient -setpass
root(a)...:~# service rcl start
root(a)...:~# update-rc.d rcl defaults

Installation de Webmin

root(a)...:~# aptitude install libnet-ssleay-perl libauthen-pam-perl


root(a)...:~# aptitude install libio-pty-perl apt-show-versions
root(a)...:~# wget http://prdownloads.sourceforge.net/webadmin/webmin_1.520_all.deb
root(a)...:~# dpkg -i webmin_1.520_all.deb

Création d'un vhost Apache

root(a)...:~# vi /etc/apache2/sites-available/host.domain.com
<VirtualHost *>
ServerAdmin webmaster@mediactive.fr
DocumentRoot /var/www/host.domain.com
ServerName host.domain.com
ErrorLog /var/log/apache2/host.domain.com/error_log
CustomLog /var/log/apache2/host.domain.com/access.log combined

<Directory "/var/www//var/www/host.domain.com">
Options FollowSymLinks Includes
Order deny,allow
#Allow from all
AllowOverride All
</Directory>

DirectoryIndex index.html index.php index.htm


</VirtualHost>

Creation d'un utilisateur (Compte FTP)

root(a)...:~# useradd login_name -g users -d /path/to/user/homedirectory


root(a)...:~# usermod -s /usr/bin/scponly login_name
root(a)...:~# makepasswd -char 16 (7mYeK6cgrbY1xo0q)
root(a)...:~# passwd login_name
Enter new UNIX password:
...
root(a)...:~# chown -R login_name:users /path/to/user/homedirectory

Redemarrage de services

root(a)...:~# /etc/init.d/apache2 restart #redemarrage d'apache


root(a)...:~# /etc/init.d/mysql restart #redemarrage de mysql
root(a)...:~# /etc/init.d/postfix restart #redemarrage de postfix
root(a)...:~# /etc/init.d/rcl restart #redemarrage de retroclient
root(a)...:~# reboot #et dans le doute ...
Mise en Place d'une sauvegarde MySQL (local)

root(a)...:~# vi /root/mysqlbackup.sh
#!/bin/bash
# David 2009.07.24

USER="root"
PASSWORD="*************"
OUTPUTDIR="/var/backups/mysql"
MYSQLDUMP="/usr/bin/mysqldump"
MYSQL="/usr/bin/mysql"

ROTATION=$(date +"%H00.%F")

if [ ! -d "$OUTPUTDIR" ]; then
mkdir "$OUTPUTDIR"
fi

# clean up any old backups - save space


find $OUTPUTDIR -type -f -mtime +7 -exec rm {} \;

# get a list of databases


databases=`$MYSQL --user=$USER --password=$PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`

# dump each database in turn


for db in $databases; do
$($MYSQLDUMP --user=$USER --password=$PASSWORD $db | gzip > $OUTPUTDIR/$db.$ROTATION.sql.gz)
done
root(a)...:~# crontab -e
# ajouter la ligne suivante
0 */4 * * * /root/mysqlbackup.sh
root(a)...:~# chmod 700 /root/mysqlbackup.sh

Modifiaction de configuration Apache2 & PhpMyAdmin

root(a)...:~# vi /etc/apache2/conf.d/security
# initialiser le ServerTokens a la valeur “Prod”
...
#ServerTokens Minimal
ServerTokens Prod
#ServerTokens Full
...
root(a)...:~# rm -f /etc/apache2/conf.d/phpmyadmin.conf
root(a)...:~# vi /etc/apache2/sites-available/hostname.com-ssl
NameVirtualHost *:443
<VirtualHost *:443>

SSLEngine On
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

DocumentRoot /var/www
ServerName hostname.com

Include "/etc/phpmyadmin/apache.conf"

</VirtualHost>
root(a)...:~# a2enmod ssl
root(a)...:~# cd /etc/apache2/sites-enabled/
root(a)...:~# ln -s /etc/apache2/sites-available/hostname.com-ssl 000-hostname.com-ssl
root(a)...:~# service apache2 restart
Mise a Jour et Entretien des Serveurs. (Aptitude)

Aptitude est un gestionnaire de paquets basé sur l'infrastructure APT, c'est-à-dire que vous pourrez
installer, supprimer et mettre à jour les logiciels (paquets) avec Aptitude.

Installer un paquet nommé <paquet> :

user(a)...:~# sudo aptitude install <paquet>

Forcer l'installation d'un paquet nommé <paquet> : (1)

user(a)...:~# sudo aptitude install -f <paquet>

Désinstaller un paquet nommé <paquet> :

user(a)...:~# sudo aptitude remove <paquet>

Désinstaller le paquet nommé <paquet> et supprimer ses fichiers de configuration :

user(a)...:~# sudo aptitude purge <paquet>

Obtenir une version à jour de la liste des paquets disponibles, à faire avant toute installation :

user(a)...:~# sudo aptitude update

Télécharger et installer les nouvelles versions des paquets installés :

# Pour Gutsy (7.10) et versions ultérieures


user(a)...:~# sudo aptitude safe-upgrade
# Pour Feisty (7.04) et versions antérieures
user(a)...:~# sudo aptitude upgrade
Faire une mise à jour de distribution, ou pour les mises à jours nécessitant d'installer ou de désinstaller les
dépendances nécessaires :

# Pour Gutsy (7.10) et versions ultérieures


user(a)...:~# sudo aptitude full-upgrade
# Pour Feisty (7.04) et versions antérieures
user(a)...:~# sudo aptitude dist-upgrade

Creer un Certificat d'Autorité (CA) et un Certificat auto-signé dit “autographe” (CRT)

Créer une clé “serveur” (server.key)

root(a)...:~# openssl genrsa -des3 -out server.key 4096


Generating RSA private key, 4096 bit long modulus
.................++
.........++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:

Créer un certificat de requete (certificate signing request : server.csr)

root(a)...:~# openssl req -new -key server.key -out server.csr


Enter pass phrase for server.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Création du certificat valide 365 jours (server.crt)


# Création du certificat valide 365 jours (server.crt)
root(a)...:~# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Signature ok
subject=/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd
Getting Private key
Enter pass phrase for server.key:

Creer une version de la clé serveur qui ne reclame pas le mot de passe

root(a)...:~# openssl rsa -in server.key -out server.key.nopsswd


Enter pass phrase for server.key:
writing RSA key

Configurer un vhost apache avec mod_ssl

root(a)...:~# vi /etc/apache2/sites-available/hostname-ssl
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
...
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
...
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed.
SSLCertificateFile /path/to/crt/file/server.crt
SSLCertificateKeyFile /path/to/key/file/server.key
...
<VirtualHost>
</IfModule>

Comprendre cron...

Le démon crond est le processus qui permet d'exécuter des tâches planifiées automatiquement à des
instants précis prévus à l'avance (date, heure, minute). En général, cron est installé par défaut sur les
systèmes, sinon pour l'installer utiliser le programme d'installation de votre distro (aptitude ou yum).
La configuration des entrées de la cron se fait avec le programme crontab (tables de cron). C'est
très facile à comprendre et à utiliser, mais il y'a une syntaxe à respecter.

1 - Syntaxe de cron

Chaque entrée de la crontab correspond à une tâche à exécuter.

root(a)...:~# crontab -l
# m h dom mon dow command

chaque ligne se compose de la facon suivante :


m : (minute) codé sur 2 chiffres (de 0 à 59)
h : (hour) codé sur 2 chiffres (de 0 à 23)
dom : (day of month) codé sur 2 chiffres (de 1 à 31)
mon : (month) codé sur 2 chiffres (de 1 à 12)
dow : (day of week) codé sur 1 chiffre (de 0 à 6)
command : tâche a executer

root(a)...:~# crontab -l
# execute /path/to/cmd tous les jours a minuit
0 0 * * * /path/to/cmd

2 - Quelques astuces...

* : signifie tout (ou chaque unité de temps)

root(a)...:~# crontab -l
# execute /path/to/cmd tous les jours a minuit
0 0 * * * /path/to/cmd

, : permet de définir une liste.

root(a)...:~# crontab -l
# execute /path/to/cmd a minuit tous les jours du mois, tous les mois, tous les samedi et dimanche (tous les weekends a minuit).
0 0 * * 5,6 /path/to/cmd

- : permet de préciser un intervalle

root(a)...:~# crontab -l
# execute /path/to/cmd toutes les heures entre minuit et midi, tous les jours du mois, tous les jours de la semaine.
0 0-12 * * * /path/to/cmd

*/ : sert à définir des intervalles avec des pas différents de 1

root(a)...:~# crontab -l
# execute /path/to/cmd toutes les 10 minutes, tous les jours du mois, tous les jours de la semaine.
*/10 * * * * /path/to/cmd

@reboot : permet de lancer la commande au démarrage de la machine

@yearly : tous les ans

root(a)...:~# crontab -l
# @yearly : tous les ans
@yearly /path/to/cmd
# equivaut a ...
0 0 1 1 * /path/to/cmd

@daily : tous les jours

root(a)...:~# crontab -l
# @daily : tous les jours
@daily /path/to/cmd
# equivaut a ...
0 0 * * * /path/to/cmd

Question :

Comment executer une tâche toutes les 90 minutes ?

Das könnte Ihnen auch gefallen