вторник, 21 мая 2013 г.

ISPmanager + nginx + MODx - локально для юзера чиним админку


Набор софта на сервере такой: CentOS 6.4, httpd.itk, nginx, ispmanager pro v. 4.4.10.9
Сайт - example.by, движок MODx.
По умолчанию админка находится по адресу example.by/manager
Открывается же панель управления хостингом ispmanager.
Исправляем:

httpd: Добавляем алиас, отмечено красным
nano /etc/httpd/conf/httpd.conf


<VirtualHost 123.456.789.101:81 >
        ServerName example.by
        AssignUserID example example
        CustomLog /var/www/httpd-logs/example.by.access.log combined
        DocumentRoot /var/www/example/data/www/example.by
        ErrorLog /var/www/httpd-logs/example.by.error.log
        ServerAdmin webmaster@example.by
        ServerAlias www.example.by
        AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
        AddType application/x-httpd-php-source .phps
        php_admin_value open_basedir "/var/www/example/data:."
        php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f webmaster@example.by"
        php_admin_value upload_tmp_dir "/var/www/example/data/mod-tmp"
        php_admin_value session.save_path "/var/www/example/data/mod-tmp"
        php_admin_value memory_limit "67108864"
        php_admin_value max_execution_time "60"
        Alias /manager/ /var/www/
example/data/www/example.by/manager/
        MaxClientsVHost 8
        RLimitCPU 60
        RLimitMEM 67108864
        RLimitNPROC 10
        ScriptAlias /cgi-bin/ /var/www/
example/data/www/example.by/cgi-bin/

</VirtualHos>
В nginx - комментируем отмеченное красным:

nano /etc/nginx/nginx.conf
server {
                server_name
example.by www.example.by;
                listen
123.456.789.101;
                set $root_path /var/www/
example/data/www/example.by;
                location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
                        root $root_path;
                        access_log /var/www/nginx-logs/
example isp;
                        access_log /var/www/httpd-logs/
example.by.access.log ;
                        error_page 404 = @fallback;
                }
                location / {
                        proxy_pass http://
123.456.789.101;
                        proxy_redirect http://
123.456.789.101/ /;
// пропущено
                location @fallback {
                        proxy_pass http://
123.456.789.101:81;
                        proxy_set_header Host $host;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        proxy_set_header X-Forwarded-Proto $scheme;
                        proxy_set_header X-Real-IP $remote_addr;
                }
                # include /usr/local/ispmgr/etc/nginx.inc;
        }



Сохраняем. Далее

/etc/init.d/httpd restart  
/etc/init.d/nginx restart 
Проверяем, радуемся

среда, 15 мая 2013 г.

0day уязвимость в Linux от 2.6.37 до 3.8.10


Сегодня в сети появился рабочий эксплоит для всех версий Linux от 2.6.37 до 3.8.10, который дает возможность локальному пользователю получить права root. Проблема осложняется тем, что в случае с RHEL/CentOS 6 уязвимость была бэкпортирована в ядро 2.6.32, так что владельцам серверов с данными системами так же следует надеяться на скорейший выпуск ядра и исправлением ошибки. Таким образом, уязвимыми оказались все основные выпуски наиболее популярных серверных дистрибутивов: Debian 7.0, RHEL/CentOS 6, Ubuntu 12.04.

UPD: эксплоит для x86_64 / amd64, компилировать надо с -O2 о чем сказано в исходном коде.



Источник:  habrahabr.ru


Временно фиксится так:

sysctl -w kernel.perf_event_paranoid=2
sysctl -w kernel.perf_event_max_sample_rate=-1

пятница, 8 февраля 2013 г.

Генератор паролей из /dev/urandom

strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n'; echo

 Пароли получаются вида:
Ty0E2CegqEdZYwAQmqclw4rVnpEKl6

head - длина пароля 


У кое-кого не заработало на FreeBSD, однако нашли универсальный вариант:

  cat /dev/urandom | grep -oa '[0-9A-Za-z]' | head -n 30 | tr -d '\n'; echo 

воскресенье, 3 февраля 2013 г.

iptables и модуль string

Хитрое правило. Эдакий L7 firewall для linux + iptables, можно дропать пакеты на определенные адреса или определенные фразы.
Значек ! - отрицание.

Суть правила ниже: пользователю с uid=33 можно отправить запрос со словом "byfly.by" лишь на разрешенные IP. Все остальное - дропается.


#!/bin/bash
WHITELIST=guest.txt

for x in `grep -v ^# $WHITELIST | awk '{print $1}'`; do
       #echo $x
       iptables -A OUTPUT ! --dst $x -m owner --uid-owner 33 -m string --string "byfly.by" --algo
bm -j DROP
    iptables -A INPUT ! -- dst $x -m string --string --algo bm -j DROP
done
exit 0


Запретим входящий трафик всему, кто не с 192.168.1.24 запрашивает "index.php"

iptables -A INPUT ! -s 192.168.1.24 -m string --string 'index.php' --algo bm -j REJECT

Запретим устанавливать новые исходящие соединения юзеру с uid=33, если там проскакивает "example.com". Такое можно использовать, чтобы, например, забанить php-прокси на шаред-хостинге, если apache без патча itk - работает от одного юзера у всех. В данном случае фаерволл дропнет проксю по двум признакам:

1. Апач инициализирует исходящее соединение.

2. Для блокирования конкретного юзера, надо лишь знаеть, на каком сайте стоит прокси.

iptables -A OUTPUT  -m state --state NEW -m owner --uid-owner 33 -m string --string 'example.com' --algo bm -j DROP