유동 IP를 쫓아 SG 규칙을 두 번 갈고 나서 SSH 22번 포트를 아예 닫았다
서버 로그를 보려는데 SSH가 타임아웃으로 막혔다. 보안 그룹에 등록해 둔 내 공인 IP가 사흘 만에 바뀌어 있었다. 새 IP로 규칙을 갈아 끼웠고, 작업 도중 또 바뀌어서 한 번 더 갈았다. 두 번째에야 규칙이 아니라 접근 방식이 잘못됐다는 걸 인정했다. 결과는…
Network Operating System
서버 로그를 보려는데 SSH가 타임아웃으로 막혔다. 보안 그룹에 등록해 둔 내 공인 IP가 사흘 만에 바뀌어 있었다. 새 IP로 규칙을 갈아 끼웠고, 작업 도중 또 바뀌어서 한 번 더 갈았다. 두 번째에야 규칙이 아니라 접근 방식이 잘못됐다는 걸 인정했다. 결과는…
공모전 시연용 AWS 환경을 거의 다 세우고 마지막으로 도메인과 HTTPS만 붙이면 되는 단계였다. api.example.com에 A레코드를 넣고 HTTPS 접속을 검증하는 스크립트를 돌렸는데 exit 35로 죽었다. 급한 마음에 컨테이너 로그부터 보려다 컨테이너 이름을 잘못 짐작해서 로그 확인 자체가 또 실패했다. 원인은 Caddy가…
아이디 입력란이 있으면 사람들은 아이디를 넣는다. 개발자는 그렇게 가정하고 코드를 짠다. 그런데 누군가는 그 칸에 1만 자를 때려 넣고, 누군가는 자바스크립트를, 누군가는 SQL문을 넣는다. 입력란은 사람의 선의를 전제로 만들어지지만, 공격자는 그 전제를 노린다 웹 보안을 코드 레벨에서 시작하는 출발점은 하나로…
웹 개발을 처음 배우면 프레임워크 사용법부터 익히게 된다. 스프링으로 컨트롤러를 만들고, JPA로 엔티티를 매핑하고, React로 화면을 그린다. 그런데 막상 면접에서 “왜 WAS가 따로 있나요”, “세션은 왜 필요한가요”라는 질문을 받으면 막힌다. 도구는 쓸 줄 알지만 그 도구가 왜 생겼는지를 모르기 때문이다.…
앞선 글에서 URL과 HTTP라는 두 축을 다뤘다. 이번에는 그 조각들을 합쳐 본다. 초기 웹 아키텍처는 한 문장으로 요약된다. 브라우저는 원격지에 있는 문서를 가져와 화면에 그려 주는 뷰어였고, 그 위에 꾸밈과 움직임과 기능이 차례로 얹히며 지금의 웹이 됐다. 이 글은 그…
주소창에 www.naver.com을 입력하고 엔터를 누르면 화면에 페이지가 뜬다. 매일 수십 번 반복하는 동작이지만, 그 사이에 무슨 일이 벌어지는지 설명하라고 하면 막히는 개발자가 많다. 결론부터 말하면 웹의 동작 원리는 생각보다 단순하다. 어떤 컴퓨터에 저장된 문서 하나를 네트워크 너머에서 요청하고, 그 컴퓨터가…