книги хакеры / журнал хакер / 150_Optimized
.pdf
|
|
|
|
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 |