20강 / 20강

보안 — 문을 잠그고 마무리하기

방화벽, 최소 권한, 그리고 여러분이 배운 것

보안 — 문을 잠그고 마무리하기
필요한 문만 열어 두는 것. 그것이 방화벽입니다.

마지막 강입니다. 쇼핑몰은 돌아가고, 백업도 자동으로 됩니다. 이제 문을 잠글 차례예요.

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 보다 먼저 하면 안 되는 이유는?
🤔 확인 문제
방화벽으로 8000번 포트를 막았는데도 쇼핑몰이 정상 동작하는 이유는?
🤔 확인 문제
서버 보안에서 '최소 권한의 원칙'을 가장 잘 실천한 예는?