본문 바로가기
리눅스의 모든 것

이것만 해도 서버 해킹 80%는 막습니다 – 리눅스 방화벽 기초 설정법

by 운따돈 2025. 8. 10.

리눅스로 서버를 처음 열었을 때 가장 두려운 건
“지금 이 서버 혹시 외부에서 뚫린 거 아냐?” 하는 걱정이었어요.


저도 처음엔 웹서버만 열어놨는데, 로그에 외국 IP들이 쉴 새 없이 접속을 시도하더라고요.

그때부터 알아본 게 바로 방화벽(firewall)입니다.


리눅스에서는 UFW나 firewalld 같은 도구를 통해 포트를 열고 닫을 수 있어요.
생각보다 어렵지 않고, 몇 줄만 설정해도 서버 보안이 몇 배 강화됩니다.

 

오늘은 우분투(Ubuntu)에서는 UFW, CentOS나 RHEL 계열에서는 firewalld를 사용하는 방법을
하나하나 설명드릴게요. 실습 중심으로 따라오기만 하면 설정 끝입니다!


📌 목차

  1. 방화벽이란? 왜 필요한가
  2. UFW로 방화벽 설정하기 (우분투 기준)
  3. Firewalld로 설정하기 (CentOS 기준)
  4. 자주 여는 포트 예시 (웹, SSH, DB 등)
  5. 방화벽 설정 확인 및 문제 해결 팁

1. 방화벽이란? 왜 필요한가

방화벽은 말 그대로 '불이 번지는 걸 막는 벽'이죠.
리눅스에서는 네트워크 단에서 외부 접근을 제어하는 보안 장치를 의미해요.

  • 포트 단위로 허용/차단 설정 가능
  • 특정 IP만 허용하거나 전체 차단 가능
  • 웹, DB, FTP 등 민감한 서비스 보호

설정만 해도 보안 수준이 수십 배 올라간다는 말이 괜히 나온 게 아니랍니다.


2. ✅ UFW 방화벽 설정 (Ubuntu 계열)

UFW는 "Uncomplicated Firewall"의 약자로, 정말 말 그대로 간단한 방화벽 도구예요.

사용 순서:

  1. 먼저 UFW가 설치되어 있는지 확인하려면
    “sudo ufw status”라고 입력합니다.
  2. 만약 설치되어 있지 않다면
    “sudo apt install ufw”로 설치해주세요.
  3. SSH 접속을 유지하려면 먼저 포트 22를 허용해줍니다.
    “sudo ufw allow OpenSSH” 또는 “sudo ufw allow 22”
  4. 웹서버를 열려면 80 포트를 허용해야 해요.
    “sudo ufw allow 80”
    또는 HTTPS까지 포함해서 “sudo ufw allow 'Apache Full'”로 입력할 수도 있어요.
  5. 설정이 끝났다면 방화벽을 켜야겠죠.
    “sudo ufw enable” 라고 입력하면 활성화됩니다.
  6. 상태를 확인하려면
    “sudo ufw status verbose”
    명령어로 어떤 포트가 열려 있는지 볼 수 있어요.
  7. 포트를 다시 차단하려면
    “sudo ufw deny 21” (예: FTP 포트 차단)
  8. 전체 초기화가 필요할 경우에는
    “sudo ufw reset” 을 입력하면 초기 설정으로 돌아갑니다.

3. ✅ firewalld 설정 방법 (CentOS/RHEL 계열)

CentOS에서는 기본적으로 firewalld를 사용합니다.
UFW보다 세밀한 설정이 가능하지만, 조금 더 복잡해 보여요.

사용 순서:

  1. 먼저 방화벽 서비스가 실행 중인지 확인하려면
    “sudo systemctl status firewalld”
    활성화되어 있지 않다면 아래처럼 켜주세요:
    “sudo systemctl start firewalld”
    “sudo systemctl enable firewalld”
  2. 특정 포트를 허용하고 싶다면
    “sudo firewall-cmd --permanent --add-port=80/tcp”
    “sudo firewall-cmd --permanent --add-service=http”
  3. 설정 변경 후에는 반드시 재로드 해야 적용됩니다.
    “sudo firewall-cmd --reload”
  4. 현재 열려 있는 포트 확인
    “sudo firewall-cmd --list-all”
  5. 포트 차단하려면
    “sudo firewall-cmd --permanent --remove-port=21/tcp”
    (그 후 다시 reload)

4. 자주 사용하는 방화벽 포트 설정 예시

SSH 22 원격 접속, 꼭 먼저 열어야 함
HTTP 80 기본 웹사이트 접속 포트
HTTPS 443 보안 웹사이트
FTP 21 파일 전송 프로토콜 (주의 필요)
MySQL 3306 데이터베이스
PostgreSQL 5432 다른 DBMS 포트
Custom 앱 5000 등 특정 웹 애플리케이션 포트
 

서버 설치 후 아무것도 안 보인다면, 포트가 닫혀 있는 것이 대부분 원인이에요.


5. 방화벽 설정 상태 확인 및 문제 해결 팁

  • 방화벽 활성화 상태를 확인하려면
    우분투: “sudo ufw status”
    CentOS: “sudo firewall-cmd --state”
  • 서버는 켰는데 접속이 안 될 때 → 포트가 열려 있는지 다시 확인
  • 외부에서 핑 테스트가 안 된다면 ICMP 차단 여부도 점검 필요
    (firewalld에서는 ping 허용을 따로 추가해야 함)
  • UFW에서 특정 IP만 허용하고 싶다면
    “sudo ufw allow from 192.168.0.10 to any port 22”
  • firewalld에서는
    “sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.10" port port="22" protocol="tcp" accept'”

✅ 리눅스에서 방화벽은 선택이 아니라 필수입니다

리눅스 서버를 열자마자 인터넷에 노출되었다는 건,
문이 열려 있는 집에 아무나 들어올 수 있는 상황과 똑같습니다.

 

방화벽 설정은 아주 간단하지만,
이걸 했느냐 안 했느냐에 따라
해킹, 오작동, 외부 침입 같은 위험을 얼마나 줄일 수 있는지가 달라져요.

 

오늘 알려드린 ufw나 firewalld 명령어들은
리눅스를 조금만 써도 매번 마주치는 중요한 보안 설정입니다.

 

한 줄 한 줄 따라해보시고,
꼭 여러분의 서버를 ‘방화벽’으로 지켜주세요 😊