SWAT — дословно, в переводе — простое тестирование web приложений.
SWAT состоит из двух частей — DSL для написания smoke тестов и консольного клиента для запуска самих тестов.
Результат или отчет SWAT-теста выводится в TAP формате, что дает возможность переносить результаты тестов в различные системы мониторинга.
Отличительными особенностями SWAT является простота использования и минимальный набор зависимостей для установки, из которых только curl, пожалуй, является условно непредустановленным для линукс систем.
SWAT был придуман как практическая утилита, которой смогут воспользоваться как системные администраторы, далекие от глубин языка Perl, так и собственно разработчики web приложений.
Итак начнем описание SWAT c самого важного его компонента, а именно языка DSL для написания тестов.
DSL
DSL SWAT в первом приближении очень прост, посудите сами:
Пусть у нас есть web приложение myapp.com с набором http ресурсов /hello и /hello/world , требуется проверить что соответсвующие запросы к ресурсам возвращают успешный HTTP-статус 200 OK .
SWAT. Спецназ полиции США
С помощью SWAT это делается так:
Создать структуру проекта приложения и описать ресурсы:
$ mkdir myapp # создать директорию для проекта $ mkdir myapp/hello # описать HTTP-ресурсы $ mkdir myapp/hello/world
Определить ожидаемый контент:
$ echo 200 OK >> myapp/hello/get.txt $ echo 200 OK >> myapp/hello/world/get.txt
Согласитесь, достаточно просто? Не трудно догадаться, что SWAT во время прогона тестов сделает два запроса GET /hello и GET hello/world и проверит, что вернулся статус 200 OK.
Вот как это будет выглядеть при запуске с консоли посредством консольного клиента SWAT:
$ swat ./myapp http://myapp.com /home/vagrant/.swat/reports/http://myapp.com/hello/00.t . # start swat for http://myapp.com//hello | is swat package 0 # swat version v0.1.19 | debug 0 | try num 2 | ignore http errors 0 ok 1 — successfull response from GET http://myapp.com/hello # data file: /home/vagrant/.swat/reports/http://myapp.com//hello/content.GET.txt ok 2 — GET /hello returns 200 OK 1..2 ok /home/vagrant/.swat/reports/http://myapp.com/hello/world/00.t .. # start swat for http://myapp.com//hello/world | is swat package 0 # swat version v0.1.19 | debug 0 | try num 2 | ignore http errors 0 ok 1 — successfull response from GET http://myapp.com/hello/world # data file: /home/vagrant/.swat/reports/http://myapp.com//hello/world/content.GET.txt ok 2 — GET /hello/world returns 200 OK 1..2 ok All tests successful. Files=2, Tests=4, 0 wallclock secs ( 0.02 usr 0.00 sys + 0.02 cusr 0.00 csys = 0.04 CPU) Result: PASS
Однако, при всей кажущейся простоте SWAT обладает достаточно мощными средствами для расширения.
Основой алгоритм достаточно прост. Определили ресурсы, определили, что должно вернуться в ответе и прогнали тесты.
Однако SWAT обладает дополнительными возможностями, о которых я расскажу далее:
- использование Perl-регекспов для валидации возвращаемого контента;
- динамическая генерация проверочных утверждений;
- изменение логики проверки посредством выполнения встраиваемого perl кода.
Итак, начнем с Perl-регекспов.
Что такое Сватинг?
Использование Perl-регекспов
Помимо обычно plain текстовых проверок в SWAT можно задавать проверки с помощью регулярных выражений. Пусть у нас есть ресурс /version возвращающий версию приложения в виде version Foo.Bar.Baz , где каждый из элементов — целое число.
Используя SWAT и регекспы нетрудно написать тест для такого случая:
$ cat myapp/version/get.txt 200 OK regexp: version (d+.d+.d+) $ swat myapp/ 127.0.0.1 /home/vagrant/.swat/reports/127.0.0.1/version/00.t .. # start swat for 127.0.0.1//version | is swat package 0 # swat version v0.1.19 | debug 0 | try num 2 | ignore http errors 0 ok 1 — successfull response from GET 127.0.0.1/version # data file: /home/vagrant/.swat/reports/127.0.0.1//version/content.GET.txt ok 2 — GET /version returns 200 OK ok 3 — GET /version returns data matching version (d+.d+.d+) # line found: 1.2.4 1..3 ok All tests successful. Files=1, Tests=3, 0 wallclock secs ( 0.02 usr 0.00 sys + 0.01 cusr 0.00 csys = 0.03 CPU) Result: PASS
Ну с регекспами все понятно, они сильно облегчают жизни, но иногда хочется чего-то чуть более сложного, плавно переходим к динамической генерации проверочных утверждений.
Динамическая генерация проверочных утверждений
В самом простом случае SWAT получает проверочные утверждения, считывая их из текстового файла:
$ cat get.txt FOO BAR BAZ regexp: number d+
При таком подходе проверочные данные детерминированы на этапе запуска тестов. А что если захочется генерить эти данные динамически? Тут нам помогут SWAT-генераторы.
SWAT-генераторы — это куски Perl-кода, которые возвращают ссылку на массив строк, представляющих проверочные утверждения. Поясню все, как обычно на примере:
Пусть у нас есть некий ресурс GET /ABC , возвращающий все буквы английского алфавита от A до Z :
$ GET /ABC A B C D .
Давайте напишем для данного ресурса SWAT-тест. При решении «в лоб» можно просто перечислить все буквы английского алфавита в SWAT-файле, но это согласитесь не очень элегантное решение. Можно также использовать Perl regexp и написать так:
regexp: ^[A-Z]$
Уже лучше, а что если хочется соблюсти компактность кода, но при этом не мучаться с регекспами, которые в определенных случаях могут быть достаточно сложными? Давайте просто сгенерим массив проверочных утвержений:
$ cat ABC/get.txt generator: [ (‘A’ .. ‘Z’) ]
Это и есть SWAT-генератор. Хочется отметить, что данный пример тривиален, но ничто не останавливает вас от использования любого валидного Perl-кода для генерации SWAT-тестов. Пусть, мы хотим проверить что отданный нам контент — список пользователей содержится в некоторой sqlite-базе, тогда можно написать так:
Заметили символы в приведенном примере? В SWAT разрешены многострочные выражения при написании генераторов и Perl-выражений.
О Perl-выражениях и управлении проверочной логикой речь пойдет далее.
Perl-выражения и управление проверочной логикой
Perl-выражения в SWAT это просто вставки Perl-кода, которые вы можете использовать в тексте SWAT-тестов. Данный код будет выполнен в режиме во время прогона тестов, приведу сначала абстрактный пример:
HELLO code: print «THIS IS HELLO WORLD» WORLD
Смысла в приведенном коде никакого он просто выведет на консоль строчку “THIS IS HELLO WORLD”, никак не повлияв на логику теста — будут выполнены проверки на наличие слов HELLO а затем WORLD .
Что бы понять чем же Perl-выражения могут быть полезны в SWAT, необходимо рассказать как проверочные утверждения будут выглядeть после обработки SWAT парсером.
Дело в том, что после парсинга, каждое SWAT-утверждение превращается в соответствующий assert модуля Test::More . Каждый, кто хоть раз писал юнит-тесты для собственных Perl-модулей, знаком с данным инструментом.
После парсинга SWAT-теста мы имеем дело по сути с тестом в формате Test::More , а значит мы можем использовать функции данного модуля для управления логикой теста, приведу показательные примеры:
RED GREEN code: skip(«skip next check»,1) # пропустить следующую проверку для цвета BLUE BLUE YELLOW PUPRPLE
ONE TWO code: if ( $ENV ) < # пропустить следующие три проверки # если задана переменная окружения skip_colors skip( «skip next check», 3 ) ; >BLUE YELLOW PUPRPLE
Обратившись к документации Test::More , можно найти много других интересных примеров функций, эскпортируемых данным модулем, которые могут быть нам полезны. Конечно, хочется подчеркнуть еще раз, что вы можете использовать любой Perl-кода при написании SWAT-генераторов и Perl-выражений, конкретные примеры можно найти на странице проекта SWAT.
Заключение
На этом я хотел бы закончить краткий экскурс в утилиту SWAT, предоставляющую DSL для написания smoke тестов web приложений. Не все фичи и тонкости раскрыты в данной статье, за полной документацией отправляйтесь на страницу проекта.
Проект достаточно молодой, но уже опробован автором на десятках web-приложений, есть большие планы по развитию и интеграции с существующими системами мониторинга, а пока, конечно же, хотелось бы получить обратную связь, вопросы, мнения и конструктивные замечания. Пишите в комменты или на почту или в гитхаб проект.
Источник: pragmaticperl.com
Swat это что за программа
Если необходимо предоставить доступ к вашим файлам или принтерам для компьютеров под управлением ОС Windows, скорее всего вы выберете Samba , зная, что ее администрирование и конфигурирование выполняются путем правки файла конфигурации, остановки и запуска соответствующего сервиса. Однако существует более простое, графическое решение этой задачи — это Samba Web Administration Tool (далее SWAT).
SWAT позволяет установить все опции вашего Samba-сервера с помощью интуитивно-понятного веб-интерфейса, чем-то схожего с Webmin (те, кто использует Webmin , могут получить доступ к SWAT путем перехода на вкладку Servers -> Samba Windows File Sharing и затем кликнув на иконку SWAT)
Среди многих интересных возможностей SWAT включает в себя мастер, который поможет вам быстро настроить Samba с использованием базовой установки. Он также содержит в себе контекстно-зависимую справку для всех параметров (заимствованную непосредственно из страниц man-руководства) и позволяет вам наблюдать за текущим состоянием соединений и пользователей. Поскольку SWAT представляет собой просто составную часть пакета Samba, все параметры будут находиться в актуальном состоянии.
Хотя SWAT и предлагает удобство в пользовании, но с помощью его вы не сможете изучить саму суть Samba. Вам необходимо научиться работать с Samba, прежде чем начнете использовать SWAT, если вы не знаете, что и как делать, то он принесет вам больше вреда, чем пользы.
Хорошие новости для пользователей Samba
До прошлого месяца вам приходилось выполнять всю работа с Samba без помощи Windows документации, потому что Microsoft не выкладывала ее в общий доступ. Это часто означало то, что Linux отставал от текущей реализации SMB протокола, и было невозможно поддерживать его функционирование. Однако после проигрышей в антимонопольных исках (и отказа судом в апелляции) в Европе в сентябре 2007 года Microsoft была обязана сделать SMB протокол доступным . Теперь у создателей Samba появилась возможность сделать Samba 100%-совместимой с полным протоколом, что позволит пользователям Linux иметь точно такие же функции, какие имеются у пользователей Windows.
Установка и настройка
SWAT входит в состав пакета Samba, так что, кроме тех случаев, когда у вас установлена очень старая версия Samba, эта программа уже установлена в вашей системе. Вы можете проверить ее наличие, используя команду swat – help . Также можно использовать для поиска программы следующие команды:
# whereis swat swat: /usr/sbin/swat /usr/share/man/man8/swat.8.gz # find / -name swat /etc/webmin/samba/swat /etc/xinetd.d/swat /usr/sbin/swat /usr/share/samba/swat
Файл /usr/sbin/swat — это исполняемый файл SWAT. (Я использую openSUSE 10.3. В других дистрибутивах SWAT может располагаться где-нибудь в другом месте). Файл конфигурации /etc/webmin/samba/swat Вы обнаружите (если имеете права суперпользователя) только если у вас установлен Webmin; этот файл будет содержать в себе имя вашего пользователя Samba и его пароль. Кроме того, вы должны отредактировать файл / etc / xinetd . d / swat для того чтобы SWAT был доступен через xinetd . Ниже представлен вариант того как он может выглядеть после правки:
# SWAT is the Samba Web Administration Tool. service swat < port = 901 groups = yes socket_type = stream protocol = tcp wait = no user = root server = /usr/sbin/swat only_from = 127.0.0.1 log_on_failure += USERID disable = no >
Заметьте, что в строке server я указал путь, ранее найденный с помощью команд whereis или find . Последняя строка может иметь вид disable = yes, поскольку многие дистрибутивы не активируют SWAT по умолчанию. В моей версии файла были пропущены строки port и groups , потому я был должен добавить их. По окончании редактирования файла запустите / etc / init . d / xinetd restart и SWAT будет готов к работе.
Замечание: На старых системах может запускаться inetd вместо xinetd, в таком случае вам следует найти /etc/inetd.conf, который должен содержать строки вида
# swat is the Samba Web Administration Tool swat stream tcp nowait.400 root /usr/sbin/swat swat
Используйте / etc / init . d / inetd restart для активации после исправлений.
Использование SWAT
SWAT работает переписывая файл конфигурации /etc/samba/smb.conf и перезапуская Samba, когда это необходимо. Тем не менее, стоит заметить, что когда он переписывает файлы, он уничтожает все комментарии, которые могли быть включены вами в конфигурационные файлы, что обычно вызывает недовольство пользователей. Не поддерживаемые параметры удаляются, параметры, имеющие значения по умолчанию, игнорируются, а, кроме того, SWAT изменяет порядок параметров, поэтому файл, тщательно сформированный вручную, может выглядеть неожиданно бледно, после того, как SWAT поработает с ним.
Получить доступ к SWAT можно путем открытия браузера и перехода на http://127.0.0.1:901 . Домашняя страница обеспечивает доступ к man-странице и некоторой документации по Samba, включая несколько книг. Вы можете установить дополнительные пакеты документации по Samba позже.
Ниже представлен список других вкладок и функций SWAT, которые вы можете использовать:
- Globals: Обеспечивает доступ к глобальным параметрам в smb.conf. Вы можете работать на одном из двух уровней: Базовый, который показывает только самые важные настройки, или Продвинутый, показывающий все доступные настройки. Нажмите на соответствующих кнопках для выбора желаемого уровня. Также вы можете нажать на справочную ссылку по каждому параметру. После проведения настроек нажмите Commit Changes для сохранения вашей конфигурации или Reset Values для возвращения к исходной конфигурации smb.conf
- Shares: Позволяет вам создавать, редактировать или удалять совместно используемые ресурсы. Для правки ресурса выберите его из выпадающего списка, затем нажмите Choose Share; нажатие на Delete Share удалит его. Когда вы добавляете или настраиваете ресурс, вы можете указать несколько параметров на любом из двух уровней, базовом или продвинутом, таких как имя ресурса, путь, допустимые и недопустимые пользователи и доступен ли ресурс для записи или только для чтения. Не забудьте нажать на Commit Changes (или Reset Values) перед изменением или ваша работа окажется напрасной.
- Printers: Аналогична Shares, но предназначена для работы с принтерами.
- Wizard: Предлагает вам быструю конфигурацию сервера. Вы можете выбрать один из следующих видов серверов: автономный сервер, контроллер домена (a domain controller ) или член домена. Вы должны также точно определить, как сервер будет работать с Windows Internet Name Service (WINS) и хотите ли вы открыть доступ к вашим домашним каталогам. Нажмите на «Rewrite smb.conf» или на Commit для сохранения изменений и вы сможете запустить базовую настройку сервера Samba, которую вы потом можете настроить по своим потребностям, используя другие опции.
- Status: показывает какие сервисы запущены: обычно это smbd (демон Samba) и nmbd (демон поддержки сервера NetBIOS ), и возможно Winbind (сервис позволяющий компьютерам под управлением ОС Linux быть членами домена Windows). Здесь же представлен список всех активных соединений (которые вы можете уничтожить если это необходимо), активные общедоступные ресурсы и открытые файлы. Вы можете нажать на Auto Refresh, чтобы эта страница автоматически обновлялась через определенный промежуток времени (30 секунд по умолчанию)
- View: Позволяет вам просмотреть текущий файл конфигурации. Нажмите на кнопке View для просмотра его в обычном виде (минимальная конфигурация, не отображаются параметры по умолчанию) или в полном виде (со всеми параметрами)
- Password: позволяет вам создавать, удалять, активировать или деактивировать локальных пользователей Samba и изменять пароли для локального или удаленного сервера
Вывод
Независимо от того, начинаете ли вы знакомство с Samba или вы уже опытный системный администратор, любящий проводить эксперименты, SWAT может помочь вам в настройке вашего компьютера, сделав ее более простой за счет использования графического интерфейса. Federico Kereki — уругвайский системный инженер с более чем 20 годами опыта разработки систем, консультант и преподаватель в университетах.
Источник: rus-linux.net
Сканирование уязвимостей
В последние годы безопасность веб-приложений стала огромной проблемой для компаний, поскольку на рынке очень мало эффективных средств ее решения. Во-первых, можно приобрести простой сканер веб-приложений с очень ограниченными возможностями. Правда, делать это, безусловно, не рекомендуется, особенно компаниям со значительной ролью сетевого присутствия в капитализации бренда.
В-третьих, можно нанять компанию по безопасности для выявления непосредственных угроз путем тщательного тестирования защиты сайтов компании от несанкционированного доступа. Хотя этот вариант является в высшей степени адекватным, он помогает только в краткосрочной перспективе, поскольку новые методы атаки появляются каждый день, а веб-приложения часто меняются.
Оптимальное решение для сканирования веб-приложений
Secure Web Application Tactics (SWAT) сочетает преимущества самых современных сканирующих средств со знаниями специалистов по безопасности, являясь наиболее точным и надежным из имеющихся на рынке методов сканирования веб-приложений.
В SWAT применяется «умная» технология, способная выявлять и изучать новые угрозы, изменяя соответствующим образом свое поведение и не оказывая влияния на повседневную деятельность компании.
SWAT обеспечивает результаты с нулевым количеством ложных срабатываний, не требует специальных учебных мероприятий и включает компетентную техническую поддержку в любое время дня и ночи. Кроме того, осуществляя непрерывный мониторинг, SWAT гарантирует, что сайты заказчика останутся защищенными даже в случае изменения веб-приложений или появления нового метода атаки.
Решение: Непрерывный мониторинг
Проблема: Сканеры безопасности часто портят веб-приложения, нарушая повседневную деятельность компании.
Решение: Сканирование, безопасное для производства
Веб-приложения имеют широкий спектр функциональности, которая в ходе сканирования может нарушаться. Кроме того, к сбоям могут привести технические вмешательства, например, когда определенные команды базы данных влекут за собой непредусмотренные действия. Для обеспечения безопасности сканирования SWAT следует самым строгим правилам, не предпринимая действий, нарушающих доступность или целостность информации.
Проблема: Неточности при обнаружении приводят к неверным результатам и затрудняют нахождение уязвимых мест.
Решение: Анализ, верификация, тестирование и устранение ложных срабатываний
SWAT генерирует отчеты с информацией, проверенной экспертами по безопасности. Эти отчеты устраняют проблему ложных срабатываний и позволяют заказчикам быстро снизить уровень риска.
Проблема: Техническую подоплеку уязвимости часто трудно понять, и для ее выяснения может потребоваться помощь специалиста.
Решение: Круглосуточная техническая поддержка специалистами компании
Outpost24 предлагает техническую поддержку в любое время дня и ночи. Заказчики могут обращаться с вопросами по поводу обнаруженных уязвимых мест прямо из интерфейса и получать ответы от специалистов по безопасности, по конкретным уязвимым местам.
Проблема: Сканеры веб-приложений неспособны тестировать логику приложения.
Решение: Самые современные средства сканирования в сочетании со знаниями ведущих экспертов по безопасности
Тестирование проблем, связанных с конфиденциальностью, ограничениями доступа и атаками на более высокие уровни доступа, является крайне субъективным, и традиционные средства могут оказаться малоэффективными. Оно полностью зависит от человеческого восприятия штатного поведения приложений.
SWAT справляется с этим благодаря продвинутым функциям обучения, точному процессу интеграции и функции верификации в сочетании с поддержкой опытными специалистами по безопасности, обеспечивая полный охват этого класса угроз.
Открытый проект обеспечения безопасности веб-приложений (OWASP) публикует список 10 наиболее часто обнаруживаемых и цитируемых уязвимых мест веб-приложений.
Данные по уязвимости распределены в нем по группам. Таким образом, доля ложных срабатываний традиционных веб-сканеров, реагирующих лишь на подмножества различных групп угроз, зачастую составляет 75%.
В приведенной ниже таблице Мониторинг и охват отражена проверка безопасности приложения, способность проверки обнаруживать изменения приложения с течением времени, а также способность понимать динамическое приложение и работать с ним.
Хотя тестирование защиты от несанкционированного доступа является доскональным и имеет максимальный охват, его возможности по обеспечению высокого уровня безопасности на протяжении длительного времени ограничены.
Безопасность производства отражает риск влияния сканера или тестирующей программы на тестируемый объект. Часто тестирование защиты от несанкционированного доступа небезопасно для производства, если только оно не является приоритетным для заказчика и проводится по специальному требованию.
Безопасность производства является приоритетом для ответственных приложений, целостность данных которых очень важна, и небрежно проведенное тестирование может негативно повлиять на впечатление пользователей от приложения.
В таблице Верификация и консультирование отражен уровень компетентности, необходимый организации для получения долгосрочной выгоды от того или иного решения. Безопасность веб-приложений — это нишевая область, и зачастую держать собственных специалистов в этой области нецелесообразно.
Источник: arinteg.ru