Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
20.04.2024
Размер:
8.8 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

ПОДПИСКА

ГОДОВАЯ ЭКОНОМИЯ 500 ðóá.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

1.Разборчиво заполни подписной купон и квитанцию, вырезав их из журнала, сделав ксерокопию или распечатав с сайта shop. glc.ru.

2.Оплати подписку через любой банк.

3.Вышли в редакцию копию подписных документов — купона и квитанции — любым из нижеперечисленных способов:

на e-mail: subscribe@glc.ru;

по факсу: (495) 545-09-06;

почтой по адресу: 115280, Москва,

ул. Ленинская Слобода, 19, Омега плаза, 5 эт., офис № 21,

ООО «Гейм Лэнд», отдел подписки.

Внимание! Если произвести оплату в июне, то подписку можно оформить с августа.

Единая цена по всей России. Доставка за счет издателя, в том числе курьером по Москве в пределах МКАД

12 НОМЕРОВ — 2200 ÐÓÁ.

6 НОМЕРОВ — 1260 ÐÓÁ.

УЗНАЙ, КАК САМОСТОЯТЕЛЬНО ПОЛУЧИТЬ ЖУРНАЛ НАМНОГО ДЕШЕВЛЕ!

ПРИ ПОДПИСКЕ НА КОМПЛЕКТ ЖУРНАЛОВ

ЖЕЛЕЗО + ХАКЕР + 2 DVD: — ОДИН НОМЕР ВСЕГО ЗА 162 РУБЛЯ (НА 35% ДЕШЕВЛЕ, ЧЕМ В РОЗНИЦУ)

ЗА 12 МЕСЯЦЕВ 3890 РУБЛЕЙ (24 НОМЕРА) ЗА 6 МЕСЯЦЕВ 2205 РУБЛЕЙ (12 НОМЕРОВ)

ЕСТЬ ВОПРОСЫ? Пиши на info@glc.ru или звони по бесплатным телефонам 8(495)663-82-77 (для москвичей) и 8 (800) 200-3- 999 (для жителей других регионов России, абонентов сетей МТС, БиЛайн и Мегафон).

ПРОШУ ОФОРМИТЬ ПОДПИСКУ НА ЖУРНАЛ «ХАКЕР»

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

F

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

t

 

 

 

 

P

D

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

NOW!

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

to

BUY

 

 

 

 

 

CODING

 

w

 

 

 

 

 

 

 

m

Артем «RankoR» Смирнов (rankor777@gmail.com, ax-host.ru)

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

o

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

 

 

 

p

df

 

 

 

 

e

 

 

 

 

 

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

Программерские

в сфере

 

 

Изучаем

 

 

модульное

 

типсыитриксы,

тестирование

 

мобильного

 

 

программинга

спецвыпуск:TDDиAndroid

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

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

Вотладкепрограммногообеспечениядействуеттакназываемый принципПарето— вданномслучаеонможетбытьсформулированкак «Наотладку20%-ногокодауходит80% общеговремениотладки». Попробуемразобраться, почемутакпроисходит. Предположим, существует программа, выполняющаянекоторыерасчеты, алгоритмработыкоторой выглядитпримернокакизображенона«Схеме1». Такжепредположим, чтовизначальнойверсиипрограммытретийметоднебылреализован (и, соответственно, небылучтенприпроектированииархитектурыПО). Однаковследующейверсиипрограммыпонадобилосьегодобавить. Каквидноизблок-схемы(см. «Схему1»), третийметодоченьтрудно отлаживается, ивслучае, еслипрограммистдопуститошибку, найтиее приотладкебудеточеньсложно, таккакиз-заусловногооператораэтот методбудетвызыватьсякрайнередко. Однимизвыходовможетбыть написаниенебольшойотдельнойпрограммыдлятестированияэтого метода. Однакооннепрофессионаленизачастуюслишкомсложен— к примеру, еслиэтотметодзависитотдругихклассов. Длятогочтобыизбежатьтакихпроблем, следуетиспользоватьмодульноетестирование. Модульноетестирование(англ. unit testing) — одинизметодовтестированияпрограммногообеспечения, прикоторомпишетсяотдельныйнабортестовдлякаждогокласса, состоящийизтестовдлякаждогометода, объявленноговтестируемомклассе. Подобнаятехниказаменяетбольшуючастьотладкиизначительноупрощаетразработкуприложениякак наконечных, такинаначальныхстадиях, потомучтопозволяетпроверитьвсеслучаиповедениякаждогометодатестируемогокласса, чтозачастуюнепредставляетсявозможнымпри«ручной» отладке. Кпримеру, еслитребуетсяперебратьвсезначенияуаргументафункциитипаint32,

— умодульноготестаэтозайметнесколькоминут, атестировщикврядли вообщесможетсправитьсясэтимзаданием. Дляещебольшегоупрощенияиускоренияразработкирекомендуетсяиспользоватьметодологию разработки, называемую«Разработкачерезтестирование». Разработка черезтестирование, илиTDD (англ. Test Driven Development), — одиниз видовэкстремальногопрограммирования. Есливклассическихметодах разработкисначалапишетсяпрограммныйкод, апотом(приусловии использованиямодульныхтестов) — тесты, товTDD сначалапишутся модульныетесты, итолькопотомтестируемыеклассыиметоды реализуютсявпрограммномкоде. ГрафическоеизображениеTDD можноувидеть на«Схеме2». Несмотрянато, чтоэтотметодотноситсякэкстремальному программированию, и, напервыйвзгляд, кажетсяабсурдным, онвсе чащеиспользуетсяприразработкекрупныхпрограммныхпродуктов.

Требования,предъявляемые кпрограммномукоду приразработкечерез тестирование

Коддолженбытьразделеннакакможноболеемелкиечасти

Долженвыполнятьсяпринцип«одинтест— однодействие», тоесть

Схема 1. Алгоритм работы программы

одинtest caseнедолженпроверятьправильностьвыполненияболеечем одногодействия. Инициализацияобъектовдолжнапроизводитьсявне тестов.

Желательновыполнениепринципа«одинтест— одинметод», тоесть test caseдолженсодержать1-2 строкикода.

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

Преимуществаразработки черезтестирование

Отделениелогикипрограммногопродуктаотинтерфейсапользователя

Какследствиеизпредыдущегопункта— упрощениепроцедурыповторногоиспользованиякодавдругихпрограммныхпродуктах

Упрощениеотладки, поддержкиидоработкипрограммногокодазасчет разделенияегонанебольшиечасти

•Меньшаявероятностьнеожиданногоповеденияпрограммы

110

XÀÊÅÐ 07 /150/ 2011

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Схема 2. TDD как она есть

Убедиться, чтовсетестыпроходят.

5.Перейтикреализацииследующегометода.

Когданерекомендуется использовать модульныетесты?

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

 

Какэтовыглядит

 

напрактике?

 

Вкачествепримерамынапишемприложение(имодуль-

 

ныетестыкнему) дляОСAndroid. Этотпримерчастично

 

актуаленнетолькодляAndroid, ноидлялюбойплатфор-

 

мы, поддерживающейJava. Тестовоеприложениебудет

Наша подопытная

приниматьотпользователямассивточекипринимать

 

решение, расставленылионивправильномпорядке,

РобертМартин, известныйспециалиствобластиэкстре-

возвращаяtrue илиfalse. Логикарасстановкипроясня-

мальногопрограммирования, предлагаетиспользовать

ется, еслипредставить, чтонапервойточкенаписано,

следующийалгоритмTDD: «Сначаланужнодобиться, чтобы

кпримеру, «1», навторой— «2», натретьей— «3» ит.д.

кодхотькак-тоработал, итолькопотомулучшатьего». На

Точкимогутрасполагатьсявряд, встолбикиливсмешан-

практикеэтарекомендациявыглядитследующимобразом:

номпорядке.

1.Написатьмодульныйтестдлякакого-либометода(на

ДляначаланужносоздатьпроектдляAndroid (подразуме-

данныймоментещенереализованного). Вследствиетого,

вается, чтоутебяужеустановленасредаразработки, кпри-

чтометодещенереализован, тестовыйпроектдажене

меру, Eclipse, атакжеплагинADT иAndroid SDK) итестовый

скомпилируется.

проект. Длятогочтобысоздатьтестовыйпроект, нужнов

2.Написать«заглушку» дляэтогометода. Кпримеру, если

диалогесозданияпроектанажатькнопку«Next» иотметить

методдолженвозвращатьпеременнуютипаboolean, то

чекбокс«Create a test project».

ондолженсодержатьтолькострокувида«return false» (в

Теперьможноприступитькнаписаниюмодульноготеста.

случае, еслиприправильномвыполненииметодадолжен

ВтестированииJava-приложенийстандартомде-факто

бытьвозвращенtrue), тоестьзаглушкадолжнавозвра-

считаетсяJUnit. JUnit такжевключенвAndroid SDK, соот-

щатьтакоезначение, чтобытест«непроходил». Теперь

ветственно, тестированиеприложенийнаAndroid произво-

тестовыйпроекткомпилируется, нотестпопонятнойпри-

дитсяименноприпомощиэтойбиблиотеки.

чиненевыполняется.

Тестированиелогики

3.Реализоватьметодалгоритмическиправильно, ноне

пытатьсяулучшитьего— требуетсяпростосделать«чтобы

СначаласоздаетсяTestSuite дляпроекта(егокодмодифи-

работал». Убедиться, чтовсетестыпроходят.

цироватьненужно), апотом— TestCase длякаждогокласса.

4.Усовершенствоватькод— привестикнаиболееудобо-

Внашемслучаеклассвсегоодин, ивнемсодержитсявсего

читаемомувиду, разбитьметоднаболеемелкиечасти.

одиноткрытыйметод(статический). Напишемдватеста

DVD

dvd

На диске ты найдешь весь исходный код (как самого проекта, так и модульных тестов для него)

INFO

info

В статье использовались материалы из Wikipedia и книги Р. Мартина «Чистый код»

XÀÊÅÐ 07 /150/ 2011

111

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

BUY

 

 

 

 

CODING

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Создание проекта для Android

— первыйбудетпередаватьзаведомоверныйсписокточек, второй— заведомоневерный.

public void testValidOrder() {

List<Point> points = new ArrayList<Point>(); points.add(new Point(0, 0));

points.add(new Point(1, 0)); points.add(new Point(2, 0)); points.add(new Point(3, 0));

boolean result = Matrix.orderIsRight(points); assertTrue(result);

}

public void testInvalidOrder() {

List<Point> points = new ArrayList<Point>(); points.add(new Point(0, 0));

points.add(new Point(3, 0)); points.add(new Point(1, 0)); points.add(new Point(2, 0));

boolean result = Matrix.orderIsRight(points); assertFalse(result);

}

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Прошуобратитьвнимание, чтокаждыйтестдолженначинатьсясослова test, иначеоннебудетраспознанJUnit как… ну, вобщем, кактест:). Чтобызапуститьвыполнениетестов, нужнонажать<Ctrl> + <F11>. Однакотестыдаженезапустятся, потомучтоклассMatrix несодержит методаorderIsRight(). Теперьследуетнаписатьзаглушкудляэтого метода, состоящуюизоднойстрочки: «return false». Тестызапустятся, но ихповедениебудетнемногостранным: первыйтестнебудетпройден, а второй— будет. Сначаланужнодобитьсяпрохожденияпервоготеста, и толькопотомбраться(если, конечно, потребуется) завторой. РеализуемметодorderIsRight() следующимобразом:

public static boolean orderIsRight( final List<Point> pPoints) {

Point firstPoint = pPoints.get(0);

for (int i = 1; i < pPoints.size(); i++) { final Point secondPoint = pPoints.get(i);

if (pointsAreInWrongOrder(firstPoint, secondPoint)) {

return false;

}

firstPoint = secondPoint;

}

return true;

}

МетодpointsAreInWrongOrder() — закрытыйстатический, состоящийиз однойстроки:

return (pFirstPoint.x >= pSecondPoint.x);

Нетруднодогадаться, чтоонвозвращаетtrue, еслиперваяточканаходитсяправее, чемвторая(либоперекрываетее).

Запускаемтесты— онипроходят. Отлично, наэтомтестированиелогики приложенияможносчитатьзаконченным. Теперьможноприступитьк тестированиюграфическогоинтерфейса.

ТестированиеGUI

Графическийинтерфейс— крайневажнаячастьлюбогоПО. Если пользователюнепонравитсяGUI — он, скореевсего, небудетиспользоватьпрограмму, какаябымощная«начинка» несодержалась внутри. ТестированиеGUI должнобытьнеменеетщательным, чем тестированиелогикипрограммы, причемтестированиежелательномаксимальноавтоматизировать— толькотакможнопокрыть наибольшееколичествовозможныхвариантовдействийпользователя. Конечноже, программистможетпротестироватьинтерфейс вручную, ноздесьестьодиннюанс. Деловтом, чтопрограммист тестируетприложениесточкизренияпрограммиста, анепользователя, иему, вотличиеотпользователя, можетпростонеприйтив голову, чтоможноввестисимвольнуюстрокувполедлявводачисел. ВAndroid SDK естьинструментарийдлятестированияграфического интерфейса, вкоторыйвключенклассActivityInstrumentationTestCa se2. Егоследуетнаследоватьпринаписаниимодульныхтестовдля

GUI. Стоитобратитьвниманиенато, чтоActivityInstrumentationTest Case2 — этошаблонныйкласс, т.е. использоватьегоследуетввиде class MainActivityTest extends ActivityInstrumentationTestCase2<Mai nActivity>.

НашеприложениесодержитоднуActivity (MainActivity), еемыибудем тестировать. Каконавыглядит, можноувидетьнарисункенапредыдущейстранице.

ЯиспользуюотладкунаустройствесAndroid 2.3.4 черезWi-Fi. Кстати говоря, отладкапоWi-Fi оченьудобнапосравнениюсотладкойпо кабелюи, темболее, вэмуляторе. Длятогочтобыотлаживатьпри-

112

XÀÊÅÐ 07 /150/ 2011

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Один из тестов не прошел

ложенияподобнымобразом, нужноустановитьвиджетAdb over Wi-Fi изAndroid Market (подходиттолькодлятелефоновсправами root). Послезапусканужноподключитьсякустройству. Например, следующимобразом:

adb connect 192.168.1.5:31337

ТестированиеGUI выглядитприблизительнотакже, какитестирование логикиприложения. Создаетсякласс, внемсоздаетсяметодsetUp(), в котороминициализируютсяобъекты. Объекты, представляющиеActivity, полядлявводатекстаикнопкуследуетсделатьзакрытымиполями:

private Activity mActivity; private EditText mEditText1;

private EditText mEditText2; private EditText mEditText3;

Инициализируютсяониследующимобразом:

protected void setUp() throws Exception { super.setUp();

mActivity = getActivity();

mEditText1 = (EditText)mActivity.findViewById (com.example.matrix.R.id.editTextLine1);

<...>

mTextView = (Button)mActivity.findViewById(

com.example.matrix.R.id.textView);

}

Впервуюочередьнужнопроверить, создалисьлиэлементыинтерфейса:

public void testControlsCreated() { assertNotNull(mActivity); assertNotNull(mEditText1);

<...> assertNotNull(mTextView);

}

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

Вполяхдлявводауказываютсякоординатыточкичерезпробел, ав textView появляетсярезультат(OK илиNOT OK).

XÀÊÅÐ 07 /150/ 2011

Создание теста GUI

Напишеммодульныйтестдляпросчета:

public void testValidData() { TouchUtils.tapView(this, mEditText1);

sendKeys(KeyEvent.KEYCODE_0, KeyEvent.KEYCODE_SPACE, KeyEvent.KEYCODE_0);

TouchUtils.tapView(this, mEditText2); sendKeys(KeyEvent.KEYCODE_1, KeyEvent.KEYCODE_SPACE,

KeyEvent.KEYCODE_0); TouchUtils.tapView(this, mEditText3);

sendKeys(KeyEvent.KEYCODE_2, KeyEvent.KEYCODE_SPACE, KeyEvent.KEYCODE_0);

TouchUtils.tapView(this, mEditText1); assertEquals("OK", mTextView.getText());

}

Оннепроходит, потомучторедактированиенеобрабатывается. НапишемобработчикдлясобытиясменыфокусанаEditText’ах— итестбудет пройден. Кодобработчикаприводитьсянебудетиз-заограниченности объемастатьи, ктомуже, онабсолютнотривиален. Такженеобходимопроверить, правильнолиобрабатываютсяневерныеданныеэто заданиеостанетсянатвоейсовести, темболее, чтоонопрактически аналогичнопредыдущемутесту:).

Призапускетестовможнонаблюдать, каксаминажимаютсяэлементы интерфейса, переключаютсяActivity (длякаждоготестаActivity запускаетсязаново) — забавноезрелище:).

Моральсейбаснитакова

Вданнойстатьебылирассмотреныкактеоретическая, такипрактическаячастиразработкичерезтестирование. Вкачествепримера приведенкодприложениянаJava подОСAndroid сиспользованием инструментарияJUnit, однакопринципытестированияприблизительноодинаковыналюбойОС.

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

113

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

SYN/ACK

Сергей «grinder» Яремчук (grinder@tux.in.ua)

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

df

-

 

 

n

e

 

 

 

 

 

x cha

 

 

 

 

Потрогай CISCO

Популярные решения в области безопасности

Защита информационных ресурсов является основной задачей любого системного администратора. Реализовать ее можно при помощи сотни инструментов и технологий самого различного назначения. Особую роль здесь занимают системы защиты сетевого трафика — блокирующие спам и доступ к неблагонадежным веб-ресурсам, VPN; системы, блокирующие кражу персональных данных и прочие угрозы. По всеобщему признанию, лидирующее место в этом сегменте занимает продукция Cisco, с которой мы и познакомимся.

СемействоIronPort

КорпорацияCisco получилаизвестностьвпервуюочередьблагодаряразрабатываемомусетевомуоборудованию, вчастности— различногородамногопротокольныммаршрутизаторам, которымионаи занималасьназаресвоегосуществования. Внастоящеевремясписок устройствсамогоразличногоназначенияоченьбольшой. Основную частьпродукциисрединихзанимаютрешения, направленныеназащитупериметрасети, удаленногодоступа, аудитаидажеуправления доступом. Запутатьсявпредложенииоченьлегко, особенноучитывая, чтовкаждойкатегориипредставленонесколькорешений.

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

ности. ПодразделениекомпанииCisco — Cisco IronPort Systems LLC (ironport.com), разрабатывающеепрограммно-аппаратныекомплексы, защищающиепочтовыеивеб-сервисы, предлагаетэффективный вариант. СемействоIronPort представленонесколькимисериями. Для защитыэлектроннойпочтыпредлагаетсяE-mail Security Appliance (состоитиздвухсерийC-Series иX-Series, веб-трафикаWeb Security Appliance (S-Series). Централизованноеуправлениекомплексомза- щитыизнесколькихустройствосуществляетсяприпомощиM-Series. С егопомощьюадминистраторсобираетжурналыснесколькихустройств, формируетотчеты, распространяетединыйфайлнастроек. M-Series обеспечиваетместодляцентрализованногокарантина, увеличивая пространстводляхраненияблокированныхсообщений. ВсетяхустройстваIronPort чащевсегоподключаютврежимепрозрачногопрокси. Этопозволяетнеменятьнастройкипрограмм(браузеров, почтовыхи FTP-клиентов). Трафикнатакойшлюзперенаправляетсяприпомощи маршрутизатора, поддерживающегопротоколWCCPv2 (Web Cache Communication Protocol). Хотяподдерживаетсяипривычный«непрозрачный» режим. ОсновуIronPort составляетоперационнаясистема AsyncOS, являющаясяFreeBSD-оптимизированнойдляобработки большогочисласоединенийспреднастроеннымокружениемисвоими программами. Витогедажеустройстванижнегоуровняспособнылегко обработатьдо10000 одновременныхсоединений, чтопрактически исключаетвозможностьDOS-атаки. УправлениеAsyncOS осуществля-

етсяприпомощивебилиспециализированногокомандногоинтерфейса(Unix Shell недоступен). Администраторможетцентрализованно устанавливатьнастройкинанесколькихустройствах, делегировать полномочиямладшихадминовипользователей, определяяприпомощиполитикдоступдлягруппксервисаминтернет(FTP, HTTP(S)). ОднакоизвестностьсемействоIronPort получилоблагодарятехнологии репутационнойфильтрацииSensorBase. Кслову, ранееонаназывалась SenderBase ипредназначаласьисключительнодляборьбысоспамом. Онаисейчасчастопопадаетсяврекламныхпроспектахподэтим именем, нонаправленностьSensorBase шире. Дляопределениянадежностиузлаздесьиспользуетсяоченьсложныймеханизмрепутации Risk Rating. Сутьегопроста. СетьCisco, посути, являетсяразвернутой системойдатчиков, насчитывающихсотнитысячконечныхустройств, контролирующихприблизительно30% мировоготрафика, широкий охватипродуманныйалгоритмкоторыхобеспечиваеточеньнизкий уровеньошибок. КаждомуIP-адресуможетбытьприсвоенрейтингот -10 до+10. Нарепутациювлияетбольшоеколичествофакторов. Конечныйалгоритмразработчикинеразглашают, ноговорят, чтовпроцессе обработкиизучаетсяболее200 параметров. Считается, чтоIP-адресас низкойрепутациейпотенциальноопасны, ивесьтрафикснихIronPort автоматическиблокирует. Администраторполучитвнятноесообщение, указывающеенапричинутакойреакции(malware, фишинг, ит.п.). Таким образом, применениерепутациипозволяетотклонитьдо80% спамаили запретитьпользователюпопастьнаподозрительныйвеб-сайтещена этапесоединения, экономятрафикиресурсысистемы. Этатехнология уженеразпоказаласвоюэффективность. Так, например, ботнет-сеть Waledac былаобнаруженаиблокированавсамомначалеактивации, и компьютеры, защищенныеIronPort, непопалиподудар. Те, ктовозился снастройкамитакогоприложения, какSpamAssassin, знает, кактяжело бываетподогнатьегофильтрыподконкретныетребования. ВIronPort администраторпростоуказываетуровеньRisk Rating (стандартный, повышенныйит.п.), всеостальноепроисходитавтоматически, никакой подстройкинетребуется. Какизвестно, втрадиционныхблэклистахесть однапроблема: внихлегкопопасть, ноизнихнетакпростовыйти:). В отличиеотних, вSensorBase списокформируетсядинамически. Иесли администраторудаленногоресурсарешилпроблему, ивсепризнаки, понижающиерейтингисчезли, тоиSensorBase автоматическипод- ниметоценкуIP-адреса.

Кромеэтого,вIronPortобеспечивается:

антиспам-фильтрацияAnti-Spam Filters припомощимеханизмаCASE (Context Adaptive Scanning Engine, адаптивногоконтекстногосканиро-

вания), распознающегодажекартинки;

фильтрациянаосновесодержимого;

фильтрациявеб-адресов(Cisco IronPort URL Filters), позволяющая контролироватьправилапользованияинтернетомипредупреждать попыткиобхода80-гопорта;

114

XÀÊÅÐ 07 /150/ 2011

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Эмулятор CISCO

Чтобы научиться работать с Cisco, необходим доступ к оборудованию. Но цена на девайсы этой фирмы кусается. И хотя на том же eBay можно найти устройства ценой до $100 (маршрутизаторы), — это все начальный уровень и устаревшее оборудование. Те, что посовременней, потянут уже на пару тысяч, а то и больше. Замкнутый круг. Но выход есть! Для зарегистрированных преподавателей и студентов курсов Cisco предлагает программный эммулятор Packet Tracer (cisco.com/web/learning/netacad/course_catalog/PacketTracer.html), задача которого — закрепить на практике полученные знания. При помощи PT можно легко создавать

целые виртуальные сети различной топологии и с различным количеством устройств. Для подключения предложены все основные типы оборудования выпускаемого Cisco (роутеры, свичи, точки доступа, VPN и т.п.), подключившись к которым, можно менять настройки, моделировать обмен данными. Кроме этого «реализованы» все технологии и протоколы, используемые в оборудовании Cisco, поэтому настройка в RT практически ничем не отличается от реального оборудования. Запустить Packet Tracert можно на Windows XP-7 и некоторых дистрибутивах Linux.

Кроме RT популярны и другие эмуляторы — Dynamips (ipflow. utc.fr/index.php/Cisco_7200_Simulator) и GNS3 (gns3.net).

двуслойнаязащитатрафикаотвирусов— проактивная(IronPort Virus Outbreak Filters), блокирующаяновыевирусыдопоявлениясигнатур, и

классическая(Sophos, McAffee);

шифрованиепочтовоготрафикамеждуустройствамиIronPort, проверкасообщенийприпомощицифровойподписи;

DLP-технологии, предотвращающиеутечкуконфиденциальных данных(сообщениесканируетсянапредметналичияключевыхслов). Исходящиесообщенияархивируются, чтопозволяетвбудущемнайти источникутечкиданных. Контролируетсяпочта, IM, Skype, веб-сайты. В случаенарушенияадминполучитпредупреждение;

веб-проксискэшированиемтрафика;

• просмотриуправлениеполитикамивеб-трафиканаосновепри- ложений(приложениевычисляетсянаосновеURL, HTTP-заголовков

иконтента, внастоящеевремяIronPort «известны» всепопулярные программы).

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

ипрочее. ПритакомобилиивозможностейнастройкиIronPort через веб-интерфейсдляподготовленногоадминасложностейнесоставят. УстройстваинтегрируютсясLDAP-каталогами, втомчислеисActive Directory. ПрипокупкеIronPort нужнознать, чтоантиспам, антивируси проактивнаязащиталицензируютсяотдельно. МодулиReputation Filter, DLP иотчетностьпредоставляютсябесплатноинетребуютпродления лицензии. Кслову, покупатьдевайссегодняуженеобязательно. Кроме перечисленноговыше, IronPort предлагаетоблачныерешенияпо обеспечениюзащитыкорпоративнойэлектроннойпочты. Реализован тридцатидневныйтестовыйдоступ. Чтобыегозапросить, следуетзаполнитьформупоадресуironport.com/try, хотяпоопыту— отвечаютне всеминесразу.

СерияASA5500

Однимиизсамыхпопулярныхпродуктов, производимыхкомпанией Cisco, являютсямногофункциональныеустройстваCisco ASA 5500 Series, используемыедлязащитысетейвсехмасштабов(ASA — сокращениеотAdaptive Security Appliances), пришедшиеназаменусемейству PIX. ОсновнаяидеяприсозданииASA 5500 былазаложенавстратегии Cisco посозданиюсамозащищающейсясетиSDN (Self Defending Networks, bit.ly/kKmBD5). УстройстваASA 5500 являются, посути, ключевымкомпонентомAdaptive Threat Defense, таккакспособнырешить всепроблемысбезопасностьюприотносительнодоступнойцене.

Врезультатеводной«железяке» интегрированмежсетевойэкран, VPN (споддержкойSSL иIPsec), IPS (системапредотвращениявторжений), фильтрURL иконтрольдоступакинтернет-сайтам, контрольконтента плюссредстваборьбысвредоноснымипрограммами— антивирус, антиспам, антишпион, антифишингиAnti-X (защитаотнеизвестных угроз). Тоесть, практически, припомощиASA 5500 блокируютсявсе опасности, которымибогатсегодняшнийинтернет. Этимиобусловлена популярностьсерии5500. Межсетевойэкрананализируеттрафикна2-7

XÀÊÅÐ 07 /150/ 2011

115

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

SYN/ACK

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

df

-

 

 

n

e

 

 

 

 

 

x cha

 

 

 

 

Настройка событий в интерфейсе управления Cisco MARS

На eBay можно найти устройства Cisco по вполне приемлемой цене

Для небольших организаций — Cisco ASA 5505

уровняхибезошибочноопределяетприложенияипротоколы, втомчислеIM иP2P, голосимультимедиа, СУБДидругие. Соответственно, админ легкоможетнастроитьиспользованиетогоилииноговидатрафика

ворганизации. Втомчислезащититьотнецелевогоиспользования разрешенныхпортов. Например, есливорганизацииприкрытааська, пользовательлегкоможетобойтизапрет, воспользовавшисьуслугами однойизслужб, позволяющихподключатьсяксервисупостандартным портам(впервуюочередь80). СASA 5500 такойномернепройдет— он сразуобнаружитпротоколнадругомпорту. ВCisco SSL VPN реализо-

ваныфункцииCisco AnyConnect иCisco Secure Desktop (CSD). Задачи

CSD — проверкасостояниясистемыбезопасностикаждогокомпьютера, пытающегосяподключитьсяксети, изащитаданныхвходесессии. При подключениипроверяетсярядпараметровуказанныхадминистраторов

— сертификат, ключреестра, версияОС, IP-адрес, наличиекейлоггеров идругих. ПрипервомподключениикVPN наклиентскийкомпьютер устанавливаетсяклиент, доступкресурсамLAN возможенчерезвеббраузерпоразнымпротоколам(CIFS, HTTP/S, FTP). Послесоединения создаетсябезопаснаявиртуальнаямашина, включающаяшифрованныйраздел. Вводпаролейипрочиеоперацииосуществляютсявнутри VM. Послезавершенияработывседанныеудаляются.

ЗасчетподдержкитехнологийQoS, различныхпротоколовмаршрутизации, IPv6 идругих, ASA 5500 легковстраиваютсявсуществующуюсреду. ТрадиционноASA 5500 ставятсянавходесети, наличиенескольких интерфейсовдаетвозможностьразделитьсетьнанесколькосегментов, выделив, например, DMZ. Прозрачныйfirewall позволяетнеменять топологиюсети, приэтомсамASA 5500 будетневидимдляхакера. Учитывая, чтофинансовыевозможностиипотребностиукаждойорганизацийразные, серияпредставленапятьюустройствами(ишестью— в enterprise-уровне), поэтомулегковыбратьдействительнонеобходимое пофункциональности, непереплатив. Длянебольшихисреднихофисов предназначенасамаямладшая, восьмипортоваямодельCisco ASA 5505

вдвухвариантах— Base илиSecurity Plus, которыеобеспечиваютсоот-

ветственно10000 или25000 подключений, 10 или25 соединенийчерез 2 сетиVPN, фильтрациютрафикаиблокировкусетевыхатак. Кслову, на eBay можнонайтиб/уASA 5505 дажеза$150, чтооченьдаженемного дляподобногоклассаустройств.

Старшиедевайсыужеимеютвстроенныйантивирус, поддерживаютбалансировкуVPN, проверкуGTP/GPRS ипрочее. Количествоподдержи- ваемыхVPN-сетей, которыеможноиспользовать, например, длясвязи междуофисамиилиподключенияотдельныхпользователейвASA 5520 увеличенодо750. Относительноневысокаяценаприналичиибольшого числаинтегрированныхфункцийделаетсерию5500 весьмавостребованной. Конечно, никтонемешаеткупитьсервериустановитьнанего

OpenSource-компоненты(Squid, HAVP, SquidGuard, ClamAV, OpenDPI, OpenVPN имногиедругие), носогласись, чтоправильнонастроитьвсе этохозяйствосможетдалеконекаждый, даиподгонкапараметровпотребуетбольшеговремени. Такойвариантподходит, когдамалосредств, ноестьвремянадоводку. Новбольшинствеслучаевоченьтяжело рассчитатьмаксимальнуюнагрузку, которуювыдержиттакойсервер.

Ачтобудемделать, когдаадминвозьметиуволится? Новомупридется потратитьприличновремени, чтобыразобратьсяснастройками, анайти хорошегоспецаоченьтяжело(СергейпревозноситCisco иопускает опенсорс? Что-топроизошло! — Прим. ред.). Вслучаеприменения многофункциональногоустройстваCisco мыполучаемвсеготовенькоес вполнепонятнымихарактеристикамиитехподдержкой, котораякрайне важнанапервыхэтапахвнедрениялюбогорешения. Еслифирмабыстроразвивается, тодажееслиизакупатьмаршрутизаторснекоторым запасом, егочерезкакое-товремяужеможетнехватить. Закупатьновый накладно, ведьимеющийсяещеневыработалполныйресурс. Вслучае сASA 5500 Series (как, впрочем, исдругимисериями) базовыефункции можноувеличить, простокупивновуюлицензиюинарастивмодули. Так, например, можнодоустановитьмодульадаптивнойпроверкиипредот-

вращенияатакAIP-SSM (Advanced Inspection and Prevention Security Services Module) илиCSC-SSM (Content Security and Control Security Services Module). ЗапасапомощностиудевайсовCisco обычнохватаетс головой, чтобыобеспечитьувеличившуюсянагрузку.

CiscoMARS

ОднимизключевыхкомпонентовSDN являетсясистемамонито-

рингаиреагированияCisco MARS (Monitoring Analysis and Response System). Собираяданныессетевыхустройств(включаяCisco NetFlow), ониобеспечиваютконтрольихсостоянияизащиту. Возможенмониторингприложений, производитсяанализаномалийи поведениясетевыхобъектов, корреляциясобытий. Кромесобственно оборудования, Cisco поддерживаетрешениядругихвендоров— ISS RealSecure Network, McAfee IntruShield/Entercept HIDS, Juniper IDP, Snort идругих. Широкийохватиалгоритмыанализаминимизируют

116

XÀÊÅÐ 07 /150/ 2011

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Для удобной настройки оборудования Cisco предлагает удобный инструмент Cisco Configuration Professional

Эмулятор Cisco Packet Tracert доступен преподавателям и слушателям курсов

Бесплатный симулятор Cisco — GNS3

вероятностьошибки. Впроцессеопросаустройстввыполняется анализихконфигурацииипроизводитсязапроскбазеданных уязвимостей(Qualys Guard ANY, E-Eye, Retina Scanner Vulnerability

иCVE). Полученныйответпозволяетопределитьналичиепроблем

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

вмасштабесетиилиотдельногоузла. Системапредставляетатаку

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

Системапредоставляетболее150 готовыхотчетов. Оповещенияотправ- ляютсянаe-mail, записываютсявжурнал, SNMP.

Устройствосамостоятельностроиткартусети, обнаруживаямаршрутизаторы, firewall, IDS/IPS ит.д. Системапоставляетсясцелымнабором

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

Витоге, MARS являетсяэффективнымсредствоммониторингасетевой безопасности. Ксожалению, Cisco объявилаобend-of-life этогопродукта, сиюня2011 годаонбудетпостепенноисчезатьизпродажи. Срок окончанияподдержкидатированконцомиюня2015 года. ЗаменыMARS непредложено, пользователямрекомендуетсяперейтинаCisco Security Manager.

Заключение

ПродукцияCisco окруженаореоломтаинственности, ипоканестолкнешьсяснейвреальности, создаетсявпечатление, чтоэтосложныев настройкеустройства. Насамомделе, любойпользователь, имевший ранееделос*nix, разберетсясбольшинствомфункцийбуквальноза парудней. z

XÀÊÅÐ 07 /150/ 2011

117

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

SYN/ACK

Евгений Зобнин (execbit.ru)

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

df

-

 

 

n

e

 

 

 

 

 

x cha

 

 

 

 

Clipboard blocked!

Clipboard blocked!

Говоря об Apache, MySQL и PHP, большинство админов имеют в виду стек LAMP, подразумевающий установку этого набора софта в один из многочисленных дистрибутивов Linux. Между тем выбор FreeBSD в этом случае может оказаться более подходящим.

Вэтойстатьеярасскажуовсехшагах, которыенеобходимовыполнить длятого, чтобыподнятьFreeBSD вместесостеком(L)AMP инесколькимиинструментамиадминистрированиянаабсолютноголом сервереисделатьтак, чтобывсеэтоработаловместебезсбоеви непредвиденныхситуаций.

Шаг1.УстанавливаемFreeBSD

Дляначаланампонадобитсясамаоперационнаясистема. ИдемнаофициальнуюстраничкуFreeBSD (www.freebsd.org), жмемпоссылке«Get FreeBSD Now», далеевыбираемверсиюОС(намоментнаписаниястатьидоступныбылидвеверсии: 8.2-RELEASE и7.4-RELEASE), архитектуру(amd64 илиi386), нажимаемнассылку[ISO] ивидимсписокдоступных образов. Всегоихпять: bootonly — загрузочныйобраздляустановкипо сети, disk1 — ISO образдлязаписинаCD, dvd1 — образдлязаписина DVD, livefs — LiveCD безграфическогоинтерфейса, memstick длязаписи наUSB-брелок. Внашемслучаеподходящимибудуттолькопервыйи второй, аесливсетинетDHCP-сервера, тотольковторой(DVD-образ качатьсмысланет, потомукакCD содержитвсенамнеобходимое). Итак, скачиваемISO-образ, нарезаемегонаболванку, вставляемвприводсервераисбрасываем/включаемего. ЖдемпокаОСзагрузится. Послеокончаниязагрузкинаэкранедолжнопоявитьсяокновыбора страныименюинсталлятораsysinstall, состоящееиздвенадцати пунктов. Насинтересуеттолькоодинизних: «Express», онпозволяет установитьоперационнуюсистемумаксимальнобыстро, пропустив многиепредупреждающиесообщения, вопросыинастройки. Выбираемего, жмем<Enter>.

Появитсяокнопрограммыдляразбивкидиска. Здесьможнолибо простонажать<A> дляиспользованиявсегодиска, либо<C>, чтобы создатьновыйразделвсвободнойобласти. Однако, имейввиду, чтоFreeBSD используетдвухуровневуюсхемуразметкидискапри которойодинстадартныйDOS-раздел(втерминологииFreeBSD именуемыйслайсом) можетсодержатьвсебенесколькоBSD-разделов, поэтомунаэтомшагепонадобитсясоздатьтолькоодинраздел. По окончаниинажимаем<Q>, чтобывыйтиизпрограммы.

Следующееокно: вопрособустановкезагрузчика, простожмем <Enter> чтобыустановитьзагрузчиквMBR. Сразупосленегопоявится окноразметчика созданногоранееразделанаBSD-разделы. Здесь можнопоэкспериментировать, ноябырекомендовалпростонажать <A> чтобыпрограммасамаразметиладиск. Далеежмем<Q>, чтобы подтвердитьизменения.

Следующееокно: выбористочникаустановки. Подефолтувкачестве источникаиспользуетсяCD/DVD, поэтомупростожмем<Enter>. Подтверждаемвыборнажатием<Enter> вследующемокне.

Теперьначнетсяпроцесскопированияфайлов, поокончаниикоторогонаэкранбудетвыведеносообщениесвопросомовозвращении вглавноеменюинсталлятора. Нажимаем<Enter>, далее<X>, «Yes» и<Enter>. Операционнаясистемадолжнаперезагрузиться. Незабываемвынутьустановочныйдискизпривода, чтобыОСзагрузилась сжесткогодиска.

Поокончаниизагрузкивводимимяпользователяroot иполучаемдоступккомандномуинтерпретатору.

Шаг2.Настройка

МытолькочтоустановилиFreeBSD, ноонаещенеготовактому, чтобы выполнятьрольполноценногосервера: сетьнеработает, root неимеетпароля, всистеметолькоодинпользователь. Исправимэто.

Перво-наперво, установимпользователюroot пароль:

# passwd

Дваждывводимпароль. Далеесоздадимнепривилегированного пользователя, учетнуюзаписькоторогомыбудемиспользовать длявходанасерверчерезSSH. Дляэтоговоспользуемсякомандой adduser:

# adduser

Наэкранебудутпоявлятьсявопросы, набольшинствоизкоторых можнонедаватьответов(жать<Enter>), важнымиявляютсятолько имяпользователя, дефолтовыйкомандныйинтерпретатор(лучше выбратьtcsh) ипароль. Вконцекомандавыведетнаэкранполучившийсясписокнастроекпользователя, вответнакоторыйследует ввестислово«yes» (смотрискриншот), ивответнаследующийвопрос ввести«no».

Чтобыпользовательсмогполучатьправаroot, добавимеговгруппу wheel:

# pw groupmod wheel -m имя_пользователя

Исправимфайл/etc/fstab так, чтобыниктонесмогзапускатьфайлы, расположенныенаразделах/tmp и/var. Дляэтогодобавимфлаги «noexec» вполеOptions каждогоизэтихразделов(смотрискриншот). Установимболеежесткиеограничениянадоступксистемнымфайлам:

#chmod 0600 /etc/syslog.conf

#chmod 0600 /etc/rc.conf

#chmod 0600 /etc/newsyslog.conf

#chmod 0600 /etc/hosts.allow

#chmod 0600 /etc/login.conf

Теперьнамнужнонастроитьсетевоесоединение. ВоFreeBSD все глобальныенастройкихранятсявфайле/etc/rc.conf, поэтомуоткрываемегоспомощьюредактораидобавляемследующиестроки:

# ee /etc/rc.conf hostname="host.com"

ifconfig_em0="inet 1.2.3.4 netmask 0xffffffff" defaultrouter="5.6.7.8"

Здесь em0 во второй строке — это имя настраиваемого сетевого интерфейса. Список всех доступных сетевых интерфейсов можно получить с помощью команды ifconfig. В качестве значения опции

118

XÀÊÅÐ 07 /150/ 2011

Соседние файлы в папке журнал хакер