Постоянно взламывают

Ymacker

Постоялец
Регистрация
9 Сен 2007
Сообщения
58
Реакции
13
Есть ряд древних сайтов, работают на joomla, регулярно ломают, заливают шелл, добавляют js и прописывают в шабах. Сильно затрахивает начинать рабочий день с зачистки. Подгружают херню подобную этой dexedok.pp.ua/counter.js .
Знаю, что это не самое надёжное двигло, но перенести сайты на другую CMS сейчас попросту нет времени. Как защититься от постоянного взлома?

Меняю пароли на панели и FTP с кристально чистой машины, перебором такие пароли не ломаются, кромсаю на папках права, а этот садомит окаянный всё равно шастает по папкам как у себя дома.
 
  • Заблокирован
  • #2
Атрибуты на чтение везде ставь, меняй пассы на всё. - проверь шеллом на наличие дырявых соседей.
+ скорее всего шелл уже залит с правами на запись...
+ может в БД влита инъекция и по ней заливают шелл на сервер/хост
+ мильен много чего может быть...

Айболит залей и проверь!
 
Значит дело в самой cms либо каком-то плагине. Просто обновиться до последней актуальной версии ветки, проверить чтобы все заплатки стояли.
А вообще, по Джомле кроме Генко вам лучше никто не скажет
 
Как защититься от постоянного взлома?
Начать нужно с изучения логов, что бы понять где дырка

Общая тема о борьбе с шеллами и вирусами на сайте
Для просмотра ссылки Войди или Зарегистрируйся

Сам использую следующие методы защиты:
Нужно отредактировать PHP.INI и отключить следующие функции

disable_functions = eval, scandir, get_current_user, apache_get_modules, virtual, getmyinode, fileowner, filegroup, apache_get_version, apache_getenv, ini_restore, openlog, syslog, highlight_file, show_source, symlink, disk_total_space, ini_get_all, phpinfo, pcntl_alarm, disk_free_space, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority, exec, shell_exec, system, passthru, popen, proc_open, proc_close, proc_get_status, proc_nice, proc_terminate, leak, listen, chgrp, apache_note, apache_setenv, closelog, debugger_off, debugger_on, define_sys, php_uname, getmyuid, getmypid, diskfreespace, dl, posix_ctermid, posix_getcwd, posix_getegid, posix_geteuid, posix_getgid, posix_getgrgid, posix_getgrnam, posix_getgroups, posix_getlogin, posix_getpgid, posix_getpgrp, posix_getpid, posix, _getppid, posix_getpwnam, posix_getpwuid, posix_getrlimit, posix_getsid, posix_getuid, posix_isatty, posix_kill, posix_mkfifo, posix_setegid, posix_seteuid, posix_setgid, posix_setpgid, posix_setsid, posix_setuid, posix_times, posix_ttyname, posix_uname

Проверить, что бы эти значения в php.iniбыли выключены:

register_globals = Off
magic_quotes = Off
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off


Защита .htaccess

Код:
RewriteEngine On

# Запрещаем все методы обращения к сайту кроме GET,HEAD,POST

RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST)$ [NC]
RewriteRule .* - [F]

# Защита от XSS, SQL-injections и т.д
# Если на сайте не работаю редиректы вида goto.php?url=, закомментировать первые три строчки
RewriteCond %{QUERY_STRING} ftp\: [NC,OR]
RewriteCond %{QUERY_STRING} http\: [NC,OR]
RewriteCond %{QUERY_STRING} https\: [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*iframe.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^i]*i)+frame.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR]
RewriteCond %{QUERY_STRING} base64_(en|de)code[^(]*\([^)]*\) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} (NULL|OUTFILE|LOAD_FILE) [OR]
RewriteCond %{QUERY_STRING} (\./|\../|\.../)+(motd|etc|bin) [NC,OR]
RewriteCond %{QUERY_STRING} (localhost|loopback|127\.0\.0\.1) [NC,OR]
RewriteCond %{QUERY_STRING} (<|>|'|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
RewriteCond %{QUERY_STRING} concat[^\(]*\( [NC,OR]
RewriteCond %{QUERY_STRING} union([^s]*s)+elect [NC,OR]
RewriteCond %{QUERY_STRING} union([^a]*a)+ll([^s]*s)+elect [NC,OR]
RewriteCond %{QUERY_STRING} (;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|drop|delete|update|cast|create|char|convert|alter|declare|order|script|set|md5|benchmark|encode) [NC,OR]
RewriteCond %{QUERY_STRING} (sp_executesql) [NC,OR]
RewriteCond %{QUERY_STRING} ("|%22).*(>|%3E|<|%3C).* [NC,OR]
RewriteCond %{QUERY_STRING} \$\_POST [NC,OR]
RewriteCond %{QUERY_STRING} (javascript:).*(;).* [NC]
RewriteRule ^(.*)$ - [F,L]

# Защита от заливки бекдора

RewriteCond %{QUERY_STRING} ^(.*)([-_a-z]{1,15})=(eval|chmod|chdir|mkdir|rmdir|clear|whoami|uname|unzip|gzip|gunzip|grep|more|umask|telnet|ssh|ftp|head|tail|which|mkmode|touch|logname|edit_file|search_text|find_text|php_eval|download_file|ftp_file_down|ftp_file_up|ftp_brute|mail_file|mysql|mysql_dump|db_query|file_get_contents)([^a-zA-Z0-9].+)*$ [OR]
RewriteCond %{QUERY_STRING} ^(.*)(wget|shell_exec|passthru|system|exec|popen|proc_open)(.*)$
RewriteRule ^(.*)$ - [F,L]


1 Выставить права:

на файлы - 644
на папки – 751
На htaccess444



Для всех папок права 751
find . -typed -execchmod 0751 "{}" \;

Для всех файлов права 644
find . -typef -execchmod 0644 "{}" \;

Для всех файлов с именем .htaccess права 444
find . -type f -name '.htaccess' -exec chmod 444 {} \;
 
  • Нравится
Реакции: aks
Если лень править ручьками хтаксесс и права доступа к файлам, почти на всех сайтах под управлением джумлы, юзаю Admin Tools Professional Для просмотра ссылки Войди или Зарегистрируйся. Тулуза может сконфигурировать безопасный хтаксес + выставить корректные права на файлы + обеспечить базовую!! защиту.
 
Назад
Сверху