среда, 11 сентября 2013 г.

Виртуальная файловая система /proc

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


Перечислим некоторые важные файлы:
  • /proc/cpuinfo - информация о процессоре ( модель, семейство, размер кэша и т.д.)
  • /proc/meminfo - информация о RAM, размере свопа и т.д.
  • /proc/mounts - список подмонтированных файловых систем.
  • /proc/devices - список устройств.
  • /proc/filesystems - поддерживаемые файловые системы.
  • /proc/modules - список загружаемых модулей.
  • /proc/version - версия ядра.
  • /proc/cmdline - список параметров, передаваемых ядру при загрузке. 

Большинство из рассмотренных нами файлов из каталога /proc доступны только на чтение. Тем не менее файловая система /proc предоставляет файлы для взаимодействия с ядром доступные на запись. Помещение информации в такие файлы изменяет состояние ядра и поэтому это надо делать очень аккуратно. Эти файлы нахдятся в каталоге /proc/sys.
В каталоге /proc/sys/kernel находится информация общего плана для ядра. Соответственно в /proc/sys/kernel/{domainname, hostname} находится информация о доменном имени и host имени, которую Вы можете изменить.

Еще один интересный каталог /proc/sys/net. В нем Вы можете произвести сетевые настройки, например спрятать Ваш компьютер в сети.


$ echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
Запретив ответы на icmp_echos мы спрятали компьютер. Наша машина не будет отвечать на команды "ping" других компьютеров.

$ ping machinename.domainname.com
no answer from machinename.domainname.com
Вернуть прежнее состояние можно следующим образом
$ echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all


Оперативная память linux

В файле можно найти пароли авторизации в открытом виде и много другой полезной информации, которая была загружена в память.
Расположение: /proc/kcore
Размер файла равен размеру RAM + SWAP
strings /proc/kcore | grep -A 50 -B 50 {username} | sort -u | uniq -u > /tmp/kdump.uniq
Странно но пароль всегда находился в пределах +-50 строк от имени пользователя

воскресенье, 8 сентября 2013 г.

HTTP Basic Authentication

"Базовая" схема установления подлинности основана на том, что агент пользователя должен доказывать свою подлинность при помощи идентификатора пользователя (user-ID) и пароля (password) для каждой области (realm)
LoadModule authn_file_module modules/mod_authn_file.so
<Location ~ "/(wp-login\.php|administrator|admin\.php)">.
 AuthType Basic.
 AuthName "Subdomain authorization".
 AuthUserFile "/etc/httpd/.htpasswd"
 Require valid-user.
</Location> 

Создание файла с паролями:
htpasswd -c Filename username
Добавление/изменение юзера:
htpasswd Filename username
Force MD5 encryption of the password:
htpasswd -m Filename username

Make sure that the AuthUserFile and .htpasswd are stored outside the document tree of the web-server. Do not put it in the directory that it protects. Otherwise, clients may be able to download the AuthUserFile.


Директива <Location> подобна директиве <Directory>, только вместо названия каталога указывается адрес URL. Этот адрес URL может указывать на каталог, отдельный файл либо содержать шаблон (строку *.html). В директиве <Location>, уже присутствующей в файле srm.conf, задается область, резервируемая для проверки вебмастером состояния сервера, /status. Доступ к этой области разрешен только пользователям домена nowhere.com. Если вы замените nowhere.com названием вашего домена, то получите возможность пользоваться этой информацией о состоянии (если вы откомпилировали модуль mod_status.c.

AuthType None|Basic|Digest|Form

http://httpd.apache.org/docs/current/mod/mod_authn_core.html#authtype

http://httpd.apache.org/docs/2.2/howto/auth.html 

Минусы HTTP Basic Authentication:
1) Юзабилити, внешний вид
2) Чтобы деавторизоваться необходимо закрыть браузер.

Digest Authentication (Дайджест_аутентификация):
http://ru.wikipedia.org/wiki/%D0%94%D0%B0%D0%B9%D0%B4%D0%B6%D0%B5%D1%81%D1%82_%D0%B0%D1%83%D1%82%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F 

Как узнать статус процесса

 cat /proc/PID/status | grep State | awk {'print $3'}

суббота, 7 сентября 2013 г.

FilesMatch

<Files "log.txt">
Order Allow,Deny
Deny from all
</Files>
<FilesMatch "config.php|function.php|include.php">
  Order allow,deny
  Deny from all
  Allow from 173.11.227.73 108.222.245.179
</FilesMatch> 

<FilesMatch "\.(gif|jpeg|jpg|png)$"> 
<FilesMatch "\.php$">
<FilesMatch "index[0-9]?\.php$">
   
If you'd like to deny all but a few files, this would read as
Order deny,allow
Deny from all
<FilesMatch "index.php|index.html">
Allow from all
</FilesMatch> 

<Limit GET POST> 
Order Allow,Deny 
Deny from 100.99.69.1, 100.99.69.2
Allow from All 
</Limit>

воскресенье, 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.