_
~ DAMOLAB - Les tambouilles textes, teks et hacks ~
"Quand la montagne a son chapeau, mets ta pelisse ou ton manteau." - dicton
DAMOLAB (#TAGS) _./._ XBNF blog _./._ Blog _./._

Filtrer ou bannir des adresses IPs sous Linux


| FR | par DAMO | | 25/06/2023 19h00 | (last update 21/12/2025 18h09) | Commentaires |
#DWB #LINUX #SECURITY #APACHE
Plusieurs méthodes abordées pour filtrer et bannir des adresses IPs sous Linux
|


Le filtrage peut être réalisé à plusieurs niveaux :
  • kernel : fichiers /etc/hosts.allow ou deny
  • module kernel iptables : règles type firewall
  • application : exemple de ban avec apache ou en CGI
  • tcpkill : commande pour casser ponctuellement une connexion


/!\\ toutes ces manipulations se font en tant que root.

Gardez en tête que derrière les services de type web (port 80, 443, 8080, ...), mail ou autre,
il peut y a plusieurs adresses et potentiellement en provenance de réseaux,
votre filtrage doit être testé plusieurs fois afin d'être certains qu'il fonctionnera bien.

1) Filtrage kernel



1.1) Filtrage fichiers allow et deny


La configuration se fait avec deux fichiers :
/etc/hosts.allow
/etc/hosts.deny

Spécifier soit une adresse IP,
ALL:1.2.3.4/255.255.255.255


Soit un réseau
ALL:1.2.3.0/255.255.255.0


1.2) Filtrage iptables


/!\\ Pour bloquer une IP à chaud :
iptables -A INPUT -s {IP} -j DROP


Cette méthode est très efficace et testé avec 2000 règles.

       
1.2.1) Listes toutes les règles


iptables -L -n


       
1.2.2) Purge de toutes les règles


iptables -F


       
1.2.3) Conservation des règles ajoutés


La sauvegarde peut se faire ainsi :

iptables-save > /etc/iptables-test.lst


Puis la configuration se recharge ainsi :

iptables-restaure < /etc/iptables-test.lst


Le chargement des règles peut être déclenché au démarrage en ajoutant une ligne dans la crontab :
@reboot iptables-restaure < /etc/iptables-test.lst


Sur la plupart des Linux, ajouter dans le script de démarrage /etc/network/interfaces les lignes :
pre-up iptables-restore < /etc/iptables.rules
post-down iptables-save > /etc/iptables.rules


       
1.2.4) Aller bien plus loin


Exemple que j'ai récupéré permettant de limiter le nombre de tentatives de connexions entrantes à SSH :
(et stopper net les tests d'intrusion par tests successifs de mot de passe par exemple).

iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22  -m state --state NEW -m recent --update --seconds 300 --hitcount 3 -j DROP


Très efficace et testé mon serveur apache en local (qui écoute sur le port 80).

Testé aussi les connexions sortantes vers un serveur de mail :

iptables -I OUTPUT -p tcp --dport 993 -m state --state NEW -m recent --set
iptables -I OUTPUT -p tcp --dport 993  -m state --state NEW -m recent --update --seconds 300 --hitcount 3 -j DROP


Je n'ai pas mis l'option -i [interface], utile si vous votre machines est connecté à plusieurs interfaces réseaux
(dans le cas d'une passerelle, firewall, ...)


1.3) Filtrage tcpkill


Installer le package dsniff, il contient la commande tcpkill.

tcpkill {règle}


La syntaxe est celle de la commande tcpdump installée avec le package du même nom.

Donc commencer par tester vos règles avec tcpdump.
  • ici les connexions entrantes et sortantes de cette IP :

tcpdump host 1.2.3.4

ou
tcpdump src host 1.2.3.4 or dst host 1.2.3.4

  • une autre solution, qui peux s'avérer utile en cas d'urgence, de n'autoriser qu'un seul IP :


tcpdump ! host 1.2.3.4


/!\\ malheureusement cette commande fonctionne mal, certaines connexions passe au travers,
un coups ça passe un coups pas...

2) Filtrage applicatif



2.4) Filtrage avec Apache


Le plus pratique est de créer un fichier banned-hosts.conf contenant les IPs à bannir :
Require not ip 1.2.3.4
Require not ip 172.1.1.0/24
Require not ip ...


Ce fichier peut être généré et contenir un grand nombres de ces règles (testé avec plus de 1000 IPs).

Dans apache2.conf, ce fichier de règle sera chargé au démarrage :

<Location />
	<RequireAll>
		Require all granted
		Include .../banned-hosts.conf
	</RequireAll>
</Location>

ErrorDocument 403 "<h3>Unusual activity detected from this IP.</h3>"


Le redémarrage du serveur apache2 pour prise en compte est nécessaire :

 /etc/init.d/apache2 restart


2.5) Filtrage avec CGI

Les scripts CGI sont executés lorsque l'on y accède, il est possible de filtrer des IPs grâce à la varible d'environnement :
REMOTE_ADDR qui contient l'URL de l'utilisateur.

Il est possible de mettre en place un script qui appelé pour chaque accès, filtrera l'utilisateur et
chargera la page demandée (sorte de proxy en quelque sorte).

3) Detection d'attaques



Tout cela est bien beau mai comment peux t'on savoir de quelle origine est une attaque, en provenance de quelles IPs ?

3.6) Logger les tentatives avec iptables


3.7) Scrutter vos logs Apache


3.8) arp_cop : détection d'activités suspicieuses sur ARP


ARP détermine la correspondance entre adresse physique (MAC) et
adresse qui vous a IP allouée.

La commande ettercap fournis par les paquets du même nom vérifie les interactions ARP :

ettercap -i [interface] -TQP arp_cop


J'ai pu constater avec succès les nouvelles machines arrivent sur le réseaux (infos sur l'IP & MAC adresses).

Heureusement, pas d'actions scabreuses constatées mais je n'ai aucun doute que cela fonctionne...

[REF-1] ettercap_plugins


0.1) DamoLab


DamoLab@Sourceforge
DamoLab@DockerHub

0.2) Calculette composants radio


Electro-slide

0.3) Technologies


-- IA --
Mistral IA (le chat) (i)

-- Cyber-securité --
Shodan (i)11
Have I been pwned ? (i)
personal-data-leak-check
Osint
Zataz actualités

-- Adresses IP --
Mes Infos (IP, UA, ...)
info IP: WHOIS,ping,...
info IP: WHOIS,ping,...
info IP: Locallisation
info IP: abus
DNS checker

-- Mails --
GMX
Hushmail - mail temporaire sécurisé

encode/decode email for defeating bots
 $_='mailto: matt@org';s/(.)/chr(ord($1)+5)/eg;$_ 


-- Linux --
News LinuxFr
Mind-map Linux
Tutorials
crontab

-- Blogs Teks --
@TechWorldwithNana
@Cookieconnect
@GoCloudArchitects
@grafikart
@Underscore_
@cybernewsenfrancais


-- Geek Code --

décoder un GC

GCS d>+(---) s- a+ C++$ UL+>$ UOS++$
P++++>$ L++ E W++(++) N(+) o-- K+ w>--- O- M>+ PS+>+++ PE-- Y+@ t-(+) >5 X+ R>+ !tv b+
D---- D+ G e+++ h---- r+++ z+++



Rescue NEO...
(JS by Rezmason)


Nom/surnom:
Message:


revenir sur l'article
#DWB #LINUX #SECURITY #APACHE

Aucun commentaire.

dans
une
galaxy
lointaine
Charte du site damolab.zapto.org est motorisé par

"La force est une sorte de fluide crée par tout être vivant, une énergie qui nous entoure et nous pénètre, et qui maintient la galaxie en un tout unique."
- Obi-Wan à Luke Yoda