Bonjour à tous, je commence avec docker à me faire quelque services sur mon dédié j'ai aussi ngingx proxy manager pour mon nom de domaine (chez OVH) et cloudflare pour la gestion dns mais aujourd'hui met venu un question. Si la sécurité du nom des domaines ainsi que l'accès se gère très bien part cloudflare qu'en est t'il de l'adresse IP+port ? J'ai cherché mais rien de très concluant je voudrais en faite être le seul à y avoir accès par l'adresse IP de mon serveur avec les différents port et ce possible ? J'ai vu aussi différents outils fail2ban, crowdsec, portsentry mais niveau configuration je suis un peux perdu avec les outils que j'ai déjà en place. Si quelqu'un aurait des conseils voir même tuto se serait génial.
Cordialement
Sécurisation port docker
Salut,
idéalement, tu ne diffuses pas les ports du docker. Tu mets un reverse proxy (traefix, npm...) qui va filtrer pour toi et rediriger vers le bon container. Seuls les ports 80 et 443 sont ouverts. Sur le reverse proxy, tu peux aussi protéger avec login/password, ou bien passer par un middleware qui va protéger tes accès (oauth, authelia...)
Salut,
Tu as un tuto récent ici pour la partie Reverse/ports :
https://mondedie.fr/d/12096-tuto-nginxproxymanager-docker-network-docker-portainer-pour-lexemple
Tu peux privilégier Crowdsec à Fail2ban, et celui-ci s'intègre à certains reverse (Swag, NPM)
Présente nous tes besoins et on pourra t'en dire plus
- Modifié
Bonjour et merci à tout les deux pour vos réponses. Je ne m'y prenais pas comme il faut pour npm mais voilà chose faite grâce au tuto (merci Spider). De base oui je voulais mettre en place crowdsec avec le container docker et npm mais je me suis perdu dans la configuration car je n'ai pas tout compris au niveaux des collections (npm je crois) et des bouncers ( la je n'ai rien compris du tout) donc j'ai abandonné.
Cordialement
PS: j'ai aussi cloudflare qui complique crowdsec
- Modifié
Les collections sont les règles de détection,
le bouncer est le logiciel qui va mettre en pratique la décision liée à la règle (ex : bloquer une adresse IP)
Il te faut un NPM adapté, exemples :
https://github.com/baudneo/nginx-proxy-manager
https://github.com/LePresidente/docker-nginx-proxy-manager
Quelle difficulté rencontres-tu avec Cloudflare ?
Bonsoir et merci pour la réponse. Du coup si je comprends bien les liens sont une version modifiée de npm avec le bouncers intégrées de crowdsec ? Actuellement pas de problème avec cloudflare mais il me semblait avoir vu un tuto crowdsec ou cloudflare rentré en compte et je m'y suis perdu. Du coup une fois npm modifié installé comment se passe la configuration du reste pour crowdsec ? Un tuto relativement simple et t'il disponible ? J'utilise docker composé de préférence ^^. Oui sur se coup si je suis complètement perdu .
Merci encore.
Cordialement .
Il faut installer l'agent principal avec qui le bouncer va communiquer
https://github.com/crowdsecurity/crowdsec
https://github.com/crowdsecurity/example-docker-compose/blob/main/docker-compose.yml
Voilà une ébauche rapide (note : je n'utilise pas NPM)
docker-compose.yml
version: '3'
services:
crowdsec:
image: crowdsecurity/crowdsec
container_name: crowdsec
restart: always
environment:
#this is the list of collections we want to install
#https://hub.crowdsec.net/browse/#collections
COLLECTIONS: "crowdsecurity/nginx-proxy-manager crowdsecurity/linux crowdsecurity/whitelist-good-actors"
GID: "${PGID}"
depends_on:
- 'nginx-proxy-manager'
volumes:
- ${DOCKERCONFDIR}/crowdsec/data:/var/lib/crowdsec/data/
- ${DOCKERCONFDIR}/crowdsec/config:/etc/crowdsec/
- /var/log:/var/log/host
- ${DOCKERCONFDIR}/nginx-proxy-manager/data/logs:/var/log/nginx
nginx-proxy-manager:
image: 'baudneo/nginx-proxy-manager:latest'
restart: always
container_name: nginx-proxy-manager
ports:
# Public HTTP Port:
- '80:80'
# Public HTTPS Port:
- '443:443'
# Admin Web Port: à retirer une fois npm configuré
- '81:81'
environment:
TZ: ${TZ}
ADMIN_PANEL_LOG: "1"
CROWDSEC_BOUNCER: "1"
OPENRESTY_DEBUG: "0"
CROWDSEC_LAPI: "http://crowdsec:8080"
CROWDSEC_KEY: "xxxxxxxxxxxxxxxxxxxxxxxx"
DB_SQLITE_FILE: "/data/database.sqlite"
# Uncomment this if IPv6 is not enabled on your host
# DISABLE_IPV6: 'true'
volumes:
- ${DOCKERCONFDIR}/nginx-proxy-manager/data:/data
- ${DOCKERCONFDIR}/nginx-proxy-manager/letsencrypt:/etc/letsencrypt
.env
DOCKERCONFDIR=/home/user/.config/appdata
PGID=1000
#Cette valeur peut être obtenue en utilisant id -g $USER
PUID=1000
#Cette valeur peut être obtenue en utilisant id -u $USER
TZ=Europe/Paris
#Fuseau horaire du système, voir la liste des fuseaux horaires de la base de données TZ
#https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
Parfait merci beaucoup pour le travail effectué
leouf69 je pense comprendre ta problématique : tu as mis un adguard-home pas at home .
Donc dans ton cas il faudra laisser les ports liés au protocole de DNS ( 53, 853, etc) exposé sur ta machine et ajouté une couche de firewall qui n'autorisera seulement les requêtes depuis l'ip de ton domicile.
Pour la partie adguard installation et conf avec NPM regarde ici tu devrais trouver quelques infos.
Matt
- Modifié
Bonjour
en complement j'ai trouvé un bouncer crowdsec qui applique aussi des decisions avec cloudfare
https://github.com/crowdsecurity/cs-cloudflare-bouncer
documentation : https://docs.crowdsec.net/u/bouncers/cloudflare/
par contre pour npm l'image baudneo/nginx-proxy-manager:latest n'est plus d'actualité
il faut privilegié l'image https://github.com/LePresidente/docker-nginx-proxy-manager
qui as lui intégré crowdsec dans son image ainsi que l'intégration de cs-openresty-bouncer pour NPM
je ne l'ai pas encore tester
une vidéo explique son installation: