L'idée est de se connecter à une pageweb ne passant pas par le proxy-reverse qui bloque notre IP.
Via Scripts, récupérer notre IP via la log access.log généré à la connexion de la pageweb et la retirer de la blacklist IPSET du proxy-reverse.
Créer un contenair avec :
/var/www/xxxxx/index.php :
<!DOCTYPE html>
<html>
<head>
<title>DebanIP</title>
<link rel="apple-touch-icon" sizes="57x57" href="./icone/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="./icone/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="./icone/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="./icone/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="./icone/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="./icone/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="./icone/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="./icone/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="./icone/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="./icone/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="32x32" href="./icone/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="./icone/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="./icone/favicon-16x16.png">
<link rel="manifest" href="./icone/manifest.json">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="./icone/ms-icon-144x144.png">
<meta name="theme-color" content="#ffffff">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="X-UA-Compatible" content="IE=11" />
<link rel="stylesheet" media="screen" type="text/css" title="Exemple" href="css/dams.css"/>
</head>
<br>
<br>
<div align=center><img src="./img/dams.png" width="191" height="191"></div>
<br>
<br>
<br>
<br>
<style>
a {
background-color: #4CAF50;
border: none;
color: white;
padding: 16px 32px;
text-decoration: none;
margin: 4px 2px;
cursor: pointer;
border-radius: 4px;
}
</style>
<body>
<p><div align=center>Appuyer sur DéBan pour débloquer votre équipement :</div></p>
<br>
<div align=center><a href="index.php?run=true">DéBan</a></div>
<?php
if($_GET['run']){
exec("sudo /chemin/du/script2" , $result,$etat);
echo'<script type="text/javascript">';
echo'alert("Equipement d\351bloqu\351!");';
echo'document.location.href="https://pageweb.dams.ovh/index.php"';
echo"</script>";
}
?>
</body>
</html>
Afin de passer outre le reverse proxy qui bloque notre IP.
Dans la conf du routeur ouvrir un port (exemple :23456) et le rediriger vers notre contenair sur le même port.
Autant sécuriser un minimum.
Je vous laisse configurer nginx et letsencrypt.
2 Scripts nécessaires :
Script 1 :
#!/bin/bash genlst() { rep="scp -r -p root@deban:/var/log/nginx/access.log /deban/access.log" cmd="cat /deban/access.log" grepIpv4='(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' step1=$($rep) step2=$($cmd | grep -E -o "$grepIpv4") } ### fonction traitement des listes test/add/del ### trtlst() { for IP in $step2; do ipset test blacklistV4 "$IP" if [ $? -eq 0 ]; then ipset del blacklistV4 "$IP" else echo "ip not in set" fi done } ### genlst trtlst ### efface le contenu de access.log ### echo "" > /deban/access.log exit 0
Script 2 :
#!/bin/bash cat /root/debanIP.sh | ssh proxy echo "" > /var/log/nginx/access.log
Afin de sécuriser un minimum la pageweb on lui demandera un login/mdp à l'ouverture.
Installation :
apt install apache2-utils
Configuration :
htpasswd -c /chemin/ou/vous/voulez/mettre/.htpasswd nom_du_login
Renseigner le mdp
Penser à donner les droits root à www-data pour l’exécution des scripts :
/etc/sudoers www-data ALL = NOPASSWD: /chemin/du/script1.sh,/chemin/du/script2.sh
Le Vhost nginx :
server { listen 443 ssl http2; listen [::]:443 ssl http2; root /var/www/chemin/de/la/pageweb/; index index.php; ssl on; access_log /chemin/des/log/access.log; location / { satisfy any; deny all; auth_basic "Accès Restreint"; auth_basic_user_file /var/www/chemin/du/fichier/.htpasswd; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Exemple pageweb :