모듈을 사용할 때 iptables
recent
여기에서 모듈 설정을 볼 수 있습니다.
$ ls -1 /sys/module/xt_recent/parameters/
특정 매개변수에 대한 설정을 나열합니다.
$ cat /sys/module/xt_recent/parameters/ip_list_tot
100
또한 모듈을 로드할 때 기본값을 변경할 수 있다는 것도 알고 있습니다.
내 질문은 목록이 크기에 도달하면 어떻게 됩니까 ip_list_tot
?
모듈이 recent
새 IP 주소 추가를 중지합니까, 아니면 기존 IP 주소를 "교체"하여 새 IP 주소로 교체합니까?
도움말을 확인했지만 설명을 찾을 수 없습니다.
iptables -m recent --help
ip_list_tot
그리고 프로덕션 환경에서 문제가 되는 IP를 차단하고 싶은데, 적당한 크기는 어느 정도인가요? 기본 ip_list_tot
크기인 100은 제게는 엄청나게 작은 것 같습니다. 이것을 로 설정하면 부정적인 부작용이 발생합니까 10'000
?
답변1
읽은 후 (매우 빠르게)소스 코드, 이전 항목이 삭제되었음을 알려드립니다.
if (t->entries >= ip_list_tot) {
e = list_entry(t->lru_list.next, struct recent_entry, lru_list);
recent_entry_remove(t, e);
}
이 값을 늘리려면 모듈을 로드할 때 매개변수를 수동으로 설정할 수 있습니다.
~$ sudo modinfo -p xt_recent
ip_list_tot:number of IPs to remember per list (uint)
ip_list_hash_size:size of hash table used to look up IPs (uint)
ip_list_perms:permissions on /proc/net/xt_recent/* files (uint)
ip_list_uid:default owner of /proc/net/xt_recent/* files (uint)
ip_list_gid:default owning group of /proc/net/xt_recent/* files (uint)
ip_pkt_list_tot:number of packets per IP address to remember (max. 255) (uint)
~$ sudo modprobe xt_recent ip_list_tot=10000
~$ sudo cat /sys/module/xt_recent/parameters/ip_list_tot
10000
recent
언로드/로드하기 전에 모듈이 사용 중이 아닌지 확인하십시오(방화벽을 비활성화하거나 최소한 일치 규칙 사용을 비활성화하십시오).
이 설정을 지속적으로 유지하려면 /etc/modprobe.d/xt_recent 아래에 다음 내용이 포함된 파일을 배치하면 됩니다.
options xt_recent ip_list_tot=10000
(이 방법은 작동하지 않을 수 있으며 배포판에 따라 조정될 수 있습니다.)
이 매개변수 값을 늘릴 경우 발생할 수 있는 성능 문제에 대해서는 말하기 어렵습니다. 이는 하드웨어, 시스템에서 실행되는 기타 작업 등에 따라 다릅니다.
여전히 소스 코드와 내 개발 배경을 읽어 보면 가장 걱정할 만한 점은 대기 시간이 발생하는 것입니다. 예를 들어 현재 테스트 중인 IP가 목록의 마지막 IP인지 여부입니다.또는목록에 없음(자주 나타날 수 있음):
static struct recent_table *recent_table_lookup(struct recent_net *recent_net,
const char *name)
{
struct recent_table *t;
list_for_each_entry(t, &recent_net->tables, list)
if (!strcmp(t->name, name))
return t;
return NULL;
}
x
복잡성을 고려하면 list_for_each_entry() + strcmp()
`ip_list_tot̀'를 큰 값으로 설정하는 데 드는 추가 "비용"은 목록을 탐색하는 시간입니다.
최종 복잡도는 1 * x
과 사이에서 다를 수 있습니다 ip_list_tot * x
.
그럼에도 불구하고 커널의 연결 목록은 성능과 속도가 요구 사항이므로 매우 잘 구현되어 있다고 생각합니다.
전체적으로 가능하다면 벤치마킹을 권장합니다.