본문 바로가기

서버 침해 대응3

왜 CI 서버(젠킨스)는 외부에 노출하면 안 될까 서버 하나 털린 적이 있습니다.정확히는 암호화폐 채굴 악성코드가 들어와서, 결국 서버를 통째로 갈아엎었어요. 그 뒤로 제가 제일 먼저 한 일 중 하나가, 젠킨스를 외부에서 못 들어오게 막는 거였습니다.왜 하필 젠킨스냐. 이게 오늘 얘기입니다.젠킨스는 "명령을 실행하는 로봇"이다젠킨스(Jenkins, 자동 배포를 돌려주는 CI 도구)를 뭐라고 설명하면 좋을까요.공장 자동화 로봇이라고 해봅시다. 코드를 올리면 → 알아서 빌드하고 → 테스트하고 → 서버에 배포합니다. 사람이 매번 손으로 안 해도 되게요. 편하죠.근데 이 로봇의 정체를 한 겹 벗겨보면 좀 무섭습니다. 젠킨스는 결국 "내 서버에서 아무 명령이나 실행할 수 있는 권한"을 가진 프로그램이거든요. 빌드 스크립트라는 게 사실 셸 명령이니까요.즉, 젠킨스.. 2026. 9. 22.
docker.sock을 Jenkins한테도 AI한테도 주지 마세요 [서버 침해 대응기 시리즈] 1인 개발자가 크립토재킹 당하고, 서버를 통째로 새로 만든 5일간의 기록1편.내 서버가 6주째 몰래 채굴당하고 있었습니다 2편. docker.sock을 Jenkins한테도 AI한테도 주지 마세요 (socket-proxy) ← 지금 글 3편. 7개 도메인 무중단 HTTPS 이전기 (nginx + certbot)4편. Jenkins 자동배포, 보안이랑 403 싸운 이야기5편. 그래서 보안과 편의 사이, 어디에 서야 할까지난 편에서 제 서버가 6주간 채굴당한 얘기를 했어요.범인은 Jenkins였고.정확히는 Jenkins한테 물려준 docker.sock이었죠.그래서 새 서버를 만들면서 결심했어요.이번엔 docker.sock을 아무한테도 안 줄 거라고.근데 문제가 있어요.안 주면 빌드.. 2026. 6. 19.
내 서버가 6주째 몰래 채굴당하고 있었습니다 [서버 침해 대응기 시리즈] 1인 개발자가 크립토재킹 당하고, 서버를 통째로 새로 만든 5일간의 기록1편. 내 서버가 6주째 몰래 채굴당하고 있었습니다 ← 지금 글2편. docker.sock을 Jenkins한테도 AI한테도 주지 마세요 (socket-proxy)3편. 7개 도메인 무중단 HTTPS 이전기 (nginx + certbot)4편. Jenkins 자동배포, 보안이랑 403 싸운 이야기5편. 그래서 보안과 편의 사이, 어디에 서야 할까지난 글에서 이런 얘기를 했어요.AI한테 권한을 어디까지 줄 거냐.자동화를 할수록 권한 분리가 중요하다고.근데 솔직히 그땐 좀 추상적인 얘기였거든요."중요하다" 정도였죠.이번에 제대로 당했습니다.제 서버가 6주 동안 누군가의 채굴기로 돌아가고 있었어요.처음엔 그냥 서.. 2026. 6. 18.