우분투 방화벽 ufw — 포트 열고 닫기
"방화벽 = iptables = 어렵다"는 옛말. ufw는 "이 포트 열어 / 닫아"를 영어 문장처럼 쓰는 도구입니다 — 서버 보안의 가장 기본기.
16편에서 ss -tlnp로 "내 컴퓨터의 어떤 프로그램이 어느 포트를 열어놨나"를 봤죠. 그런데 그 포트가 외부에서도 닿을 수 있는지를 정하는 건 별개 — 그게 방화벽입니다. "이 포트로 들어오는 건 허용 / 저 포트는 차단"을 정하는 문지기예요.
리눅스의 방화벽 엔진은 iptables(요즘은 nftables)인데 — 문법이 무시무시합니다. 그래서 우분투는 ufw(Uncomplicated FireWall — "안 복잡한 방화벽")라는, 그 위에 얹은 쉬운 껍데기를 줍니다. sudo ufw allow 22처럼 거의 영어 문장이에요. 서버를 운영한다면 ufw 설정은 거의 필수고, 데스크탑이면 기본은 꺼져 있지만 알아두면 좋습니다. 26편 입문 시리즈 17편, "중급" 묶음. ⚠️ 단 하나 — SSH로 원격 서버에 작업 중이라면 켜기 전에 꼭 봐야 할 게 있으니, 4번 섹션 경고를 먼저 읽으세요.
ss·포트)을 봤다면 이어집니다.
방화벽이 뭔가 — ufw의 역할
비유하자면 — 내 컴퓨터(특히 서버)는 여러 개의 "문(포트)"이 있는 건물입니다. 22번 문은 SSH(원격 접속), 80·443번 문은 웹, 그 외 수만 개. 방화벽은 그 문들의 경비원이에요 — "22번은 통과, 나머지는 막아"처럼 규칙을 정해줍니다. 그래야 안 쓰는 문으로 누가 들어오는 걸 막죠.
- 우분투 데스크탑: ufw는 깔려 있지만 기본 비활성(
inactive). 데스크탑은 보통 들어오는 연결이 별로 없어서요. 켜두면 더 안전하긴 함. - 우분투 서버 / 클라우드 인스턴스: 외부에 노출돼 있으니 ufw를 켜고 필요한 포트만 여는 게 사실상 표준. 안 그러면 안 쓰는 서비스 포트가 다 열려 있게 됨.
- ufw가 하는 일: 복잡한
iptables규칙을 사람이 읽기 좋은 명령(allow/deny)으로 바꿔줌. 기본 정책 = "들어오는 건 다 막고(deny incoming), 나가는 건 다 허용(allow outgoing)" — 그 위에 "이건 예외로 열어줘"를 추가하는 방식.
켜고 끄고 보기 — enable · status
sudo ufw enable 누르기 전에: 기본 정책이 "들어오는 건 다 막음"이라, 아무 규칙도 안 넣고 enable 하면 SSH(22번)도 막힙니다. 지금 SSH로 원격 서버에 접속해 있다면 — enable 하는 순간 연결이 끊기고 다시 못 들어갑니다(콘솔로 가야 함). 그래서 반드시 순서: ① sudo ufw allow OpenSSH(또는 allow 22) → ② 그 다음 sudo ufw enable. 로컬 데스크탑이면 이 위험은 없지만(키보드가 바로 있으니), 습관으로 들이세요. 클라우드 인스턴스는 대부분 콘솔/시리얼 접속 방법이 따로 있으니 막혀도 복구는 되지만, 안 막히게 하는 게 낫죠.열고 닫기 — allow · deny · delete
"이 포트(또는 서비스)를 열어/닫아"를 영어처럼 씁니다.
from 내IP로 제한하거나 아예 닫고 SSH 터널을 쓰는 게 정석입니다.흔한 시나리오 + 정리
실전 예시 — 위 명령들의 조합입니다.
default deny incoming + default allow outgoing. ⚠️ enable 전에 sudo ufw allow OpenSSH 먼저(원격이면 안 그럼 잠김). 열기: sudo ufw allow 포트/tcp·allow 서비스명·allow from IP to any port N. 닫기/삭제: deny 포트·delete 번호(번호는 status numbered). SSH 엔 limit 22/tcp 추천. 보기: status verbose. 안 쓰는 포트는 열지 말 것.시리즈 흐름
- 1~14편 입문·기초·vim·프로세스 ✔ 15편 디스크 ✔ 16편 네트워크 ✔
- 17편 — 우분투 방화벽 ufw (이 글) ✔
- 18편 — SSH 키 설정 (원격 접속을 비번 없이·안전하게 — 22번 포트를 제대로 쓰는 법)
- 19편~ — systemd 서비스 / cron / 셸 스크립트 …
오늘 할 일(가상 머신에서!): sudo ufw status로 현재 상태 보고 → sudo ufw allow OpenSSH → sudo ufw enable → sudo ufw status numbered로 규칙 확인 → sudo ufw allow 8080/tcp 추가했다가 → sudo ufw delete로 지워보기 → sudo ufw disable. "포트를 열고 닫는다"는 감만 잡으면 됩니다. 18편에서 만나요. (ufw 전체는 man ufw 또는 우분투 공식 방화벽 문서.)