This lesson is only available in Korean for now.
필요한 문만 열어 두는 것. 그것이 방화벽입니다.
마지막 강입니다. 쇼핑몰은 돌아가고, 백업도 자동으로 됩니다.
이제 문을 잠글 차례예요.
17강에서 봤듯, 여러분의 서버는 지금 이 순간에도 두드림을 당하고 있습니다.
공격자는 사람이 아니라 전 세계를 훑는 로봇이에요.
"우리 사이트는 작으니까 괜찮겠지"는 통하지 않습니다.
로봇은 크기를 가리지 않거든요.
SSH 로 몇 번, 웹으로 몇 번 두드려졌는지
bash
Runs on my virtual Ubuntu server
방화벽 — 필요한 문만 열기
서버에는 65535개의 포트(문)가 있습니다. 우리에게 필요한 건 세 개뿐이에요.
22SSH내가 들어갈 문 — 반드시 열어야
80HTTP손님이 들어올 문
443HTTPS암호화된 손님 문
8000앱열면 안 됩니다 — nginx 뒤에 숨겨 둡니다
Ubuntu 의 방화벽은 ufw(Uncomplicated FireWall)입니다. 이름대로 쉬워요.
설치하고 상태 확인 — 아직 꺼져 있습니다
bash
Runs on my virtual Ubuntu server
올바른 순서 — 문을 먼저 열고 나서 방화벽을 켭니다
bash
Runs on my virtual Ubuntu server
이제 8000번 포트는 바깥에서 닿을 수 없습니다.
그런데 우리 쇼핑몰은 여전히 잘 돌아가요. 왜냐면 nginx가 서버 안에서
8000번으로 접속하기 때문입니다. 방화벽은 바깥에서 들어오는 것만 막거든요.
안에서는 잘 되고, 바깥으로는 80·443·22만 열려 있습니다
bash
Runs on my virtual Ubuntu server
🎮 보안 점검 실험실
여러분의 가상 서버를 실제로 점검합니다.
지금까지 설정한 것들이 안전한지 항목별로 검사해 보세요.
서버 관리자의 다섯 가지 원칙
①최소 권한필요한 만큼만. root 로 살지 않기 (7강)
②최소 노출필요한 포트만. 앱은 127.0.0.1 에 (16·20강)
③최신 유지apt update && apt upgrade 를 정기적으로 (12강)
④기록 남기기로그가 없으면 사고를 알 수 없습니다 (17강)
⑤되돌릴 길백업 · 설정 .bak · 복원 연습 (19강)
③ 보안 패치는 가장 값싼 방어입니다
bash
Runs on my virtual Ubuntu server
우리가 만든 것을 한눈에
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 하면 저절로 배포되게
다음 걸음 ④모니터링죽으면 알림이 오게
서버 관리자는 명령어를 다 외운 사람이 아닙니다.
침착하게 로그를 읽고, 순서대로 확인하고, 되돌릴 길을 만들어 두는 사람입니다.
여러분은 이미 그 방법을 배웠습니다.
🤔 Check yourself
sudo ufw enable 을 allow 22 보다 먼저 하면 안 되는 이유는?
Answer 원격 서버에서 이 실수를 하면 스스로 문을 잠그고 열쇠를 안에 두고 나오는 셈입니다. 반드시 allow 를 먼저, enable 을 나중에.
🤔 Check yourself
방화벽으로 8000번 포트를 막았는데도 쇼핑몰이 정상 동작하는 이유는?
Answer 방화벽은 바깥 ↔ 서버 사이의 문입니다. 서버 안에서 자기 자신(127.0.0.1)에게 접속하는 것은 그 문을 지나지 않아요. 그래서 앱은 숨기고 nginx만 노출하는 구조가 가능합니다.
🤔 Check yourself
서버 보안에서 '최소 권한의 원칙'을 가장 잘 실천한 예는?
Answer 권한을 평소에는 내려놓고, 필요한 순간에만 빌리는 것입니다. 구멍이 생겨도 피해가 그 범위에 갇힙니다. 7강 · 13강 · 14강에서 계속 강조한 원칙이에요.