Oleg_2012

О компьютерной безопасности...

Среди программистов и сисадминов бытует мнение, что безопасники - самые лютые их враги.
Иногда я тоже матерю безопасников. Особенно когда какой-нибудь антивирус Касперского вдруг ни с того ни с сего вырубает задачу подключения к рабочему столу или стирает только что скомпилированную программу. И ладно бы кричал об обнаружении "подозрительного кода" - молчком делат свое дело, и попробуй догадайся, программа ли заглючила, или операционка, или еще что...
А то еще бывает, ставишь программу клиент-сервер сторонних разработчиков в локалке своей организации - и тут оказывается, что клиент и сервер разнесены в разные подсетки и между ними межсетевой экран. Безопасники настраивают его стандартно, инструментальные средства базы данных работают нормально. А инсталлируемая программа глухо виснет. После нескольких дней созвона с разработчиками и разбирательств с привелегиями внутри базы данных, вдруг натыкаешься на сетевые ошибки и понимаешь, что не в базе дело - программа использует какие-то еще порты помимо стандартных, а они закрыты безопасниками...
Я понимаю, безопасность - нужная вещь. Но в некоторых организациях, имеющих дело с персональными данными или информацией ограниченного доступа, безопасники успешно реализуют модель тотальной несвободы - "запрещено все, что не разрешено". А разрешают настолько немного, что даже разработать какую-то полезную утилитку невозможно (про "принести" речь не идет уже очень давно, только про "приобрести там, где укажут")...
Сколько программистских мозгов работает на эту самую безопасность, сколько мозгов из прикладных областей вынуждены на нее отвлекаться, чтобы соблюсти требования, а все равно появляются и ворованные базы данных на рынке, и свои доморощенные Ассанжи и Сноудены - человеческий фактор, однако...
Где грань, до которой расходы на безопасность оправданы ? Кто лучше сражается - прыгучий самурай в кимоно или тевтонский рыцарь в тяжеленной броне ? А ведь брони можно навесить столько, что рыцарь и с места не сдвинется.... 
  • Настроение: sleepy sleepy
  • Музыка: Mark Collin - Kidnappeur
В нормальной программе порты, которые она слушает или на которые обращается, обязательно должны быть либо конфигурируемы, либо описаны в документации/изображены на схеме. Имея это знание, при инсталляции программы типа клиент-сервер первым делом простым телнетом проверяется доступность нужных портов от клиента до сервера, и в случае недоступности нужных портов, привлекаются люди, которые нужные порты могут открыть в нужных местах. Подход "запрещено всё, что не разрешено" мне кажется правильным и разумным, и ничуть не чрезмерным. То, что преступления всё равно совершаются, не значит, что законы не нужны.
В этом плане, конечно, ты права - подход правильный. Только вот сторонние разработчики зачастую не знают, что именно запрещено и ни фига не описывают, пока их не пнешь... А самим вести разработки позволяется все меньше и меньше - аутсорсинг, блин...
А с другой стороны - как опишешь, например, совместимость программы с некоторыми системами защиты от вирусов или так называемой "замкнутой средой"? Мы, конечно, тестируем программы в наших условиях, но некоторые вещи все равно вылезают только во время эксплуатации...

Edited at 2013-07-02 02:39 (UTC)
Им и не нужно знать, что запрещено, я уже сказала, в том случае, который ты описал достаточно было описания того, какие порты использует система по умолчанию, а вообще-то такие вещи обычно не хардкодятся, а делаются настройками. Если разработчики даже такие элементарные вещи не описывают, это очень плохие разработчики. Если тестировщики такие элементарные вещи не проверяют - это плохие тестировщики. Если проблема воспроизводится только на продуктиве и не воспроизводится на тестовой среде - это плохая тестовая среда. Если администратору системы перед установкой в продуктив не приходит в голову такое элементарное действие, как проверка доступности телнетом необходимых портов - это неопытный администратор, который, наверное, только картриджи раньше менял и витую пару обжимал.
Кстати, если система "глухо виснет", т.е. не пишет осмысленно в лог, почему именно она не работает - это плохая система. Если вы совместно с разработчиками обнаруживаете в логах сетевые ошибки только на вторые сутки мучений - видимо, это серьёзный недостаток логирования.
Вот кого надо ругать, а не безопасников. А лучше никого не ругать, а подумать, как избежать подобных ситуаций в дальнейшем. А то у некоторых людей всегда какие-то непреодолимые "внешние враги" виноваты - безопасники, государство и т.п. :)
Ты как всегда права. Мои ругательства в адрес безопасников действительно следствие того, что я хреновый "внедряльщик-сопровождальщик", опыта в этом деле у меня на самом деле мало, я больше привык писать свое, нежели настраивать чужое... Однако, в описанном выше случае все немного сложнее. Внедряемая программа рассчитана на работу в локальной сети внутри конторы. Разработчики не в курсе, что наши безопасники решили эту сеть разделить на сегменты и поставить между ними экраны - дополнительное "железное" средство регулировать доступ пользователей к серверам. В других-то конторах все работает ! Отсюда и "белые пятна" в документации... Кстати, коннект во внешнюю сеть (это отдельная технологическая операция) там описан по всем правилам.
Ещё раз. В документации этого может и не быть, и разработчикам необязательно про это знать и на это специально не закладываться, потому что это за несколько секунд проверяется администратором или внедренцем, как ты его называешь, при помощи телнета. А какие приложению нужны порты или выносить их в настройки разработчикам нужно независимо от знания об особенностях той сети, куда приложение будет ставиться.
Да не надо никого ругать. :) Лучше наладить дело так, чтобы такого больше не повторилось. И радоваться обретению нового интересного опыта. Который, как известно, расширяет возможности. :) Берите меня на работу. ;) Я люблю такие задачки. :) Почему что-то не работает или где что-то может сломаться.
А я вот раньше с такими задачками редко сталкивался. У программиста обычно больше маневра - тут и возможность исправить, и крутые отладочные средства, и "обходные" варианты решений... А возня с чужой прогой, да еще при незнании важных моментов от наших сисадминов и безопасников - тяжко... Hо да, опыт копится...
согласен с предыдущим мнением - поведение программы должно быть описано вплоть до номеров портов и протоколов.

Edited at 2013-07-01 20:01 (UTC)
Тьфу-тьфу... За все время моей работы серьезного ущерба не было. Были у людей "залеты" по линии безопасности, но без последствий для информационной системы (кого-то застукивали за игрушками, у кого-то обнаруживался вирус)...