2024/03/09 15:43 KST (2024/03/09 19:01 KST 수정됨)
원인은 잘 모르겠지만 아마 제가 코드를 잘못 짠 탓이거나 서버를 너무 오래 켜 뒀거나 외부에서 이상한 접근을 하고 있거나 그런 이유겠지요? 임시로 crontab에 매 1시간마다 api 서버를 재시작하고 한국 자정마다 서버가 재부팅되게끔 만들어 뒀습니다.
AWS 인스턴스를 굴려 보고 나서야 알게 된 사실이지만, AWS 인스턴스를 열어 놓으면 생각보다 많은 곳에서 자꾸 이상한 API를 호출하는 걸 확인할 수 있습니다.
지금 이 사이트에도 /cf_scripts/scripts/ajax/ckeditor/ckeditor.js라던가 하는 이상한 주소로 된 호출이 자꾸 들어오고 있는데, 찾아보니 어도비 콜드퓨전의 취약점을 노리는 콜이라더군요 ㅡ.ㅡ;; 로그를 확인해 보니 이런 콜이 하루에 한 자리에서 많으면 두 자리까지는 들어오고 있는 것 같습니다.
제가 보안에 대한 관념이 희박했을 땐 웹게임을 만들면서 mongodb 포트를 외부에 오픈해놓은 적도 있었는데, 포트 열고 나서 하루가 안 지나서 DB에 저장된 내용이 싹 사라지더니 해커가 남긴 테이블 하나만 남아 있었던 적도 있었습니다. '안녕하세요 당신의 db는 해킹당했습니다. 정보를 복원하고 싶다면 비트코인 지갑 ifnikjvmirfejogvr에 0.00384BTC를 입금하고..' 따위의 내용이 있었던 걸로 기억합니다. 서버 구축의 기본 중의 기본도 지키지 못해 일어난 사고입니다.
지금 이 사이트같은 경우엔 (서버 시간을 얻을 수 있는 /api/now와 포스트의 마크다운 문자열을 얻을 수 있는 /api/get을 제외하면) 모든 api 콜이 OTP 인증을 요구하고 있기 때문에 큰 문제가 생기지는 않지 않을까 하고 생각하고 있습니다. 보안 전문가가 아니라서 100% 장담할 수 있는 이야기는 아니긴 하지만...
별개로, 본 사이트의 OTP는 한글로 생성되고 있습니다. 보안에 뚜렷한 효과가 있어서 그러는 건 아니고, 단순히 빨리 외워서 빨리 타이핑하기 좋다는 이유만으로 계속 사용하고 있습니다.
이 한글 OTP는 제가 미리 설정한 한글 1000자 중 두 글자를 뽑아서 생성하고 있습니다. 100만가지 경우의 수가 나오기 때문에 원리상 숫자 6자리 OTP와 같은 강도의 비밀번호가 생성됩니다. 추후에 이 한글 OTP 관련해서도 포스팅을 따로 하면 좋을 것 같네요. 그럼 저는 총총..