짧은 이야기: 최근 Discourse 설치 환경에서 “이메일 확인” 텍스트 템플릿이 잘못되어 있는 것 같아(구버전 설치에서 남은 건가?) 수정하려고 했는데, URL에 url/authorize_email/ 같은 것이 포함되어 있었습니다. 결국 5일 전의 전체 포럼 복구(복원)를 적용해야 했습니다…
이제 스팸봇 공격이 더 있는지 확인하기 위해 로그를 모니터링하고 있는데, 이상한 점을 발견했습니다… 대부분의 스팸봇이 로컬 IP에서 오는 것 같습니다:
따라서 제 설치 환경에 뭔가 문제가 있는지 확실하지 않습니다.
혹시 이 172.16.0… 설정이 올바른 건가요?
pfaffman
(Jay Pfaffman)
9월 24, 2025, 2:47오후
2
사용자 IP를 확인하면 모두 해당 주소에서 온 것이 맞죠?
리버스 프록시(예: nginx-proxy)를 사용 중이죠?
app.yml 파일에 다음과 같은 내용을 추가해야 합니다.
after_bundle_exec:
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: "types {"
to: |
set_real_ip_from 172.16.0.0/12;
set_real_ip_from 10.0.0.0/8;
real_ip_recursive on;
real_ip_header X-Forwarded-For;
types {
첫 번째 스크린샷에서 볼 수 있듯이, 일부 항목(스팸봇에서 온 것만인 것으로 보입니다)만 표시되는 것 같습니다.
역시 리버스 프록시를 사용하지 않는 것 같습니다. Discourse는 단순히 Docker 인스턴스로만 제공되고 있으며, 해당 서버에는 다른 ‘호스트’ nginx 프로세스가 실행되지 않습니다.
pfaffman
(Jay Pfaffman)
9월 24, 2025, 4:55오후
4
죄송합니다. 172.17.x.x 주소를 보고 리버스 프록시를 사용 중이라고 가정했습니다.
그러면 표준 설치 환경인가요?
단일 호스트이고 로드 밸런서/리버스 프록시가 없다면, 누군가가 그런 IP 주소를 어떻게 가지게 되는지 모르겠습니다. 아마 다른 무언가가 트래픽을 전달하고 있는 것일까요?它们是 사설 주소이므로, 로컬 네트워크에서 온 것으로 보입니다. 이는 스팸 봇이 네트워크 내에 존재한다는 것을 시사합니다. (Guide to Private IP Address Classes and Ranges - Ipstack )
해당 IP 범위에서 Discourse에 접근하는 합법적인 사용자(예: LAN에 있는 사람들)가 없다면, 해당 범위를 차단해도 안전합니다. 네트워크를 관리하는 담당자에게 연락하여 이러한 공격이 내부 주소에서 발생하고 있음을 알려주는 것이 좋습니다.
pfaffman
(Jay Pfaffman)
9월 24, 2025, 5:36오후
6
거기서 본 적은 있지만, 그 범위에는 다른 용도도 있을 것 같아요.
아니면 스팸 봇이 그 머신에 도커 컨테이너로 실행되고 있는 걸 수도 있겠네요.
Jagster
(Jakke Flemming)
9월 24, 2025, 6:01오후
7
글쎄요, 저는 아무것도 모르고 도커 세계는 제게 하나의 거대한 미스터리이지만, SSH나 다른 방법으로 컨테이너 IP를 가져올 수 있는지 생각해 보고 있었습니다.
pfaffman:
그러면 이건 표준 설치 인가요?
네, 몇 년 전에 진행했지만 기억이 이렇습니다. 기본적으로: 이 목적만을 위해 Vultr에서 전용 소형 호스트 머신(도커(DO)의 드롭렛과 같은 것)을 사용하고, 도커에 설치했으며, 호스트/VPS의 나머지는 다른 용도로 사용하지 않습니다.
네, 저도 그렇게 생각하고 있습니다. 잘못된 설정이거나, 스팸 봇에서 발생하는 것으로 보이므로 주변에서 이상한 일이 일어나고 있는 것 같습니다.
그 머신에는 다른 도커 컨테이너가 없습니다.
pfaffman
(Jay Pfaffman)
9월 24, 2025, 7:54오후
9
그렇게 오랜 동안 운영체제를 업데이트하지 않으셨나요? 호스트 머신이 해킹당한 건 아닐까요? 해당 IP 주소들은 같은 머신에서 나온 것처럼 보입니다.
2~3개월 후에 재설치를 계획하고 있습니다
pfaffman:
호스트 머신이 해킹된 것일 수 있나요?
그렇지 않아 보이지만, 확실히 알기는 어렵습니다. 다른 한편으로는 스팸봇이 매우 많지는 않습니다(하지만 며칠 전에는 상당했습니다. 확인 이메일 URL 링크를 "authorize_email"에서 "confirm-new-email"로 변경한 지 2시간 후에 대량의 스팸이 들어왔는데, 이는 오래된 템플릿 내용인 것 같았습니다. 하지만 현재 복원된 백업에는 여전히 오래된 방식이 남아 있어 또 다른 공격을 피하기 위해 그렇게 두었습니다).
이상한 점은, 이 이메일 템플릿이 내 설정에서 중복으로 표시되어 있어서 이 문제에 대해 별도의 게시글을 작성했습니다:
이메일 설정에서 템플릿이 중복되어 있는 것이 정상인가요?
이 버그는 두 번째 이메일을 추가할 때 확인 링크가 항상 404를 반환하는 문제를 조사하던 중 발견되었습니다. 이후 이메일 템플릿에 여러 항목이 잘못되어 있음을 알게 되었는데, 유사한 본문이 포함된 중복된 제목들이 있었고, 이들은 대체되지 않은 오래된 내용인 것 같습니다.
이메일 확인 문제와 관련하여, 하나는 잘못된(오래된?) 링크를 사용하고 있고 다른 하나는 올바른 링크를 사용하는데, 왜 같은 이름의 템플릿이 2개나 있으며 잘못된 것을 삭제할 수 없는 것인가요? 이것이 Discourse의 버그인가요?
[image]
사실 저는 서로 다른 내용을 가진 여러 중복된 항목(템플릿)을 가지고 있습니다.
이들을 삭제할 수 없는데, 삭제 버튼이 없으며 내용을 지우면 다음과 같은 오류가 발생합니다:
[image]
문제를 해결할 수 있을 정도로 충분히 파악하셨나요? 이제 이 주제를 닫아도 될까요?
기회가 되는 대로 재설치가 가장 좋은 방법일 것 같습니다.
아니요, 이전 게시물에서 언급했듯이 왜 잘못된 내용(이전 버전에서 남은 것 같음)이 들어 있는 중복된 “이메일 템플릿”이 이렇게 많은지, 그리고 왜 그들을 삭제할 수 없는지 아직 이유를 알지 못해 기다리고 있습니다.
여기서 설명하시는 문제의 원인이 이메일 템플릿일 가능성은 낮습니다. 서버와 관련된 문제인 것으로 보이며, 새 설치 환경에서 재설치를 수행하시면 해결될 것입니다.
여기서 더 해드릴 수 있는 조치가 많지 않아 이 주제를 닫겠습니다. 또한 이메일 템플릿에 대한 질문에도 답변을 드렸습니다. 새로운 문제가 발생하면 새 주제를 시작해 주세요.