11강 / 20강
방화벽 — 열 문만 열어 두기
ufw 로 5분 만에 잠그기
서버를 인터넷에 올리는 순간, 여러분의 IP는 자동 스캐너들의 표적이 됩니다. 농담이 아니라 몇 분 안에 SSH 무차별 대입 시도가 시작돼요. 19강에서 그 로그를 직접 보게 될 겁니다.
대응은 간단합니다. 손님이 쓸 문만 열고 나머지는 다 잠급니다.
| 포트 | 열까? | 이유 |
|---|---|---|
| 22 SSH | 조건부 ○ | 관리에 필요. 단 사무실 IP에서만 |
| 80 HTTP | ○ | 손님이 들어오는 문 |
| 443 HTTPS | ○ | 자물쇠 달린 문 (13강) |
| 3306 MySQL | × | DB를 인터넷에 열면 사고. 127.0.0.1 만 |
| 8000 앱 | × | nginx를 통해서만 (7강) |
갓 설치한 우분투는 방화벽이 꺼져 있습니다.
🖥️ 내 가상 서버
브라우저 안에서 실행 (계산용)
이 다섯 줄이 새 서버의 첫 보안 조치입니다.
🖥️ 내 가상 서버
브라우저 안에서 실행 (계산용)
지금 바깥에서는 어떻게 보일까요
방화벽의 효과는 바깥에서 봐야 압니다. 손님 노트북에서 두드려 봅시다.
위젯에서 3306을 열어 본 뒤 다시 실행해 보세요.
💻 손님 노트북
브라우저 안에서 실행 (계산용)
SSH는 사무실 IP에서만
4강에서 배운 /32 를 쓸 차례입니다.
전 세계에 22번을 여는 대신, 우리 사무실 공인 IP 하나만 허용하는 거예요.
sudo ufw delete allow 22/tcp sudo ufw allow from 203.0.113.50 to any port 22 proto tcp
이 한 줄로 SSH 무차별 대입 로그가 0이 됩니다. 단, 사무실 IP가 유동이라면 바뀔 때마다 규칙을 고쳐야 하니 VPN이나 클라우드 콘솔 같은 비상 출입구를 반드시 확보해 두세요.
막혔을 때의 증상 — 타임아웃
6강에서 배운 구별법을 여기서 씁니다.
방화벽이 막음
curl: (28) 시간 초과
대답 자체가 없음 — 조용히 버려짐
포트는 열렸는데 서비스가 죽음
curl: (7) Connection refused
즉시 거절 — 방화벽은 통과했다는 증거
이 둘을 구별하면 방화벽을 볼지 서비스를 볼지가 바로 정해집니다.
🤔 확인 문제
원격 SSH 접속 중입니다. 다음 중 절대 먼저 하면 안 되는 것은?
해설 22를 열지 않은 채 방화벽을 켜면 그 순간 자기 접속이 끊깁니다. 그리고 다시 들어갈 방법이 없어요. 순서는 항상 allow 먼저, enable 나중입니다.
🤔 확인 문제
바깥에서
curl 이 즉시 'Connection refused' 를 냅니다. 방화벽은?해설 거절 응답이 돌아왔다는 것은 패킷이 서버까지 도달했다는 뜻입니다. 방화벽이 막았다면 응답 없이 타임아웃이 났을 거예요. 이제
systemctl status 를 볼 차례입니다.