C’est pas une critique mais ça veut dire que tu fais plus confiance à l’auth HTTPS qu’à l’auth SSH ?
David > Le 1 mai 2024 à 20:34, Ludovic LEVET via FRsAG <frsag@frsag.org> a écrit : > > Il ne faut jamais laisser le port ssh directement sur le net sans filtrage de > la source ... > > Mettre en place par exemple un "site" web d'ouverture du/des ports. > > Par exemple un vhost : > https://remoteadm.mydomain.com/server1/ > > Mise en place : > > Créer un vhost sur le serveur (beaucoup mieux : créer un vhost sur un serveur > tiers qui renvoie les requêtes par ProxyPass apres authentification) > Ce serveur est configuré pour donner l’accès à la ressource web par > user/password + 2fa > > Sur le serveur de destination (donc pas le frontal plus haut mais celui > concerné par la demande d'ouverture de ports): > > Dans /etc/rc.local (ou equivalent en service) > ipset create trusted-ip hash:net family inet > iptables -A INPUT -i eth0 -d x.x.x.x -m set --match-set trusted-ip src -p tcp > -m multiport --dport 22,25 -j ACCEPT > iptables -A INPUT -i eth0 -d x.x.x.x -m state --state ESTABLISHED,RELATED -j > ACCEPT > iptables -A INPUT -i eth0 -d x.x.x.x -p icmp -j ACCEPT > iptables -A INPUT -i eth0 -d x.x.x.x -j DROP > #Restoration des IPs autorisées au boot : > /var/www/dummy/trusted-ip.sh > > > cat /etc/sudoers.d/httpd > apache ALL=(ALL) NOPASSWD:/usr/sbin/ipset > apache ALL=(ALL) NOPASSWD:/usr/bin/echo > apache ALL=(ALL) NOPASSWD:/usr/bin/sed > > > exemple de la page index.php sur le serveur distant : > > cat /var/www/vpn/index.php > <html> > <body> > IP Detection : > <a href="http://checkip.dyndns.org" > target="popup" > onclick="window.open('http://checkip.dyndns.org/','popup','width=400,height=100'); > return false;"> > Verify on checkip site > </a> > <br> > <?php > $ip = $_SERVER['REMOTE_ADDR']; > echo "<br>"; > echo "<form method='post' action='index.php'>"; > echo " <label for='fname'>IP address detected : </label>"; > echo " <input type='text' id='fname' name='fname' value='$ip'>"; > echo " <input type='submit' NAME='validation' value='Trust it !'>"; > echo "</form>"; > echo "<form method='post' action='index.php'>"; > echo " <label for='fname'>IP address to remove : </label>"; > echo " <input type='text' id='fname' name='fname' value=''>"; > echo " <input type='submit' NAME='removing' value='Remove it !'>"; > echo "</form>"; > if (isset($_POST['validation'])) { > $ip = $_POST['fname']; > $return = exec("sudo echo 'ipset add trusted-ip '$ip >> > /var/www/dummy/trusted-ip.sh"); > $return = exec("sudo ipset add trusted-ip $ip 2>&1"); > echo "$ip is trusted now"; > } > if (isset($_POST['removing'])) { > $ip = $_POST['fname']; > $return = exec("sudo sed -i '/$ip$/d' /var/www/dummy/trusted-ip.sh"); > $return = exec("sudo ipset del trusted-ip $ip 2>&1"); > echo "$ip is delete now"; > } > if (isset($_POST['clean'])) { > $return = exec("sudo ipset flush trusted-ip 2>&1"); > } > echo "<br><br>"; > $list = shell_exec("sudo ipset list trusted-ip"); > echo nl2br($list); > echo "<br>"; > echo "<form method='post' action='index.php'>"; > echo " <input type='submit' NAME='clean' value='Clear all !'>"; > echo "</form><br>"; > ?> > <BR> <BR> > <CENTER><input type="button" value="Refresh Page" > onClick="location.replace('index.php');"></CENTER> > <BR> <BR> > </body> > </html> > > C'est juste un exemple que j’utilise depuis des années. > Le serveur frontal https gère les autorisations et renvoie la demande par > ProxyPass au serveur concerné via la directive <Location xxx> > Un seul frontal suffit pour plusieurs serveurs : > > Serveur 1 : > https://remoteadm.mydomain.com/serveur1/ > Serveur 2 : > https://remoteadm.mydomain.com/serveur2/ > ... > > > Ludo. > > Le 30/04/2024 à 15:34, Louis G. via FRsAG a écrit : >>> Filtrer les IP autorisées à se connecter, tout simplement ? :) >>> >>> iptables -A INPUT -s 1.2.3.4/32 -p tcp --dport 22 -j ACCEPT >>> >>> iptables -A INPUT -p tcp --dport 22 -j DROP >> Mouarf, je suis pas fan. Si on autorise le télétravail (mais qui fait ça en >> 2024 ? 🙃), alors l’IP des admins est rarement fixe, donc ça impose de monter >> un VPN pour passer par l’IP du bureau. Et quitte à monter un VPN, autant ne >> plus exposer le SSH sur Internet. >> >> Tu peux éventuellement restreindre à des CIDR genre ceux des BOFS, mais faut >> le maintenir (et ça empêche pas tous les scans). >> >> <Avis perso (ou pavé dans la mare ?) > De toute façon le LAN admin isolé >> d’Internet, ça devrait faire partie des pratiques de base appliquées en 2024 >> 😊 </avis perso> >> >> Louis >> _______________________________________________ >> Liste de diffusion du %(real_name)s >> http://www.frsag.org/ > > -- > --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > Ce message inclut une signature numérique. Il certifie que l'expéditeur et le > contenue du message sont authentiques. > Si votre logiciel de messagerie est compatible, Il doit garantir que le > document n'a pas été altéré entre l'instant où l'auteur l'a signé et le > moment où le lecteur le consulte. > Loi n°2000-230 du 13 mars 2000 Art. 1316, 1316-1, 1316-2, 1316-3, 1316-4 du > Code civil. > La présence d'un fichier joint 'smime.p7s' et/ou 'OpenPGP_signature.asc' > (fichier signature) indique que votre client messagerie n'est pas compatible. > --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > _______________________________________________ > Liste de diffusion du %(real_name)s > http://www.frsag.org/ _______________________________________________ Liste de diffusion du %(real_name)s http://www.frsag.org/