Брандмауэры и специальное программное обеспечение 8 Часть 4
Вид материала | Реферат |
СодержаниеБезопасность и пароли |
- Муниципальное общеобразовательное учреждение средняя общеобразовательная школа №12, 174.77kb.
- Управление экономикой и создание экономических информационных систем Изучив данную, 148.93kb.
- Программное обеспечение ЭВМ, 209.59kb.
- Программное обеспечение вычислительной системы, 824.71kb.
- Учебная программа (Syllabus) Дисциплина: Интерфейсы компьютерных систем (iks 3304), 321.31kb.
- Реферат по Информационной безопасности Тема: «Антивирусы», 711.1kb.
- Пк программный комплекс; по программное обеспечение; ппо прикладное программное обеспечение, 208.41kb.
- Лекция 4 Обеспечивающие подсистемы асу. Математическое, программное, лингвистическое,, 59.3kb.
- Математическое и программное обеспечение систем оперативной оценки характеристик сложных, 247.51kb.
- Учебная программа (Syllabus) Дисциплина «Инструментальные средства разработки программ», 374.12kb.
Безопасность и пароли
Говорят, что где тонко, там и рвется, — это высказывание часто вспоминают, когда речь заходит о значимости паролей в системе безопасности. Вообще говоря, надежность системы безопасности определяется множеством факторов, в частности тем, какие службы Linux-система делает доступными для внешних пользователей (используется ли она в качестве web-сервера, можно ли войти в нее при помощи telnet и т. д.). Другим определяющим фактором являются пароли пользователей, что подводит нас к еще одному фактору — соблюдение пользователями политик безопасности. Но как говорилось ранее, простой пользователь знать ничего не желает о безопасности. Если мы уважаем пользователя и не хотим менять его отношение к безопасности принудительными методами, нам следует сделать систему безопасности удобной и понятной для него. Труднее всего обеспечить удобство. Все безопасное обычно не слишком удобно (поскольку за удобством стоят не сочетающиеся с безопасностью предсказуемость и элементарность) и потому входит в конфликт с обычным поведением людей, предпочитающих всем возможным способам самый удобный. В конце концов, пользователи работают с системой для того, чтобы выполнить возложенную на них работу, а не добавить себе новой. Дабы пользователи сознательно не шли по пути наименьшего сопротивления при работе с паролями, я обычно стараюсь объяснить им, для чего вообще нужны пароли и почему так важно поддерживать их безопасность. Важно не с общих позиций типа «систему с низкой безопасностью могут взломать и украсть или повредить важные файлы», а с позиций личных интересов пользователя.
СОВЕТ
Наилучший способ заручиться поддержкой пользователей в деле поддержания безопасности паролей на должном уровне — объяснить им, почему соблюдение норм безопасности при работе с паролями находится в их же собственных интересах.
Большинство пользователей понимают всю важность электронной почты для своей работы. Тем не менее они не осознают, что любой вошедший в систему под их именем получает возможность использовать их электронную почту от их имени против них. Спросите у пользователя, использует ли он электронную почту в личных целях. Скорее всего, он ответит, что да. Затем спросите его, приходилось ли ему решать по электронной почте важные деловые вопросы. Таких, которые ответят «нет», с каждым днем становится все меньше и меньше. Но даже в случае отрицательного ответа некоторые из деловых партнеров вполне могут считать сделку по электронной почте столь же обязывающей, как сделка по телефону.
После чего объясните пользователю, что его электронные письма подчас обладают такой же важностью, как и его личная подпись. И хотя заголовок электронного послания можно подменить, в большинстве случаев подобная подмена так же противозаконна, как и подделка подписи. Но если некто, тем или иным способом узнав пароль другого пользователя, войдет в систему под его именем, то тем самым он, образно говоря, получит возможность подписываться подписью другого человека. Любая почта, отправленная им, будет технически неотличима от почты, отправленной самим пользователем. Практика предоставления кому-либо возможности входа в систему под другим именем является нежелательной и ее следует избегать (исключением являются системные администраторы, которые используют эту возможность для тестирования сценариев входа в систему и параметров пользователя, но для этого им нет необходимости знать пароль этого пользователя). К нежелательным явлениям следует отнести и вход в систему под чужим именем (даже с разрешения другого пользователя). Насколько это нежелательно? Ответ на этот вопрос определяется строгостью политики безопасности предприятия.
Однако пользователи должны понимать, что есть и другие не менее опасные способы получить несанкционированный доступ к их учетной записи. Наиболее распространен случай, когда пользователь, опасаясь забыть пароль, делает его простым для запоминания, а значит, и угадывания, или же записывает пароль на бумажку, которая зачастую просто прикрепляется к монитору. Система парольной безопасности основывается на двух вещах: постоянное имя пользователя и периодически меняющийся пароль. Большинство людей никому не скажут PIN-код для доступа к своему банковскому счету, однако свой пароль пользователя они оберегают далеко не столь ревностно. Хотя в отличии от ситуации с банковским счетом, где постоянная часть, то есть кредитная карта, является физическим объектом, доступ к которому еще нужно получить, постоянная часть системы парольной безопасности, то есть имя пользователя, известна всем (по крайней мере, всем в пределах компании и тем, с кем данный пользователь вел переписку по электронной почте). Поэтому если переменная часть где-то записана или легко угадывается или подбирается программой, перебирающей слова из словаря, то такую учетную запись нельзя считать хорошо защищенной.
Наконец, пользователи должны знать о существовании такого метода получения пароля, как «социальная инженерия» (social engineering). Большинство из нас встречалось в своей жизни хотя бы с одним человеком, о котором можно сказать «скользкий как уж». Такие люди обладают способностью убеждать других людей, прибегая к логично построенной аргументации, предоставить нужную им информацию. Но это не единственно возможный способ узнать чужой пароль. Иногда достаточно просто подсмотреть. Например, вы вводите имя пользователя и пароль не глядя на экран и, оторвав свой взгляд от клавиатуры, обнаруживаете, что где-то ошиблись (случайно нажали клавишу Enter перед тем, как ввести имя пользователя, или произошло что-нибудь вроде того), в результате вместо имени пользователя вы ввели свой пароль, и теперь ваш пароль виден любому, кому виден экран вашего монитора. Вполне вероятно, что ваш пароль только что был «украден» кем-то, кто просто проходил мимо.
Средством противодействия подобным казусам является регулярная смена пароля. Как часто это должно происходить, решать вам. Можно, конечно, менять пароль раз в десять лет, но лучше не делать промежутки между сменами слишком длинными, равно как лучше не делать их и слишком короткими, например, раз в час. Не менять пароль слишком долго означает подвергать себя риску взлома. Если вы меняете его слишком часто, значит, вы рискуете запутаться в паролях, забыть пароль или поддаться искушению записать его на бумагу.
ПРИМЕЧАНИЕ-
Проникновение постороннего в систему под видом обычного пользователя может иметь печальные последствия не только для файлов этого пользователя, но и для всей системы в целом, поскольку чем больше этот посторонний будет знать о вашей системе, тем легче ему будет найти прорехи в ее защите.
Даже если не впадать в крайности, все равно период смены пароля может изменяться в достаточно широком диапазоне. Произвести за вас оценку риска эта книга не сможет, здесь я приведу несколько вопросов, ответы на которые помогут вам определить наиболее подходящую для вас частоту смены пароля (в RFC 2196 объясняются основы оценки риска и даются ссылки на другие источники, содержащие информацию по этой важной теме).
- Свободно ли ваше рабочее пространство от любопытных глаз? Иначе говоря, если ваш пароль появится на несколько секунд на экране монитора, какова вероятность того, что кто-то его заметит?
- Насколько безопасна ваша сеть? Сеть, состоящая всего из двух машин, одной из которых пользуетесь только вы, а другой — члены вашей семьи, без сомнений относится к разряду безопасных (если, конечно, ваши дети не являются малолетними хакерами).
- Предусматривается ли подключение к вашей локальной системе других пользователей в то время, как вы уже подключились и работаете с ней?
- Используете ли вы тот же самый пароль для удаленного доступа к другим компьютерам вашей сети с использованием не защищенных (то есть не шифруемых) протоколов? Если да, существует ли возможность «прослушивания» сетевых каналов с других сетевых узлов (карты Ethernet в режиме прослушивания сети)?
Выбрав для себя подходящий интервал смены пароля, будь это неделя, месяц, три месяца, шесть месяцев или год, вы можете легко обеспечить его соблюдение при помощи механизма устаревания пароля, о чем рассказывалось в предыдущей главе. Но кроме того, сам пароль должен быть одновременно устойчив ко взлому, легко запоминаем (чтобы не было нужды записывать его) и трудно угадываем для тех, кто может вас знать.
Так какой же пароль является хорошим? Чем больше пароль напоминает набор случайных символов, тем лучше. Длина хорошего пароля находится в пределах от шести до восьми символов, хотя при некоторых обстоятельствах пяти символов может оказаться вполне достаточно. Пароли длиннее восьми символов будут усечены, при их использовании могут возникнуть проблемы с некоторыми программами, поэтому их лучше не использовать.
Придумать хороший пароль хотя и сложно, но вполне возможно. Однако я бы рекомендовал следующий путь.
1. Установите в системе программу makepasswd (ее можно найти по адресу h.ilp.physik.uni-essen.de/www.debian.org/Packages/stable/admin/makepasswd.phpl).
ПРИМЕЧАНИЕ
Программу makepasswd можно найти на компакт-диске, прилагаемом к данной книге.
- Сгенерируйте несколько паролей с помощью этой программы и выберите сре
ди них тот, который вам легче всего будет запомнить.
- Измените свой пароль.
- После этого с десяток раз выйдите и вновь войдите в систему. Через несколько
часов повторите это упражнение еще раз. Оно поможет вам запомнить ваш
новый пароль. Двадцати повторений обычно бывает достаточно, чтобы паль
цы запомнили последовательность нажатия клавиш.
Но если выдумывать пароль самому, без помощи makepasswd, как определить, хороший он или плохой? Для этого можно использовать признаки, перечисляемые далее. Комбинация символов является хорошим паролем, если она:
- содержит специальные символы (!@#$%&*, а также цифры) в двух или более знакоместах;
- содержит как заглавные, так и строчные буквы; - имеет длину от шести до восьми символов;
- представляет собой нечто непонятное или же комбинацию слов, разделенных специальными символами.
Комбинация символов является плохим паролем, если она:
- является словарным словом или же его модификацией (включая иностранные слова): party, fiesta, party5, fi3sta и т. п.;
- совпадает с именем кого-нибудь из ваших домашних: жены, ребенка, кота и т. п.
- представляет собой дату: 610930, 300961 и т. п.;
- взята из ваших личных данных: место рождения, номер паспорта и т. п.;
- имеет отношение к вашим увлечениям и т. п. (если это слово одно из тех, что все время вертится у вас в голове, поскольку связано с вашей личностью или с компанией, на которую вы работаете, то знающему вас будет нетрудно угадать его).
Помните, однако, что даже самый хороший пароль становится плохим, стоит только записать его на бумагу.
Когда мне нужно придумать пароли, одновременно легкие для запоминания и устойчивые ко взлому, я обычно выбираю какую-нибудь тему и использую предлагаемые ей слова в качестве основы для своих паролей. Возьмем, например, тему «растения». Используя названия растений (rose, oak, ivy и т. п.) и комбинируя их с чем-нибудь другим, скажем, цветами (red, blu, blk) и специальными символами, я с легкостью могу выдать целый ряд паролей, которые легко запомнить, но трудно взломать:
blk*ros3
.. blu!ivy
red#oak4
Чтобы проверить, насколько устойчивы ко взлому порождаемые вашей схемой пароли, имеет смысл натравить на них программу взлома паролей. Но об этом чуть далее.
Пока же вернемся к программе makepasswd. Будучи вызвана без аргументов, она возвратит шести- или восьмисимвольный пароль, который невозможно взломать простой атакой по словарю. Для взлома такого пароля придется прибегнуть к перебору всех возможных паролей, что связано с огромными вычислительными затратами. К несчастью, это пароли из разряда тех, которые пользователь обязательно запишет на бумагу и при виде которых сразу становится ясно, что это пароль. Поэтому задача донесения до пользователей необходимости сохранения паролей в секрете приобретает здесь первостепенную важность.
Программа makepasswd представляет собой простой сценарий на языке Perl, который выводит случайный пароль и, при необходимости, этот же пароль в зашифрованном виде. Например:
# makepasswd --char 8 --count 8 --crypt
ecuraCdK aFP4Fy.p/K9bY
dLeiVWVd Flqcui.9L3xQI
7FSBJEFH MkHjkpOIdSmLc
ORA2vLsv !QYuK3Fw5Ih8U
DuSbFxDj bB.thDEpz7Zi.
wCPOIX6v Xe3ntRWjABCnM
SowKUgvg Z485y6UQyMEdE
xPViT6AU X9gm2NtZc.hK6
Удобство makepasswd в том, что эта программа позволяет автоматизировать процесс создания большого числа учетных записей. Например, можно написать сценарий, который бы последовательно перебирал бы всех пользователей из определенного списка (скажем, от studentl до student100), генерировал пароль, создавал учетную запись для каждого имени и помещал имена учетных записей и пароли в файл, из которого их потом можно было бы раздавать студентам.
ПРИМЕЧАНИЕ
На компакт-диске, прилагаемом к книге, имеется примитивный сценарий, берущий из файла список имен пользователей, которых нужно добавить в систему, и создающий для них хорошие (с учетом ранее изложенных признаков) восьмисимвольные пароли. Более точно: для каждого имени пользователя из файла сценарий создает группу и пользователя (с одним и тем же номером UID/GID), генерирует и шифрует пароль и помещает его в файл /etc/shadow.
Обратите внимание, что перед началом своей работы сценарий осуществляет некоторые проверки: выполняется ли он на уровне привилегий root, не занят ли начальный UID и т. д. Тем не менее нельзя сказать, что он проверяет все1.
Например, в нем предполагается, что перечисленные в файле имена пользователей отсутствуют в системе, иными словами, сценарий позволяет только добавлять пользователей, но не обновлять их пароли.
Некоторые вещи жестко заданы в исходном тексте — например, использование восьмисимвольных паролей. Если вы решите изменить длину пароля, не забудьте поменять значение параметра самой последней команды cut. Вообще говоря, рассматривайте этот сценарий не как нечто законченное и совершенное, но как пример, демонстрирующий один из возможных подходов к проблеме создания множества учетных записей. Так что если вам что-нибудь в нем не нравится, смело изменяйте его. Для этого он и создан. Более правильно было бы, как мне кажется, написать сценарий на expect, но я не особо силен в области expect-сценари-ев. Для тех, кто не знает, expect — это язык для написания сценариев управления интерактивными программами, позволяющий имитировать сеанс работы с программой, предполагающей интерактивное вмешательство в ее работу (например, ftp или rogue). Программа ожидает ввода с клавиатуры, однако вместо этого ей передается команда сценария, благодаря этому удается автоматизировать сеанс работы с программой. Я написал данный сценарий по одной причине: существующие программы неудобно использовать для быстрого и эффективного добавления в систему множества пользователей. Пришлось самому решать эту проблему в меру своих умений. Далее приводится текст сценария (комментарии и текстовый вывод переведены на русский язык, если ваша система не поддерживает русский, вы должны модифицировать сценарий соответствующим образом).
- #!/bin/bash
- # Разработан Дэвидом Банделом (D.Bandel) - 3 сентября 99; распространяется в соответ
ствии с GPL
# Сценарий принимает список имен пользователей и создает набор учетных записей
4 # Зашифрованные пароли записываются в файл /etc/shadow
5
- prog=/usr/bin/makepasswd
- names=/root/newusernames
- 1ogins=/root/newlogins
9 tmpshadow=/root/shadow.tmp
10 startid=1000
11
12 if [ $UID != 0 ] ; then
echo "Чтобы запустить программу $0, вы должны быть пользователем root"
14 exit 1
15 fi
16
17 if [ ! -е /etc/shadow ] ; then
- echo "Вы не используете систему shadow"
- exit 2
- fi
- if [ ! -x $prog ] ; then
- echo "В вашей системе не установлена программа $prog"
- exit 3
- fi
- if [ 'grep ":${startid}:" /etc/passwd' ] ; then
26 echo "Пожалуйста, измените startid (начальный UID/GID) и запустите сценарий
заново"
27 exit 4
28 fi
- echo : echo "идет работа ..."
- for i in 'cat $names'
- do
- j='$prog --char 8'
- echo "${i}:${j}" >>$logins ; echo " . "
- done
35
- k=$startid;cp /etc/shadow /etc/shadow.orig
- echo ; echo "работа продолжается ..."
- for i in 'cat $logins'
- do
- j='echo $i | cut -d : -f 1 -'
- l='echo $i | cut -d : -f 2 -'
- groupadd -g $k $j
- useradd -m -u $k -g $j $j
- k=$[$k+l]
- m='$prog --clear=$l --crypt | cut -b 12 --'
- sed "s|$j:\*not set\*|$j:$m|" /etc/shadow > $tmpshadow
- mv $tmpshadow /etc/shadow ; echo " . "
- done
49
50 exit 0
Сам сценарий предельно прост. Нужно лишь создать файл /etc/newusernames, содержащий имена пользователей, которых нужно добавить в систему. После чего можно выполнять сценарий.
- Строки 6-10 инициализируют некоторые переменные, являющиеся, по сути дела, параметрами сценария. В силу характера информации, помещаемой во временные файлы, местом хранения временных файлов выбран подкаталог /root. Предполагается, что права на чтение /root имеет только суперпользователь. Возможно, вам понадобится изменить имя входного файла, содержащего имена пользователей, и начальное значение идентификатора группы и пользователя (UID/GUID).
- Строки 12-28 осуществляют некоторые простейшие проверки. Проверяется не все, но только самое важное.
- Строки 30-34 перебирают все имена пользователей и создают для них пароли, сохраняемые во временном файле для дальнейшего использования.
- Строки 38-48 создают для каждого имени частную группу пользователя, самого пользователя, шифруют пароль и помещают его в /etc/shadow.
Выполнение сценария может занять некоторое время. В основном оно уходит на генерацию программой makepasswd случайных паролей и на их последующее шифрование.