모든 서버에 보안 에이전트를 설치했던 경험과 그 문제점
요약
본 글은 오픈 소스 보안 데몬 'ThreatCrush'를 운영하며 겪었던 서버 관리의 어려움과 문제점을 공유합니다. 기존에는 각 서버가 독립적으로 작동하여 전체적인 상황 파악이 어렵고, 수동 업그레이드와 로그 관리가 매우 힘들었습니다. 이를 해결하기 위해 통합 대시보드, 자동 업데이트 시스템, 그리고 데이터 성장 제한 기능을 추가했습니다.
핵심 포인트
- 모든 서버의 탐지 기록을 한눈에 보는 '통합 뷰'가 필수적입니다.
- 자동화된 업데이트 시스템은 수동 개입 없이 안정적인 운영을 보장합니다.
- 로그 및 이벤트 저장소에 대한 자동 성장 제한(Pruning)이 중요합니다.
제 서버들 모두가 우리가 구축한 오픈 소스 보안 데몬인 ThreatCrush를 실행하고 있었습니다. 이 프로그램은 공격을 포착하고 차단했습니다. 하지만 각 서버는 독립된 섬 같았습니다. 대시보드에는 탐지 기록이 나열되었지만, 전체 서버 군(fleet)의 상황을 한눈에 볼 수 있는 기능은 없었습니다. 따라서 특정 서버가 무엇을 보았는지 확인하려면 SSH로 접속해서 로그를 읽어야 했습니다. 하지만 대부분 아무도 그렇게 하지 않았습니다.
이번 주에 저희가 서버군을 수동으로 업그레이드하는 과정에서 그 비용을 깨달았습니다. 한 대의 서버는 여러 버전이 뒤처져 있었습니다. 이 때문에 최근 배포된 이벤트 가지치기(event pruning) 기능을 놓쳤고, 상태 데이터베이스는 138 GB로, 로그 파일은 60 GB로 커졌으며, 데몬 자체가 더 이상 시작되지 않았습니다.
게다가 그 서버는 Cloudflare의 엣지 IP를 차단하려고 시도하고 있었습니다. 왜냐하면 Nginx가 방문자 주소 대신 CDN의 주소를 기록했기 때문입니다. 이 차단은 관련 없는 권한 버그 때문에 실패했습니다. 심지어 이전 버전에서는 SSH로 로그인하는 모든 기기를, 저희 자신의 서버까지 포함해서 차단했던 적도 있습니다. 저희는 서버들이 하나씩 자체 네트워크에서 사라지는 것을 보고 나서야 알게 되었습니다.
문제를 해결한 것은 새로운 도구가 아니었습니다. 단지 세 가지 지루하지만 중요한 개선 사항이었습니다:
- 통합 뷰(One view): 모든 서버의 모든 탐지 기록을 하나의 실시간 세계 지도에 표시하는 것입니다. 이는 웹 대시보드와
threatcrush map터미널 명령어로 제공됩니다. 만약 특정 서버가 조용해지거나 이상한 것을 차단하기 시작하면, 즉시 알 수 있습니다. - 업데이트 자동화: 아무도 기억할 필요가 없는 업데이트 시스템입니다. 데몬이 스스로 업데이트를 기다립니다. 배포된 지 2시간이 지나야 업데이트를 시도하며, 서버군 전체가 한 번에 재시작되는 것을 막기 위해 무작위 지연 시간을 추가하고, 절대로 주요 버전(major version)을 자체적으로 건너뛰지 않습니다.
- 성장 제한(A cap on anything that grows): 커지는 모든 것에 대한 상한선이 설정되었습니다. 로그는 매일 또는 200 MB마다 순환하며, 이벤트 저장소는 스스로 가지치기합니다. 또한 설치 프로그램은 사용자가 서비스를 설치하지 않더라도 순환 설정을 해줍니다.
현재까지의 결과는 다음과 같습니다: 지도가 실시간으로 작동한 첫 시간 동안, 저희의 세 대의 공개 서버는 92개의 다른 출처로부터 총 108건의 공격(대부분 웹 스캐너)을 받았습니다. 미국이 압도적으로 가장 큰 출처였습니다. 한 서버의 터미널 지도에는 몇 분 만에 88개의 출처와 5,095건의 이벤트가 표시되었습니다. 서버군 업그레이드는 수동으로 단 한 번만 진행하면 되었습니다.
그 후, 새로운 릴리스가 배포된 지 약 두 시간 만에 모든 서버에 도달합니다. 손상된 서버를 정리하여 디스크 공간 197GB를 되찾았습니다. 여러 대의 서버를 운영한다면 세 가지를 설정하세요: 모든 서버를 보여주는 한 곳, 사용자가 개입하지 않고 발생하는 업데이트 내역, 그리고 모든 것이 커지는 것에 대한 제한입니다. 공개합니다: 저는 ThreatCrush를 구축했습니다. CLI는 MIT 라이선스를 따르며 curl -fsSL https://threatcrush.com/install.sh | sh로 설치할 수 있습니다. 저희 홈페이지의 지도는 자체 서버에 대한 실시간 공격을 보여주며, 터미널 버전 스크린샷은 여기에서 확인할 수 있습니다: https://threatcrush.com/blog/live-attack-map /u/Minimum_Hour519 [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/SelfHosted (AI filter)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기