Forum Linux.général [Sécurité] Comment protéger ses services auto-hebergés sans empiler les par-feux physique ?

Posté par  . Licence CC By‑SA.
2
18
oct.
2014

Salut les packets IP ;)

Mes connaissances en architectures réseaux sont un peu lointaines et j'aimerais profiter de cette manne de connaissances qu'est LinuxFr pour m'aider dans ma réflexion.

Avec la recrudescence des failles découvertes un peu partout en ce moment, les super h4ck3rs du dimanche s'en donnent à coeur joie dans les log Nginx notamment.
C'est l'occasion de revoir un peu l'aspect sécurité sur mes services auto-hébergés, notamment sur la gestion des IP/packets entrant vers mes services.
J'aimerais beaucoup exclure tout un range d'IP, que je trouve après whois qu'il n'ont pas grand chose à faire chez moi (des IP Asiatiques vous vous en doutez).

Sachant que :

  1. Je n'ai pas envie (enfin j'aimerais éviter pour continuer de sauver les ours polaire) de multiplier le matériel filtrant physique.
  2. Mon Host (un p'tit PC pas trop musclé) est un FreeBSD hostant des Jails le firewalling étant effectué par le méchant Packet Filter (à la rigueur on s'en branle le fonctionnement reste fondamentalement le même sur le fond que sous Linux).
  3. Faire de l'exclusion de 15 000 ranges d'ip sur la conf du serveur Web n'est clairement pas une options.

Voici mon archi ultra complexe :

Box FAI (qui sait pas faire grand chose à part planter) --- Host / Firewall (192.168.x.x ) --- Jails (10.x.x.x) Ip Natées donc.

Si je ne dis pas de conneries le principe de fonctionnement de tout firewall se résume grosso-merdo à ces trois étapes :

  1. NAT -> Vers mes IP de services "ouverts"
  2. Redirections
  3. Filtering (Ici s'applique les règles de Firewalling).

Un paquet arrivant donc à destination de http/https sortira directement du "firewall" dés l'étape 1, et ne passera pas par les règles de filtrage filtrant uniquement l’hôte "local" visant à exclure les vilains et les gens de la côte Est Eurasienne.

Sauf qu'a l'intérieur d'une Jail (de mémoire c'est le même dilemme avec un LxC), pas moyen de rajouter une couche Firewall :(

Donc hormis passer sur de la Virtu LOURDE du genre KVM, VMware .. (ce qui est exclu) … je procède comment ?

OpenVz par exemple permet-il de faire tourner du Iptable à l'interieur de ses VPS ?

Par avance merci pour vos idées les gars (et les filles y a pas de raisons).

  • # juste une remarque

    Posté par  (site web personnel) . Évalué à 2.

    Faire de l'exclusion de 15 000 ranges d'ip sur la conf du serveur Web n'est clairement pas une options.

    La plupart des serveurs web (apache2, nginx) possèdent un module GeoIP.

    C'est plus pratique pour gicler un ou plusieurs pays entiers plutôt que d'importer 15000 ranges d'ip.

    Perso je fonctionne plutôt en liste blanche, je n'autorise que les ip FR en particulier.

  • # Merci pour le tuyau.

    Posté par  . Évalué à 1.

    Effectivement c'est une méthode, merci du coup de pouce.

    Mais des caïds de Packet Filter m'ont dépatouillé quelques règles pas piquées des hannetons sur le forum freebsd.
    Ca fait le boulot tout proprement là ou il doit être fait sur la pile réseau.

    De la bombe nucléaire ce paquet filter décidément, Iptable loin dans le brouillard.

    Je vais commencer à devenir tout rouge quand je vais continuer de lire "10 ans de retard BSD" sur linuxfr ;)

    • [^] # Re: Merci pour le tuyau.

      Posté par  . Évalué à 5.

      Un lien vers le thread en question ?

      • [^] # Re: Merci pour le tuyau.

        Posté par  . Évalué à 1. Dernière modification le 20 octobre 2014 à 22:45.

        Mais bien sur,

        Packet filter inside a jail? (or filtering before NAT)

        Admire toute la puissance des "macros" Packet Filter telles que "!<>", qui permettent de se passer de surcouches comme fail2ban ou encore Ipset ;)

        Avec chargement de tout un range d'IP par fichier et crois moi le fichier est chargé … j'ai collé la moitié de l'Asie, directement dans une table de firewalling .. oui c'est mal machin tout ça … je sais.

        Me rester encore à trouver le moyen de bencher mais manifestement selon encore d'autre barbus du forum, ça doit à peine bouger d'un Iota sur les perfs réseaux.

        En l'état je triche encore j'utilise sshguard donc bon … un "équivalent" à fail2ban en un peu mieux quand même (sinon c'est pas drôle) puisqu'il ne lit pas les logs mais directement bosse au niveau protocole, cela dit c'est 10 fois moins lourd à configurer et j'ai vu de ci de là des macros pour s'en passer en une ligne … comme des trucs de ce genre :

        pass inet proto tcp from any to any port ssh \
        flags S/SA keep state \
        (max-src-conn 5, max-src-conn-rate 5/30, \
        overload flush global)

        (D'ailleurs ça fonctionne sur tout les protocoles … pas besoin d'être expert pour comprendre ce que ça fait non ?)
        Sous Iptables ça donne quoi déjà ?

        A noter d'ailleurs que FreeBSD ne bénéficie pas de la toute dernière version de PF comme sa cousine OpenBSD donc pas encore de macro avancées comme egrep par exemple, ça semble prévu pour la 11.0.

        Ca trolle pas mal joue les hautains sur LinuxFR lorsqu'on aborde les BSD mais clairement depuis que j'ai migré je me régale, surtout en firewaling / sécurité.

        10 ans de retards qu'ils disent …
        J'suis prés de repasser sous Debian pour mon serveur en tout cas.

Suivre le flux des commentaires

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