понедельник, 3 ноября 2008 г.

Cpanel vs. Nobody: борьба с шелами (часть 1)

В общем, возникла проблема, что на пользовательские веб-сайты, мелкие "хацкеры" заливали веб-шелы.
Данный скрипт предназначен для поиска в пользовательских директориях файлов, с правами
nobody, и открытых директорий, т.е. с правами 0777(drwxrwxrwx). Скрипт помогает избежать взломов сайтов, когда пользователи хостинга не знают принципов безопасности на права доступа к файлам и директориям.

Читаем далее...




#!/usr/bin/perl

use strict;

my $cpanel;
my @files;

$cpanel = "/var/cpanel/users";
opendir(CPANEL, $cpanel);
@files = readdir(CPANEL);
closedir(CPANEL);

foreach my $file (@files) {
if (-f $cpanel . "/" . $file) {
print("Checking $file...");
system("find /home/$file -user nobody -exec chown $file:$file {} ;");
system("find /home/$file -perm 0777 -type d -exec chmod 755 {} ;");
print("Donen");
}
}


Второй скрипт, также не менее полезный :) :


#!/bin/sh
HOME=/home
NOBODY=nobody

htaccess () {
cat > "$j/.htaccess"

RemoveType php
Options -ExecCGI -Indexes
EOF
}

fixupload () {
if [ -e "$j/.htaccess" ]; then
if [ -z "`grep RemoveType "$j/.htaccess"`" ]; then
htaccess
fi
else
htaccess
chown $i:$i "$j/.htaccess"
fi
}

cd $HOME
for i in *; do
if [ -d $i/public_html ]; then
# Fix 777 upload
for j in `find $i/public_html -type d -perm 777`; do
fixupload
done
# Fix 775 nobody upload
for j in `find $i/public_html -type d -perm 775 -group $NOBODY`; do
fixupload
done
# Fix 755 nobody upload
for j in `find $i/public_html -type d -perm 775 -user $NOBODY`; do
fixupload
done
fi
done

3 комментария:

  1. СПАСИБО! Всё понятно и чётко описано. Будем рады и Вам!

    ОтветитьУдалить
  2. Интересно, конечно! Спасибо! Прочитал с удовольствием и вниманием.

    ОтветитьУдалить