| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 국가IP차단
- SMTP설정
- FTP
- 파일질라
- 서버운영
- 리눅스서버
- SSL인증서
- 리눅스명령어
- 시스템관리
- 티스토리챌린지
- postfix
- iptables
- linux
- CentOS
- geoip
- DNS
- 서버관리
- centos7
- ip차단
- 웹서버
- sftp
- 오블완
- Apache
- ubuntu
- oops-firwall
- FileZilla
- 서버방화벽
- 리눅스
- https
- 서버보안
- Today
- Total
운영중입니다
리눅스 방화벽 최적화 - ipset 설정으로 대량 IP 차단하는 방법 (Ubuntu) 본문
https://https443.tistory.com/37
CentOS 환경에서 설치 및 사용 방법은 이전 글 확인
1. 사용 방법
1.1 ipset 설치 (없는 경우) 및 확인
가장 먼저 시스템에 ipset이 설치되어 있는지 확인해야 합니다.
만약 설치되어 있지 않다면 아래 명령어를 통해 패키지 목록을 갱신하고 설치를 진행해 주세요.
iptables가 없는 환경이라면 함께 설치하는 것이 좋습니다.
# 패키지 목록 갱신
apt update
# ipset 설치
apt install ipset

#iptables가 없는 경우 함께 설치
apt install iptables -y
#설치 확인
dpkg -l | grep ipset
dpkg -l | grep iptables
#모듈 확인
lsmod | grep ip_set
#로드 안 되어 있으면 수동 로드
modprobe ip_set
modprobe ip_set_hash_net
modprobe xt_set

1.2 IP 대역 파일 다운로드
/etc 경로 아래에 ipset 디렉토리를 생성한 후 작업을 진행합니다.
여기서는 예시로 브라질과 중국의 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

1.3 ipset 세트 생성
다운로드한 데이터를 담을 관리 세트를 생성합니다.
이미 세트가 존재할 경우 에러가 발생할 수 있으므로, 실제 운영 환경에서는 -exist 옵션을 사용하여 중복 생성을 방지하는 것이 효율적입니다.
# 브라질
ipset create brazil hash:net
# 중국
ipset create china hash:net
# 그 외 국가 추가 가능,
#이미 존재할 경우 에러 발생 가능하므로 운영 환경에서는 -exist 옵션 사용 권장함
ipset create brazil hash:net -exist
ipset create china hash:net -exist
1.4 세트에 IP 대역 추가
앞서 다운로드한 국가별 IP 대역 파일의 내용을 읽어와서 ipset 세트에 등록합니다.
반복문을 사용하여 파일 안의 모든 IP 주소를 하나씩 추가해 줍니다.
# 브라질
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
#IP 추가 시에도 중복 방지하려면
for i in $(cat /etc/ipset/br.zone); do
ipset add brazil $i -exist
done
for i in $(cat /etc/ipset/cn.zone); do
ipset add china $i -exist
done
1.5 적용
생성한 ipset을 실제 방화벽 규칙에 적용하는 단계입니다.
#1.5.1 iptables에서 ipset 적용
iptables를 사용하여 특정 국가의 IP 세트로부터 들어오는 접속을 차단(DROP)하도록 설정합니다.
# 브라질 차단
iptables -A INPUT -m set --match-set brazil src -j DROP
# 중국 차단
iptables -A INPUT -m set --match-set china src -j DROP

#1.5.2 UFW 사용하는 경우
우분투의 기본 방화벽인 UFW를 사용 중이라면
iptables 규칙을 직접 수정할 때 정책 충돌이 발생할 수 있습니다.
이런 경우에는 UFW를 비활성화하고 iptables로 직접 관리하거나,
before.rules 파일에 규칙을 직접 반영하는 방식을 권장합니다.
1.6 적용 확인
#1.6.1 ipset 확인
ipset list
#1.6.2 iptables 확인
iptables -L -n
#1.6.3 특정 국가 차단 여부 확인
iptables -L -n | grep {국가}
iptables -L -n | grep brazil
2. 서버 재부팅으로 초기화 되었을 경우
우분투 운영체제는 기본적으로 iptables와 ipset 설정이 메모리 상에서 동작합니다. 따라서 서버를 재부팅하면 기존 설정이 모두 사라지므로, 운영 환경에서는 반드시 설정을 영구적으로 저장하는 과정이 필요합니다.
2.1 iptables 영구 저장
iptables-persistent 패키지를 설치하면 현재 적용된 규칙들을 파일로 저장하고 부팅 시 자동으로 불러올 수 있습니다.
#iptables-persistent 패키지를 사용하므로 설치.
apt install iptables-persistent
#iptables 규칙이 아래 파일에 저장됨.
/etc/iptables/rules.v4
/etc/iptables/rules.v6
2.2 수동 저장
설정 변경 후에는 아래 명령어를 통해 현재 상태를 수동으로 파일에 기록해 두어야 합니다.
#iptables 저장
netfilter-persistent save
# 또는 수동저장
iptables-save > /etc/iptables/rules.v4
#ipset 저장
ipset save > /etc/ipset.conf
2.3 ipset 부팅 시 자동 복원 서비스 생성 (한 번만 설정)
ipset은 별도의 서비스 등록이 필요할 수 있습니다.
시스템 부팅 시 저장해둔 ipset.conf 파일을 자동으로 불러오도록 systemd 서비스를 생성해 줍니다.
# 생성 후 내용 추가
vim /etc/systemd/system/ipset-restore.service
[Unit]
Description=Restore ipset rules
Before=netfilter-persistent.service
DefaultDependencies=no
[Service]
Type=oneshot
ExecStart=/sbin/ipset restore < /etc/ipset.conf
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
#저장 후 실행
systemctl daemon-reload
systemctl enable ipset-restore
systemctl start ipset-restore
2.4 서비스 상태 확인
마지막으로 서비스가 정상적으로 동작하고 있는지 상태를 점검합니다.
systemctl status netfilter-persistent
'리눅스보안' 카테고리의 다른 글
| 리눅스 방화벽 최적화 - ipset 설정으로 대량 IP 차단하는 방법 (CentOS) (0) | 2026.02.27 |
|---|---|
| 웹사이트 보안 강화: 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 |