필요한 문만 열어 두는 것. 그것이 방화벽입니다.
마지막 강입니다. 쇼핑몰은 돌아가고, 백업도 자동으로 됩니다.
이제 문을 잠글 차례예요.
17강에서 봤듯, 여러분의 서버는 지금 이 순간에도 두드림을 당하고 있습니다.
공격자는 사람이 아니라 전 세계를 훑는 로봇이에요.
"우리 사이트는 작으니까 괜찮겠지"는 통하지 않습니다.
로봇은 크기를 가리지 않거든요.
SSH 로 몇 번, 웹으로 몇 번 두드려졌는지
bash
내 가상 Ubuntu 서버에서 실행
방화벽 — 필요한 문만 열기
서버에는 65535개의 포트(문)가 있습니다. 우리에게 필요한 건 세 개뿐이에요.
22SSH내가 들어갈 문 — 반드시 열어야
80HTTP손님이 들어올 문
443HTTPS암호화된 손님 문
8000앱열면 안 됩니다 — nginx 뒤에 숨겨 둡니다
Ubuntu 의 방화벽은 ufw(Uncomplicated FireWall)입니다. 이름대로 쉬워요.
설치하고 상태 확인 — 아직 꺼져 있습니다
bash
내 가상 Ubuntu 서버에서 실행
올바른 순서 — 문을 먼저 열고 나서 방화벽을 켭니다
bash
내 가상 Ubuntu 서버에서 실행
이제 8000번 포트는 바깥에서 닿을 수 없습니다.
그런데 우리 쇼핑몰은 여전히 잘 돌아가요. 왜냐면 nginx가 서버 안에서
8000번으로 접속하기 때문입니다. 방화벽은 바깥에서 들어오는 것만 막거든요.
안에서는 잘 되고, 바깥으로는 80·443·22만 열려 있습니다
bash
내 가상 Ubuntu 서버에서 실행
🎮 보안 점검 실험실
여러분의 가상 서버를 실제로 점검합니다.
지금까지 설정한 것들이 안전한지 항목별로 검사해 보세요.
서버 관리자의 다섯 가지 원칙
①최소 권한필요한 만큼만. root 로 살지 않기 (7강)
②최소 노출필요한 포트만. 앱은 127.0.0.1 에 (16·20강)
③최신 유지apt update && apt upgrade 를 정기적으로 (12강)
④기록 남기기로그가 없으면 사고를 알 수 없습니다 (17강)
⑤되돌릴 길백업 · 설정 .bak · 복원 연습 (19강)
③ 보안 패치는 가장 값싼 방어입니다
bash
내 가상 Ubuntu 서버에서 실행
우리가 만든 것을 한눈에
20강 동안 여러분은 이 구조를 전부 직접 다뤘습니다.
밖🛡️ ufw 방화벽22 · 80 · 443 만 · 나머지는 차단 (20강)
앞🏠 nginx리버스 프록시 · 정적 파일 (16강)
안🧪 systemd → gunicorn → Flask죽으면 되살아나는 앱 (14·15강)
밑🐧 Ubuntu파일 · 권한 · 프로세스 · 메모리 (1~11강)
🎓 20강, 여기가 끝이자 시작입니다
1강에서 cat /etc/os-release 한 줄로 시작했습니다.
20강에서 여러분은 서버 한 대를 처음부터 끝까지 운영하고 있습니다. 🎉
이제 진짜 서버를 하나 빌려 보세요.
한 달에 커피 두 잔 값이면 됩니다.
그리고 여기서 한 것을 똑같이 해 보세요.
명령은 하나도 다르지 않습니다.
다음 걸음 ①Docker앱을 통째로 상자에 담아 옮기기
다음 걸음 ②HTTPS 인증서certbot 으로 자물쇠 달기
다음 걸음 ③Git 배포 자동화push 하면 저절로 배포되게
다음 걸음 ④모니터링죽으면 알림이 오게
서버 관리자는 명령어를 다 외운 사람이 아닙니다.
침착하게 로그를 읽고, 순서대로 확인하고, 되돌릴 길을 만들어 두는 사람입니다.
여러분은 이미 그 방법을 배웠습니다.
🤔 확인 문제
sudo ufw enable 을 allow 22 보다 먼저 하면 안 되는 이유는?
해설 원격 서버에서 이 실수를 하면 스스로 문을 잠그고 열쇠를 안에 두고 나오는 셈입니다. 반드시 allow 를 먼저, enable 을 나중에.
🤔 확인 문제
방화벽으로 8000번 포트를 막았는데도 쇼핑몰이 정상 동작하는 이유는?
해설 방화벽은 바깥 ↔ 서버 사이의 문입니다. 서버 안에서 자기 자신(127.0.0.1)에게 접속하는 것은 그 문을 지나지 않아요. 그래서 앱은 숨기고 nginx만 노출하는 구조가 가능합니다.
🤔 확인 문제
서버 보안에서 '최소 권한의 원칙'을 가장 잘 실천한 예는?
해설 권한을 평소에는 내려놓고, 필요한 순간에만 빌리는 것입니다. 구멍이 생겨도 피해가 그 범위에 갇힙니다. 7강 · 13강 · 14강에서 계속 강조한 원칙이에요.