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.