Archives pour la catégorie Memo

Maitriser l’accès root à son serveur web / Sécurisation de SSH

Après avoir expliquer en détail comment corriger les avertissements de rkhunter (outil de surveillance de failles sur un serveur, cf. post consacré), je précisais qu’il était vivement conseillé de ne pas autoriser les accès root sur son serveur. Ci-dessous, une méthode de sécurisation de l’accès root.

Sécurisation de SSH
Editer le fichier

vi /etc/ssh/sshd_config

Et modifier les propriétés suivantes :

Port 2222 # Changer le port par défaut
PermitRootLogin no # Ne pas permettre de login en root
Protocol 2 # Protocole v2
AllowUsers ooznet # N'autoriser qu'un utilisateur précis

et redémarrez le service:

/etc/init.d/ssh restart

Recevoir un mail en cas de connexion avec Root
Vous pouvez éditer le fichier /root/.bashrc qui est exécuté au démarrage d’une session root pour envoyer un e-mail de notification. De cette façon, vous serez prévenu lorsqu’un login est effectué.

vi /root/.bashrc

Ajoutez la ligne (en modifiant l’adresse e-mail de destination) :

echo 'Accès Shell Root le ' `date` `who` | mail -s `hostname` Shell Root de `who | cut -d"(" -f2 | cut -d")" -f1` monitoring@monitoring.com

Créer un utilisateur
Tout d’abord, créer l’utilisateur :

sudo useradd [options] identifiant

et modifier son mot de passe :

passwd identifiant

Se connecter à son serveur web
Dorénavant, il n’est plus possible de vous connecter à votre serveur web avec root. Il faut donc se connecter avec Kitty par exemple via SSH sur le port 2222 (ou autre en fonction de ce que vous avez configuré dans le fichier sshd_config) avec le nouvel utilisateur créé. Ensuite, il vous faut prendre la main sur votre serveur en root via la commande :

su -

Enjoy !

Modernizr, ou comment appliquer du HTML5/CSS3 sur les anciens navigateurs

Problématique rencontrée récemment en développant un site internet en HTML5/CSS3, la compatibilité avec les anciens navigateurs.

En effet, les nouveautés de ces nouvelles technologies sorties récemment ne sont visualisables que sur les navigateurs récents (détail complet de compatibilité sur http://html5readiness.com/).

La parade : Modernizr, une librairie Javascript open-source permettant de filtrer/paramétrer les caractéristiques spécifiques à CSS3 et HTML5 et de proposer une alternative pour l’affichage. Modernizr est évolutif et à pour objectif de « moderniser nos pratiques de développement ».

Lien du site : http://www.modernizr.com/

Enjoy !

Donner l’accès distant à une base de données MySQL

Voilà, dans le cadre d’une migration, j’ai dû autoriser sur mon serveur l’accès à ma base de données MySQL dont voici la marche à suivre :

Etape n ° 1: Se connecter via ssh

Se connecter via ssh sur son serveur en root (via Kitty) et saisir la ligne de commande suivante pour donner l’autorisation de l’écoute du port au niveau du firewall :

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 3306 -j ACCEPT

 

Etape n ° 2: Permettre la mise en réseau

Toujours sur le serveur, il s’agit de modifier le fichier de configuration my.inf avec l’éditeur de texte vi

vi /etc/my.cnf

Repérer la ligne avec la balise [mysqld], assurez-vous que la ligne skip-networking est commentée par « # » (ou supprimez la ligne) et ajouter la ligne suivante :

Bind-address = xxx.xxx.xxx.xxx # l'adresse ip du serveur hébergeant votre bdd

Pour connaître l’adresse IP de son serveur, un petit ifconfig avec lecture du résultat : eth0 … inet adr:xxx.xxx.xxx.xxx

Par exemple, si l’adresse de votre serveur est 88.45.121.23 :

[mysqld]
set-variable=local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
bind-address=88.45.121.23

Enregistrer et quitter le fichier (:wq!, cf. Vi, les raccourcis de l’éditeur de texte), puis redémarrer le service mysqld :

/etc/init.d/mysqld restart

 

Etape n ° 3: Accorder l’accès à l’adresse IP distante

Tout d’abord, connecter vous à mysql en ligne de commande :

mysql -u root -p mysql

Puis saisissez votre mot de passe (l’utilisateur ayant tous les privilèges peut également être admin, tout dépend de votre configuration mysql).

Il s’agit ensuite de donner les droits à un utilisateur de se connecter à distance via la commande suivante :

mysql> GRANT ALL ON base_test.* TO user_test@'xxx.xxx.xxx.xxx' IDENTIFIED BY 'pwd_test';

  • base_test : la base de données nécessitant un accès à distance
  • user_test : l’utilisateur qui doit y accéder
  • xxx.xxx.xxx.xxx : l’adresse IP du serveur contenant la bdd (88.45.121.23 dans notre exemple)
  • pwd_test : le mot de passe de l’utilisateur

Se déconnecter de mysql.

mysql> exit

 

Etape n ° 4: Tester le résultat

Il est possible de tester les différentes actions réalisées via une commande mysql ou telnet :

mysql -u user_test –h 88.45.121.23 –p
telnet 88.45.121.23 3306

Enjoy !

WordPress – Problème lors d’une mise à jour ?

Si vous voyez apparaître ce message :

Une mise à jour automatique de WordPress a échoué en cours de route ; vous pouvez tenter de la relancer.

Rien de bien méchant, certainement une mise à jour de WordPress ou d’un des ses plugins qui s’est interrompu en cours de màj. La méthode à suivre pour résoudre le problème est toute simple, il faut supprimer à la racine du dossier où se trouve le blog le fichier .maintenance

Je viens d’avoir ce soucis :

  • Via SSH (en utilisant le programme Putty), connexion en root sur mon serveur,
  • direction /var/www/vhosts/idys.fr/httpdocs/blog/,
  • un ll -a pour afficher tous les fichiers même ceux cachés
  • puis un rm -f .maintenance pour supprimer le fichier en question.

C’est certainement possible en FTP en affichant les fichiers cachés dans l’explorateur (lu sur certains blogs) mais personnellement, je n’ai pas réussi alors passage par SSH (réservé aux connaiseurs).

Tout est revenu dans l’ordre, ouf !

Enjoy !

[phpBB3] Phoogle Map 0.4.1 + Traduction française

Hello,

Comme beaucoup d’entre vous, j’ai cherché à installer un mod sur mon forum phpbb3 pour visualiser la carte des membres via une carte Google Map. Malheureusement, les quelques projets lancés sur le sujet ont été abandonnés par leur auteur (Phoogle Map/Shmoogle Map/Etc.) et les sources perdues…

Mais à force de surfer, j’ai réussi à retrouver les sources d’un Phoogle Map 0.4.1 que j’ai installé sur mon forum Yamaha FZ8 (http://www.yamaha-fz8.fr).

J’en ai profité pour traduire le fichier principal en français à l’aide de l’outil de traduction Google, j’ai corrigé quelques phrases pour que ce soit propre pour la partie utilisateur, il se peut que quelques phrases soient encore bancales du côté Administrateur mais c’est moins grave 😉

Sources : phoogle_map_041_fr

Enjoy !

Color Scheme

Hello,

On repart sur le thème des couleurs où il s’agit de trouver ses couleurs pour une charte graphique tout en respectant l’harmonie des couleurs.

Quelques pistes :

Enjoy !

[PHP] Gestion du timezone pour la fonction date();

Hop, lorsqu’on monte en version de PHP, on a son lot de nouveautés et de surprises dont ce joli petit message :

[code][phpBB Debug] PHP Notice: in file /index.php on line 107: date() [function.date (http://megane3.fr/function.date)]: It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Europe/Berlin’ for ‘CET/1.0/no DST’ instead[/code]

Une petite recherche et je tombe sur le manuel PHP de la fonction date_default_timezone_set(); (cf. http://www.php.net/manual/fr/function.date-default-timezone-set.php) qui m’explique que depuis la version 5.3.0 de PHP, cette fonction émet une alerte de type E_WARNING.

Je cite:

Depuis PHP 5.1.0 (lorsque les fonctions date/heure ont été écrites), chaque appel à une fonction date/heure génère une E_NOTICE si le décalage horaire n’est pas valide et/ou un message E_WARNING si vous utilisez des configurations système ou la variable d’environnement TZ.

Pour corriger tout ça, j’ai juste ajouter la fonction suivante trouver dans les commentaires du lien ci-dessus.

<?php
function getLocalTimezone()
{
    $iTime = time();
    $arr = localtime($iTime);
    $arr[5] += 1900; 
    $arr[4]++;
    $iTztime = gmmktime($arr[2], $arr[1], $arr[0], $arr[4], $arr[3], $arr[5], $arr[8]);
    $offset = doubleval(($iTztime-$iTime)/(60*60));
    $zonelist = 
    array
    (
        ‘Kwajalein’ => -12.00,
        ‘Pacific/Midway’ => -11.00,
        ‘Pacific/Honolulu’ => -10.00,
        ‘America/Anchorage’ => -9.00,
        ‘America/Los_Angeles’ => -8.00,
        ‘America/Denver’ => -7.00,
        ‘America/Tegucigalpa’ => -6.00,
        ‘America/New_York’ => -5.00,
        ‘America/Caracas’ => -4.30,
        ‘America/Halifax’ => -4.00,
        ‘America/St_Johns’ => -3.30,
        ‘America/Argentina/Buenos_Aires’ => -3.00,
        ‘America/Sao_Paulo’ => -3.00,
        ‘Atlantic/South_Georgia’ => -2.00,
        ‘Atlantic/Azores’ => -1.00,
        ‘Europe/Dublin’ => 0,
        ‘Europe/Belgrade’ => 1.00,
        ‘Europe/Minsk’ => 2.00,
        ‘Asia/Kuwait’ => 3.00,
        ‘Asia/Tehran’ => 3.30,
        ‘Asia/Muscat’ => 4.00,
        ‘Asia/Yekaterinburg’ => 5.00,
        ‘Asia/Kolkata’ => 5.30,
        ‘Asia/Katmandu’ => 5.45,
        ‘Asia/Dhaka’ => 6.00,
        ‘Asia/Rangoon’ => 6.30,
        ‘Asia/Krasnoyarsk’ => 7.00,
        ‘Asia/Brunei’ => 8.00,
        ‘Asia/Seoul’ => 9.00,
        ‘Australia/Darwin’ => 9.30,
        ‘Australia/Canberra’ => 10.00,
        ‘Asia/Magadan’ => 11.00,
        ‘Pacific/Fiji’ => 12.00,
        ‘Pacific/Tongatapu’ => 13.00
    );
    $index = array_keys($zonelist, $offset);
    if(sizeof($index)!=1)
        return false;
    return $index[0];
}
date_default_timezone_set(getLocalTimezone());
?>

Et le tour est joué !

Enjoy !

Différences de version de la bibliothèque MySQL ?

Hello,

Si vous rencontrez ce message d’erreur dans PhpMyAdmin, notamment suite à une mise à jour de LAMP, voilà ce qu’il signifie exactement.

Message d’erreur:

La version de votre bibliothèque MySQL (5.0.77) diffère de la version de votre serveur MySQL (5.1.54). Ceci peut occasionner un comportement imprévisible.

En fait, la version du client, à savoir PHP est configurée pour fonctionner avec la version 5.0.77 de MySQL. Or, en mettant à jour MySQL sur le serveur, celle-ci est montée pour devenir 5.1.54 d’où l’incohérence !

Pour cela, il faut recompiler PHP et Apache !

Petite astuce pour trouver une chaine de caractères dans un fichier.

find . -name "*" -exec grep -Hn "5.1.54" {} \;

Enjoy !