Archives pour la catégorie Serveur

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 !

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 !

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 !

MàJ PHP sous Plesk

On continue pour les petites astuces techniques qui peut-être serviront à d’autres. Dans notre configuration actuelle, un serveur dédié sous CentOS 5.5 avec une interface plesk, pour mettre à jour PHP (qui est une très vieille version dans la configuration de base), il suffit en s’étant connecté en SSH sur son serveur avec le login root d’exécuter les commandes suivantes :

Récupération de repository corrects

wget -q -O - http://www.atomicorp.com/installers/atomic.sh | sh

Lancement de la demande de mise à jour

yum update php mysql php-mysql

Plus d’infos disponibles sur ce post, notamment en cas de problème: http://forum.ovh.com/showthread.php?t=43174

Et voilà, passage de PHP 5.1.6 à 5.2.16 😀

Pour connaitre votre version de PHP, au choix, dans un fichier php:

phpinfo();

Ou en ligne de commande:

php -v

Enjoy !

Vi, les raccourcis de l’éditeur de texte

Dans le monde de l’administration serveur, il y a un outil indispensable, l’éditeur de texte Vi. Pas très convivial, il fonctionne sous GNU/Linux en ligne de commande. Exit le mode clic de la souris, tout est basé sur des raccourcis claviers et pas forcément les plus courants, pas de CTRL+C/CTRL+V !

Il existe 2 modes dans Vi, le mode Commande (mode par défaut pour exécuter des commandes), le mode Insertion (pour modifier, supprimer, déplacer).

Les raccourcis les plus utilisés

  • :w : sauvegarder
  • :q! : quitter sans sauvegarder
  • :wq : quitter Vi en sauvegardant les modifications sans message de confirmation (w = write, q = quitter)
  • dd : suppression d’une ligne entière
  • /motif : recherche le motif dans le texte

Lire la suite

Correction des Warning de rkhunter (Plesk) – Suite

Hello,

Suite à un update de rkhunter, je me retrouve avec de nouveaux warnings et je vais donc détailler comment les résoudre.

Pour le premier warning, il s’agit de décommenter dans le fichier rkhunter.conf la ligne qui autorise ce dossier caché.

Warning: Hidden directory found: /dev/.udev
ALLOWHIDDENDIR=/dev/.udev

Les fichiers cachés trouvés par rkhunter, après avoir vérifié que ceux-ci sont valides, peuvent être intégré dans le test en les autorisant dans le fichier de configuration.

Warning: Hidden file found: /usr/share/man/man1/..1.gz: gzip compressed data, from Unix, max compression
Warning: Hidden file found: /usr/bin/.ssh.hmac: ASCII text
Warning: Hidden file found: /usr/bin/.fipscheck.hmac: ASCII text
Warning: Hidden file found: /usr/sbin/.sshd.hmac: ASCII text
ALLOWHIDDENFILE=/usr/share/man/man1/..1.gz
ALLOWHIDDENFILE=/usr/bin/.ssh.hmac
ALLOWHIDDENFILE=/usr/bin/.fipscheck.hmac
ALLOWHIDDENFILE=/usr/sbin/.sshd.hmac

Pour les derniers warning, j’ai autorisé les applications posant problème en ajoutant à la whitelist dans le fichier rkhunter.conf.

Warning: Application 'httpd', version '2.2.3', is out of date, and possibly a security risk.
Warning: Application 'sshd', version '4.3p2', is out of date, and possibly a security risk.
APP_WHITELIST="httpd sshd"

Enjoy !

Problème avec la fonction open_basedir

J’ai rencontré cette erreur à deux reprises en installant mes deux forums sur mon serveur à savoir ce joli message d’erreur:

[phpBB Debug] PHP Notice: in file /includes/functions.php on line 2387: file_exists() [function.file-exists]: open_basedir restriction in effect. File(.) is not within the allowed path(s): (/:/tmp/)

Comme je me suis fait avoir la première, j’ai galéré déjà plusieurs heures pour trouver la solution et malin que je suis, je ne me la suis pas noté et voilà que je galère à nouveau pour ce forum.

J’ai donc décidé par ce message de m’en faire un post-it qui pourrait servir à d’autres éventuellement.

Lire la suite…

CronJob : Logfile doesn’t exist (Plesk)

Si vous avez le message d’erreur suivant :
Logfile '/var/log/kav/5.5/kav4mailservers/avstats.log' does not exist
Il faut remplacer le Cron Job par la commande suivante :
touch /var/log/kav/5.5/kav4mailservers/avstats.log ; /opt/kav/5.5/kav4mailservers/bin/parse_avstat.pl -d -sd=/opt/kav/5.5/kav4mailservers/proc_avstat /var/log/kav/5.5/kav4mailservers/avstats.log