| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- SSL인증서
- Apache
- FileZilla
- iptables
- https
- 리눅스서버
- SMTP설정
- linux
- 리눅스
- 웹서버
- 티스토리챌린지
- 서버방화벽
- 서버보안
- 국가IP차단
- geoip
- ip차단
- 서버운영
- CentOS
- DNS
- oops-firwall
- centos7
- 리눅스명령어
- ubuntu
- 오블완
- postfix
- FTP
- 서버관리
- 시스템관리
- 파일질라
- sftp
- Today
- Total
운영중입니다
리눅스 방화벽 최적화 - ipset 설정으로 대량 IP 차단하는 방법 (CentOS) 본문
1. ipset?
ipset은 리눅스 커널 방화벽인 netfilter 및 iptables와 연동하여 사용하는 관리 도구입니다.
여러 개의 IP 주소, 네트워크 대역, 포트 번호 등을 하나의 '집합(Set)' 형태로 저장하여 처리할 수 있다는 점이 특징입니다.
특히 방대한 양의 IP 목록을 효율적으로 차단하거나 허용해야 할 때,
기존의 iptables보다 훨씬 빠른 처리 속도를 제공하며 관리 또한 매우 간편합니다.
2. ipset을 사용하는 이유
2.1. 많은 IP 처리 시 성능 우수함
> 기존 iptables는 등록된 규칙이 많아질수록 패킷을 검사하는 시간이 길어져 시스템 성능이 저하될 수 있습니다.
반면 ipset은 아무리 많은 IP가 등록되어 있어도 세트 단위로 한 번에 검사하기 때문에 훨씬 빠른 속도를 유지합니다.
2.2. 업데이트 쉬움
> iptables 규칙을 매번 추가하거나 삭제할 필요 없이,
미리 생성해 둔 세트에 IP를 추가하거나 제거하는 것만으로 즉시 관리가 가능하여 운영 편의성이 높습니다.
2.3. 다양한 형태 지원함
단순한 IP 주소 외에도 다음과 같은 다양한 형식을 지원하여 유연한 방화벽 정책을 세울 수 있습니다.
- 단일 IP
- IP 대역 (CIDR)
- MAC 주소
- Port
- IP + Port 조합 등
3. 사용 방법
3.1 ipset 설치 (없는 경우) 및 확인
먼저 시스템에 ipset을 설치해야 합니다. CentOS 계열의 운영체제를 기준으로 설치 및 모듈 확인 방법은 다음과 같습니다.
#설치 (centos 기준)
yum install ipset
#모듈 확인
lsmod | grep ip_set

#로드 안 되어 있으면 수동 로드
modprobe ip_set
modprobe ip_set_hash_net
modprobe xt_set
3.2 IP 대역 파일 다운로드
국가별 IP 대역 데이터를 관리하기 위해 /etc 하단에 전용 디렉토리를 생성합니다. 예시로 브라질과 중국의 IP 대역 파일을 다운로드해 보겠습니다.
# * /etc 밑에 ipset 디렉토리 생성 후 진행
mkdir -p /etc/ipset
# 국가별 IP 대역 다운로드 (브라질, 중국 IP 차단 예시)
# 브라질 IP
wget -qO /etc/ipset/br.zone https://www.ipdeny.com/ipblocks/data/countries/br.zone
# 중국 IP
wget -qO /etc/ipset/cn.zone https://www.ipdeny.com/ipblocks/data/countries/cn.zone

3.3 ipset 세트 생성
다운로드한 국가별 데이터를 담을 ipset 세트를 각각 생성합니다.
# 브라질
ipset create brazil hash:net
# 중국
ipset create china hash:net
3.4세트에 IP 대역 추가
파일로 내려받은 IP 대역 정보를 for 반복문을 사용하여 방금 생성한 세트에 하나씩 등록해 줍니다.
# 브라질
for i in $(cat /etc/ipset/br.zone); do
ipset add brazil $i
done
# 중국
for i in $(cat /etc/ipset/cn.zone); do
ipset add china $i
done
3.5 적용
# 3.5.1 iptables에서 ipset 적용
#등록된 세트를 실제 방화벽 규칙에 적용하여 특정 국가의 접속을 차단합니다.
# 브라질 차단
iptables -A INPUT -m set --match-set brazil src -j DROP
# 중국 차단
iptables -A INPUT -m set --match-set china src -j DROP
# 3.5.2 oops-firewall에서 user.conf 사용하는 경우
#만약 oops-firewall을 사용 중이라면 user.conf 파일을 수정하여 설정을 반영할 수 있습니다.
vim /etc/oops-firewall/user.conf
# 브라질 차단
%-A INPUT -m set --match-set brazil src -j DROP
# 중국 차단
%-A INPUT -m set --match-set china src -j DROP
service oops-firewall restart
oops-firewall 설치 및 사용 방법은 아래 글 확인
https://https443.tistory.com/11
3.6 적용 확인
설정이 정상적으로 완료되었는지 아래 명령어들로 최종 확인합니다.
#3.6.1 ipset 확인
ipset list

# 3.6.2 iptables 확인
iptables -L -n
iptables -L -n | grep {차단국가}

'리눅스보안' 카테고리의 다른 글
| 리눅스 방화벽 최적화 - ipset 설정으로 대량 IP 차단하는 방법 (Ubuntu) (0) | 2026.03.06 |
|---|---|
| 웹사이트 보안 강화: Apache mod_evasive 설치 및 차단 테스트 (0) | 2025.10.31 |
| 서버 접속시 메일로 알림받기 (0) | 2025.09.09 |
| Certbot으로 무료 SSL 인증서 발급 및 설정하기 (1) | 2025.08.18 |
| geoip 설치 및 사용 방법2_2 (CentOS7) (2) | 2025.07.20 |