Цитата:
Сообщение от Трафуха
Цитата:
Сообщение от веломан
не юзать всякие дырявые CMS и не менее дырявые плагины к ним
|
ага, вп+акисмет, но теперь то что делать
|
"посадил дед грепку, выросла грепка большая-пребольшая"
если очень хочется самостоятельно посношаться, то:
1. выключить нахрен apache/nginx
2. выключить похапе (если оно php-fpm)
3. выключить ftp (если есть)
4. сменить дефолтный порт ssh на другой (nano /etc/ssh/sshd_config ; service ssh restart)
5. поставить доступ только для рута:
chown -R root: /var/www
chmod -R 600 /var/www
6. сделать грепку :
1) быстрый способ:
cd /var/www/ (или где там)
grep -irl "..." .
на список php-функций, используемых в похапе-шеллах:
passthru
shell
exec
system
pcntl
proc_
phpinfo
base64_decode
chmod
eval
2) долгий способ:
cd /
find -type -f -name "*.php" exec grep -RnDskip "\(passthru\|shell_exec\|system\|phpinfo\|base64_d ecode\|chmod\|mkdir\|fopen\|fclose\|readfile\|.... и прочие кейворды) *(" {} \;
7. скачать и запустить rkhunter и unhide:
apt-get install rkhunter
apt-get install unhide
(и далее по гуглю)
8. задисаблить все опасные php-функции (php.ini
disable_functions => apache_child_terminate,apache_setenv,define_syslog _variables,escapeshellarg,escapeshellcmd,gzinflate ,highlight_file,ini_alter,ini_get_all,ini_restore, inject_code,openlog,passthru,pcntl_alarm,pcntl_exe c,pcntl_fork,pcntl_get_last_error,pcntl_getpriorit y,pcntl_setpriority,pcntl_signal,pcntl_signal_disp atch,pcntl_sigprocmask,pcntl_sigtimedwait,pcntl_si gwaitinfo,pcntl_strerror,pcntl_wait,pcntl_waitpid, pcntl_wexitstatus,pcntl_wifexited,pcntl_wifsignale d,pcntl_wifstopped,pcntl_wstopsig,pcntl_wtermsig,p hpAds_remoteInfo,phpAds_XmlRpc,phpAds_xmlrpcDecode ,phpAds_xmlrpcEncode,php_uname,popen,posix_getpwui d,posix_kill,posix_mkfifo,posix_setpgid,posix_sets id,posix_setuid,posix_uname,proc_close,proc_get_st atus,proc_nice,proc_open,proc_terminate,shell_exec ,str_rot13,syslog,xmlrpc_entity_decode => apache_child_terminate,apache_setenv,define_syslog _variables,escapeshellarg,escapeshellcmd,gzinflate ,highlight_file,ini_alter,ini_get_all,ini_restore, inject_code,openlog,passthru,pcntl_alarm,pcntl_exe c,pcntl_fork,pcntl_get_last_error,pcntl_getpriorit y,pcntl_setpriority,pcntl_signal,pcntl_signal_disp atch,pcntl_sigprocmask,pcntl_sigtimedwait,pcntl_si gwaitinfo,pcntl_strerror,pcntl_wait,pcntl_waitpid, pcntl_wexitstatus,pcntl_wifexited,pcntl_wifsignale d,pcntl_wifstopped,pcntl_wstopsig,pcntl_wtermsig,p hpAds_remoteInfo,phpAds_XmlRpc,phpAds_xmlrpcDecode ,phpAds_xmlrpcEncode,php_uname,popen,posix_getpwui d,posix_kill,posix_mkfifo,posix_setpgid,posix_sets id,posix_setuid,posix_uname,proc_close,proc_get_st atus,proc_nice,proc_open,proc_terminate,shell_exec ,str_rot13,syslog,xmlrpc_entity_decode
9. удалить все подозрительное, пользуясь гуглем:
<подозрительный файл> what is it
10. удалить нахрен похапемайадмин или засекурить его согласно гуглу
11. проверить на предмет открытых странных портах:
netstat -tun
очевидно, если вебсервер и фтп убиты, открытых портов, кроме ssh быть в принципе не должно.
12. проверить /tmp, папку где хранятся PHP_SESSIONS (если это другая папка) и временную папку аплоадов на предмет всякой херни типа
phpERxdSz или подобного
12. сменить пароль на root и всех остальных юзеров (фтп, шелл)
13. сменить дефолтный фтп-порт на другой (проявить фантазия, а не ставить 2121 или 2112)
14. поставить fail2ban и настроить против сканеров, говноботов и прочей мудодени
15. enable ufw (если ubuntu/debian) - закрыть 25,110,8080,3128,445-447,136-137 и прочие порты, настроить согласно гуглу (если есть свой мейл-сервер - там еще нужно изучать что могли пропихнуть в конфиги)
16. на уровне нгинкса/апача запретить аплоады *.php *.exe *.sh *.js и прочей для CMS
17. посмотреть /etc/groups - на предмет странных групп или доступов юзеров в группы
18. посмотреть /etc/passwd - на предмет странных юзеров
19. смотреть /etc/apt/sources.list - на предмет добавлений подозрительных источников
20. смотреть /etc/rc.local - не запускается ли чо при стартапе, аналогично
в /etc/crontab
21. смотреть crontab -l root (и всех юзеров)
ну и там по-мелочи, почитать /var/logs/ , посмотреть в mysql - не создавалось ли там каких-то баз данных со свежей датой
зайти в /root и посмотреть на предмет всяких подозрительных файлов типа: ".подозрительный_файл"
аналогично проверить /home
и напоследок грохнуть содержимое /root/.ssh (/home/user/.ssh и пересоздать заново:
ssh-keygen
и если были доступы на другие сервера, то удалить все бывшие ключи из authorized_keys тех серверов и залить новые ключи:
ssh-copy-ip -p <порт> <куда>
---
не забыть сделать chown -R www-data: /var/www/...
и поставить chmod -R 750 на папку
затем включить веб-сервер
ну само собой поменять все админские пароли в CMS и проверить всех юзеров в CMS
в качестве последней паранойи - поменять пароль на емейл, который указан для админского юзера.