Améliorer la sécurité de son site.

Répondre
Partager Rechercher
Bonjour.


Etant un novice dans le domaine de la sécurité des serveurs dédiés et site web ( php/mysql/html/css ) j'aimerais savoir comment m'y prendre pour apprendre les bases de la sécurité ?

Citation :
Publié par Dacaerin
N°1 : Interdire l'accès SSH en root.
N°2 : Interdire l'accès en SSH par mot de passe.
N°3 : Utiliser des clés RSA pour se connecter (avec des mots de passe forts, elles aussi).
1/ Ok.
2/ L'accès en SSH est par défaut protégé par un compte et un mot de passe ( chez ovh ) je me trompe ? Ou alors que c'est un degré de sécurité supplémentaire que je n'ai pas compris ?
3/ Ok.



J'aimerais en particuliers qu'on me guide/conseils pour la protection de ces failles/hack/[...] :

- Injection SQL
- Bruteforce sur phpmyadmin
- Attaque par mot de passe sur phpmyadmin
- Flood dos/ddos

Pour les informations :

- J'ai un site et une database hébergé chez OVH ( linux debian 4.0 ) que je controle à distance via Putty en SSH.

- Mon site ( sans vouloir faire de pub hein ) www.***-*****.fr ( si vous voyez une faille gros comme une maison, merci de me le signaler je vous en serais reconnaissant... )


Merci d'avance à tout le monde
Pour le point 2, il te faut interdire de se connecter en utilisant le mot de passe, pour obliger à utiliser les clés privées/publiques. Ca se passe dans la config de SSH. Attention par contre, avant de désactiver la connexion par mdp, vérifie bien que celle par clés fonctionne (ie que t'as bien installé ta clé publique sur le serveur), sinon tu risques de te bloquer l'accès
Citation :
Publié par Ze Reaper
Pour le point 2, il te faut interdire de se connecter en utilisant le mot de passe, pour obliger à utiliser les clés privées/publiques. Ca se passe dans la config de SSH. Attention par contre, avant de désactiver la connexion par mdp, vérifie bien que celle par clés fonctionne (ie que t'as bien installé ta clé publique sur le serveur), sinon tu risques de te bloquer l'accès
Ah ok, donc interdire l'acces par mot de passe mais autoriser par clé RSA donc. Ok je comprend mieux

Un probleme de moins
Injection SQL pas de secret il faut sécuriser son code (pregmatch(), addslash(), (regex en gros ^^) etc..)

Bruteforce sur phMyadmin, tu as un forum phpBB, rajoute donc un contrôle d'accès avec ton compte phpbb.

Par exemple pour phpBB3
Code PHP:

//
//Session phpBB3
//
define('IN_PHPBB'true);
$phpbb_root_path 'répertoire racine de ton forum (par exemple /home/forums/public_html)';
$phpEx substr(strrchr(__FILE__'.'), 1);
include_once(
$phpbb_root_path 'common.' $phpEx);

// Start session management
$user->session_begin(true);
$auth->acl($user->data);

$u_id $user->data['user_id'];

if (
$u_id == '2')
{
Le code phpMyAdmin
}
else
{
    echo ( 
'Accès non autorisé pour ce compte.' );

($user est une classe n'hésite pas à étudier le code de phpbb3, car tu as aussi la possibilité de contrôler l'accès par le pseudo, le groupe ou autre ( $user->data['username'] ou $user->data['user_group'] )
Comme ça avant d'arriver à la page de login phpMyAdmin tu as déjà un contrôle par la session de phpbb.

Après il est toujours possible de modifier légèrement phpmyadmin et de limiter à 3 essais le nombre de tentative.

Ne pas oublier non plus de modifier l'alias Apache pour phpmyadmin, en foutre un bien tordu est conseillé

Pour les attaques de deni j'ai pour l'instant pas vraiment trouvé mieux que l'iptables.

Edit: Pour ssh change aussi le port par défaut.
Ensuite tu te log comme suit:
ssh user@ip (ou domaine) -p port
Citation :
Publié par Zup Arkhen
Injection SQL pas de secret il faut sécuriser son code (pregmatch(), addslash(), (regex en gros ^^) etc..)
Ok, je vais demander à un pote caler en html/php de me faire ca.

Citation :
Publié par Zup Arkhen
Bruteforce sur phMyadmin, tu as un forum phpBB, rajoute donc un contrôle d'accès avec ton compte phpbb.
Malheuresement le forumphpbb ( xooit ) n'est pas hébergé sur mon dédié, c'est un service gratuit de chez xooit...


Citation :
Publié par Zup Arkhen
Après il est toujours possible de modifier légèrement phpmyadmin et de limiter à 3 essais le nombre de tentative.
Je suppose que c'est dans le http.conf ... je chercherai.



Citation :
Publié par Zup Arkhen
Ne pas oublier non plus de modifier l'alias Apache pour phpmyadmin, en foutre un bien tordu est conseillé
L'alias apache pour phpmyadmin = le chemin d'acces pour y acceder ? Car il était de base sur " http://ipdemondédié/phpmyadmin/ " et je l'ai mis dans " http://ipdemondédié/dossiercompliqué/phpmyadmin " , cependant avec un aspirateur de site tel que intellitamper il est toujours possible d'avoir acces au dossier, et donc ca devient inutile de créer plusieurs dossiers... ?


Citation :
Publié par Zup Arkhen
Pour les attaques de deni j'ai pour l'instant pas vraiment trouvé mieux que l'iptables.

Edit: Pour ssh change aussi le port par défaut.
Ensuite tu te log comme suit:
ssh user@ip (ou domaine) -p port
J'essayerai d'apprendre pour iptables... ( j'ai déjà assimilé les bases des bases en html/php/mysql/linux en 1 semaine, je commence à saturer ;x )


En tout cas merci beaucoup :jap:
Citation :
Publié par mHz / Guts
Ok, je vais demander à un pote caler en html/php de me faire ca.



Malheuresement le forumphpbb ( xooit ) n'est pas hébergé sur mon dédié, c'est un service gratuit de chez xooit...




Je suppose que c'est dans le http.conf ... je chercherai.





L'alias apache pour phpmyadmin = le chemin d'acces pour y acceder ? Car il était de base sur " http://ipdemondédié/phpmyadmin/ " et je l'ai mis dans " http://ipdemondédié/dossiercompliqué/phpmyadmin " , cependant avec un aspirateur de site tel que intellitamper il est toujours possible d'avoir acces au dossier, et donc ca devient inutile de créer plusieurs dossiers... ?




J'essayerai d'apprendre pour iptables... ( j'ai déjà assimilé les bases des bases en html/php/mysql/linux en 1 semaine, je commence à saturer ;x )


En tout cas merci beaucoup :jap:
1. Il suffit juste de sécuriser les variables dont la provenance est un formulaire ou une URL et conduisant à une requête.

2. Si tu as un dédié autant passer à ton propre un phpBB3, avis perso.

3. Non je pensais à un script php logant l'IP et le date(); de chaque échec, au bout de trois essais raté dans la dernière minutes -> blocage temporaire.

4. C'est un plus, simplement.
Citation :
Publié par Zup Arkhen
1. Il suffit juste de sécuriser les variables dont la provenance est un formulaire ou une URL et conduisant à une requête.

2. Si tu as un dédié autant passer à ton propre un phpBB3, avis perso.

3. Non je pensais à un script php logant l'IP et le date(); de chaque échec, au bout de trois essais raté dans la dernière minutes -> blocage temporaire.

4. C'est un plus, simplement.

1/ J'ai rajouter ça :

Citation :
<?php
if ($_GET['lien'] == 'infos.php')
include('infos.php');

else if ($_GET['lien'] == 'telecharger.php')
include('telecharger.php');

else if ($_GET['lien'] == 'inscription.php')
include('inscription.php');

else if ($_GET['lien'] == 'staff.php')
include('staff.php');

else
include('news.php');
?>
On m'a dit que ca devrait être bon.


2/ Ce qui m'importe surtout, c'est la sécurité du forum ( c'est à dire, qu'on ne puisse pas accéder à un compte administrateur, ou faire en sorte que le forum rentre dans des boucles infinis ou je sais pas quoi encore. En tout cas qu'il ne crash/bug pas. Le design me satisfait actuellement.


3/ Ok, ca doit pas être compliqué à faire



Merci encore.
Exact, c'est ça de penser au guillemets quand on écrit.

D'ailleurs pour addslashes(); il y a magic_quotes_gpc(); qui est par défaut à on et qui appelle addslashes(); pour toutes les données cookies, POST et GET il est donc, inutile de l'utiliser, sauf si bien sur magic quotes est sur off.

Et donc pour finir, n'oublie jamais d'utiliser les guillemets autour des données.

-----

Edit: Par curiosité je viens d'aller voir ton site pour tester les fichiers que tu cite dans ta condition.

Inscription.php est par exemple affichable seul, ce qui est pas trop grave (bien que !) pour les fichiers cités mais tu pourrais en avoir besoin un jour.

Une astuce simple pour éviter l'exécution d'un fichier hors de son contexte est l'utilisation des constances:

Tu insère ceci dans les fichiers pouvant être executés seul:

Code PHP:

define('IN_SITE'true); 

(IN_SITE peut tout à fait être autre chose comme SUR_LE_SITE ou autres, l'utilisation de majuscule n'est pas obligatoire mais conseillé pour les différencier des variables)

Et dans les fichiers ne devant pas être exécuteés seul tu ajoute en début de script:

Code PHP:

if (!defined('IN_SITE'))
{
     exit;

Traduction: Si la constance n'est pas définie quand on exécute ce script on stop l'exécution de celui-ci.

D'ailleurs l'utilisation de constances pour toute valeur fixe est une bonne chose.
Citation :
Publié par Zup Arkhen
D'ailleurs pour addslashes(); il y a magic_quotes_gpc(); qui est par défaut à on et qui appelle addslashes(); pour toutes les données cookies, POST et GET il est donc, inutile de l'utiliser, sauf si bien sur magic quotes est sur off.
elles vont être à off en PHP6, y en a qui vont avoir des problèmes.
Citation :
Publié par Zup Arkhen
Une astuce simple pour éviter l'exécution d'un fichier hors de son contexte est l'utilisation des constances:

Tu insère ceci dans les fichiers pouvant être executés seul:

...

Traduction: Si la constance n'est pas définie quand on exécute ce script on stop l'exécution de celui-ci.


D'ailleurs l'utilisation de constances pour toute valeur fixe est une bonne chose.
Une bonne arborescence des fichiers à inclure et des fichiers .htaccess pour les protéger est mieux (imo).


Sinon lien intéressant : http://julien-pauli.developpez.com/t...-web-securite/
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés