Forum Linux.débutant Protection contre différentes types d'attaques

Posté par . Licence CC by-sa
Tags : aucun
1
2
déc.
2014

Bonjour,

Je ne suis pas un expert en linux, et comme j'ai pris le relais sur un site/application web existante et fonctionnelle, je travaille sur le code(php5-mysql-html-css3-js). Je me suis rendu compte que au niveau de l'infogérance il y a plein de failles de sécurité :

  • pas de https
  • pas de fail2ban
  • phpMyAdmin accessible par l’extérieur
  • iptables qui fait passer du trafique sur toutes les portes, en INPUT et en OUTPUT

Donc j'ai mis en place un fail2ban, j'ai crée aussi une règle pour login et mdp de la page d'accueil de l'application web. Pour l’instant j'ai aussi bloqué tout le trafique en entré depuis iptables en utilisant "iptables -P INPUT DROP" sauf pour les IP que utilisent l'application "iptables -I INPUT -s add.res.se.ip -j ACCEPT". Et même comme-ça en utilisant la commande "netstat -natu" j'ai encore un addresse ip qui n'est pas dans la liste, qui se connecte sur un porte aléatoir de mon serveur, par contre lui utilise le porte 53, que doit être celui du DNS. En plus l'application devrait être accessible de n'importe où, donc le blocage au niveau du firewall doit être temporaire.
J'ai vérifié les logs d'apache sur le sous-domaine qui hébergeait phpmyadmin et je ne vous raconte pas toutes les intrusions qui ont été effectué. J'utilise virtualmin/webmin pour la gestion des sous-domaines et je voulais juste vous demander d'où je pourrais commencer pour me protéger des attaques. Je ne suis pas un experte mais je crois que je pourrais arriver a me débrouiller

  • # quelles (tentatives) attaques ?

    Posté par (page perso) . Évalué à 2.

    C'est pas parce que tu vois une trace dans les logs que le système est corrompu.

    La sécurisation passe par:

    • la sécurisation du système, réseau, et les applications ( lamp ) en restreignant les accès au strict nécessaire.

    Système - Réseau - Sécurité Open Source

  • # Ils sont rentrés

    Posté par . Évalué à 2.

    J'ai croisé les logs de apache du sous-domaine phpmyadmin avec les logs mysql, et il y a les mêmes adresses ip, peut être que c'est juste l'ancien développeur puisque il rentre aussi dans le programme en utilisant un des login qu'il a trouvé dans la base et il efface derrière sa trace dans la table des log des utilisateurs

    • [^] # Re: Ils sont rentrés

      Posté par (page perso) . Évalué à 2.

      Ce raisonnement fonctionne aussi pour Apache, PHP et MySQL.

      pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

  • # Quelques commentaires

    Posté par (page perso) . Évalué à 3. Dernière modification le 02/12/14 à 11:48.

    Salut,

    Voici mon avis sur ces points :

    • le HTTPS serait en effet préférable, sinon les mots de passe (et les données) circulent en clair - OK avec toi, il faudrait mettre ça en place ;
    • fail2ban n'est pas un prérequis à un serveur sécurisé - ce logiciel, quand il est bien configuré, ne sert qu'à bloquer les adresses IP après des échecs de tentatives de "piratage" connues - tant que la machine n'est pas trouée (paquets à jour notamment), fail2ban n'apporte pas plus de sécurité, ça réduit les logs, à la limite - de plus, si tu l'as uniquement installé sans le configurer, ça ne t'apporte pas grand chose ;
    • phpmyadmin devrait être carrément inexistant : il ne sert à rien sur un serveur de production ;
    • sur un serveur bien configuré un pare-feu est inutile, car les ports en écoute doivent rester ouverts et les ports fermés sont déjà fermés.

    Si tu cherches à sécuriser ton serveur, il faut plutôt voir les choses suivantes :
    * la distribution doit être maintenue ;
    * les paquets doivent être à jour ;
    * les authentifications (mots de passe) doivent être sécurisés ;
    * les logiciels en écoute doivent être réduits au minimum.

    Enfin, si tu penses vraiment qu'« ils sont rentrés », alors il y a une seule solution pour que ça soit propre : réinstaller.

    https://www.domotego.com/ | https://www.maccagnoni.eu/ | https://www.smm-informatique.fr/

    • [^] # Re: Quelques commentaires

      Posté par . Évalué à 1.

      Salut,
      Merci pour tes conseilles.
      Malheureusement l'https pour l'instant est loin de sa mise en place, ce n'est pas moi qui mets de l'argent, et celui qui devrais en mettre est radin, et avec an auto-certification les clients ne sauraient pas comment mettre une exception de sécurité dans le navigateur.
      En effet fail2ban il est bien configuré, au moins pour ce qui concerne ssh,pam,ftp,smtp,imap,pop. Pour apache il est configuré mais pas pour chaque fichier de log des différents sous-domaines (pas utile pour l'instant) mais seulement pour les logs dans le fichier /var/log/apache*/*error.log. Par contre j'ai mis en place aussi un filtre pour l'accès sur l'application web, ça veut dire que si un client se trompe de 10 fois de mot de passe il est banni, et il faut qu'il m'appelle si c'est bien lui qui c'est trompé. Phpmyadmin je vais surement le virer, et la distribution est une debian7 à jours. Le serveur je viens de l'installer, j'ai juste récupéré les sous-domaines grâce au module de backup/restore de virtualmin, et j'ai changé tous les ancien mot de passe : connexion à les différentes bdd, accès de l'utilisateur de chaque sous-domaines, accès root pour administration, accès root bdd. Pour l'instant j'ai pu vérifier que quelqu’un est rentré depuis phpmyadmin, donc le problème , normalement, serait seulement au niveau des bdd. Donc en supprimant phpmyadmin et en changeant tous les mot de passe, et des bases, et des utilisateurs du programme, je devrai résoudre le problème. Par contre je ne comprends pas par exemple, que un adresse ip arrive à se connecter sur un porte aléatoire de mon serveur en faisant je ne sais pas quoi, en sachant seulement que lui (et pas moi) utilise le port 53.

      • [^] # Re: Quelques commentaires

        Posté par (page perso) . Évalué à 2.

        bind en local ? backdoor ?

        Système - Réseau - Sécurité Open Source

        • [^] # Re: Quelques commentaires

          Posté par . Évalué à 1.

          Je ne sais pas ce que c'est. Je sais seulement que bind est un serrvice pour la géstion des DNS, mais après …

      • [^] # Re: Quelques commentaires

        Posté par . Évalué à 2.

        Pour l'instant j'ai pu vérifier que quelqu’un est rentré depuis phpmyadmin, donc le problème , normalement, serait seulement au niveau des bdd.

        Malheureusement non. Pour peu que tu cumules avec une faille d'élévation de privilèges, genre shellshock si je ne me trompes, c'est plié.
        Et tant bien même le gars est resté bloqué sur son apache, il peut tout de même avoir vérolé ton hébergement web. Voir cryptophp, j'ai vu une news passé à ce sujet ce matin.

        En bref, ce n'est pas juste la base de données si c'est phpmyadmin le trou.

        • [^] # Re: Quelques commentaires

          Posté par . Évalué à 1.

          Ok,

          j'ai vu l'histoire de cryptophp, mais je n'utilise ni joomla, ni wordpress, etc.
          J'ai installé d'ailleur cryptophp hier je crois, car mon phpmyadmin me disait qu'il n'était pas activé, mais je suis passé par apt-get. Le serveur je l'ai installé il n'y a pas longtemps, après la découverte de la faille shellshock. Maintenant ce que je voudrais savoir c'est comment cette ou ces personnes ont pu acceder à mon phpmyadmin, et si en changeant tous les mot de passe je pourrais resoudre le problème. En plus il'y avait une version de phpmyadmin très ancienne. Si effectivement il utilise la faille du shell, comment je peux m'en apercevoir? J'ai un nom de domaine qui pointe vers l'addresse ip du serveur, et le serveur à plusieurs sous-domaines, comment je peux zapper le service bind? Sans compter que pour moi tout le système DNS est incomprensible

          • [^] # Re: Quelques commentaires

            Posté par . Évalué à 1. Dernière modification le 02/12/14 à 13:56.

            avant de t'exciter sur une possible intrusion, tente d'éteindre bind (serveur dns usuel) pour voir si ça clignote encore dans ta vue réseau.
            Si oui, alors, peut être, possiblement, éventuellement, il y a de quoi s'exciter.
            Si non, c'est juste que tu te fais des films.

            Ceci dit c'est pas mon domaine [le réseau], alors je ne saurais te confirmer si l'activité est normale ou pas. D'où aussi mon approche pratique sur la question.

  • # très simplement

    Posté par . Évalué à 1.

    qui se connecte sur un porte aléatoir de mon serveur, par contre lui utilise le porte 53, que doit être celui du DNS

    Pourquoi faire tourner DNS sur le serveur ?
    Il y a des services professionnels à cet effet, et dès lors, tu seras capable de bazarder dns.

  • # DNS

    Posté par . Évalué à 1.

    Ok, il y a encore quelqu’un qui se connecte sur un port aléatoire et lui il utilise le port 53, sauf que maintenant c'est en ipv6, je ne sais même pas s'il était activé. Comment je peux faire? Vraiment je ne sais plus quoi penser

    • [^] # Re: DNS

      Posté par (page perso) . Évalué à 2.

      ip locale ? publique ?

      quel est le sens de la communication ? ( client / serveur )

      tcpdump / wireshark sont tes amis.

      Système - Réseau - Sécurité Open Source

  • # comprendre les dns

    Posté par . Évalué à 2.

    Salut,

    en fait je n'ai rien compris au DNS. J'ai passé l'après midi à lire ce que est un record, à quoi il sert les différents type, … Mais je n'ai rien compris!!! Dans mon cas, j'ai quelque domaine crée dans virtualmin. Chaque domaine a un nome du type sous1.principale.info sous2.principale.info … Il y en a aussi un qui est le principale, donc principale.info. Maintenant mon principale.info est un nom de domaine qui vient de chez bookmyname, donc depuis l'interface de bookmyname j'ai crée un A record vers l'adresse ip du serveur qui est hébergé chez online, depuis celle d'online je saisie le nom de domaine comme reverse. Si j'essaye d’accéder à l'internet depuis mon serveur, en utilisant n'importe quel commande comme wget google.com j’obtiens : wget: unable to resolve host address `google.com'. Je ne comprends pas comment paramétrer ces record dans chaque sous-domaines de virtualmin, les configurations sont les mêmes que sur l'ancien serveur, sauf que l'ancien serveur avait une autre zone DNS, ancienadresse.info. Cet adresse est sur chaque configuration des record des sous-domaines de virtualmin, en particulier dans le record SOA et NS. En plus, quand j'essaye d'attribuer comme dns primaire au virtualmin principale.info, il me repond comme-ça:
    Primary nameserver cannot be resolved from the rest of the Internet : Download timed out

    La je ni comprends plus rien

    • [^] # Re: comprendre les dns

      Posté par (page perso) . Évalué à 2.

      Quel est le contenu du fichier /etc/resolv.conf ?

      host et dig permettent de tester la résolution de nom ( côté client ).

      Système - Réseau - Sécurité Open Source

      • [^] # Re: comprendre les dns

        Posté par . Évalué à 1.

        Oui, je viens de m'apercevoir que c'était a cause des blocages que j'avais fait au niveau du firewall sur toutes les adresse ip, donc j'ai remis un iptables -P INPUT ACCEPT et j'ai bloqué seulement les ports 80 et 443, puisque de toute façon c'est la seul manière de connexion au bdd si on connais les mdp (au moins je crois, puisque le 3306 n'est accessible que par localhost et les autres accès sont verrouillés). Donc là tout marche. Maintenant je vais changer tous mes mot de passe de bdd, et après ceux des utilisateurs de l'application web, et puis je rouvrirai les ports 80 et 443, et si il y a encore d'autres intrusions je me casse.

        • [^] # Re: comprendre les dns

          Posté par (page perso) . Évalué à 2.

          Tu peux pas tout bloquer ( y compris les requêtes dns ), il y a un minimum à laisser ouvert en sortie et bien sur le retour de connexion, sinon plus rien ne fonctionne. ;-)

          Système - Réseau - Sécurité Open Source

  • # La fausse sécurité...

    Posté par . Évalué à 2.

    … en tant qu'ingénieur logiciel, j'ai travaillé avec plein d'admin sys qui sont spécialistes de la fausse sécurité. Il ne comprennent pas une ligne de code des logiciels qu'ils déploient (ne sont jamais intéressé au code de postfix ou nginx, pour voir comment ça fonctionnait sous le capot et mieux comprendre comment le déployer/l'utiliser), mais qu'advienne que pourra.

    La spécialité de ces gens là, la fausse sécurité: Mot de passe du type M0tdEP4sse impossible à mémoriser. https://xkcd.com/936/ ; On installe un fail2ban alors que le serveur fait tourner un wordpress et un phpbb vieux de 3 ans, qui n'a jamais été mis à jour/patché ; et j'en passe des des meilleurs.

    Pour information:

    • fail2ban, c'est des conneries. Ça bousille les iptables-persistent, fout la merde avec shorewall, est totalement incompatible avec firewalld. Pourquoi t’authentifie tu encore avec des mots de passe avec SSH? Les clés ssh existent depuis 40 ans.
    • pas de HTTPS. Oui, le HTTPS c'est mieux, ça réduit la surface d'attaque. Mais c'est pas comme ça que tu vas tout résoudre. Je suis persuadé qu'il y a plein d'autres problèmes. Je suis sur que toutes tes applications php tournes en tant que www-data. Regarde du coté de suexec https://packages.debian.org/squeeze/apache2-suexec ou du tyran mode de uwsgi http://uwsgi-docs.readthedocs.org/en/latest/Emperor.html#tyrant-mode-secure-multi-user-hosting.
    • T'es préoccupé par phpMyAdmin alors que tu fais tourner webmin/virtualmin: une application web qui tourne root?! faut changer ses priorités dans la vie.

    Ruby est le résultat d'un gamin qui apprend le Java, puis jette un œil à Perl et se dit « je peux le réparer! »

  • # Quelles attaques

    Posté par (page perso) . Évalué à 2.

    J'utilise virtualmin/webmin pour la gestion des sous-domaines et je voulais juste vous demander d'où je pourrais commencer pour me protéger des attaques. Je ne suis pas un experte mais je crois que je pourrais arriver a me débrouiller

    Le premier point à régler n'est il pas de déterminer le type d'attaques contre lesquelles tu veux te protéger? Je ne travaille pas dans les métiers de la sécurité, mais cette perspective est absente de ton message, je me permets donc ce rappel élémentaire.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.