воскресенье, 25 августа 2013 г.

Fuzzing

Fuzzing - технология тестирования программ, когда вместо ожидаемых входных данных программе передаются случайные данные. Если программа зависает или завершает работу это считается нахождением дефекта в программе, который может привести к обнаружению уязвимости. Большим преимуществом фуззинга является его простота и возможность автоматического анализа.

Примером фаззера может быть библиотека для Linux(and Solaris) – sharefuzz, предназначенная для тестирования типичных вариантов переполнения локальных буферов в setuid.

Из windows-фазеров можно отметить OWASP JBroFuzz – фаззер уязвимостей, работает с HTTP, SOAP, XML, LDAP протоколами. Позволяет выявить XSS, SQL-injection, переполнения буфера, FSE и многие другие уязвимости крайне нестандартными методами.

На проекте Google Code можно найти еще фаззеры. К примеру, Bunny the Fuzzer (http://code.google.com/p/bunny-the-fuzzer) - фаззер программ, написанных на C. Работает под Linux, FreeBSD, OpenBSD, и Cygwin.

FuzzDB - база данных с коллекцией образцов вредоносных и некорректных входных данных, нацеленных на повышение эффективности fuzzing-тестирования

FuzzDB может использоваться совместно с системами тестирования приложений на уязвимости, такими как OWASP Zap и Burp Suite. Опубликованные данные также можно использовать для симуляции активности, напоминающей проведение атаки, с целью тестирования работы внедрённых систем обнаружения и предотвращения атак.  

VPN disconnect

Иногда бывает ситуация, когда VPN-соединение по каким-либо причинам может разрываться. Если в случае с прокси-сервером, сетевое взаимодействие прекращается, то в случае с VPN траффик продолжит идти напрямую. Наиболее надёжным вариантом для недопущения этого является использование таблицы маршрутизации, где в качестве основного шлюза по умолчанию указан только шлюз VPN-сервера.
Делается это просто:
1. Удаляем любые маршруты по умолчанию:

2. Разрешаем доступ в интернет только к адресу VPN-сервера:

3. Добавляем маршрут по умолчанию со шлюзом – VPN-сервером:

Где: 192.168.0.1 — шлюз интернета, 55.55.55.55 — VPN-шлюз.
Еще одним способом является установка в свойствах открытого интернет-соединения несуществующих DNS-серверов, например, 127.0.0.1. В таком случае веб-сёрфинг и другие подобные задачи становятся невозможными без подключения к VPN-серверу.
Также существуют специальные программы, например, VPN-watcher, которые для заданных приложений проверяет VPN-соединение несколько раз в секунду и приостанавливает их работу, если VPN-соединение обрывается.

пятница, 16 августа 2013 г.

locale language set

locale -a //all locales 
apt-get install language-pack-nl language-support-nl
dpkg-reconfigure locales 
List of supported locales in /usr/share/i18n/SUPPORTED
Current locale in /etc/sysconfig/i18n
inside:
LANG="ru_RU.UTF-8"
SUPPORTED="ru_RU.UTF-8:ru_RU:ru"
SYSFONT="latarcyrheb-sun16" Если нет русской локали то ее необходимо сделать. Команда для этого выглядит так:
localedef  -i ru_RU -f UTF-8 ru_RU.UTF-8
Что она делает? Она берет из папки /usr/share/i18n/locales/ файл ru_RU (это файл с русской локалью) и из папки /usr/share/i18n/charmaps файл UTF-8.gz (это символьная карта для юникода) и на основе этиф файлов генерит нужную нам локаль ru_RU.UTF-8 После этого действия у нас в системе появляется нужная нам локаль, а дальше делаем все так как описано на абзац выше. Добавлю только что файлы находящиеся в папке usr/share/i18n/ принадлежат glibc-common-2.x.x и если вы их не наблюдаете там, то необходимо разбираться с самим glibc-common.

пятница, 9 августа 2013 г.

PHP open_basedir and Curl

CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or 
an open_basedir is set in /home/username/public_html/sts/index.php on 
line 170

decision:

set open_basedir = none in php.ini
 or
disable open_basedir in httpd.conf

php_admin_value open_basedir none
 

воскресенье, 4 августа 2013 г.

Tripwire

Режимы работы Tripwire:

    Инициализация базы данных (Database Initialization Mode);

    Проверка целостности (Integrity Checking Mode);

    Обновление базы данных (Database Update Mode);

    Обновление политики (Policy Update Mode);

    Тестовый режим (Test Mode);
   
При вызове программ можно использовать дополнительные ключи:
    -?
    --help
    --help all
    --help режим
    --version
    --verbose (или -v)
    --quiet (или -s)
    --polfile полиси-файл
    --cfgfile файл-конфигурации
    --site-keyfile файл-общего-ключа
    --local-keyfile файл-локального-ключа
    --dbfile файл-БД
    --local-passphrase парольная фраза (не советую использовать, т.к. ее могут увидеть с помощью команды ps)
    --site-passphrase парольная фраза (не советую использовать, т.к. ее могут увидеть с помощью команды ps)

    При необходимости исходные конфигурационные файлы можно создать вновь:
# twadmin -m p > /etc/tripwire/twpol1.txt 

# twadmin -m f > /etc/tripwire/twcfg.txt


Маски (Атрибуты файлов)

A property mask determines which object properties are ignored or monitored by Tripwire.
An empty property mask may not be used.
The property mask must contain one or more property characters.
When property values are used in a property mask without the + or – sign, the plus sign (+) is assumed.
+p+n+s = +pns = pns
    p - права доступа
    i - inode
    n - число жестких ссылок
    u - uid
    g - gid
    t - тип файла
    s - размер
    d - номер устройства диска, на котором хранится соответствующий inode
    r - для файлов устройств номер устройства
    b - число блоков
    m - время модификации
    c - время создания/модификации inode
    l - ожидается, что файл будет расти; если он уменьшился, то это нарушение
    a - время доступа (несовместим с CMSH, т.к. для вычисления суммы необходимо прочитать файл; доступ к содержимому директории меняет время доступа к ней)
    C - контрольная сумма CRC-32, POSIX 1003.2
    M - контрольная сумма MD5
    S - контрольная сумма SHA
    H - контрольная сумма HAVAL
К этим атрибутам можно добавлять дополнительные маски:
+ сравнить атрибут
- игнорировать атрибут
The mask # establishes the same monitoring criteria as the first mask.

The plus sign (+) enables monitoring for a property, the minus sign (-) disables monitoring.
Not specifying a property in the property mask is the same as using the minus (-) sign.
When a plus or minus sign appears in a property mask, it is in effect until the next plus or minus sign appears in the same mask.
When two properties in the same mask contradict each other, only the last property is acted upon by Tripwire.
A property mask may be used with no properties enabled. This type of mask is often used to monitor the deletion or addition of files to the system.

specify the name of the report file you wish to merge with the database
$ tripwire --update -r /var/lib/tripwire/report/androidius.ru-20130802-140850.twr

Атрибуты правил

При написании правил вы можете указывать их атрибуты.
Атрибуты модифицируют действие правила, записываются в виде списка имя = значение через запятую и могут применяться к отдельному правилу или группе правил. Группа правил заключается в фигурные скобки. Список атрибутов для группы правил записывается в скобках перед ней. Индивидуальные атрибуты имеют больший приоритет, чем групповые, за исключением атрибута emailto - в этом случае атрибут добавляется. Обрабатываются следуюшие атрибуты:
rulename - позволяет присвоить правилу имя, которое будет выведено в отчете в случае нарушения правила. Кроме этого, имя можно использовать при сортировке с помощью grep

emailto - Пример: /etc -> +us (email = paer@yahoo.com). чтобы указать несколько адресов, надо перечислить их через точку с запятой и заключить в кавычки

/etc -> +ug (emailto="admin@foo.com;admin2@foo.com");

severity - от 0 до миллиона, по умолчанию - 0; чем больше, тем серьезнее; проверку можно запускать только для правил указанного уровня или выше; в командной строке могут использоваться ключи high - уровень 100, medium - уровень 66, low - уровень 33

recurse - рекурсивная проверка. Если объект является каталогом, то Tripwire будет контролировать все его подкаталоги. true (-1) по умолчанию, false (0) - подкаталоги сканироваться не будут, Tripwire будет сканировать только свойства заданного каталога, а не содержащихся в нем файлов. Положительное значение (1, 2, 3 и т.д.) - позволяет установить глубину сканирования (максимальный уровень вложенности). Атрибут recurse для файла игнорируется.
(
  rulename = "Monitor Filesystems",
)
{
  /                             -> $(ReadOnly) ;
  /home                         -> $(ReadOnly) (recurse=1);

}

Переменные

Переменные делятся на глобальные и локальные для данной секции. Локальные имеют больший приоритет. Значение переменной присваивается командой имя_переменной = значение; Имя переменной может включать буквы (регистр имеет значение), цифры и знаки: "_+-@:&%^.". Если значение содержит пробел или управляющие сиволы, то оно должно быть заключено в кавычки. Подстановка переменных допускается в любом месте, где по синтаксису полагается строка (в т.ч. как часть левой части правила) и выражается так:
$(имя_переменной)

Предопределенные переменные (не могут быть переопределены):
ReadOnly = +pinugsmtdbCM-raclSH (предполагается, что содержимое файлов не изменяется)

Dynamic = +pinugtd-rsacmblCMHS (предполагается частое изменение содержимого файлов, например /home)

Growing = +pinugtdl-rsacmbCMSH (например, журналы)

IgnoreAll = -pinusgamctdrblCMSH (проверять лишь наличие или отсутствие файла)

IgnoreNone = +pinusgamctdrbCMSH-l (используется для дальнейшего конструирования собственной маски: $(IGnoreNone)-ar)

Device = +pugsdr-intlbamcCMSH (для файлов, которые нельзя открывать)


Директивы

Директивы позволяют вам распечатывать диагностические сообщения в случае, когда при проверке достигнуты определенные разделы файла политики, или осуществляется проверка определенных свойств хоста. Смысл в том, что один и тот же файл политики может быть использован на различных хостах и операционных системах.

    @@section. Начинает новый раздел файла. Эта директива может сопровождаться аргументами: FS, NTFS или NTREG. Unix-версия Tripwire игнорирует разделы файла NTFS или NTREG, что позволяет вам использовать один файл политики для всей вашей сети. Если после директивы не задано никаких аргументов, предполагается значение FS. Нет необходимости определять конец раздела, поскольку Tripwire просто просматривает файл в поисках следующей директивы и интерпретирует ее, как конец предыдущего раздела.
    @@ifhost, @@else, @@endif. Эти директивы можно использовать для определения специфических для хоста разделов файла. В отличие от директив разделов, директивы ifhost требуют, чтобы предложение было завершено директивой endif. Это позволяет вам запускать правила только для конкретного хоста в группе хостов, воспользовавшись примерно такой командой:

    @@ifhost originix || badman
       # define rules for only hosts originix and badman here
    @@endif

@@ifnhost hostname Same as the argument, except that the hostname must NOT match the hostname used in this argument.
@@include pathname Used to include the file specified in pathname into the policy file. Both files must use syntax readable by Tripwire.
@@variable Used to make Tripwire perform an action when the named variable is encountered.
@@{variable-name} Same as the previous syntax; normally used in conjunction with other strings.
@@undef variable-name Unassigns the named variable.
@@define variable-string Used to assign a string to a variable. If now string argument is used, the null string is assigned. (Example: @@define LOGS E+pugn
##this template will monitor log files for file permissions, User ID, Group ID, and link count.
##The next template will be the default template applied to directories.)
Using: /var/log                       @@LOGS;
@@ifdef variable-name This argument is true if the variable is defined.
@@Ifndef variable-name This argument is true if the variable is NOT defined.
    @@print, @@error. Эти директивы используются для вывода отладочных сообщений из файла политики. Директория @@print просто печатает на стандартный вывод, а директива @@error осуществляет печать в случае ненормального завершения работы программы. Следующий пример указывает Tripwire выдать сообщение в случае, если будет сделана попытка проверки хоста cauliflower, поскольку для этого хоста не предусмотрено никаких правил проверки:

    @@ifhost cauliflower
       @@error "We haven't written any policy rules for
           host cauliflower yet"
    @@endif

    @@end. Эта директива обозначает конец файла политики. Достигнув этой точки, Tripwire прекращает считывание файла.
||  Logical OR statement
&&  Logical AND statement
##  Used to indicate comments


Чтобы исключить файл или папку из проверки используется знак !:
/etc $(ReadOnly) –ar;
!/etc/rc.d ;
!/etc/sysconfig ;
Распечатать результаты проверки:
twprint --print-report -r /var/lib/tripwire/report/site.ru-20130802-133246.twr | more

Обновить правила из файла twpol1.txt:
tripwire --update-policy --secure-mode low ../etc/tripwire/twpol1.txt
--secure-mode low - Обновить базу данных после применения новых настроек.

6. Check for any changes to the files and update tripwire database.
# ./tripwire --check --interactive

(
  rulename = "www Site Directory", severity = $(SIG_MED)
)
{
/var/www                        -> $(IgnoreNone);
/var/www/httpd-logs             -> $(SEC_LOG);
/var/www/caskag/data/logs       -> $(SEC_LOG) ;
!/var/www/caskag/data/mod-tmp       -> $(SEC_INVARIANT) ;
}

Если же изменен важный файл, к примеру, отредактирован какой-то конфигурационный файл в каталоге /etc, то нужно сообщить об данном Tripwire. Для этого Tripwire запускается с опцией -update и опцией -twrfile, после которой показывается файл отчета:
# tripwire --update --twrfile /var/tripwire/report


Автоматическая проверка

execute tripwire check daily at 4:00 a.m.
#add the following line to your crontab
00 4 * * * /opt/tripwire/sbin/tripwire  --check
Для автоматической ежедневной проверки нужно создать файл twcheck в /etc/cron.daily:
#!/bin/sh

HOST_NAME= 'uname -n'

if [ ! -e /var/lib/tripwire/${HOST_NAME}.twd ]; then echo "*** Error: Tripwire database for ${HOST_NAME} not fountd"

echo "*** Run "/etc/tripwire/twinstall.sh" and/or "tripwire —init." else

test -f /etc/tripwire/tw.cfg && /usr/sbin/tripwire --check fi
Проверка работоспособности почтовой системы:

tripwire --test --email адрес

http://www.bog.pp.ru/work/tripwire.html
http://www.ibm.com/developerworks/ru/library/au-usingtripwire/
http://www.intuit.ru/studies/courses/1053/150/lecture/2201?page=10&keyword_content=leased 

Каккие файлы проверять с помощью Tripwire:

Проверяйте все бинарные файлы, особенно в папках /sbin и /lib.
Проверяйте системный логи /var/log.
Проверяйте конфигурационные файлы в /etc.
Проверяйте файлы программ безопасности, антивирусов и фаерволов.

четверг, 1 августа 2013 г.

Матрица

echo -ne "\e[32m" ; while true ; do echo -ne "\e[$(($RANDOM % 2 + 1))m" ; tr -c "[:print:]" " " < /dev/urandom | dd count=1 bs=50 2> /dev/null ; done
http://www.asty.org/cmatrix/