방화벽 설정 ufw
, iptables
1. UFW: Uncomplicated Firewall
방화벽이 왜 필요해?
서버가 집이라고 생각해봐, 데이터 같은 소중한 물건들로 가득 찬. 문을 활짝 열어두면 누구나 들어올 수 있고, 네 데이터를 마음대로 훔쳐가거나 엉망으로 만들어 버릴 수 있어. 방화벽은 그 문을 잠그는 역할을 해. 누가 들어올 수 있는지, 어떤 조건에서 들어올 수 있는지를 네가 직접 관리할 수 있게 해주는 거지.
Linux에는 방화벽 설정을 위한 두 가지 주요 도구가 있어: ufw (Uncomplicated Firewall, 즉 "간단한 방화벽")와 iptables. 이 두 가지가 어떻게 작동하고 무엇이 다른지 알아보자.
UFW란?
UFW는 "더 간단하게 설정하자"는 생각으로 만들어진 방화벽 설정 도구야. 복잡한 세부사항에 골머리를 앓고 싶지 않은 사람들에게 기본적인 접근 규칙을 빠르게 설정할 수 있도록 설계되어 있어.
UFW 설치 및 활성화
UFW는 대부분의 Debian/Ubuntu 기반 배포판에 기본적으로 설치되어 있어. 만약 없다면 이렇게 설치하면 돼:
sudo apt update
sudo apt install ufw
UFW 활성화:
sudo ufw enable
상태 확인:
sudo ufw status
처음 실행했을 때는 상태가 아마 "inactive"일 거야. 활성화하면 "active"로 바뀔 거야.
UFW 규칙 설정
이제부터가 재미있는 부분이야. 어떤 트래픽을 허용하고 어떤 걸 차단할지 정할 수 있는 규칙을 설정하는 거지.
SSH 접속 허용 (포트 22):
sudo ufw allow 22
웹 서버 접속 열기 (포트 80):
sudo ufw allow 80
HTTPS 열기 (포트 443):
sudo ufw allow 443
불필요한 포트 차단 (예: 포트 8080):
sudo ufw deny 8080
규칙 삭제:
만약 마음이 바뀌었다면 sudo ufw status numbered
명령으로 나온 번호를 사용해서 규칙을 삭제할 수 있어. 예를 들어:
sudo ufw delete 1
검증 및 테스트
모든 것이 제대로 작동하는지 확인하려면 상태를 다시 확인할 수 있어:
sudo ufw status
활성화된 모든 규칙 목록을 볼 수 있을 거야.
2. IPTABLES: 더 많은 제어, 더 많은 가능성
iptables란?
만약 UFW가 "간단한 잠금이 있는 문"이라면, iptables는 "똑똑한 경비원"처럼 모든 것을 설정할 수 있게 해줘. 트래픽에 대한 완전한 제어를 제공하며, 라우팅, 다양한 기준에 따른 필터링, 패킷 수정 기능까지 포함돼.
iptables의 주요 개념
- 테이블 — 네트워크 패킷 처리를 위한 함수 세트야.
filter
: 패킷 처리 및 필터링 (예: 허용 또는 차단).nat
: 주소/포트 변환 (예: 라우터용).
- 체인 — 패킷에 적용되는 규칙이야.
INPUT
: 들어오는 트래픽용.OUTPUT
: 나가는 트래픽용.FORWARD
: 전달되는 트래픽용.
- 목적 (targets) — 패킷에 대해 수행되는 작업이야.
ACCEPT
: 패킷 허용.DROP
: 패킷 삭제.REJECT
: 알림을 보내면서 패킷 삭제.
이제 iptables 규칙 설정 방법을 살펴보자.
현재 규칙 보기
이미 설정된 규칙을 보려면 다음을 실행해:
sudo iptables -L
추가적으로 -v
또는 -n
옵션을 추가하면 패킷 및 IP 주소에 대한 자세한 정보를 볼 수 있어.
iptables로 규칙 생성하기
간단한 규칙: SSH(포트 22) 허용:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
8080 포트 접근 차단:
sudo iptables -A INPUT -p tcp --dport 8080 -j DROP
IP 주소로 접근 제한:
특정 IP를 가진 컴퓨터만 서버에 연결할 수 있도록 하고 싶고, 다른 모든 연결은 차단하고 싶다면:
sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
규칙 삭제
규칙을 삭제하려면 해당 번호를 알아야 해. 다음을 사용해 확인해:
sudo iptables -L --line-numbers
그리고 삭제해:
sudo iptables -D INPUT <규칙_번호>
규칙 저장
iptables 규칙은 기본적으로 시스템 재부팅 시 "잊혀져". 이를 방지하려면 규칙을 저장해:
sudo iptables-save > /etc/iptables/rules.v4
그런 다음 규칙을 이렇게 복원할 수 있어:
sudo iptables-restore < /etc/iptables/rules.v4
3. UFW 대 IPTABLES: 무엇을 선택할까?
UFW와 iptables는 같은 기능을 수행해 — 서버를 보호하는 거야. 그래서 어떤 도구를 선택해야 할까?
- UFW — 기본적인 보안 설정에 적합한 간단한 도구야. 낮은 수준의 세부 사항에 신경 쓰고 싶지 않거나 빠르게 방화벽을 설정하고 싶다면 UFW를 선택해.
- Iptables — 더 복잡한 설정을 위한 강력한 도구야. 만약 NAT나 라우팅 같은 복잡한 인프라를 갖추고 있다면 iptables가 필요할 거야.
참고로, UFW는 실제로 iptables "위에서" 동작해. 단순히 iptables 규칙을 대신 생성해줄 뿐이야. 그래서 네가 iptables를 잘 다룰 줄 안다면, UFW의 내부 동작도 자동으로 이해할 수 있을 거야.
4. 실용적인 예제: 서버 보호
예제 1: UFW로 SSH 및 웹 서버 보호
- UFW가 설치되고 활성화되었는지 확인:
sudo ufw enable
- SSH와 웹 서버 접근 허용:
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
- 활성화된 규칙 확인:
sudo ufw status
예제 2: iptables로 불필요한 트래픽 차단
- SSH 접근 허용:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- 웹 트래픽 허용:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
- 나머지 모두 차단:
sudo iptables -A INPUT -j DROP
오늘은 UFW와 iptables를 사용해 서버를 보호하는 법을 배웠어. 두 도구 모두 강력하고 유용하지만, UFW는 "일상에서의 친구"이고 iptables는 "숙련된 장인의 강력한 도구"라고 생각하면 돼. 방화벽을 설정하고 자신의 설정을 이해하며, 네 서버가 요새처럼 안전하게 유지되기를 바라!
GO TO FULL VERSION