IP'leri geçici olarak iptables ile engelleme programı


5

Debian'da bir IP adresini geçici olarak sadece bir komut başlatarak (IP ve süreyi belirterek) engellemek için bir program var mı ?

Sadece iptables / ip6tables ile bir kural oluşturabilirim, ancak daha sonra manuel olarak silmek zorunda kalacağım. Ayrıca fail2ban kullanıyorum, ancak fail2ban kurallarından herhangi birini karşılamayan rastgele bir IP adresini engelleyebileceğimi sanmıyorum.


1
Örneğin, kural oluşturma ve atkural silme komutuyla zamanlama gibi bir şeyecho "iptables -d rest_of_rule" | at now+30m
Dan

@Dan Bu ses iyi bir çözüm gibi görünüyor. Aslında, IP'yi ve süreyi giriş parametreleri olarak alabilen küçük bir bash betiği şeklinde bir cevap yazarsanız, kabul ediyorum!
JoeWhite

Yanıtlar:


5

İptables'ın buna göre eşleşebilmesi için bir ipset oluşturmanız gerekir. Not zaman aşımı 0 , varsayılanın asla sona ermeyeceği anlamına gelir.

ipset create temp_hosts hash:ip timeout 0
iptables -I INPUT 1 -m set -j DROP  --match-set temp_hosts src
iptables -I FORWARD 1 -m set -j DROP  --match-set temp_hosts src

Artık setimiz oluşturulduktan sonra ip adresleri eklemeye başlayabiliriz (zaman aşımı birimi: saniye).

ipset add temp_hosts 1.1.1.2 timeout 400

Yeniden başlatmaya devam etmek için bunlara ihtiyacınız varsa, kuralları kaydetmeniz ve yüklemeniz gerekir.

ipset save -f /path/ipset.save
ipset restore -f /path/ipset.save

Bunlar cron veya systemd ile otomatikleştirilebilir.


2

Dan'ın yorumundan ilham alan bu betiği deneyin:

#!/bin/bash
iptables -I INPUT -s $1 -j DROP
at ${2:-now+1hour} <<<"iptables -D INPUT -s $1 -j DROP"

Farklı kaydet /usr/local/sbin/blockipve çalıştır blockip 1.2.3.4ya da blockip 1.2.3.4 now+2hours. Varsayılan olarak IP 1 saat boyunca engellenir.

REJECT semantiklerini tercih ediyorsanız, DROP'u REJECT ile değiştirebilirsiniz.


Eğer uzun bir reddedilme listesine girmeyi planlıyorsanız, çok sayıda kuralın olması iptables'ı çok yavaşlatır. ipset tüm seçenekleri bir arada ele aldı. İdeal olandan da az olan yüzlerce cron işi ile sonuçlanabilir.
cybernard
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.