3월 29일부터 갑작스럽게 워드프레스 DB 연결 에러를 뿜어내는 서버때문에 서버를 계속점검하였고 접속이 불안정한 모습을 보여주었습니다.
오늘 그 원인을 정확하게 파악하고 나니 마음이 후련한 느낌입니다. 먼저 처음 이상증상을 확인한 시점에서 서버 Root 디렉토리의 디스크용량 100% 부분을 확인했습니다.
문제원인을 찾았다고 생각하고 관련된 포스트를 등록하였습니다. 관련포스트인 워드프레스 데이터베이스 연결에러,Mysql 재시작이 안될때 을 참조하시면 되겠습니다.
로그파일을 정리하여 용량을 확보했는데 여전히 불안정한 모습을 보여주었고 오늘 오전에는 다시 데이터베이스 연결 에러 화면을 보여주었습니다.
무엇이 문제였을까요? 용량은 문제가 해결되었지만 inode가 문제였습니다. inode는 리눅스의 자료구조로 파일 시스템 정보를 가지고 있는데 파일 1개당 1개의 inode를 가지고 있습니다.
물론 사용할수 있는 inode의 숫자는 제한이 있습니다. 디스크용량과 inode를 확인하는 명령어는 다음과 같습니다.
디스크용량을 확인하는 명령어 : df -h
디스크inode를 확인하는 명령어 : df -i
Mysql이 불안한 모습을 보이면서 워드프레스 DB 연결에러가 발생하는 것이라고 할수 있습니다. 그런데 inode가 거의 100%가 되면서 파일을 신규로 생성할수가 없어 Mysql의 에러가 발생한 것입니다.
df -h 명령어로 확인해본 디스크용량 (문제수정후 )
df -i 명령어로 확인해본 inode 사용량 (문제수정후 )
100만개가 넘는 inode 가용량을 가졌음에도 100%가 된것입니다. 즉 파일이 100만개이상이라는 의미였습니다.
처음에는 정상적인 파일 생성이라고 생성하고 inode를 확장하는 방법을 확인해 보았습니다만 곰곰히 생각해보니 파일의 갯수 자체가 비정상적이라는 판단이 들었습니다.
ls -R A | wc -l 명령어로 root 폴더 부터 디렉토리내의 파일숫자를 점검해 나갔습니다. (상기 명령어는 A 디렉토리내의 파일갯수를 확인하는 명령어로 실행시 결과값으로 A 디렉토리내의 파일갯수를 표시해줍니다.)
결론적으로 메일시스템이 postfix 내에 스팸메일이 약 90만개 쌓여져 있는 것이 확인되었습니다. 스팸메일 중계서버로 활용하기 위해 공격을 당한 것으로 생각됩니다.
관련 스팸메일(?)들을 모두 삭제한 결과가 상기 2개의 문제수정후 이미지입니다. 이후 postfix 설정파일에 보안 설정을 추가하고 일단 postfix 서비스는 중단하였습니다.
postfix의 보안설정은 /etc/postfix/main.cf 파일에 추가할수 있으며 내용은 다음과 같습니다. (* 참조링크)
#스팸 발송 차단
home_mailbox=Maildir/
mailbox_command=
smtpd_sasl_local_domain=
smtp_sasl_auth_enable=yes
smtp_sasl_security_options=noanonymous
broken_sasl_auth_clients=yes
smtpd_sasl_authenticated_header=yes
smtpd_recipient_restrictions=permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
inet_interfaces=all
서버 보안과 백업에 관한 부분을 보다 신경써야 할것 같습니다.
- 워드프레스 테마 오픈마켓 테마포레스트- Theme forest
- 워드프레스 추천테마 관련 포스트 - AVADA / JARIDA / SAHIFA / GOODNEWS