[Script] Blacklist avec la commande Expect

 

Blacklist avec la commande Expect

 

J’ai découvert récemment la commande Expect sur un forum alors que je cherchais a automatiser la sauvegarde des switchs et firewalls.

Cette commande permet d’envoyer une instruction a distance et cela va mettre très utile pour le blacklistage des spammeurs sur ce site.

Sur Nginx, j’ai mis en place un fichier de blocage, je vais pouvoir l’alimenter en un minimum de temps.

 

Il faut installer le paquet.

$ sudo apt install expect

 

Le script est assez basic mais suffisamment efficace pour ne pas perde trop de temps a se connecter, éditer le fichier de conf, renseigner l’ip, redémarrer les services …

Tout cela est maintenant automatisé. La seul action manuel sera d’exécuter le script.

$ sudo vim /usr/local/sbin/script_blocage_ip.sh
#!/usr/bin/expect
set ip [lindex $argv 0] # Création d'une variable, elle servira pour rajouter l'ip au lancement du sript.
spawn ssh -p 2222 it.izero.fr # Connexion en ssh a la machine
send "sudo -i\r" # Élévation des droits
send "echo 'deny $ip;' >> /etc/nginx/blocage_ip.conf\r" # Envoi de la commande echo + variable dans le fichier de blocage
send "nginx -t\r" # Test de la conf, facultatif en faite
send "systemctl restart php5-fpm && systemctl restart nginx\r" # Redémarrage des services
send "systemctl status php5-fpm && systemctl status nginx\r" # Vérification du status
expect eof # fin du fichier, retour au prompt

 

Mettre les droits au fichier.

$ sudo chmod +x /usr/local/sbin/script_blocage_ip.sh

 

Pour l’exécution, la script étant dans le path, lancer la commande et l’ip a blacklisté

$ script_blocage_ip.sh adresse_ip_a_blacklisté

 

Ça envoi bien les commandes au serveur distant.

spawn ssh -p 2222 it.izero.fr
sudo -i
echo 'deny xxx.xxx.xxx.xxx;' >> /etc/nginx/blocage_ip.conf
nginx -t
systemctl restart php5-fpm && systemctl restart nginx
systemctl status php5-fpm && systemctl status nginx
Linux it 4.9.0-7-amd64 #1 SMP Debian 4.9.110-1 (2018-07-05) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Sep  1 10:37:43 2018 from xxx.xxx.xxx.xxx
@it:~$ sudo -i
root@it:~# echo 'deny xxx.xxx.xxx.xxx;' >> /etc/nginx/blocage_ip.conf
root@it:~# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@it:~# systemctl restart php5-fpm && systemctl restart nginx
root@it:~# systemctl status php5-fpm && systemctl status nginx
 php5-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/lib/systemd/system/php5-fpm.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-09-01 11:21:39 CEST; 100ms ago
  Process: 26963 ExecStartPre=/usr/lib/php5/php5-fpm-checkconf (code=exited, status=0/SUCCESS)
 Main PID: 26969 (php5-fpm)
   Status: "Ready to handle connections"
    Tasks: 3 (limit: 4915)
   CGroup: /system.slice/php5-fpm.service
           ├─26969 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
           ├─26973 php-fpm: pool www
           └─26974 php-fpm: pool www

Sep 01 11:21:39 it systemd[1]: Starting The PHP FastCGI Process Manager...
Sep 01 11:21:39 it systemd[1]: Started The PHP FastCGI Process Manager.
 nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-09-01 11:21:39 CEST; 18ms ago
     Docs: man:nginx(8)
  Process: 26977 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, s
  Process: 26982 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 26979 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 26984 (nginx)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/nginx.service
           ├─26984 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─26986 nginx: worker process

Sep 01 11:21:39 it systemd[1]: Stopped A high performance web server and a reverse proxy server.
Sep 01 11:21:39 it systemd[1]: Starting A high performance web server and a reverse proxy server...
Sep 01 11:21:39 it systemd[1]: Started A high performance web server and a reverse proxy server.

 

 

No votes yet.
Please wait...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.