Mise à jour du script d’installation Nginx / Php5 pour Ubuntu 14.04

Une petite mise à jour du script d’installation Nginx / Php-fpm avec cette fois ci la compilation de php-fpm 5.5.9 à la place de la version des dépôts.J’ai également fait le choix d’utiliser les sockets à la place d’un port TCP.

Concernant l’emplacement des fichiers de configuration j’ai préféré mettre tous les fichiers du pool php au même endroit dans /etc/php.
Libre à vous de modifier ce path dans le script.
Vous trouverez le script mis à jour ici.

Rediriger facilement du trafic réseau avec rinetd

Il est parfois utile de faire des redirections de port (NAT) vers une autre machine notamment lors d’un migration de dns qui n’est jamais effective immédiatement.

Pour résoudre ce problème et assurer la continuité de service lors de mes migrations, j’ai découvert rinetd.

Installation

apt-get install rinetd

Configuration

On édite le fichier de configuration

 vim /etc/rinetd.conf 

Rien de bien compliqué dans la syntaxe, elle est de ce type. On pourra aussi spécifier un fichier de log.

#localip localport remoteip remoteport
logfile /var/log/rinetd.log

Avec ici un exemple de redirection du trafic sur le port 80.

0.0.0.0 80  192.168.1.50  80

La présence de 0.0.0.0 signifie que l’écoute du port se fait sur toutes les interfaces réseau.

Il est également possible de mettre des restrictions sur qui à le droit ou pas de passer par ce NAT, en spécifiant l’IP autorisée. Les wildcards sont permises mais attention pas les FQDN.

allow IP
deny 192.168.2.15
allow 192.168.1.*

Test

Chaque changement de configuration doit être suivie d’un restart du service

/etc/init.d/rinetd restart 

Et on peut vérifier l’écoute du port comme ceci

netstat -ntlpv | grep rinetd
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1905/rinetd     

Script et guide d’installation pour Informix 12.10 sur Ubuntu 14.04 lts en mode silent

Dans mon précédent emploi il m’a fallu dompter Informix le moteur de base de données transactionnel de IBM. Son installation est bien plus ardue que MySql ou MariaDb, voila donc un guide et un script d’installation sur un serveur Ubuntu 14.04 lts flambant neuf.

On va commencer par récupérer l’archive gratuite d’Informix Innovator-C en version 12.10 un fois un compte crée sur le site d’IBM. Dans le cas présent j’utilise une version x86_64.

Voila les différentes étapes que je vais décrire ci dessous :

  • Update / Upgrade de l’OS
  • Vérification de la présence de l’archive Informix
  • Création d’un répertoire d’installation
  • Création du user informix
  • Extraction de l’archive
  • Installation des dépendances
  • Création d’un fichier bundle pour l’installation silent
  • Installation en mode silent
  • Configuration onconfig et sqlhost
  • Création de la structure de répertoires
  • Configuration des variables d’environnement pour le user
  • (manuel) Initialisation du moteur
  • (manuel) Test du backup ontape

Lancez le script en root comme suit :

./informix_install.sh

Update / Upgrade de l’OS

Rien de spécial ici, on fait juste attention à être bien a jour avant de commencer.

Vérification de la présence de l’archive Informix

Par rapport au CLUF d’IBM il est nécessaire de s’enregistrer sur leur site pour récupérer l’archive d’installation. Il y a plusieurs versions disponible, de la gratuite à celle hors de prix, et on va se concentrer sur les éditions gratuites qui sont 2 :

  • IBM Informix Developer Edition — For application development and testing only, this edition packs the full suite of Informix functionality into an attractive price point: free! The Developer Edition includes all the functionality available in the Informix Enterprise Edition with scalability constraints including processing, memory, and storage limitations. It is available on a wide range of operating systems in 32- and 64-bit versions where appropriate. Customers can upgrade from the Developer Edition directly to any other edition simply by installing the new database binaries.
  • IBM Informix Innovator-C Edition— For customers looking for a robust database environment that can support small production workloads, this edition provides the most widely used data processing functionality. Available on all supported platforms, this edition is limited to one core and a total of 2 GB of RAM operating from the same Install.


J’ai choisi l’Innovator-C ;)

Création d’un répertoire d’installation

Il est nécessaire que l’archive Informix soit dans le même répertoire que le script d’installation. Toute la tambouille se fera dans /opt/informix-src

Création du user informix

User nécessaire pour l’installation, cela sera aussi l’administrateur du moteur Informix au sens ‘root’ pour MariaDb/MySql.

Extraction de l’archive

Rien de spécial ici …

Installation des dépendances

Pour avoir connu Informix depuis maintenant 4 ans, la liste des dépendances et des tricks de librairies s’est réduite au fur et a mesure des versions. Il ne reste plus que :

apt-get install -y  bc libaio1 pdksh libncurses5-dev

Création d’un fichier bundle pour l’installation silent

C’est un gros avantage de pouvoir installer Informix via un fichier de configuration en mode silencieux, cela permet de choisir quelles fonctionnalités on va mettre dans le moteur avec la variable CHOSEN_FEATURE_LIST du bundle.

CHOSEN_FEATURE_LIST=IDS,IDS-SVR,IDS-EXT,IDS-EXT-JAVA,IDS-EXT-OPT,IDS-EXT-CNV,IDS-EXT-XML,IDS-DEMO,IDS-ER,IDS-LOAD,IDS-LOAD-ONL,IDS-LOAD-DBL,IDS-LOAD-HPL,IDS-BAR,IDS-BAR-CHK,IDS-BAR-ONBAR,IDS-BAR-TSM,IDS-ADM,IDS-ADM-PERF,IDS-ADM-MON,IDS-ADM-ADT,IDS-ADM-IMPEXP,IDS-JSON,GLS,GLS-WEURAM,GLS-EEUR,GLS-CHN,GLS-JPN,GLS-KOR,GLS-OTH,SDK,SDK-CPP,SDK-CPP-DEMO,SDK-ESQL,SDK-ESQL-DEMO,SDK-ESQL-ACM,SDK-LMI,SDK-ODBC,SDK-ODBC-DEMO,JDBC

J’ai fait le choix de retirer tout ce qui concerne OAT et le serveur web embarqué en conservant par contre tous les SDK. Libre à vous de modifier cette liste.

Installation en mode silent

La partie sympathique se joue ici :

./ids_install -i silent -f /opt/informix-src/bundle.cyklodev -DUSER_INSTALL_DIR=/opt/IBM/Informix

Configuration onconfig

Une des partie ardue d’Informix c’est le fichier de configuration à rallonge.

  • ROOTNAME : c’est le nom de l’espace que le moteur utilise
  • ROOTPATH : le path ou se situe le fichier
  • CONSOLE et MSGPATH : les fichiers de logs
  • DBSERVERNAME : le nom de l’instance
  • DEF_TABLE_LOCKMODE : mode de lock utilisé lors d’écriture concurrentielles
  • TAPEDEV : path où sont stockés les backups ontape
  • LTAPEDEV : path où sont stockés les logicals logs

Il y a bien d’autres choses à découvrir dans ce fichier de configuration. Je reviendrai dessus lors de prochains articles.

Configuration sqlhost

Ce fichier permet de configurer la connectivité des instances informix, soit en socket soit en tcp. Ici pas de grand débat, ça sera tcp sur le port par défaut 9088.

Création de la structure de répertoires

J’ai choisi arbitrairement la structure des répertoires pour les backups, les logs ainsi que les spaces.
Libre à vous de modifier. Par contre attention, le chmod 777 n’est pas la pour le plaisir…

Configuration des variables d’environnement pour le user

Une autre complexité d’Informix est la configuration des variables d’environnement pour le user informix. Sans certains de ces paramètres, il est impossible de démarrer le moteur rien que ça ! Veuillez donc à ce que ces paramètres soient corrects :

  • INFORMIXDIR
  • INFORMIXSERVER, ONCONFIG, INFORMIXSQLHOSTS

Le tout est embarqué dans le bashrc du user pour une application dès la connexion.

su - informix

(manuel) Initialisation du moteur

Pour commencer il faut initialiser le moteur, et attention cela ne se fait qu’une seule fois !

oninit -ivy

Une fois la pile de log passée le shell doit vous rendre la main et la chose la plus simple pour voir si tout c’est bien passé c’est cette commande :

onstat -m

Qui devrait vous afficher un beau Online

IBM Informix Dynamic Server Version 12.10.FC2IE -- On-Line -- Up 00:00:18 -- 156264 Kbytes

Message Log File: /dev/tty

(manuel) Test du backup ontape

Pour tester un backup il faut bien évidement être en mode Online et il vous suffit de :

ontape -s -L 0

Ce qui devrait vous afficher :

10 percent done.
100 percent done.
File created: /home/informix/backup/datas/u1404_0_L0

Please label this tape as number 1 in the arc tape sequence. 
This tape contains the following logical logs:

 3

Program over.

Conclusion

Vous avez désormais un moteur correctement configurer, il nous vous reste plus qu’à plonger dans l’univers Informix et sa  » »documentation » » plutôt indigeste.
Pour y voir un peu plus clair voilà quelques sites qui vont vous permettre d’avancer :

Sécuriser un serveur Ubuntu 12.04 ou 14.04 (ClamAV,UFW,Fail2Ban,Rkhunter,Chkrootkit,LMD)

Un serveur gnu/linux est souvent considéré comme sûr de base, mais il convient tout de même d’installer un antivirus et un firewall. La présence potentiel de rootkit et autre webshell sur une machine qui fait de l’hébergement web requière l’installation de logiciels adaptés.

Aujourd’hui je vous propose un script sur Github fonctionnant sur Ubuntu 12.04 et 14.04 lts et qui intègre tout ces logiciels avec en prime la mise en place de notifications emails sur une base journalière. Voyons le listing dans le détail :

  • Configuration de l’envoi d’email
  • Configuration d’UFW pour un accès SSH
  • Installation et configuration de Rkhunter
  • Installation et configuration de Chkrootkit
  • Installation et configuration de Fail2Ban
  • Installation et configuration de ClamAV
  • Installation et configuration de Linux Malware Detection

Pour l’envoi d’email sur un serveur il faudra vous munir des identifiants et de l’adresse du serveur smtp pour que cela fonctionne.
Attention à correctement définir le port SSH car la configuration du firewall intégré à Ubuntu sera faite pour n’autoriser que SSH de l’extérieur.
Pour détecter les menaces de type rootkit, Rkhunter et Chkrootkit seront installés et avec une mise à jour et un scan par jour avec notification email.
Pour déjouer les forces brutes sur le port SSH, Fail2ban sera configurer avec notification email.
La détection des virus sera assuré par ClamAV et les malwares (webshell par exemple) seront détectés par LMD avec une mise à jour et un scan par jour avec notification email.

Attention tout de même aux faux positifs notamment avec Rkhunter et Chkrootkit ! Un RTFM est obligatoire sur chaque warning et chaque error ;)

Voila vous pouvez respirer maintenant !

Créer un certificat SSL auto-signé pour Nginx

Si vous ne souhaitez pas acheter un certificat SSL, il est tout a fait possible d’un générer un vous même.

On commence par créer un répertoire :

mkdir  /etc/nginx/ssl/
cd /etc/nginx/ssl/

Puis on génère une autorité de certification (CA) en spécifiant une passphrase:

openssl genrsa -des3 -out server.key 1024

Puis on spécifie les informations de l’autorité de certification :

openssl req -new -key server.key -out server.csr

Et on crée une clé allant avec le certificat :

cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 1000 -in server.csr -signkey server.key -out server.crt

Finalement on intègre le certificat et la clé dans la config du vhost :

server {
    listen 443 ssl;
    ssl on;
    ssl_certificate      /etc/nginx/ssl/server.crt;
    ssl_certificate_key  /etc/nginx/ssl/server.key;

On peut éventuellement ajouter le support SPDY si Nginx a été compilé avec :

server {
    listen 443 ssl spdy;
    ssl on;
    ssl_certificate      /etc/nginx/ssl/server.crt;
    ssl_certificate_key  /etc/nginx/ssl/server.key;