Outils pour utilisateurs

Outils du site


installation_d_un_serveur_web_sous_debian_gnu_linux

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
installation_d_un_serveur_web_sous_debian_gnu_linux [2019/01/24 11:07] – [Script pour redémarrer le Firewall avec toutes les règles] sergeinstallation_d_un_serveur_web_sous_debian_gnu_linux [2023/04/11 21:49] (Version actuelle) – [Ajout de règles pour, par exemple, transfert de port vers un container] Benjamin Labomedia
Ligne 90: Ligne 90:
 X11Forwarding no X11Forwarding no
 </code> </code>
-Pour limiter la liste des utilisateurs autorisés à se connecter en SSH : 
  
 +Pour limiter la liste des utilisateurs autorisés à se connecter en SSH :
 <code bash> <code bash>
 AllowUsers usersympa autreuser encoreunuser AllowUsers usersympa autreuser encoreunuser
 +</code>
 +
 +Pour n'autoriser que la connexion avec une clef ssh (ce qui évite le risque de voir circuler le password en clair)
 +<code bash>
 +PasswordAuthentication no
 +</code>
 +Pour mémoire, il faut alors ajouter la clef ssh publique de l'utilisateur dans un répertoire et un fichier à éventuellement créer et à affecter à l'utilisateur si vous faites tout ça en tant que root :
 +<code bash>
 +nano ~/.ssh/authorized_keys #copier dans ce fichier la clef soit le contenu du fichier ~/.ssh/id_rsa.pub situé sur son ordi
 +chmod -R go= ~/.ssh
 +chown -R mon_user: ~/.ssh
 </code> </code>
 ===== FTP avec VSFTPD ===== ===== FTP avec VSFTPD =====
Ligne 197: Ligne 208:
 maxretry = 5 maxretry = 5
 </code> </code>
 +Voir aussi [[https://www.linuxcapable.com/how-to-install-configure-fail2ban-on-debian-11/|les préconisations de ce site]] pour une config plus fine de fail2ban
 ===== Firewall avec IPTables ===== ===== Firewall avec IPTables =====
 +
 +<WRAP center round todo 60%>
 +Il faut choisir soit l'installation du Firewall via iptables soit via ufw (voir plus bas)
 +</WRAP>
  
 ==== Ressources ==== ==== Ressources ====
Ligne 207: Ligne 223:
   * [[http://www.howtogeek.com/177621/the-beginners-guide-to-iptables-the-linux-firewall/|Beginner's Guide]]   * [[http://www.howtogeek.com/177621/the-beginners-guide-to-iptables-the-linux-firewall/|Beginner's Guide]]
   * [[http://lea-linux.org/documentations/Iptables|Lea Linux IPTables]]   * [[http://lea-linux.org/documentations/Iptables|Lea Linux IPTables]]
 +  * [[https://www.digitalocean.com/community/tutorials/how-to-list-and-delete-iptables-firewall-rules|Delete IPTables rules and chain]]
  
 ==== Commandes utiles ==== ==== Commandes utiles ====
Ligne 292: Ligne 309:
 $ ./firewall-reset.sh $ ./firewall-reset.sh
 </code> </code>
-==== Règles de base bien pratiques (script) ==== 
  
-Toujours dans le même coin sécurisé de votre serveur, par exemple **/root/scripts**, créer un fichier **firewall-start.sh** et restreindre son usage à root : 
- 
-<code bash> 
-$ touch firewall-start.sh 
-$ chmod 700 firewall-start.sh 
-</code> 
-Dans ce fichier, mettre ce qui suit. Notez que les ports 300 à 3005 sont ouverts pour le FTP car nous utilisons VSFTPD (voir plus haut) et que nous l'avons configuré comme tel : 
- 
-<code bash> 
-#!/bin/sh 
- 
-#---------- 
-# Load needed modules 
-#---------- 
-modprobe ip_conntrack_ftp 
-modprobe ip_nat_ftp 
- 
-#---------- 
-# Local loop 
-#---------- 
-iptables -A INPUT -i lo -j ACCEPT 
-iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT 
-iptables -A OUTPUT -o lo -j ACCEPT 
- 
-#---------- 
-# Connexions already established 
-#---------- 
-iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
-iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
- 
-#---------- 
-# NTP (123) 
-#---------- 
-iptables -A OUTPUT -p udp --dport 123 -j ACCEPT 
- 
-#---------- 
-# NetBios (137) 
-#---------- 
-iptables -A INPUT -p udp --sport 137 -j ACCEPT 
-iptables -A OUTPUT -p udp --dport 137 -j ACCEPT 
- 
-#---------- 
-# PING 
-#---------- 
-iptables -A INPUT -p icmp --icmp-type 8 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT 
-iptables -A OUTPUT -p icmp --icmp-type 8 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT 
- 
-#---------- 
-# DNS (53) 
-#---------- 
-# UDP 
-iptables -A INPUT -i eth0 -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT 
-iptables -A OUTPUT -o eth0 -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT 
-# TCP 
-iptables -A INPUT -i eth0 -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT 
-iptables -A OUTPUT -o eth0 -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT 
- 
-#---------- 
-# WHOIS (43) 
-#---------- 
-iptables -A OUTPUT -p tcp --dport 43 -j ACCEPT 
- 
-#---------- 
-# SSH (22022) 
-#---------- 
-# Incoming (22022) 
-iptables -A INPUT -i eth0 -p tcp --dport 22022 -m state --state NEW,ESTABLISHED -j ACCEPT 
-iptables -A OUTPUT -o eth0 -p tcp --sport 22022 -m state --state ESTABLISHED -j ACCEPT 
-# Outgoing (22) 
-iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT 
-iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT 
-# Outgoing (22022) 
-iptables -A INPUT -i eth0 -p tcp --sport 22022 -m state --state ESTABLISHED -j ACCEPT 
-iptables -A OUTPUT -o eth0 -p tcp --dport 22022 -m state --state NEW,ESTABLISHED -j ACCEPT 
- 
-#---------- 
-# HTTP (80) 
-#---------- 
-# Incoming 
-iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT 
-iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT 
-# Outgoing 
-iptables -A INPUT -p tcp --sport 80 -j ACCEPT 
-iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT 
- 
-#---------- 
-# HTTPS (443) 
-#---------- 
-# Incoming 
-iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT 
-iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT 
-# Outgoing 
-iptables -A INPUT -p tcp --sport 443 -j ACCEPT 
-iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT 
- 
-#---------- 
-# FTP (21,3000:3005) 
-#---------- 
-# Incoming 
-iptables -A INPUT -i eth0 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT 
-iptables -A OUTPUT -o eth0 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT 
- 
-iptables -A INPUT -i eth0 -p tcp --dport 3000:3005 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT 
-iptables -A OUTPUT -o eth0 -p tcp --sport 3000:3005 -m state --state ESTABLISHED,RELATED -j ACCEPT 
-iptables -A INPUT -i eth0 -p udp --dport 3000:3005 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT 
-iptables -A OUTPUT -o eth0 -p udp --sport 3000:3005 -m state --state ESTABLISHED,RELATED -j ACCEPT 
- 
-#---------- 
-# SMTP (25,587) 
-#---------- 
-# Incoming 
-iptables -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT 
-iptables -A OUTPUT -o eth0 -p tcp --sport 25 -j ACCEPT 
-iptables -A INPUT -i eth0 -p tcp --dport 587 -j ACCEPT 
-iptables -A OUTPUT -o eth0 -p tcp --sport 587 -j ACCEPT 
-# Outgoing 
-iptables -A INPUT -i eth0 -p tcp --sport 25 -j ACCEPT 
-iptables -A OUTPUT -o eth0 -p tcp --dport 25 -j ACCEPT 
-iptables -A INPUT -i eth0 -p tcp --sport 587 -j ACCEPT 
-iptables -A OUTPUT -o eth0 -p tcp --dport 587 -j ACCEPT 
- 
-#---------- 
-# MUNIN (4949) 
-#---------- 
-iptables -A OUTPUT -p tcp --dport 4949 -j ACCEPT 
- 
-#---------- 
-# Logs 
-#---------- 
-iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied INPUT: " --log-level error 
-iptables -A OUTPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied OUTPUT: " --log-level error 
- 
-#---------- 
-# DROP everything else 
-#---------- 
-iptables -A INPUT -j DROP 
-iptables -A OUTPUT -j DROP 
-iptables -A FORWARD -j DROP 
- 
-#---------- 
-# Reload Fail2Ban (si installé) 
-#---------- 
-service fail2ban restart 
- 
-exit 0 
-</code> 
-Et pour démarrer ce script automatiquement au (re)démarrage de votre serveur, modifier le fichier **/etc/rc.local** et avant la dernière ligne //exit 0// mettre : 
- 
-<code bash> 
-/root/scripts/firewall-start.sh 
-</code> 
 ==== Script pour redémarrer le Firewall avec toutes les règles ==== ==== Script pour redémarrer le Firewall avec toutes les règles ====
  
Ligne 474: Ligne 339:
 </code> </code>
  
-{{tag>bj web serveur}}+===== Firewall avec UFW ===== 
 + 
 +UFW est un utilitaire qui va faciliter la mise en place de règles pour iptables 
 + 
 +==== Ressources ==== 
 +  * [[https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart#setup-and-configure-your-firewall|installation de base]] pour meet jitsi 
 +  * [[https://gist.github.com/kimus/9315140|Ajouter des régles pour NAT et Forwarding]]  
 + 
 +==== Mise en place des règles de base ==== 
 +Ports à ouvrir pour le traffic vers Jitsi Meet server: 
 + 
 +    80 TCP - for SSL certificate verification / renewal with Let's Encrypt 
 +    443 TCP - for general access to Jitsi Meet 
 +    10000 UDP - for general network video/audio communications 
 +    22 TCP - if you access you server using SSH (change the port accordingly if it's not 22) 
 +    3478 UDP - for quering the stun server (coturn, optional, needs config.js change to enable it) 
 +    5349 TCP - for fallback network video/audio communications over TCP (when UDP is blocked for example), served by coturn 
 + 
 +En passant les commandes suivantes : 
 + 
 +  sudo ufw allow 80/tcp 
 +  sudo ufw allow 443/tcp 
 +  sudo ufw allow 10000/udp 
 +  sudo ufw allow 22/tcp 
 +  sudo ufw allow 3478/udp 
 +  sudo ufw allow 5349/tcp 
 +  sudo ufw enable 
 + 
 +Vérification du statut du firewall 
 +  sudo ufw status verbose 
 + 
 +  * Références : https://www.codeflow.site/fr/article/how-to-set-up-a-firewall-with-ufw-on-debian-10 
 +  * Voir aussi : https://www.linuxcapable.com/how-to-setup-and-configure-ufw-firewall-on-debian-11-bullseye/ 
 + 
 +==== Ajout de règles pour, par exemple, transfert de port vers un container ==== 
 +Changer dans le fichier /etc/default/ufw le paramètre DEFAULT_FORWARD_POLICY 
 +  DEFAULT_FORWARD_POLICY="ACCEPT" 
 + 
 +Configure /etc/ufw/sysctl.conf pour autoriser ipv4 forwarding  
 +  net.ipv4.ip_forward=1 
 +  #net/ipv6/conf/default/forwarding=1 
 +  #net/ipv6/conf/all/forwarding=1 
 + 
 +Ajouter à /etc/ufw/before.rules AVANT les filter rules. 
 +<code> 
 +  *nat 
 +  :PREROUTING ACCEPT [0:0] 
 +  -A PREROUTING -i enp35s0 -p udp --dport 30000 -j DNAT --to 10.0.3.243:30000 
 +  COMMIT 
 +</code> 
 + 
 +Ajouter des règles pour dhcp du container LXC 
 +  ufw allow in on lxcbr0 
 +  ufw allow out on lxcbr0 
 + 
 +Redémarrer le tout 
 +  sudo ufw disable && sudo ufw enable 
 + 
 + 
 + 
 +{{tag>futuretic bj web serveur}}
installation_d_un_serveur_web_sous_debian_gnu_linux.1548328079.txt.gz · Dernière modification : 2019/01/24 11:07 de serge