서버 관리를 하다 보면 악의적인 접근이나 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 공격이나 무차별 접속 시도 등 긴급 상황에서는 기존 연결까지 모두 차단하는 완벽한 방법을 적용하는 것이 좋습니다.
'서버 관리' 카테고리의 다른 글
MariaDB ProtectHome 설정이 자동으로 초기화되는 문제 해결하기 | systemd override로 영구 설정 (0) | 2025.05.24 |
---|---|
[MySQL] MyISAM과 InnoDB 스토리지 엔진 비교 및 복구 방법 정리 (1) | 2025.05.19 |
SSH 접속할 때 자주 만나는 메시지 & 오류 정리 (20) | 2025.05.17 |