iptables로 IP를 일시적으로 차단하는 프로그램


5

데비안에 IP 주소를 차단하는 프로그램이 있습니까? 일시적으로 명령 (IP 및 지속 시간 지정)을 실행하는 것만으로?

iptables / ip6tables 만 있으면 규칙을 만들 수 있지만 수동으로 삭제해야합니다. 또한 fail2ban을 사용하지만 fail2ban 규칙을 만족시키지 못한 임의의 IP 주소를 차단할 수 있다고는 생각하지 않습니다.


1
예를 들어 다음과 같이 규칙 및 일정을 만듭니다. at 규칙 삭제 명령, echo "iptables -d rest_of_rule" | at now+30m
Dan

@Dan이 솔루션은 좋은 소리입니다. 사실, 입력 매개 변수로서 IP와 지속 ​​시간을 취할 수있는 작은 bash 스크립트의 형태로 응답을 작성한다면, 나는 그것을 받아 들일 것이다!
JoeWhite

답변:


5

iptables가 IPset과 일치 할 수 있도록 ipset을 만들어야합니다. 노트 시간 초과 0 기본값은 절대 만료되지 않음을 의미합니다.

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

이제 세트가 만들어 졌으므로 IP 주소를 추가 할 수 있습니다 (시간 초과 단위 : 초).

ipset add temp_hosts 1.1.1.2 timeout 400

재부팅을 견디기 위해서는 이러한 규칙이 필요하므로 규칙을 저장하고로드해야합니다.

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

이들은 cron이나 systemd로 자동화 될 수 있습니다.


2

Dan의 코멘트에서 영감을 얻어이 스크립트를 사용해보십시오.

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

다음과 같이 저장하십시오. /usr/local/sbin/blockip 실행하다 blockip 1.2.3.4 또는 blockip 1.2.3.4 now+2hours. 기본적으로 IP는 1 시간 동안 차단됩니다.

REJECT 구문을 선호하는 경우 DROP을 REJECT로 바꿀 수 있습니다.


긴 거부 목록을 만들려고한다면 규칙이 많으면 iptables가 느려질 것입니다. ipset 모든 옵션을 함께 다룹니다. 이상적인 것보다 적은 수백 가지 크론 작업으로 끝날 수도 있습니다.
cybernard
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.