.png)
4개의 가상 호스트(4개 사이트)가 있는 Apache를 실행하는 EC2 인스턴스 T2.medium이 있습니다. 때로는 갑자기 CPU가 매우 높은 수준에 도달하는 경우가 있는데, 이는 공격일 수도 있습니다.
나는 우리의 워드프레스 파일 중 일부가 수정된 것을 보았습니다.
누가 해당 파일에 글을 썼는지 어떻게 확인할 수 있나요? CPU 로그를 확인하여 어떤 프로세스가 CPU에 영향을 미쳤는지 확인하려면 어떻게 해야 합니까? 사용할 수 있는 Cloudwatch 지표가 있습니까?
우리는 업데이트, AWS Inspector 실행, lynis, ssh 구성 파일 수정 등 서버 강화 작업을 진행해 왔습니다.
누가, 어떻게 WordPress 파일을 입력하고 수정했는지 확인할 수 있는 방법이 있나요?
그리고 어떤 강화 방법을 권장하시나요?
답변1
여기에는 몇 가지 질문이 있습니다.
누가 파일에 쓰고 있었나요?
운영 체제는 이 정보를 기록하지 않지만 몇 가지 단서가 있습니다.
- 수정일
- 파일 권한
파일 수정 날짜를 사용하여 Apache 액세스 로그 검색 범위를 좁히세요. 최소한 POST
그 무렵의 요청이나 로그인이 있는지 확인하세요. 예를 들어 다음은 모든 로그인 시도를 표시합니다.
zgrep 'POST /wp-login.php' /var/log/apache2/*access*
그런 다음 파일 수정 시간에서 얻은 시간 범위를 기준으로 출력을 필터링할 수 있습니다.
수정된 파일이 특정 시스템 사용자만 쓸 수 있는 경우 해당 시스템 사용자가 해당 파일을 수정했음을 합리적으로 확신할 수 있습니다.
어떤 프로세스가 CPU를 고정하고 있습니까?
이 정보는 기본적으로 기록되지 않습니다. 서버를 "실시간"으로 모니터링하는 것이 비실용적이라면(예를 들어 top을 사용하여) 사용할 수 있는 다양한 로깅 도구가 있습니다.다음은 서버 오류 질문입니다.이를 위해 다양한 도구가 권장됩니다.
해킹을 당했는지 판단하기
이것은 더 큰 주제이지만 WordPress 파일 수정을 언급했으므로 제가 시작하고 싶은 곳은 이러한 수정이 악의적인지 확인하는 것입니다. WordPress 악성 코드 스캐너를 실행하거나 eval(base64_decode(
PHP 웹 셸 등과 같은 악성 패턴을 찾으십시오. 확실하지 않다면 끈기있게, 철저하게, 필요한 경우 더 많은 질문을 게시하세요.
공격자가 어떻게 액세스 권한을 얻었는지 확인
해당 사이트가 해킹당했다고 합리적으로 확신하는 경우 공격자가 어떻게 액세스 권한을 얻었는지 알아낼 수 있습니다. 이러한 일이 발생할 가능성이 가장 높은 두 가지 방법은 관리자 계정에 로그인하거나 취약점을 이용하는 것입니다. 대부분의 경우, 높은 수준의 확실성을 가지고 결정하는 것은 어렵습니다. 그러나 알려진 취약성이 있는 소프트웨어, 특히 공개적으로 악용되고 원격 코드 실행을 허용하는 소프트웨어를 실행한 경우 이러한 가능성이 매우 높습니다. WordPress 관리자의 자격 증명이 약하거나 자격 증명이 있는 경우유출됐다, 그렇다면 이것은 가능성이 매우 높습니다.
추가 경화
서버가 손상되었다고 생각되면 다음을 참조해야 합니다.주제에 대한 정식 답변.
답변2
이것은 완전한 답변이 아니며 sceox의 답변을 보완하는 것입니다.
당신은 봐야한다워드프레스 강화, 그리고WordPress 파일 권한.
나는 다음과 같이 설정했습니다.
- 한 명의 사용자/그룹이 파일을 소유합니다.
- PHP는 플러그인/테마/등을 포함한 Wordpress 파일을 읽을 수 있지만 쓸 수는 없는 그룹의 일부입니다. Wordpress GUI를 사용하여 이미지를 업로드할 수 있도록 업로드 폴더에 쓸 수 있습니다. 이로 인해 인터넷상의 모든 항목이 Wordpress 파일을 손상시키는 것이 매우 어렵습니다.
- 나는워드프레스 CLI오전 2시에 Wordpress와 플러그인 업데이트를 수행합니다.
- 새로운 플러그인은 Wordpress CLI를 사용하여 설치해야 합니다. 편리하지는 않지만 훨씬 더 안전합니다.
cron 작업에서 실행되는 내가 사용하는 스크립트는 다음과 같습니다.
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
echo
echo Wordpress Update and Permissions Script Starting
echo "$(date) Wordpress update and backup started" >> /var/log/me/my-wordpress-upgrades 2>&1
# Function to upgrade wordpress
function upgrade_wordpress() {
# set up folders in the formats needed
dir=$1
uploads=$1/wp-content/uploads
echo Upgrading Wordpress core, plugins, themes in ${dir}
sudo -H -u www-user bash -c "wp core update --path=$dir"
sudo -H -u www-user bash -c "wp plugin update --all --path=$dir"
sudo -H -u www-user bash -c "wp theme update --all --path=$dir"
echo Setting wordpress permissions to 755 files and 644 folders
find ${dir} -type d -exec chmod 755 {} \;
find ${dir} -type f -exec chmod 644 {} \;
chmod 440 ${dir}/wp-config.php
echo Making uploads folder ${uploads} writable by the web server
chown -R www-data:www-data ${uploads}
echo Wordpress upgrade for $1 complete
echo
echo
}
echo Setting /var/www permissions to www-user:www-data
chown -R www-user:www-data /var/www/
# Run Wordpress update for each wordpress install
upgrade_wordpress /var/www/blog1
upgrade_wordpress /var/www/blog2