iptables connlimit recent

agnusdei·2024년 7월 20일
0

connlimit 모듈

개요

connlimit 모듈은 특정 IP 주소가 동시에 가질 수 있는 최대 연결 수를 제한합니다. 동시 연결 수가 설정된 한도를 초과할 경우, 추가 연결 요청을 거부합니다.

주요 옵션

  • --connlimit-above: 지정한 숫자 이상의 동시 연결이 있을 경우 매치합니다.
  • --connlimit-mask: 제한을 적용할 IP 주소 범위를 결정하는 네트워크 마스크(기본값은 /32).

사용 예시

특정 IP 주소가 최대 10개의 동시 연결만 가질 수 있도록 제한:

sudo iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 10 -j REJECT

이 설정은 한 IP 주소가 10개의 동시 연결을 초과할 경우 추가 연결 요청을 거부합니다. 동시 연결 수가 10개 이하로 떨어지면 추가 연결이 다시 허용됩니다.

recent 모듈

개요

recent 모듈은 특정 시간 동안 발생한 패킷 수를 추적하고, 이를 기준으로 필터링을 수행합니다. 주로 brute force 공격과 같은 비정상적인 트래픽 패턴을 감지하고 차단하는 데 사용됩니다.

주요 옵션

  • --name: 추적할 리스트의 이름을 지정합니다.
  • --rcheck: 최근 목록에 IP가 있는지 확인합니다.
  • --update: 최근 목록에 IP가 있는지 확인하고, 있으면 타임스탬프를 업데이트합니다.
  • --remove: 최근 목록에서 IP를 제거합니다.
  • --seconds: 시간 제한을 설정합니다.
  • --hitcount: 시간 내에 허용할 최대 연결 시도를 설정합니다.

사용 예시

특정 IP 주소가 60초 동안 4회 이상 SSH 연결을 시도하면 차단:

# 특정 IP가 60초 동안 4회 이상 SSH 연결을 시도하면 차단
sudo iptables -A INPUT -p tcp --dport 22 -m recent --name ssh --rcheck --seconds 60 --hitcount 4 -j REJECT

# 연결 시도한 IP를 최근 목록에 추가하여 추적
sudo iptables -A INPUT -p tcp --dport 22 -m recent --name ssh --set -j ACCEPT

이 설정은 특정 IP가 60초 동안 4회 이상 SSH 연결을 시도할 경우 차단합니다. 차단된 IP는 60초가 지나면 다시 연결 시도가 가능합니다.

두 모듈을 함께 사용하는 방법

개요

connlimit 모듈과 recent 모듈을 함께 사용하여 동시 연결 수 제한과 시간 기반 차단을 동시에 적용할 수 있습니다. 이를 통해 보다 효과적으로 네트워크를 보호할 수 있습니다.

설정 방법

  1. 동시 연결 수 제한:

    # 한 IP가 최대 10개의 동시 연결만 가질 수 있도록 제한하고, 제한을 초과하면 차단 목록에 추가
    sudo iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 10 -m recent --name connlimit_list --set -j REJECT
  2. 시간 기반 차단:

    # 60초 동안 10개 이상의 연결 시도가 있는 IP를 차단
    sudo iptables -A INPUT -m recent --name connlimit_list --rcheck --seconds 60 --hitcount 10 -j REJECT

결론

  • connlimit 모듈: 동시 연결 수를 제한하여 한 IP 주소가 일정 수 이상의 동시 연결을 가질 수 없도록 합니다. 동시 연결 수가 제한 이하로 떨어지면 자동으로 해제됩니다.
  • recent 모듈: 특정 시간 동안 발생한 연결 시도를 추적하여 차단합니다. 설정된 시간이 지나면 차단이 자동으로 해제됩니다.
  • 두 모듈을 함께 사용: connlimit으로 동시 연결 수를 제한하고, recent로 시간 기반 차단을 설정하여 보다 정교한 트래픽 제어가 가능합니다.

이 두 모듈을 적절히 활용하여 서버를 다양한 네트워크 공격으로부터 보호하고, 안정적인 서비스를 유지할 수 있습니다. 추가적인 질문이나 더 필요한 사항이 있다면 언제든지 말씀해 주세요.

profile
DevSecOps ⚙️ + CTF🚩

0개의 댓글