리눅스로 서버를 처음 열었을 때 가장 두려운 건
“지금 이 서버 혹시 외부에서 뚫린 거 아냐?” 하는 걱정이었어요.
저도 처음엔 웹서버만 열어놨는데, 로그에 외국 IP들이 쉴 새 없이 접속을 시도하더라고요.
그때부터 알아본 게 바로 방화벽(firewall)입니다.
리눅스에서는 UFW나 firewalld 같은 도구를 통해 포트를 열고 닫을 수 있어요.
생각보다 어렵지 않고, 몇 줄만 설정해도 서버 보안이 몇 배 강화됩니다.
오늘은 우분투(Ubuntu)에서는 UFW, CentOS나 RHEL 계열에서는 firewalld를 사용하는 방법을
하나하나 설명드릴게요. 실습 중심으로 따라오기만 하면 설정 끝입니다!
📌 목차
- 방화벽이란? 왜 필요한가
- UFW로 방화벽 설정하기 (우분투 기준)
- Firewalld로 설정하기 (CentOS 기준)
- 자주 여는 포트 예시 (웹, SSH, DB 등)
- 방화벽 설정 확인 및 문제 해결 팁
1. 방화벽이란? 왜 필요한가
방화벽은 말 그대로 '불이 번지는 걸 막는 벽'이죠.
리눅스에서는 네트워크 단에서 외부 접근을 제어하는 보안 장치를 의미해요.
- 포트 단위로 허용/차단 설정 가능
- 특정 IP만 허용하거나 전체 차단 가능
- 웹, DB, FTP 등 민감한 서비스 보호
설정만 해도 보안 수준이 수십 배 올라간다는 말이 괜히 나온 게 아니랍니다.
2. ✅ UFW 방화벽 설정 (Ubuntu 계열)
UFW는 "Uncomplicated Firewall"의 약자로, 정말 말 그대로 간단한 방화벽 도구예요.
사용 순서:
- 먼저 UFW가 설치되어 있는지 확인하려면
“sudo ufw status”라고 입력합니다. - 만약 설치되어 있지 않다면
“sudo apt install ufw”로 설치해주세요. - SSH 접속을 유지하려면 먼저 포트 22를 허용해줍니다.
“sudo ufw allow OpenSSH” 또는 “sudo ufw allow 22” - 웹서버를 열려면 80 포트를 허용해야 해요.
“sudo ufw allow 80”
또는 HTTPS까지 포함해서 “sudo ufw allow 'Apache Full'”로 입력할 수도 있어요. - 설정이 끝났다면 방화벽을 켜야겠죠.
“sudo ufw enable” 라고 입력하면 활성화됩니다. - 상태를 확인하려면
“sudo ufw status verbose”
명령어로 어떤 포트가 열려 있는지 볼 수 있어요. - 포트를 다시 차단하려면
“sudo ufw deny 21” (예: FTP 포트 차단) - 전체 초기화가 필요할 경우에는
“sudo ufw reset” 을 입력하면 초기 설정으로 돌아갑니다.
3. ✅ firewalld 설정 방법 (CentOS/RHEL 계열)
CentOS에서는 기본적으로 firewalld를 사용합니다.
UFW보다 세밀한 설정이 가능하지만, 조금 더 복잡해 보여요.
사용 순서:
- 먼저 방화벽 서비스가 실행 중인지 확인하려면
“sudo systemctl status firewalld”
활성화되어 있지 않다면 아래처럼 켜주세요:
“sudo systemctl start firewalld”
“sudo systemctl enable firewalld” - 특정 포트를 허용하고 싶다면
“sudo firewall-cmd --permanent --add-port=80/tcp”
“sudo firewall-cmd --permanent --add-service=http” - 설정 변경 후에는 반드시 재로드 해야 적용됩니다.
“sudo firewall-cmd --reload” - 현재 열려 있는 포트 확인
“sudo firewall-cmd --list-all” - 포트 차단하려면
“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 명령어들은
리눅스를 조금만 써도 매번 마주치는 중요한 보안 설정입니다.
한 줄 한 줄 따라해보시고,
꼭 여러분의 서버를 ‘방화벽’으로 지켜주세요 😊
'리눅스의 모든 것' 카테고리의 다른 글
리눅스 하드디스크 마운트 따라하기 – 새 디스크 붙이는 실전 가이드 (2) | 2025.08.11 |
---|---|
리눅스에서 Docker 설치하는 법 – 초보자도 10분 만에 완성 (1) | 2025.08.10 |
리눅스 네트워크 설정, 이 글 하나면 끝! (IP 확인부터 고정까지) (1) | 2025.08.10 |
5분 만에 웹페이지 띄우기! 리눅스 웹서버 설치 기초 완전 정리 (3) | 2025.08.09 |
리눅스 사용자 추가하는 법 – 계정 생성부터 권한 설정까지 완벽 정리 (3) | 2025.08.09 |