본문 바로가기

서버 관리

CentOS 7에서 IP 차단 및 연결 종료하기

서버 관리를 하다 보면 악의적인 접근이나 DoS 공격을 차단해야 할 상황이 자주 발생합니다. 이 글에서는 CentOS 7에서 IP를 효과적으로 차단하고, 이미 연결된 세션을 종료하는 방법을 알아보겠습니다. ip는 크롤러 ip라 화끈하게 깠습니다.

1. 기본 IP 차단 방법

가장 기본적인 IP 차단 방법은 iptables를 사용하는 것입니다.

# 특정 IP 또는 서브넷 차단
iptables -I INPUT -s 20.171.207.0/24 -j DROP

이 명령어는 20.171.207.0/24 서브넷에서 오는 모든 새로운 연결 시도를 차단합니다.

주의사항: 이 방법은 새로운 연결만 차단하며, 이미 연결된 세션은 유지됩니다. 따라서 아래와 같이 확인해보면 기존 연결은 여전히 활성 상태임을 볼 수 있습니다.

netstat -anp | egrep ':80|:443' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -20

 

2. 기존 연결 종료하기

IP를 차단했지만 이미 연결된 세션을 종료하려면 conntrack 도구를 사용합니다.

# conntrack 도구 설치 (없는 경우)
yum install -y conntrack-tools

# 특정 IP 주소의 모든 연결 종료
conntrack -D -s 20.171.207.82

# 전체 서브넷에 대한 연결 종료
conntrack -D -s 20.171.207.0/24

# 특정 포트에 대한 연결만 종료
conntrack -D -p tcp --dport 80 -s 20.171.207.0/24
conntrack -D -p tcp --dport 443 -s 20.171.207.0/24

이 명령어들은 해당 IP나 서브넷의 기존 연결을 추적 테이블에서 제거합니다.

 

3. 차단 시 기존 연결까지 함께 차단하는 완벽한 방법

3.1 TCP 연결 강제 종료 (Reset 패킷 사용)

iptables -I INPUT -s 20.171.207.0/24 -p tcp -j REJECT --reject-with tcp-reset

작동 원리: 이 방법은 TCP RST(Reset) 패킷을 보내 연결을 즉시 종료시킵니다. 클라이언트는 연결이 비정상적으로 종료되었다는 신호를 받게 됩니다.

 

3.2 모든 상태의 연결 차단 (가장 완벽한 방법)

# 새 연결 차단
iptables -I INPUT -s 20.171.207.0/24 -j DROP

# 기존 연결(ESTABLISHED, RELATED) 차단
iptables -I INPUT -s 20.171.207.0/24 -m state --state ESTABLISHED,RELATED -j DROP

작동 원리

  • 첫 번째 규칙은 새로운 연결 시도를 차단합니다.
  • 두 번째 규칙은 state 모듈을 사용해 이미 확립된(ESTABLISHED) 연결과 관련된(RELATED) 연결을 명시적으로 차단합니다.

이 두 규칙을 함께 사용하면 새 연결과 기존 연결 모두를 효과적으로 차단할 수 있습니다.

 

3.3 프로토콜별 차단 방법

웹 서버 등 특정 프로토콜만 차단하고 싶을 때 사용합니다.

# TCP 트래픽 차단 (reset 사용)
iptables -I INPUT -s 20.171.207.0/24 -p tcp -j REJECT --reject-with tcp-reset

# UDP 트래픽 차단
iptables -I INPUT -s 20.171.207.0/24 -p udp -j REJECT

 

4. 차단 결과 확인하기

차단 조치가 제대로 적용되었는지 확인하려면 다음 명령어를 사용하세요.

# 현재 연결 상태 확인
netstat -anp | egrep ':80|:443' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -20

# iptables 규칙 확인
iptables -L INPUT -n -v

 

5. 영구적으로 설정 저장하기

CentOS 7에서는 iptables 설정이 재부팅 후 손실되므로 설정을 영구적으로 저장해야 합니다.

# iptables 설정 저장
service iptables save

# 또는
/usr/libexec/iptables/iptables.init save

 

마치며

서버 보안에서 악의적인 IP 차단은 기본적이지만 중요한 요소입니다. 이 글에서 소개한 방법들을 통해 단순히 IP를 차단하는 것뿐만 아니라, 기존 연결까지 효과적으로 차단할 수 있습니다. 특히 DoS 공격이나 무차별 접속 시도 등 긴급 상황에서는 기존 연결까지 모두 차단하는 완벽한 방법을 적용하는 것이 좋습니다.