Выбрать главу
Подстрахуйтесь на случай отказа

Многие системы устроены таким образом, что если система выходит из строя, пользователь обращается к резервной системе, хоть и менее безопасной. Например, в Соединенных Штатах система VeriFone используется при совершении сделок по кредитной карточке. Когда клерк проверяет вашу карту, VeriFone обращается к базе данных и проверяет, не украдена ли карта, достаточно ли денег у вас на счете и т. д. Вспомните случаи, когда терминал не работал по какой-либо причине: или он был сломан, или прерывалась телефонная связь. Разве торговец отказывался обслуживать вас? Конечно, нет. Он вытаскивал бумажные бланки и оформлял сделку по старинке.

Многие нападающие пытаются взломать защиту «кавалерийской атакой»: атаки, приводящие к отказу в обслуживании, могут повторяться снова и снова. Я уже говорил о грабителях, которые заставляют постоянно срабатывать сигнализацию для того, чтобы ее в конце концов отключили. Есть и более тонкие способы нападения. Немногие люди дисциплинированы настолько, чтобы не воспользоваться обычной связью, когда они не могут пользоваться безопасной. Даже военные, которые, как принято считать, подходят к этому серьезно, постоянно повторяют подобные ошибки.

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

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

Используйте непредсказуемость

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

Одно из преимуществ защищающихся перед нападающими состоит в знании местности. Армия не передает врагу сведений о расположении своих танков, установок противовоздушной обороны и батальонов. Нет никакой причины сообщать каждому интересующемуся сведения о топологической схеме вашей сети. Слишком многие компьютеры в ответ на любой запрос выдают информацию об используемой операционной системе и номере версии. Этому нет разумного обоснования. Будет намного лучше, если при регистрации пользователя в системе на экране появится сообщение:

«Предупреждение: частный компьютер. Использование этой системы предусматривает контроль безопасности. Все действия пользователя и сведения о нем регистрируются, включая IP-адрес и имя хоста».

Предоставьте нападающим самим разбираться, можете ли вы следить за ними.

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

Если вы используете брандмауэр, нет никакого смысла сообщать всему миру настоящее имя хоста и имя пользователя. Это также принцип построения системы мер безопасности (сетевой сигнализации, приманок и других). Администратор сети знает, как она работает и что означают те или иные действия. Когда кто-то копается в фиктивном счете, администратор знает, что это – злоумышленник. Нападающий не должен знать, где и какое оборудование работает, когда и какой протокол можно использовать, какие порты и при каких условиях будут открыты. Поразительно, как часто серверы, приложения и протоколы объявляют на весь мир: «Привет! Я – служба V2.05». Многие автоматические средства взлома в поисках определенных версий программного обеспечения просматривают машины, о которых известно, что у них имеются уязвимые места. Если сети будут непредсказуемы, нападающие не смогут так свободно их огуливать. Не располагая нужной информацией, намного труднее обозначить цель и определить возможные виды атак. Разница такая же, как между прогулкой по солнечном лугу в полдень и по зарослям колючего кустарника в полночь.