суббота, 21 февраля 2009 г.

БЛОГ ПЕРЕЕХАЛ

собстенно все продолжение на http://stragaw.blogspot.com/

Ubuntu 9.10 Karmic Koala

Марк Шаттлворт назвал кодовое имя очередного релиза Ubuntu
Марк Шаттлворт [Mark Shuttleworth] озвучил кодовое имя дистрибутива, который придёт на смену Ubuntu 9.04, Jaunty Jackalope. Дистрибутив Ubuntu 9.10, релиз которого состоится в октябре 2009 года, будет называться Karmic Koala. C этим релизом связаны надежды Canonical на расширение своих позиций в сегменте серверов ввиду усовершенствования возможностей облачных вычислений (с использованием сервиса Amazon EC2), также будет предложено множество новых функций пользователям настольных систем (технология Plymouth, разработанная Red Hat для замены RHGB при загрузке в графическом режиме), а также владельцам нетбуков (по словам Шатллворта, Jaunty Jackalope будет загружаться менее чем за 25 секунд, а Karmic Koala — ещё быстрее).
Кроме того, Шаттлворт объявил, что очередной Ubuntu Developer Summit состоится в конце мая текущего года в Барселоне, Испания [Barcelona, Spain].
C анонсом Ubuntu 9.10 "Karmic Koala" можно ознакомиться здесь.

вторник, 17 февраля 2009 г.

Red Hat и Microsoft подписали соглашение об интероперабельности

Red Hat и Microsoft намерены подтверждать совместимость серверных ОС друг друга в качестве гостевых систем для своих платформ виртуализации

Red Hat и Microsoft объявили, что в будущем собираются подтверждать совместимость серверных операционных систем друга друга со своими платформами виртуализации. Это означает, что Red Hat подтвердит совместимость Windows Server 2003 SP2, Windows Server 2000 SP4 и Windows Server 2008 в качестве гостевых систем для среды виртуализации Red Hat Enterprise Linux, а Microsoft, в свою очередь, подтвердит совместимость Red Hat Linux 5.2 и 5.3 в качестве гостевых систем для Windows Server 2008 Hyper-V и Hyper-V Server 2008.

В отличие от некоторых других договоров об интероперабельности с Microsoft, в данном случае Red Hat подчёркивает, что «никакие патенты или компоненты открытых лицензий» не затрагиваются, а также нет «никаких финансовых предложений, помимо платежей за проверку сертификации и ратификации индустриальных стандартов». Соглашение выразилось в форме присоединения Microsoft к программе Red Hat Virtualisation Certification Program, и присоединения Red Hat к Microsoft Server Virtualisation Validation Program.

Подробности здесь.

воскресенье, 15 февраля 2009 г.

nmap по русски

Сетевой сканер Nmap. Руководство пользователя.

Nmap - the Network Mapper. Утилита для сканирования и исследования безопасности сети.

ИСПОЛЬЗОВАНИЕ

nmap [Метод(ы) сканирования] [Опции] <Хост или сеть #1,[#N]>

ОПИСАНИЕ

Программа Nmap предназначена для сканирования сетей с любым количеством объектов, определения состояния объектов сканируемой сети а также портов и соответствующих им служб. Для этого Nmap использует много различных методов сканирования, таких, как UDP, TCP connect(), TCP SYN (полуоткрытое), FTP proxy (прорыв через ftp), Reverse-ident, ICMP (ping), FIN, ACK, Xmas tree, SYN и NULL-сканирование. Более подробное их описание приведено в разделе "Опции выбора методов сканирования".

Nmap также поддерживает большой набор дополнительных возможностей, а именно: определение операционной системы (далее - ОС) удаленного хоста с использованием отпечатков стека TCP/IP, "невидимое" сканирование, динамическое вычисление времени задержки и повтор передачи пакетов, параллельное сканирование, определение неактивных хостов методом параллельного ping-опроса, сканирование с использованием ложных хостов, определение наличия пакетных фильтров, прямое (без использования portmapper) RPC-сканирование, сканирование с использованием IP-фрагментации а также произвольное указание IP-адресов и номеров портов сканируемых сетей.

Результатом работы Nmap является список отсканированных портов удаленной машины с указанием номера и состояния порта, типа используемого протокола а также названия службы, закрепленной за этим портом. Порт характеризуется тремя возможными состояниями: "открыт", "фильтруемый" и "нефильтруемый". Состояние "открыт" означает, что удаленная машина прослушивает данный порт. Состояние "фильтруемый" означает, что файрволл, пакетный фильтр или другое устройство блокирует доступ к этому порту и Nmap не смог определить его состояние. "Нефильтруемый" означает, что по результатам сканирования Nmap воспринял данный порт как закрытый, при этом средства защиты не помешали Nmap определить его состояние. Это состояние Nmap определяет в любом случае (даже если большинство сканируемых портов хоста фильтруются).

В зависимости от указанных опций, Nmap также может определить следующие характеристики сканируемого хоста: метод генерации TCP ISN, имя пользователя (username) владельца процесса, зарезервировавшего сканируемый порт, символьные имена, соответствующие сканируемым IP-адресам и т.д.
ОПЦИИ
Большинство опций могут комбинироваться друг с другом. Одни опции предназначены для выбора определенного метода сканирования, другие указывают на использование дополнительных возможностей или служат для настройки различных параметров сканирования. Nmap предупреждает пользователя о недопустимом сочетании указанных им опций. Те, кто хотят немедленно начать работу с программой, могут пропустить этот раздел и перейти к изучению примеров вызова Nmap в конце данного руководства. Вы можете также запустить программу Nmap с ключом '-h' для получения краткой справки по всем опциям.

Опции выбора метода сканирования
-sT (scan TCP) - использовать метод TCP connect(). Наиболее общий метод сканирования TCP-портов. Функция connect(), присутствующая в любой ОС, позволяет создать соединение с любым портом удаленной машины. Если указанный в качестве аргумента порт открыт и прослушивается сканируемой машиной, то результат выполнения connect() будет успешным (т.е. соединение будет установлено), в противном случае указанный порт является закрытым, либо доступ к нему заблокирован средствами защиты.

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

-sS (scan SYN) - использовать метод TCP SYN. Этот метод часто называют "полуоткрытым" сканированием, поскольку при этом полное TCP-соединение с портом сканируемой машины не устанавливается. Nmap посылает SYN-пакет, как бы намереваясь открыть настоящее соединение, и ожидает ответ. Наличие флагов SYN|ACK в ответе указывает на то, что порт удаленной машины открыт и прослушивается. Флаг RST в ответе означает обратное. Если Nmap принял пакет SYN|ACK, то в ответ немедленно отправляет RST-пакет для сброса еще не установленного соединения (реально эту операцию выполняет сама ОС). Очень немного сайтов способны обнаружить такое сканирование. Пользователь должен иметь статус root для формирования поддельного SYN-пакета.

Для ускорения процесса опроса портов при сканировании больших сетей совместно с опцией -sS вы можете использовать ярлык, позволяющий опросить какой-либо порт на всех активных объектах сканируемой вами сети намного быстрее, чем при использовании одной опции -p. Это можно сделать с помощью ярлыка -PS <порт>. Например, если будет обнаружена новая уязвимость в sendmail, вам может потребоваться за короткое время обнаружить, на каких машинах sendmail установлен. Команда запуска Nmap будет выглядеть следующим образом (пример):

nmap -n -sS -p25 -PS25 24.0.0.0/8

-sF,-sX,-sN (scan FIN, scan Xmas, scan NULL) - "невидимое" FIN, Xmas Tree и NULL-сканирование. Эти методы используются в случае, если SYN-сканирование по каким-либо причинам оказалось неработоспособным. Так, некоторые файрволлы и пакетные фильтры "ожидают" поддельные SYN-пакеты на защищенные ими порты, и программы типа Synlogger или Courtney способны отследить SYN-сканирование.

Идея заключается в следующем. В FIN-сканировании в качестве запроса используется FIN-пакет. В Xmas Tree используется пакет с набором флагов FIN|URG|PSH, а NULL-сканирование использует пакет без флагов. Согласно рекомендации RFC 973 п. 64, ОС сканируемого хоста должна ответить на такой пакет, прибывший на закрытый порт, пакетом RST, в то время как открытый порт должен игнорировать эти пакеты.

Разработчики Microsoft Windows, как обычно, решили полностью игнорировать все общепринятые стандарты и пойти своим путем. Поэтому любая ОС семейства Windows не посылает в ответ RST-пакет, и данные методы не будут работать с этими ОС. Однако во всем есть свои плюсы, и в Nmap этот признак является основным для различения операционных систем, обладающих таким свойством.

Если в результате FIN-сканирования вы получили список открытых портов, то это не Windows. Если же все эти методы выдали результат, что все порты закрыты, а SYN-сканирование обнаружило открытые порты, то вы скорей всего имеете дело с ОС Windows. К сожалению, Windows не единственная ОС, обладающая этим недостатком. К таким ОС относятся также Cisco, BSDI, IRIX, HP/UX и MVS. Все эти ОС не отправляют RST-пакеты.

-sP (scan Ping) - ping-"сканирование". Иногда вам необходимо лишь узнать адреса активных хостов в сканируемой сети. Nmap может сделать это, послав ICMP-сообщение "запрос эха" на каждый IP-адрес, указанный вами. Хост, отправивший ответ на эхо, является активным.

Некоторые сайты (например microsoft.com) блокируют эхо-пакеты. По этой причине Nmap также посылает TCP ACK-пакет на 80-й порт сканируемого хоста (по умолчанию). Если в ответ вы получили RST-пакет, хост активен. Третий метод использует SYN-пакет и ожидает в ответ RST либо SYN|ACK. Для пользователей, не обладающих статусом root, используется метод connect().

Для root-пользователей Nmap по умолчанию использует параллельно оба метода - ICMP и ACK. Вы можете изменить это, используя опцию '-P', описанную ниже. Заметим, что ping-сканирование по умолчанию выполняется в любом случае и только активные хосты подвергаются сканированию. Используйте эту опцию только в случае, если вы хотите выполнить только ping-опрос, не производя сканирования портов.

-sV (scan Version) - включение режима определения версий служб, за которыми закреплены сканируемые порты. После окончания сканирования будет получен список открытых TCP и/или UDP-портов. Без этой опции в списке напротив каждого порта будет указана служба, которая обычно использует данный порт (эта информация берется из базы данных "общеизвестных" портов, файл nmap-services). При включенной опции будет запущена подсистема определения версий служб, которая проведет последовательное тестирование этих портов с целью определения типов и версий служб, за которыми закреплены обнаруженные порты. Файл, названный nmap-service-probes используется для определения оптимальтых тестов, с помощью которых можно получить максимально точную информацию в данных условиях. Nmap пытается определить протокол службы (ftp, ssh, telnet, http), имя приложения (ISC Bind, Apache httpd, Solaris telnetd), номер версии и дополнительную информацию (версия протокола SSH). Если Nmap откомпилирован с поддержкой OpenSSL, он осуществит подключение к SSL-серверу и попытается определить, какая служба работает "за" шифрованием. Если обнаружена служба RPC, Nmap предпримет атаку на RPC по методу "грубой силы" для определения номера программы RPC и номера версии. Заметьте, что опция -A также включает этот режим. Для получения более подробной информации смотрите статью http://www.cherepovets-city.ru/insecure/runmap/runmap-versionscan.htm .Опция --version_trace указывает Nmap на необходимость получения полной информации о передаваемых и принимаемых в процессе тестирования данных.

-sU (scan UDP) - сканировать UDP-порты. Этот метод используется для определения, какие UDP-порты (RFC 768) на сканируемом хосте являются открытыми. На каждый порт сканируемой машины отправляется UDP-пакет без данных. Если в ответ было получено ICMP-сообщение "порт недоступен", это означает, что порт закрыт. В противном случае предполагается, что сканируемый порт открыт.

Некоторые считают сканирование UDP-портов бесполезным занятием. Мы в этом случае напоминаем о известной "дыре" в демоне rpcbind ОС Solaris. Он может быть обнаружен на любом из недокументированных UDP-портов с номером, больше 32770. Если вы обнаружите его, то будет уже не важно, блокируется ли 111-й порт файрволлом или нет.

К сожалению, сканирование UDP-портов проходит очень медленно, поскольку практически все ОС следуют рекомендации RFC 1812 (раздел 4.3.2.8) по ограничению скорости генерирования ICMP-сообщений "порт недоступен". Например, ядро Linux (каталог net/ipv4/icmp.h) ограничивает генерирование таких сообщений до 80 за 4 секунды с простоем 0,25 секунды, если это ограничение было превышено. У ОС Solaris еще более жесткое ограничение (2 сообщения в секунду), и поэтому сканирование Solaris проходит еще более медленно.

Nmap определяет параметры этого ограничения, и соответственно уменьшает количество генерируемых запросов, предотвращая тем самым затопление сети ненужными пакетами, которые игнорируются целевой машиной. Как обычно, Microsoft снова все проигнорировала, и не использует в своих ОС никаких ограничений. Поэтому вы очень быстро можете просканировать все 65535 UDP-портов хоста, работающего под управлением ОС Windows.

-sO (scan Open protocol) - сканирование протоколов IP. Данный метод используется для определения IP-протоколов, поддерживаемых сканируемым хостом. Метод заключается в передаче хосту IP-пакетов без какого-либо заголовка для каждого протокола сканируемого хоста. Если получено сообщение "Протокол недоступен", то данный протокол хостом не используется. В противном случае Nmap предполагает, что протокол поддерживается хостом.

Некоторые ОС (AIX, HP-UX, Digital UNIX) и файрволлы могут блокировать передачу сообщений "Протокол недоступен". По этой причине все сканируемые протоколы будут "открыты" (т.е. поддерживаются).

Поскольку описанная техника схожа с методом сканирования UDP-портов, ограничение скорости генерации ICMP-сообщений также будет иметь место. Однако поле "тип протокола" IP-заголовка состоит всего лишь из 8 бит, поэтому 256 протоколов будут отсканированы за приемлемое время.

-sI (scan Idle) - позволяет произсести абсолютно невидимое сканирование портов. Атакующий может просканировать цель, не посылая при этом пакетов от своего IP-адреса. Вместо этого используется метод IdleScan, позволяющий просканировать жертву через так называемый хост-"зомби". Кроме абсолютной невидимости, этот тип сканирования позволяет определить политику доверия между машинами на уровне протокола IP. Листинг результатов показывает открытые порты со стороны хоста-"зомби". Таким образом, можно просканировать цель с использованием нескольких "зомби", которым цель может "доверять", в обход файрволлов и пакетных фильтров. Такого рода информация может быть самой важной при выборе целей "первого удара". Мы подготовили статью с описанием этого метода, Вы можете ознакимиться с ней здесь. Вы можете указать конкретный порт для проверки изменения IPID на хосте-"зомби". В противном случае Nmap будет использовать номер порта по умолчанию для "tcp ping".

-sA (scan ACK) - использовать ACK-сканирование. Этот дополнительный метод используется для определения набора правил (ruleset) файрволла. В частности, он помогает определит, защищен ли сканируемый хост файрволлом или просто пакетным фильтром, блокирующим входящие SYN-пакеты.

В этом методе на сканируемый порт хоста отправляется ACK-пакет (со случайными значениями полей acknowledgement number и sequence number). Если в ответ пришел RST-пакет, порт классифицируется как "нефильтруемый". Если ответа не последовало (или пришло ICMP-сообщение о недоступности порта), порт классифицируется как "фильтруемый".

Заметим, что Nmap не выдает "нефильтруемые" порты в результатах, поэтому если вы не обнаружите ни одного открытого порта при использовании этого типа сканирования, это будет означать, что все порты просканированы и являются нефильтруемыми. Обращаем ваше внимание, что этот метод никогда не покажет состояние порта "открыт" в результатах сканирования.

-sW (scan Window) - использовать метод TCP Window. Этот метод похож на ACK-сканирование, за исключением того, что иногда с его помощью можно определять открытые порты точно так же, как и фильтруемые/нефильтруемые. Это можно сделать, проверив значение поля Initial Window TCP-пакета, возвращаемого хостом в ответ на посланный ему запрос, ввиду наличия определенных особенностей обработки данного поля у некоторых ОС.

Список уязвимых операционных систем включает в себя по крайней мере несколько версий AIX, Amiga, BeOS, BSDI, Cray, Tru64 UNIX, DG/UX, OpenVMS, Digital UNIX, FreeBSD, HP-UX, OS/2, IRIX, MacOS, NetBSD, OpenBSD, OpenStep, QNX, Rhapsody, SunOS 4.X, Ultrix, VAX и VxWorks. Для более подробной информации смотрите архив nmap-hackers.

-sR (scan RPC) - использовать RPC-сканирование. Этот метод используется совместно с другими методами сканирования и позволяет определить программу, которая обслуживает RPC-порт, и номер ее версии. Для этого все открытые TCP/UDP-порты хоста затопляются NULL-командами оболочки SunRPC, после чего определяются RPC-порты и закрепленные за ними программы. Таким образом, вы легко получаете информацию, которую могли бы получить с помощью команды 'rpcinfo -p', даже если portmapper сканируемого хоста закрыт файрволлом или TCP-wrapper'ом.

-sL (scan List) - получить список сканируемых адресов. Эта опция позволяет вам получить список адресов хостов, которые БУДУТ просканированы Nmap, до начала процесса сканирования. По умолчанию определяются имена хостов, однако это можно запретить, используя опцию -n. Опция может использоваться в случае, когда вам необходимо определить имена большого количества хостов по их адресам и т.д.

-b (bounche scan) - использовать атаку "Прорыв через FTP". Интересной "возможностью" протокола FTP (RFC 959) является поддержка "доверенных" (proxy) ftp-соединений. Другими словами, с доверенного хоста source.com можно соединиться с ftp-сервером target.com и отправить файл, находящийся на нем, на любой адрес Internet! Заметим, что данная возможность известна с 1985 года (когда был написан этот RFC). Nmap использует эту "дыру" для сканирования портов с "доверенного" ftp-сервера.

Итак, вы можете подключиться к ftp-серверу "над" файрволлом и затем просканировать заблокированные им порты (например 139-й). Если ftp-сервер позволяет читать и записывать данные в какой-либо каталог (например /incoming), вы также можете отправить любые данные на эти порты. Аргумент, указываемый после '-b', представляет собой URL сервера ftp, используемого в качестве "доверенного". Формат URL следующий: имя_пользователя:пароль@сервер:порт. Адрес сервера нужно указать обязательно, остальное можно не указывать.

Опции настройки и выбора дополнительных возможностей

Эти опции не обязательные (т.е. возможна нормальная работа Nmap и без их указания), однако все они являются весьма полезными.

-P0 (Ping 0) - не производить ping-опрос хостов перед их непосредственным сканированием. Эта опция позволяет просканировать сети, блокирующие обработку ICMP-эха с помощью файрволлов. Примером такой сети является microsoft.com, и вы всегда должны использовать опцию '-P0'или'-PT80'(см. ниже), когда сканируете такую сеть.

-PT (Ping TCP) - использовать TCP "ping". Вместо посылки запроса ICMP-эха, Nmap отправляет TCP ACK-пакет на сканируемый хост и ожидаем ответ. Если хост активен, то в ответ должен придти RST-пакет. Для не-root пользователей используется функция connect(). Эта опция позволяет вам определить состояние сканируемого хоста, даже если обработка ICMP-эха запрещена файрволлом. Для указания номера порта сканируемого сервера, на который будет отправляться ACK-пакет, используется опция '-PT <номер_порта>'. По умолчанию используется 80-й порт, поскольку он практически никогда не фильтруется.

-PS (Ping SYN) - опция, также используемая для ping-опроса. При этом вместо ACK-пакета TCP "ping" используется SYN-пакет. Активные хосты посылают в ответ RST-пакеты (реже - SYN|ACK).

-PU [portlist] (Ping UDP) - использовать UDP Ping. Nmap отправляет UDP-пакеты на указанный хост и ожидает в ответ ICMP "port unreachable" (или ответы от открытых портов UDP) если хост активет. Поскольку большинство служб, использующих UDP, не отвечают на запросы, Вам лучше использовать порты, которые заведомо закрыты.

-PE (Ping ICMP) - эта опция использует в качестве ping-запроса нормальный ping-пакет (запрос ICMP-эха). Опция применяется для поиска активных хостов а также адресов сетей с возможностью широковещания. Такие сети пересылают прибывший ICMP-пакет всем своим объектам. Как правило, такие сети представляют собой "живую мишень" для хакера.

-PP - использует пакет ICMP "timestamp request (code 13)" для определения активных хостов.

-PM - схожа с опциями-PE и-PP за исключением того, что используется пакет "netmask request" (ICMP code 17).

-PB (Ping Both) - режим ping-опроса по умолчанию. Использует одновременно запросы типа ACK и ICMP.

-O (Operating system detection) - эта опция позволяет определить операционную систему сканируемого хоста с помощью метода отпечатков стека TCP/IP. Другими словами, Nmap активизирует мощный алгоритм, функционирующий на основе анализа свойств сетевого программного обеспечения установленной на нем ОС. В результате сканирования получается формализованный "отпечаток", состоящий из стандартных тестовых запросов и "ответов" хоста на них. Затем полученный отпечаток сравнивается с имеющейся базой стандартных ответов известных ОС, хранящейся в файле nmap-os-fingerprinting, и на основании этого принимается решение о типе и версии ОС сканируемого хоста.

Этот метод требует наличия хотя бы одного закрытого и одного открытого порта на целевом хосте. Если вы обнаружите машину, у которой это условие выполняется, но Nmap не смог определить версию ОС - вышлите нам адрес этой машины. Если же, по каким-либо причинам выслать адрес не представляется возможным, запустите Nmap с опцией '-d' и вышлите полученный отпечаток.

-A Эта опция включает режим additional advanced aggressive, и разрешает опции -O, -sV, -T4 и -v.

-6 - опция разрешает поддержку протокола IPv6. Все хосты должны поддерживать IPv6 при использовании этой опции, и могут быть указаны путем нормального имени DNS (запись AAAA) или литеральным IP-адресом, например 3ffe:501:4819:2000:210:f3ff:fe03:4d0. На данный момент, поддерживаются только методы TCP connect()-сканирование и TCP connect() Ping-сканирование. Если Вам необходимо UDP или другой тип сканирования, рекомендуем ссылку http://nmap6.sourceforge.net/.

-I (Ident scan) - использовать reverse-ident сканирование. Протокол Ident (RFC 1413) позволяет вскрыть имя пользователя (username) процесса, использующего TCP, даже если этот процесс не инициализировал соединение. Так, например, вы можете подключиться к порту http и затем использовать identd для поиска на сервере пользователя root. Это может быть сделано только при установлении "полного" TCP-соединения с портом сканируемой машины (т.е. необходимо использовать опцию '-sT'). Nmap опрашивает identd сканируемого хоста параллельно с каждым открытым портом. Естественно, этот метод не будет работать, если на целевом хосте не запущен identd.

-f (use fragmentation) - эта опция используется совместно с SYN, FIN, Xmas или NULL-сканировании и указывает на необходимость использования IP-фрагментации с малым размером фрагментов. Идея заключается в том, чтобы разбить TCP-заголовок пакета на несколько фрагментов (обычно два) на стороне источника. Сканируемый хост "собирает" эти IP-фрагменты в один TCP-пакет.

Это значительно усложняет фильтрацию пакетов, работу систем обнаружения и других подобных средств защиты, и позволяет Nmap скрыть свои действия. Будьте осторожны, используя эту опцию! Некоторые программы "зависают" при попытке собрать такие маленькие фрагменты. Так, например, весьма неплохой "сниффер" завис сразу же при получении первого 36-байтного фрагмента. А следом за ним пришел 24-байтный фрагмент.

-v (verbose output) - использовать режим "подробного отчета". Эту опцию рекомендуется использовать в любых случаях, поскольку при этом Nmap подробно сообщает о ходе выполнения текущей операции. Для получения лучшего эффекта можно указать ее дважды. Ну а если вы укажете еще опцию '-d', то от скроллинга экрана у вас может закружиться голова.

-h (show help) - печатает справку по использованию Nmap с указанием опций и краткого их описания, не запуская саму программу.

-oN <имя_файла> (output Normal) - записывает результаты сканирования в указанный файл в удобной для пользователя форме.

-oX <имя_файла> (output XML) - записывает результаты сканирования в файл, указанный в качестве аргумента, в формате XML.Это позволяет программам легче интерпретировать вывод Nmap'а. Вы можете использовать аргумент '-' (без кавычек) для вывода на stdout. Нормальный вывод в этом случае будет подавлен. Document Type Definition (DTD) расшифровывающий структуру результатов Nmap в формате XML доступен здесь: http://www.insecure.org/nmap/nmap.dtd.

-oG <имя_файла> (output Grepable) - записывает результаты сканирования в файл, указанный в качестве аргумента, в формате,удобном для команд типа grep. Это простой формат, при котором все данные записываются в одну строку. Формат пришел на смену опции -oM (см. ранние версии) и использовался для взаимодействия с другими программами. Сейчас мы рекомендуем использовать XML. Также возможно использование аргумента '-'.

-oA <базовое_имя_файла> (output All) - записывает результаты во всех основных форматах (нормальном, grep и XML). Вам необходимо указать базу имени, и выходные файлы будут называться base.nmap, base.gnmap и base.xml.

-oS <имя_файла> (output Scipt kiddie) - Эту возможность мы предусмотрели для любителей языка s|
--resume <имя_файла> - если вы прервали сканирование сети нажатием комбинации , то вы можете продолжить его, используя эту опцию, если результаты сканирования записывались в лог-файл с помощью опций '-oG' или '-oN'. В этом случае запустите Nmap с указанием этой опции и имени файла, в который производилась запись предыдущего сеанса. При этом никаких других опций указывать не нужно, поскольку при возобновлении сканирования будут использоваться опции, указанные в предыдущем сеансе. Nmap продолжит сканирование с адреса, следующего за последним "завершенным".

--append_output Дописывать, а не удалать лог-файл.

-iL <имя_файла> (input List) - считывает описание целевых хостов из текстового файла. Файл должен содержать список имен хостов или IP-адресов, разделенных пробелами, знаками табуляции или комбинацией (каждый хост - с новой строки). Если вы хотите использовать StdIn в качестве источника информации о хостах, укажите вместо имени файла символ '-'. Более подробная информация о форматах выражений приведены в разделе "Способы задания целевого хоста".

-iR (input Random) - если вы укажете эту опцию, Nmap будет сканировать случайно выбранные им хосты, адреса которых получены с помощью генератора случайных величин. Этот процесс будет длиться, пока вы его не остановите. Функция может пригодиться для статистического исследования Internet.

-p <диапазон(ы)_портов> (ports) - эта опция указывает Nmap, какие порты необходимо просканировать. Например, '-p23' означает сканирование 23 порта на целевой машины. Если указано выражение типа '-p 20-30,139,60000-', Nmap будет сканировать порты с номерами с 20 по 30 включительно, 139 и от 60000 и выше (до 65535). По умолчанию Nmap сканирует все порты в диапазоне 1-1024, поскольку все они перечислены в файле services.

-F (Fast scan) - быстрое сканирование. Указывает Nmap на необходимость сканирования портов только тех служб, которые перечислены в файле services. Сканирование проходит гораздо быстрее, чем если бы Nmap сканировал все 65535 портов.

-D <ложный_хост1,[ложный_хост2],[,ME],...> (use Decoy hosts). - В этом режиме Nmap "создает" ложные хосты, адреса которых задаются произвольно и указываются в качестве аргументов. При этом на стороне сканируемого хоста создается видимость, что производится одновременное сканирование с различных хостов (обладающих разными IP-адресами), что очень затрудняет обнаружение вашего реального IP-адреса.

Адреса разделяются запятой. Вы также можете указать свой IP-адрес (аргумент 'ME') в качестве одного из хостов. Однако если вы поместили аргумент 'ME' на шестой позиции и выше, некоторые скан-детекторы (например Solar Designer's Excellent Scanlogd) покажут ваш IP-адрес как наиболее предполагаемый. Если вы явно не указали аргумент 'ME', Nmap поместит вас на случайную позицию. Также вы можете указать имена хостов вместо их IP-адресов. Заметим, что хосты, указанные вами в качестве ложных, должны реально существовать и функционировать, в противном случае вы можете "затопить" сканируемый хост SYN-пакетами. Это также может способствовать обнаружению вашего хоста, потому что если ложные хосты не функционируют, то единственным работающим хостом окажется ваш.

Стоит заметить, что некоторые скан-детекторы блокируют доступ хосту, осуществившему попытку сканирования. Поэтому ложный хост может потерять соединение со сканируемым хостом. Эта ситуация может возникнуть даже в том случае, если вы указали в качестве ложного хоста адрес шлюза или 'localhost'. Поэтому аккуратно используйте эту опцию.

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

-S (set Source) - Если Nmap не смог автоматически определить IP-адрес вашего хоста (о чем вы получили соответствующее сообщение), вам необходимо самостоятельно указать IP-адрес, используя его в качестве аргумента данной опции (т.е. адрес интерфейса, который вы хотите использовать). Другое применение данной опции - для создания видимости сканирования целевого хоста кем-то другим. В этом случае вы не сможете получить результат, однако на стороне сканируемого хоста создается видимость сканирования с указанного вами адреса. Для этого совместно с '-S'необходимо использовать опцию '-e'.

-e <интерфейс> (interface) - указывает Nmap, какой интерфейс будет использоваться для приема/передачи пакетов. Имя интерфейса указывается в качестве аргумента опции. Nmap обычно сам определяет интерфейс, однако выдаст вам соответствующее сообщение, если по каким-либо причинам он не смог этого сделать.

-g <номер_порта> - указывает номер порта на вашем компьютере, который будет использоваться Nmap для осуществления сканирования. Многие файрволлы и пакетные фильтры позволяют проходить пакетам DNS (порт 53) и FTP-DATA (порт 20) к защищаемому ими хосту и установить соединение. Этот момент является большой "дырой" в безопасности файрволлов, поэтому атакующему ничего не стоит отправлять нужные ему пакеты через 53-й или 20-й порт.

Для сканирования UDP-портов Nmap пробует сначала 53-й порт, а затем 20-й. Для TCP-портов - наоборот. Заметим, что это влияет на поле "порт источника" в запросе и поэтому не всегда работает. Например, вы не сможете определить характер изменения ISN, всвязи с чем Nmap самостоятельно сменит номер порта для этой цели, даже если вы используете опцию '-g'.

--data_length <число> - Обычно Nmap посылает пакет, содержащий только загловок. Таким образом, TCP-пакет имеет длину 40 байт, а ICMP "echo requests" - 28. Эта опция добавляет к большинству пакетов (кроме пакетов для определения ОС) указанное число нулевых байт. Добавляет конспирации.

-n Никогда не преобразовывать адреса обнаруженных хостов в DNS-адрес. Увеличивает скорость сканирования.

-R Всегда преобразовывать адреса обнаруженных хостов в DNS-адрес.

-r Не переставлять номера сканируемых портов случайным образом.

-ttl <значение> Записывает в поле TTL отправляемых пакетов IPv4 заданное значение.

--randomize_hosts - указывает Nmap на необходимость случайной перестановки каждой группы из 2048 хостов перед непосредственным их сканированием. Эта опция делает сканирование менее заметным для различных систем сетевого мониторинга, особенно если вы используете ее совместно с опцией настройки времени, устанавливающей более медленное сканирование.

-M <максимум_сокетов> (Max sockets) - устанавливает максимальное количество сокетов, используемых параллельно в методе TCP connect() сканирования. Установка меньшего значения немного замедляет процесс сканирования, но предотвращает "завал" сканируемого хоста. Для последней цели лучше всего использовать опцию '-sS', так как SYN-сканирование гораздо легче "переносится" операционными системами.

--packet_trace Показывать все принимаемые и передаваемые пакеты в формате TCPDump.

--datadir [каталог] При запуске Nmap считывает данные из файлов nmap-services, nmap-protocols, nmap-rpc, и nmap-os-fingerprints. Их местоположение Nmap берет из переменной --nmapdir. Затем проверяется переменная окружения NMAPDIR, после чего ~/nmap, а затем путь наподобие /usr/share/nmap . А потом Nmap ищет их в текущем каталоге. Этой опцией можно явно задать положение этих файлов.

Опции настройки временных параметров

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

-T (Timing options) - эта опция устанавливает временной режим сканирования. Требуемый режим указывается в качестве аргумента. Режим Paranoid используется в случае, когда очень велика вероятность использования скан-детекторов. В этом режиме сканирование проходит очень медленно. Параллельне сканирование не используется. Вместо этого Nmap проводит сканирование последовательно, с интервалом по меньшей мере 5 минут между посылкой пакетов.

Режим Sneaky похож на режим Paranoid. Разница заключается в том, что интервал между посылкой двух пакетов составляет 15 секунд.

Режим Polite используется в случае, когда необходимо минимизировать нагрузку на сеть и уменьшить вероятность "завала" сканируемого хоста. В этом режиме тесты проходят последовательно с интервалом минимум 0,4 секунды.

Режим Normal используется Nmap по умолчанию. В этом режиме сканирование производится с максимально возможной скоростью, и по возможности без перегрузки сети и возникновения ошибок.

В режиме Aggressive устанавливается ограничение на сканирование одного хоста, равное 5 минутам, и, кроме того, время ожидания ответа на запрос не превышает 1,25 секунды.

Режим Insane применяется только при сканировании очень быстрых сетей. Время сканирования одного хоста составляет 75 секунд, а ожидание ответа на запрос - 0,3 секунды.

Каждому режиму присвоен соответствующий номер, и вы можете указать его вместо полного названия режима. Так, опция '-T0' означает режим Paranoid, а '-T5' - Insane. Нумерация соответствует порядку, в котором они были перечислены выше. Заметим, что опция '-T' осуществляет настройку Nmap на высоком уровне, и не должна использоваться с опциями, приведенными ниже (они обеспечивают низкоуровневую настройку).

--host_timeout <миллисекунд> - устанавливает время, отводимое Nmap на полное сканирование одного хоста, прежде чем он перейдет к очередному IP-адресу. По умолчанию этот параметр отсутствует, т.е. Nmap не переходит к очередному адресу до окончания сканирования текущего.

--max_rtt_timeout <миллисекунд> (maximal round-trip time timeout) - устанавливает верхнюю границу временного интервала, в течение которого Nmap ожидает ответ на посланный запрос, прежде чем повторить запрос либо послать новый. По умолчанию это значение установлено равным 5000 миллисекунд.

--min_rtt_timeout <миллисекунд> - Если сканируемый хост немедленно отвечает на посланный запрос, Nmap сразу же передает следующий, сэкономив тем самым очень много времени. Это ускоряет сканирование, но может привести к потере пакетов с ответами, пришедшими несколько позже, чем обычно. Эта опция устанавливает нижнюю границу времени ожидания ответа, т.е. Nmap в любом случае будет ждать в течении указанного вами времени не зависимо от того, пришел ответ или нет.

--initial_rtt_timeout <миллисекунд> - устанавливает время, отводимое на начальный тест. Эта опция используется в основном для сканирования хостов, защищенных файрволлом, совместно с опцией '-P0'. Обычно Nmap автоматически выбирает оптимальное значение этого параметра. Значение по умолчанию составляет 6000 миллисекунд.

--max_parallelism <количество> - устанавливает максимальное количество параллельных процессов сканирования, используемых Nmap. Установка этого параметра равным 1 означает, что Nmap никогда не будет сканировать более одного порта в один момент времени.

--min_parallelism <количество> - устанавливает минимальное количество параллельных процессов сканирования, используемых Nmap. Увеличивает скорость прохождения пакетов через файрволлы.

--scan_delay <миллисекунд> - устанавливает минимальное время задержки между тестами. Эта опция может использоваться для снижения нагрузки на сеть и уменьшения вероятности обнаружения сканирования.
СПОСОБЫ ЗАДАНИЯ ЦЕЛЕВОГО ХОСТА
Все, что не является опцией или ее аргументом, Nmap воспринимает как адрес или имя целевого хоста (т.е. хоста, подвергаемого сканированию). Простейший способ задать сканируемый хост - указать его имя или адрес в командной строке после указания опций и аргументов. Если вы хотите просканировать подсеть IP-адресов, вам необходимо указать параметр '/' ("маска") после имени или IP-адреса сканируемого хоста. Маска может принимать следующие значения:
'/0' - сканировать весь Интернет;

'/16' - сканировать адреса класса B;

'/24' - сканировать адреса класса С;

'/32' - сканировать только указанный хост.
Nmap позволяет также гибко указать целевые IP-адреса, используя списки и диапазоны для каждого их элемента. Например, необходимо просканировать подсеть класса B с адресом 128.210.*.*. Задать эту сеть можно любым из следующих способов:
128.210.*.*

128.210.0-255.0-255

128.210.1-50,51-255.1,2,3,4,5-255

128.210.0.0/16
Все эти строки эквивалентны. Заметим, что если вы используете "звездочку" ('*'), то в большинстве оболочек вам понадобится отделить ее обратной "косой чертой" либо апострофами. Приведем еще один пример. Если вы указали в качестве целевого IP-адреса строку '*.*.5.6-7', Nmap отсканирует все IP-адреса, оканчивающиеся на 5.6 либо 5.7. Более подробно примеры вызова программы Nmap приведены ниже.
ПРИМЕРЫ
Приведем некоторые примеры использования Nmap и соответствующие способы запуска программы с указанием параметров в командной строке.

nmap -v target.example.com

Сканировать все зарезервированные TCP-порты на хосте target.example.com. Опция '-v' означает включение режима подробного отчета о ходе процесса сканирования.

nmap -sS -O target.example.com/24

Запускает SYN-сканирование всех 255 машин с адресами класса C, одной из которых является target.example.com. Кроме того, осуществляется определение ОС каждого из сканируемых хостов. Для этого вам необходим статус root.

nmap -sX -p 22,53,110,143,4564 128.210.*.1-127

Осуществляет Xmas-сканирование первой половины адресов (0-127) каждой из 255 подсетей класса B адресного пространства 128.210.*.*. На этих хостах тестируется присутствие sshd (22 порт), DNS (53), pop3d (110), imapd (143) и состояние порта 4564. Обращаем внимание, что Xmas-сканирование не будет работать с ОС Windows, CISCO, IRIX, HP/UX и BSDI.

nmap -v --randomize_hosts -p80 *.*.2.3-5

Nmap будет искать все машины, IP-адрес которых оканчивается на .2.3, .2.4 и .2.5. Если ваш статус root, вы также можете просканировать порты обнаруженных хостов, указав опцию '-sS'. Вы найдете много интересных машин, адреса которых начинаются на 127. Поэтому мы рекомендуем вместо первой звездочки указать '127-222'. Попробуйте обязательно!

host -l company.com |cut '-d' -f 4| ./nmap -v -iL

Просканировать серверы DNS зоны и найти хосты в домене company.com, передав затем в Nmap их адреса. Так выглядит команда для GNU/Linux. Для других ОС она будет выглядеть несколько иначе.
ВОЗМОЖНЫЕ ОШИБКИ
Если вы обнаружили какие-либо симптомы, говорящие о неверной работе программы, или нашли место в коде, приводящее к такому эффекту - немедленно отправьте нам эту информацию. Не забывайте также отправлять нам отпечатки ОС, чтобы пополнять базу данных Nmap. Программа выдаст вам соответствующее сообщение и URL, где она обнаружила новый отпечаток.
АВТОРЫ
Базовая версия:


fyodor@insecure.org

http://www.insecure.org/
Русская версия:


alex@cherepovets-city.ru

http://www.cherepovets-city.ru/insecure
РАСПРОСТРАНЕНИЕ
Новейшую версию Nmap и RuNmap вы можете получить по адресам

http://www.cherepovets-city.ru/insecure

http://www.insecure.org/

nmap (базовая версия) (c) 1997-2003 Fyodor

runmap (русская версия) (c) 1999-2003 Алексей Волков

Библиотека libcap распространяется совместно с Nmap. Владельцы авторского права: Van Jacobson, Craig Leres и Steven McCanne, Национальная лаборатория Lawrence Berkley Калифорнийского университета, Беркли, Калифорния. Версия, распространяемая с Nmap, может быть модифицирована. Исходный код библиотеки можно получить по адресу ftp://ftp.ee.lbl.gov/libcap.tar.gz.

Эта программа является бесплатным программным обеспечением. Вы можете свободно распространять и/или модифицировать ее в соответствии с требованиями GNU General Public License, опубликованной Free Software Foundation, версия 2. Если вас не устраивает данная лицензия, мы (Insecure.Org) готовы рассмотреть ваши предложения.

Программа поставляется без предоставления каких-либо гарантий. Вопросы и комментарии отправляйте по адресу:

alex@cherepovets-city.ru

(c) 2003 Алексей Волков.

Источник

воскресенье, 8 февраля 2009 г.

Nero .nrg to .iso

Пришлось прожигать Nero образ и соответственно столкнулся свопросом его конвертации в ISO формат.
Как всегда что-нибудь нашлось под рукой ))
# yum list | grep nrg
nrg2iso.x86_64 0.4-4.fc10 fedora
# yum install nrg2iso
# nrg2iso image.nrg image.iso

пятница, 6 февраля 2009 г.

Fedora 10 x86_64 и Adobe Flash Player

Наконец компания Adobe выпустила и опубликовала тестовую версию Flash Player для 64-х битных Linux систем. Данную версию очень долго все ждали. Ранее для работы Flash Player, пользователям необходимо было устанавливать NSPluginwrapper или держать 32-х битную версию браузера со всеми зависимостями.
Пользователям Fedora уже доступная данная версия и работает довольно стабильно. С выходом 10-ой версии Flash Player пропала необходимость в библиотеке libflashsupport, которая позволяла использовать протокол SSL и корректно работать со звуком. Новая версия теперь поддерживает аппаратное ускорение и функцию WMODE (прозрачность).

На официальном сайте отмечано, что есть тестовые версии для Sun Solaris (архмтектуры x86 и SPARC).

Мною была протестирована новая версия на Fedora 10 (Cambridge) x86_64. Не было замечено ни единой проблемы. Тестирование производилось в Firefox 3.0.4 и Opera 9.62 (x86-64) без nspluginwrapper и libflashsupport. Но рекомендуется оставить nspluginwrapper с включенным Selinux для обеспечения лучшей безопасности.

Инструкция установки:
1. удаляем придыдущие версии:

yum remove libflashsupport nspluginwrapper.i386 flash\*

mozilla-plugin-config -r


2. закачиваем и сразу распаковываем архив:

curl http://download.macromedia.com/pub/labs/flashplayer10/libflashplayer-10.0.d20.7.linux-x86_64.so.tar.gz|tar -C /usr/lib64/mozilla/plugins/ -xzf -

3. Перезапускаем nspluginwrapper 64-битный (опционально):

mozilla-plugin-config -i

4. Добавляем путь /usr/lib64/mozilla/plugins в список путей поиска плагинов Opera (опционально)

Оригинал статьи.

четверг, 5 февраля 2009 г.

Cамый простой интерфейс к netfilter

В данной статье я расскажу о самом простом интерфейсе для netfilter/iptables - ufw. Он стоит по умолчанию в последних версиях ubuntu. По умолчанию он выключен, для включения достаточно набрать:
sudo ufw enable

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

Чтоб разрешить входящие соединения например для почтового сервера достаточно сказать:
# ufw allow 25/tcp
или
# ufw allow smtp

Вот как выглядят другие правила:
запретить подсети 10.0.0.0/8 соединяться с 192.168.0.1 на 25 порт по протоколу tcp
# ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 25
разрешить любые соединения с сети 192.168.0.0/24
# ufw allow from 192.168.0.0/24
запретить 1.2.3.4 соединятся с данной машиной по udp с портом 514
# ufw deny proto udp from 1.2.3.4 to any port 514
разрешить соединение с 1.2.3.5:5469 к 1.2.3.4:5469 по udp
# ufw allow proto udp from 1.2.3.5 port 5469 to 1.2.3.4 port 5469

правила применяются сразу и сохраняются при перезагрузке (/var/lib/ufw/user.rules), просмотреть текущую конфигурацию можно так:
# ufw status

Для тонкой настройки можно отредактировать файлы лежащие в /etc/ufw/ например разрешить форвардинг, сделать маскарадинг или проброс порта.
/etc/ufw/before.rules - правила применяемые до применения /var/lib/ufw/user.rules
/etc/ufw/after.rules - правила применяемые после применения /var/lib/ufw/user.rules
/etc/ufw/sysctl.conf - настройки опций ядра

графическая обертка - http://gufw.tuxfamily.org/

Взято с http://www.sanych.nnov.ru/content/camyj_prostoj_interfejs_k_netfilter

Список команд для linux и их краткое описание....

Сабж, иногда бывает полезно для прохождения тестов ))

среда, 4 февраля 2009 г.

ICQ, AOL и иже с ними!!! Достало!!!

После появления в очередной раз такого сообщения при попытке подключить аську:

=============================
Ñèñòåìíîå ñîîáùåíèå
=============================
ICQ íå ïîääåðæèâàåò èñïîëüçóåìóþ âàìè âåðñèþ. Ñêà÷àéòå áåñïëàòíóþ àâòîðèçîâàííóþ âåðñèþ ICQ ñ îôèöèàëüíîãî web-ñàéòà ICQ.

=============================
System Message
=============================
The version you are using is not supported by ICQ. Download a free authorized ICQ version from ICQ's official website.

Было принято решение полностью перейти на jabber. Тем более что gmail'ом пользуюсь давным давно.
Для линуксойдов этот протокол из коробки поддерживается pidgin\kopete, а товарищам с винды рекомендую качать клиент здесь...

PS: Есть pidgin и для Windows и для Mac OS X

воскресенье, 1 февраля 2009 г.

Разделение ширины канала в Linux

Linux Traffic Shaping За 5 Минут При Помощи htb.init

Если у Вас есть Ваша собственная домашняя сеть с двумя или более компьютерами и она подключена к интернету, вы точно знаете о тех проблемах с одновременным доступом к сети, которые практически неизбежны при таком подключении. Самой большой и раздражающей проблемой является разделение ширины канала между всеми участниками сети: когда вы пытаетесь работать серез ssh с удаленным сервером, а в этот момент ваша wife/брат/друг решает поглядеть новый и очень классный видео клип с Google Video или YouTube, Ваше соединение замирает и вы можете забыть о комфортабельной работе . В этой маленькой статье я дам вам простое решение этой проблемы, которое позволит вам делать все, что угодно не думая о проблемах разделения трафика!

Для начала замечу, что Ваша сеть должна быть подключена к Internet при помощи Linux сервера. Если Вы подключены через какой-то тупой аппаратный маршрутизатор, то Вам сильно не повезло и вы не сможете воспользоваться приведенным примером.

Если же Ваш сервер работает под управлением Linux, тогда используйте слудеющие ниже интсрукции чтобы сделать вашу жизнь проще. Замечу, что у меня интернет подключен к интерфейсу eth0, а локальная сеть - к eth1, канал у меня - симметричное подслючение на 512Kbit/s, потому все примеры будут очновываться на этих параметрах:

1. Скачайте скрипт htb.init с сайта sourceforge.
2. Распакуйте его и положите в /sbin/htb.init, сменив ему аттрибуты, чтобы
сделать его исполнимым:

# chmod +x /sbin/htb.init

3. Создайте каталоги для конфигурации и кеша htb.init:

# mkdir -p /etc/sysconfig/htb
# mkdir -p /var/cache/htb.init

4. Перейдите в каталог коныигурации htb.initи создайте следующие конфигурационные файлы для исходящего трафика:
Файл ‘eth0′ со следующим содержимым:

DEFAULT=30
R2Q=100

Файл ‘eth0-2.root’ со следующим содержимым:

# root class containing outgoing bandwidth
RATE=512Kbit

Файл ‘eth0-2:10.ssh’ со следующим содержимым:

# class for outgoing ssh
RATE=256Kbit
CEIL=512Kbit
LEAF=sfq
RULE=*:22
PRIO=10

И, наконец, файл ‘eth0-2:30.default’ со следующим содержимым:

# default class for outgoing traffic
RATE=256Kbit
CEIL=512Kbit
LEAF=sfq
PRIO=30

5. Теперь, создайте набор файлов для управления входящим трафиком:
Файл ‘eth1′ со следующим содержимым:

DEFAULT=30
R2Q=100


Файл ‘eth1-2.root’ со следующим содержимым:

# root class containing incoming bandwidth
RATE=512Kbit

Файл ‘eth1-2:10.ssh’ со следующим содержимым:

# class for incoming ssh
RATE=256Kbit
CEIL=512Kbit
LEAF=sfq
RULE=*:22,
PRIO=10

Файл ‘eth1-2:20.mytraf’ для конфигурирования параметров канала на Ваш компьютер:

# class for my incoming traffic
RATE=256Kbit
CEIL=512Kbit
LEAF=sfq
RULE=192.168.0.2 # this is my ip
PRIO=20

И файл ‘eth1-2:30.default’ для параметров канала по умолчанию для остальных со следующим содержимым:

# default class for outgoing traffic
RATE=256Kbit
CEIL=512Kbit
LEAF=sfq
PRIO=30

6. Последний шаг - запуск системы контроля трафика при помощи следующей команды:

# /sbin/htb.init start

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

Оригинал статьи

вторник, 20 января 2009 г.

Apache2 как прокси-сервер

Примечание: уж больно не привычный подход к вопросу 8-) Читаем - и получаем удовольствие!


Взято с http://www.linuxcenter.ru

Apache httpd давно завоевал славу самого популярного в мире web-сервера. Однако, многие даже не догадываются, что он может составить конкруенцию не только IIS, но и Squid…

Рассмотрим типичную для небольшой организации конструкцию: шлюз в Интернет, работающий под управлением Unix или Microsoft Windows, прокси-сервер, web-сервер сети Интранет, почтовый сервер и т.д. Оказывается, число ее элементов можно несколько сократить, и в соответствии с золотым правилом инженера, увеличить тем самым общую надежность системы. Сегодня мы поговорим о делегировании Apache основных функций кэширующего прокси-сервера (например, Squid) и даже кое-чего сверх них. В качестве базовой ОС будем использовать Linux, хотя многое из сказанного ниже может быть без ограничения общности применено и для других платформ.

Согласен, использование Apache в качестве прокси-сервера выглядит несколько нестандартно, однако, оно имеет ряд преимуществ. Это, в первую очередь, возможность динамического сжатия документов, отправляемых клиентам, что может вылиться в серьезную экономию, если для передачи данных используется арендованный канал с помегабайтной оплатой входящего трафика (допустим, офисов у фирмы два, а сервер всего один). Кроме того, оно сокращает число сервисов, работающих в системе, а значит, у потенциального злоумышленника будет меньше мишеней для проведения атаки, а у администратора, в свою очередь, меньше объектов, требующих неусыпного наблюдения и поддержки. Впрочем, как и все в нашем неидеальном мире, Apache в роли прокси-сервера имеет и некоторые недостатки, как-то: содержит экспериментальные или написанные сторонними разработчиками модули (при желании можно обойтись и без них) и неизвестным образом ведет себя при увеличении нагрузки (вполне допускаю, что все будет прекрасно работать, однако, специализированного стресс-тестирования не проводил). Какая чаша перевесит – решать вам. Руководствуясь личным опытом, я вполне могу рекомендовать применение прокси-сервера на базе Apache в небольших сетях.

Покончив с теоретическими вопросами, перейдем к техническим деталям. Для реализации задуманного нам понадобится Apache версии 2.0.53 и выше (более ранние версии имеют ошибки в mod_cache, препятствующие нормальной работе с кэшированными документами) с включенными mod_proxy, mod_cache и mod_deflate. В отличие от специализированных решений вроде упомянутого выше Squid, прокси-сервер на базе Apache имеет существенно модульную архитектуру, все мыслимые и немыслимые функции которой построены по принципу: общая база + провайдеры. Мы не раз убедимся в этом по ходу изложения. Итак, приступим к первой фазе:
Запуск прокси-сервера

Для того, чтобы Apache мог принимать и обрабатывать прокси-запросы, необходимо загрузить модуль mod_proxy, входящий в стандартный комплект поставки и прекрасно документированный. Здесь и далее в этой статье мы не будем дублировать страницы руководства, останавливаясь лишь на нетривиальных моментах. mod_proxy, как и большая часть других упомянутых в статье модулей, обычно не собирается в стандартной конфигурации Apache, поэтому вам, вероятно, придется заново скомпилировать сервер, указав соответствующие параметры сценарию configure. За поддержку mod_proxy отвечает опция «--enable-proxy», прочие же параметры я буду приводить в тексте в скобках после имени соответствующего модуля.

В соответствии с представленной выше формулой, mod_proxy образует фундамент, на котором работает система поддержки прокси-запросов. Их реализации, специфичные для различных протоколов, вынесены в отдельные модули: mod_proxy_http (--enable-proxy-http), mod_proxy_ftp (--enable-proxy-ftp) и mod_proxy_connect (--enable-proxy-connect). Последний из них необходим для работы с запросами HTTP CONNECT, в частности, защищенными SSL-соединениями.

Прежде чем говорить о настройке mod_proxy, сделаем пару замечаний. Первое: Apache поддерживает два типа прокси-серверов: прямые (forwarding proxy) и обратные (reverse proxy). Нас будут интересовать исключительно прямые прокси-сервера. Обратные прокси применяются для балансировки нагрузки и не имеют ничего общего с темой данной статьи. Второе: прокси-запрос не является для Apache чем-то чужеродным. Заглянув в исходные тексты сервера, вы обнаружите, что все клиентские запросы, независимо от того, кому они адресованы, описываются одной и той же структурой. Apache помечает запросы, предназначенные другим серверам, специальным флагом, но не более того. Из этого, к примеру, следует, что в параметрах модуля mod_proxy отсутствует директива для указания порта, который следует использовать для приема входящих соединений (сноска: напомним, что согласно общепринятым соглашениям для этих целей используется порт 3128). Apache способен принимать и обрабатывать прокси-запросы на любом порту, который разрешен к “прослушиванию“ директивой Listen. Впрочем, на практике зачастую оказывается удобнее провести границу между локальными и переадресуемыми запросами. Для достижения этой цели можно создать специальный виртуальный хост, например, на порту 3128, пользуясь директивой VirtualHost. Подробности ищите в документации к Apache. Дальнейшее изложение неявно предполагает, что вы уже настроили виртуальный хост и размещаете предлагаемые директивы внутри принадлежащей ему секции httpd.conf (Подсказка для самых нетерпеливых: в конце статьи приведен завершенный фрагмент конфигурационного файла, практически пригодный для вставки по методу Ctrl-C – Ctrl-V)

Чтобы Apache мог принимать прокси-запросы, необходимо явным образом разрешить их, используя директиву “ProxyRequests On“. Однако, не спешите этого делать, не позаботившись о безопасности сетевых соединений! Оплачивать мегабайты, загруженные предприимчивыми подростками с ProxyHunter'ом в руках – не самое приятное времяпровождение. Параметры доступа к серверу задаются в секции и, в частности, могут иметь следующий вид:

# Для всех прокси-запросов

Order deny,allow # Сперва запретить, потом разрешить

Deny from All # Запретить всем

Allow from 192.168.0.1/24 # Разрешить доступ из внутренней сети организации



Здесь реализована простейшая схема контроля доступа, базирующаяся на IP-адресах клиентов. Во многих случаях ее будет достаточно. Но что делать, если вы хотите разрешить использование сервера с компьютеров, не имеющих фиксированного IP-адреса (например, домашних машин особо приближенных сотрудников, которые не прочь получить “городской прокси“)? Для этих целей можно применить авторизацию по имени пользователя и паролю. Поскольку директивы контроля доступа, заключенные между тегами и на самом деле обрабатываются теми же самыми модулями, что следят за «неприкосновенностью» локальных каталогов сервера (ну, не говорил ли я вам, что Apache практически не отличает прокси-запрос от обычного?), вы можете использовать привычную конструкцию:

# Для всех прокси-запросов

AuthName “Tresspassers“ # «Посторонним в.»

AuthFile /some/secret/file # Имя файла, содержащего реквизиты пользователей

AuthType Basic # Метод авторизации — базовый

Require valid-user # Пропускать всех, кто перечислен в /some/secret/file



Естественно, предварительно следует создать файл /some/secret/file при помощи утилиты htpasswd (1) и загрузить соответствующие модули (mod_access и/или mod_auth). При необходимости оба метода можно комбинировать. При этом бывает полезно пользоваться директивой “Satisfy All|Any“, указывающей, требовать ли от потенциального клиента соответствия всем условиям (применительно к нашей задаче это означает «иметь разрешенный IP-адрес и ввести правильное имя пользователя/пароль») или лишь одному из них. Последний вариант наиболее интересен с практической точки зрения, поскольку позволяет избежать раздражающей процедуры ввода пароля для пользователей внутренней сети организации.

Внеся необходимые изменения в httpd.conf, не забудьте перезапустить Apache. После этого откройте свой любимый браузер и удостоверьтесь, что настройки безопасности действуют именно так, как вы задумали.
Кэширование

Мы успешно справились с первым этапом, а именно: научили Apache обрабатывать запросы, адресованные внешним серверам. Нашей следующей задачей будет организация локального кэширования запрашиваемых данных. По некоторым сведениям, это позволяет сэкономить 10-20 процентов внешнего трафика, что, согласитесь, не так уж мало.

Кэшированием данных в Apache заведует модуль mod_cache (--enable-cache). Именно он принимает решение о том, допустимо ли локальное сохранение того или иного объекта. Непосредственной записью данных на носители занимаются модули-“провайдеры“, из которых нас в первую очередь будет интересовать mod_disk_cache (--enable-disk-cache), реализующий хранение кэша на жестком диске.

Отметим, что в Apache 2.0 оба этих модуля (mod_cache и mod_disk_cache) имеют статус экспериментальных. Ситуация обещает измениться в Apache 2.1, который пока что пребывает в состоянии альфа-версии.

Чтобы включить кэширование, используйте директиву “CacheEnable disk /“, где “disk“ - идентификатор модуля-провайдера. Местоположение дискового кэша и его желаемый объем (в килобайтах) задается соответственно директивами “CacheRoot <имя каталога>“ и «CacheSize », относящимися уже не к mod_cache, а mod_disk_cache. Apache предпринимает меры к тому, чтобы конфиденциальные данные никогда не попадали в кэш сервера, однако, лишняя безопасность все же не повредит. Я рекомендую сделать каталог, в котором хранится кэш, недоступным ни для кого, кроме Apache.

# chown apache:apache /path/to/cache

# chmod 0700 /path/to/cache

Естественно, если в вашей системе Apache работает от имени другого пользователя, имя и группу владельца каталога также следует изменить соответствующим образом.

В целях повышения производительности дисковый кэш имеет многоуровневую структуру. Глубиной вложенности подкаталогов и максимальной длиной их имени управляют директивы CacheDirLevels и CacheDirLength. По умолчанию для них используются следующие значения: CacheDirLevels 2, CacheDirLength 3

К сожалению, Apache 2.0 не имеет никаких штатных средств для управления содержимым кэша. Вы не можете постепенно удалять старые данные или делать это при превышении кэшем некоторой дисковой квоты. Часть из этих проблем решена в Apache 2.1 при помощи специальной утилиты htcacheclean, которая очищает кэш по мере необходимости. Мне не известно, перенесена ли она в ветвь 2.0, однако, в качестве некоторой замены, вы можете написать сценарий, периодически очищающий каталог (и, для верности, перезапускающий Apache), самостоятельно.

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

На данном этапе мы завершили все работы, необходимые для получения “идентичного натуральному ароматизатора“ Squid, а точнее, того подмножества его функций, которое используется в типичной малой сети. Теперь мы пойдем несколько дальше и реализуем нечто новое – прозрачное сжатие web-страниц.
Сжатие

Модуль для сжатия HTTP-документов известен каждому уважающему себя web-мастеру. Называется он mod_deflate (--enable-deflate), и, к вящей радости замученного бесконечными сборками из исходных текстов читателя, обычно включен даже в стандартной конфигурации. Его основное предназначение – сжимать локальные HMTL-страницы перед отправкой их пользователю, но, коль скоро Apache “близорук“ и не делает особых различий между обычным и переадресованным запросом, он вполне годится и для последних.

После своей загрузки mod_deflate создает фильтр “DEFLATE“, который может быть установлен стандартным образом, например, при помощи директивы “SetOutputFilter DEFLATE“. Руководство к модулю рекомендует поостеречься и отключить сжатие данных для браузеров, которые, несмотря на заявленную функциональность (сноска: Отметим, что отсечение клиентов, не поддерживающих сжатие данных, mod_deflate производит сам, безо всякого участия администратора) не могут обеспечить должный уровень поддержки (например, Netscape Navigator 4.x может корректно обрабатывать только сжатые данные типа text/html, а его версии 4.06-4.08 не способны даже на это), однако, применительно к прокси-серверу это имеет смысл лишь в том случае, когда такие “динозавры“ до сих пор имеют хождение в вашей организации. Из других директив, поддерживаемых mod_deflate, следует упомянуть DeflateCompressionLevel,

устанавливающую степень сжатия данных (число от 0 до 9). Большее значение этой величины обеспечивает меньший размер результирующих файлов, но повышает нагрузку на процессор. Для среднестатистической системы оптимальным выбором считается 6. Вы можете не использовать эту директиву, тогда будут иметь место значения по умолчанию, принятые при сборке системной библиотеки Zlib.
mod_filter

Казалось бы, все хорошо. Наш Apache теперь умеет обрабатывать прокси-запросы, хранить их в кэше и даже сжимать перед отправкой. Однако, спустя некоторое (обычно – весьма непродолжительное) время обнаруживаются странные артефакты. Архивы почему-то оказываются упакованными дважды, что пугает неподготовленных пользователей. И тут же возникают два вековечных русских вопроса: “Кто виноват?“ и “Что делать?“

Благо, за ответом на первый из них далеко ходить не надо. Как наверняка уже догадался проницательный читатель, проблема кроется в излишней «жадности» нашего mod_deflate, который сжимает все и вся, тогда как браузер готов распаковать лишь вполне определенные типы файлов: текст, HTML-страницы, графические изображения… Лежащее на поверхности решение – ограничить список файлов, подлежащих динамическому сжатию, по расширению (кстати, оно очень хорошо описано в документации к mod_deflate), можно отбросить сразу же. Расширение файла далеко не всегда соответствует его содержимому (те же архивы иногда называются как-нибудь вроде http://www.some-tricky-company.ru/download/download.pl?id=1234&uid=5678), кроме того, вариантов, подлежащих фильтрации, оказывается чересчур много (на самом деле, нам проще сказать, что должно сжиматься и выкинуть остальное). Вторая идея – использовать директиву “AddOutputFilterByType DEFLATE <список MIME-типов>“ также терпит фиаско, поскольку она принципиально не способна работать с прокси-запросами (это редкое исключение, подтверждающее правило). Да и нужные нам шаблоны, типа “text/*“, не говоря уж о более сложных, ей явно не по зубам. Что же делать?

Решение существует! (Читатели, имеющие за плечами мат-мех или физфак наверняка испытали непроизвольный прилив радостных эмоций). Это специализированный модуль mod_filter, написанный Ником Кью (Nick Kew) и включенный в стандартный комплект поставки Apache 2.1, усеченная версия которого была портирована автором этих строк обратно в 2.0. В данном разделе речь будет вестись именно о ней.

Исходный код модуля доступен по адресу: http://ktf.physics.usu.ru/~val/mod_filter.zip. Чтобы установить его, распакуйте архив во временный каталог на вашем сервере и дайте команду: apxs -c -i -a mod_filter.c.

Основная идея mod_filter состоит в том, чтобы заменить обычный фильтр так называемым “умным“ (smart filter). «Умный» фильтр – это некоторая абстрактная конструкция, содержащая условия срабатывания и набор так называемых провайдеров (опять это слово!), которые, в свою очередь, являются обычными фильтрами. В перспективе подобный подход может сократить количество дублирующегося кода, встречающегося практически в каждом модуле и дающего ответ на вопрос: “Должны ли мы обработать эту порцию данных?“ Впрочем, сейчас нас будут интересовать сугубо практические аспекты.

Условия срабатывания “умного“ фильтра могут использовать самую различную информацию: поля заголовков прямого запроса (req) и ответа на него (resp), значения внутренних переменных Apache, устанавливаемых с помощью mod_setenvif (env), имена обработчиков (handler), а таже тип передаваемых данных (Content-type).

Для создания “умного“ фильтра используется директива “FilterDeclare <имя фильтра>“. Подключением отдельных провайдеров управляет директива “FilterProvider <имя фильтра> <имя провайдера> <условие>“. Здесь под именем провайдера подразумевается название “обычного“ фильтра, например, DEFLATE. Завершив настройку “умного“ фильтра, следует добавить его в «цепочку» командой FilterChain. При обработке поступившего запроса звенья цепочки последовательно просматриваются до тех пор, пока не будет найден фильтр, условие срабатывания которого для данного конкретного запроса окажется истинным. По умолчанию добавление нового “умного фильтра“ происходит в конец цепочки, однако, это поведение можно подавить, используя специальные префиксы в директиве FilterChain. Подробности ищите в документации.

Теперь путь решения проблемы становится ясным. Нам необходимо добавить “умный“ фильтр “Compressor“ (конечно, вы можете использовать другое имя), который будет обрабатывать данные с типом “text/*“. На самом деле, диапазон MIME-типов, подлежащих сжатию, может быть более широким. Я, например, использую следующую конструкцию:

FilterProvider Compressor DEFLATE resp=Content-type $text/

FilterProvider Compressor DEFLATE resp=Content-type $application/xhtml

FilterProvider Compressor DEFLATE resp=Content-type $application/xml

Знак долара «$» в начале каждого условия обозначает операцию поиска по подстроке. Кроме него, доступен поиск по регулярному выражению (обрамляется символами «/»), а также весь спектр арифметических операций сравнения и специальное условие «*», которое всегда истинно. Обратите внимание, что мы используем «resp=Content-type» вместо «Content-type». Между этими двумя вариантами существует тонкое различие. В первом случае MIME-тип определяется по заголовкам, сформированным удаленным сервером, тогда как в последнем сведения поступают из локальной базы MIME-типов. Некоторые сайты, например, репозитарий SourceForge.net, используют для своих файлов двусмысленные имена, что приводит к недопониманию: http://prdownloads.sourceforge.net/project/release-x.y.tar.gz?download на проверку оказывается HTML-страницей, содержащей список доступных зеркал для файла release-x.y.tar.gz, поэтому лучше доверить право определения типа содержимого удаленному серверу. Уж он-то точно знает, что нам отправил.
Заключение

Вот и подошла к концу данная статья. Если вы внимательно и творчески следовали всем перечисленным рекомендациям, то сейчас в вашем распоряжении имеется многофункциональный сервер Apache, который может самостоятельно обрабатывать запросы, переадресовывать их удаленным web-узлам, кэшировать и динамически сжимать передаваемые данные, причем делает все это в рамках одной кодовой базы. Некоторые из описанных в статье функций в настоящий момент имеют статус экспериментальных или являются сторонними разработками. Ситуация изменится с выходом финальной версии Apache 2.1, который будет содержать “штатные“ реализации mod_cache и mod_filter. До тех пор вы, при желании, можете рассматривать предлагаемое решение как перспективное, хотя мой личный опыт показывает, что надежности вышеупомянутых модулей вполне достаточно для решения “бытовых» задач. Попробуйте сами!
Врезка 1. Пример вызова configure, обеспечивающий поддержку всех необходимых модулей

сonfigure \

--enable-proxy –-enable-proxy-http -–enable-proxy-ftp -–enable-proxy-connect\

--enable-cache –enable-disk-cache\

--enable-deflate\

--enable-mods-shared=all
Врезка 2. Фрагмент файла httpd.conf, реализующий описанную в статье систему



# Слушать порт 3128

Listen 3128



# Загрузить необходимые модули

LoadModule cache_module modules/mod_cache.so

LoadModule disk_cache_module modules/mod_disk_cache.so



LoadModule deflate_module modules/mod_deflate.so



LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_connect_module modules/mod_proxy_connect.so

LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

LoadModule proxy_http_module modules/mod_proxy_http.so



LoadModule filter_module modules/mod_filter.so



# Создать виртуальный хост на порту 3128

NameVirtualHost *:3128



# Включить поддержку прокси-запросов

ProxyRequests On



# Ограничение доступа по IP

Order deny,allow

Deny from all

Allow from 192.168.0.1/24

# или авторизация по имени пользователя и паролю

AuthName «No trespassers»

AuthType Basic

AuthUserFile <файл с реквизитами пользователей>

Require valid-user

# Если обе схемы используются совместно, укажите здесь

# All, чтобы затребовать разрешенный IP-адрес И правильный пароль

# Any, чтобы затребовать разрешенный IP-адрес ИЛИ правильный пароль

Satisfy Any



# Настройки кэша

CacheEnable disk /

CacheRoot <путь к каталогу кэша>

CacheSize 51200

CacheDirLevels 2

CacheDirLength 3

# «Умный» фильтр для динамического сжатия

FilterDeclare Compressor

FilterProvider Compressor DEFLATE resp=Content-type $text/

FilterProvider Compressor DEFLATE resp=Content-type $application/xhtml

FilterProvider Compressor DEFLATE resp=Content-type $application/xml

FilterChain Compressor



Взято с http://www.linuxcenter.ru

вторник, 6 января 2009 г.

startx и gnome

Никогда не думал, что еще придется gnome startx-ом запускать, а по тому на прочь забыл чем он пускается-то на самом деле )))))
/usr/bin/gnome-session