방화벽 기본 설정 (ufw / firewalld)

이 글은 서버 안의 운영체제 방화벽 설정 방법입니다. 서비스에 필요한 포트만 열고 나머지는 닫아 두세요.

배포판기본 방화벽 도구
Ubuntu / Debian 계열ufw
Rocky / CentOS 계열firewalld (firewall-cmd 명령)

주의

방화벽을 켜기 전에 SSH 포트(기본 22)를 먼저 허용하세요. SSH 포트를 막으면 지금 접속이 끊기고 다시 접속할 수 없습니다. SSH 포트를 바꿔 쓰고 있다면 바꾼 번호를 허용합니다.

아래 명령은 root 로 실행합니다. 일반 계정이라면 앞에 sudo 를 붙이세요.

Ubuntu / Debian 계열 (ufw)

상태 확인

bash
ufw status verbose

Status: inactive 면 방화벽이 꺼져 있는 상태입니다.

SSH 허용 후 방화벽 켜기

  1. SSH 포트를 먼저 허용합니다.

    bash
    ufw allow 22/tcp

    Rules updated 가 나옵니다.

  2. 방화벽을 켭니다.

    bash
    ufw enable

    Command may disrupt existing ssh connections. Proceed with operation (y|n)? 가 나오면 1번을 했는지 다시 확인하고 y 를 입력합니다.

  3. Firewall is active and enabled on system startup 이 나오면 켜진 것입니다. 서버를 재부팅해도 유지됩니다.

포트 열기

bash
# 웹 서버 (HTTP, HTTPS)
ufw allow 80/tcp
ufw allow 443/tcp

# 예: 게임 서버 포트 (TCP)
ufw allow 25565/tcp

# 예: UDP 포트
ufw allow 27015/udp

# 예: 포트 범위
ufw allow 30000:30100/tcp

특정 IP에서만 접속을 허용하려면:

bash
ufw allow from 203.0.113.10 to any port 3306 proto tcp

규칙 확인과 삭제

bash
ufw status numbered

규칙 앞에 번호가 붙어 나옵니다. 지울 규칙의 번호를 넣어 삭제합니다.

bash
ufw delete 3

Rocky / CentOS 계열 (firewalld)

상태 확인

bash
systemctl status firewalld

active (running) 이면 켜져 있습니다. 지금 열려 있는 서비스와 포트는 아래 명령으로 봅니다.

bash
firewall-cmd --list-all

services: 에 ssh 가 있는지 확인하세요.

방화벽 켜기

  1. firewalld 를 켜고, 재부팅 후에도 자동으로 켜지게 합니다.

    bash
    systemctl enable --now firewalld
  2. SSH 가 허용되어 있는지 확인하고, 없으면 추가합니다.

    bash
    firewall-cmd --permanent --add-service=ssh
    firewall-cmd --reload

포트 열기

--permanent 를 붙여야 재부팅 후에도 유지됩니다. 추가한 뒤에는 --reload 로 적용합니다.

bash
# 웹 서버 (HTTP, HTTPS)
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https

# 예: 게임 서버 포트 (TCP)
firewall-cmd --permanent --add-port=25565/tcp

# 예: UDP 포트
firewall-cmd --permanent --add-port=27015/udp

# 예: 포트 범위
firewall-cmd --permanent --add-port=30000-30100/tcp

# 적용
firewall-cmd --reload

각 명령 뒤에 success 가 나오면 정상입니다.

포트 닫기

bash
firewall-cmd --permanent --remove-port=25565/tcp
firewall-cmd --reload

포트가 열렸는지 확인하기

방화벽을 열어도 그 포트에서 프로그램이 실행 중이어야 접속됩니다. 서버에서 아래 명령으로 프로그램이 포트를 열고 있는지 확인합니다.

bash
ss -tulpn

Local Address:Port 에 해당 포트 번호가 보이면 프로그램이 대기 중입니다. 보이지 않으면 프로그램 설정이나 실행 상태를 먼저 확인하세요.

참고

방화벽 설정 실수로 서버에 접속할 수 없게 된 경우, 복구는 서버 내부 작업이라 별도 기술지원(유상)으로 진행할 수 있습니다. 비용은 고객센터로 문의하세요.

원하는 답을 찾지 못하셨나요?

1:1 문의 게시판에 남겨 주시면 담당자가 답변드립니다.