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/

Répondre à