[Linux] 방화벽 설정하기 (UFW, firewalld)

리눅스 서버를 운영하다 보면, 외부로부터의 불필요한 접속을 차단하는 일이 매우 중요합니다.
바로 그 역할을 해주는 것이 방화벽(Firewall)입니다.

리눅스에서는 주로 UFW (Ubuntu 계열)firewalld (Red Hat 계열) 두 가지 도구를 많이 사용합니다.

 


1. UFW – Ubuntu의 간단한 방화벽 도구

- 설치 및 활성화

sudo apt install ufw
sudo ufw enable

UFW는 사용하기 쉽게 설계된 CLI 기반 방화벽입니다.

- 상태 확인

sudo ufw status

- 기본 정책 설정

sudo ufw default deny incoming
sudo ufw default allow outgoing

기본적으로 외부에서 들어오는 요청은 차단하고, 내부에서 나가는 요청은 허용합니다.

- 포트 열기 / 닫기

sudo ufw allow 22        # SSH 허용
sudo ufw allow 80        # HTTP 허용
sudo ufw deny 3306       # MySQL 포트 차단

- 특정 IP만 허용

sudo ufw allow from 192.168.0.10 to any port 22

- 방화벽 비활성화

sudo ufw disable

 

2. firewalld – CentOS, RHEL의 기본 방화벽

- firewalld 설치 및 시작

sudo dnf install firewalld
sudo systemctl enable --now firewalld

- 상태 확인

sudo firewall-cmd --state

- 기본 영역 확인 및 사용

sudo firewall-cmd --get-active-zones

기본적으로 public 영역이 활성화되어 있습니다.

- 포트 허용

sudo firewall-cmd --permanent --add-port=22/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

- 포트 차단

sudo firewall-cmd --permanent --remove-port=3306/tcp
sudo firewall-cmd --reload

✔ 특정 IP만 허용

sudo firewall-cmd --permanent --add-rich-rule='
  rule family="ipv4" source address="192.168.0.10" port protocol="tcp" port="22" accept'

 

3. 어떤 방화벽을 선택해야 할까?

  • UFW: Ubuntu/Debian 사용자에게 추천. 사용법이 간단함
  • firewalld: CentOS, RHEL, Fedora 계열에서 기본 제공
  • 둘 다 결국 iptables를 기반으로 동작하지만, 추상화 수준이 다름

 

방화벽은 보안의 첫걸음

서버에 연결 가능한 포트를 최소화하는 것만으로도 보안을 크게 높일 수 있습니다.
불필요한 포트를 열어두지 않도록 방화벽을 꼭 설정해보세요.

요약:

  • UFW: allow, deny, status 위주로 간단하게 사용
  • firewalld: --add-port, --add-service, --reload 등 zone 기반 관리

초기 설정만 잘 해두어도, 서버가 외부 위협으로부터 더 안전해집니다.