Безопасность в Ubuntu
25.1. Безопасная работа в Ubuntu
Вспомните главу 2, когда мы очень легко получили права root, используя загрузочный LiveCD. Точно так же доступ к вашей системе может получить и злоумышленник. Алгоритм прост: загружается с LiveCD, получает права root, делает все, что хочет, с файлами на жестком диске — ведь у него есть права root. Даже если у злоумышленника нет LiveCD Ubuntu, он может использовать любой другой LiveCD или просто установить другую операционную систему.
Чтобы избежать подобной ситуации, следует:
□ сделать жесткий диск первым загрузочным устройством в BIOS;
□ установить пароль на доступ к BIOS;
□ можно также установить пароль и на загрузку компьютера, но это не очень удобно — при каждой перезагрузке нужно будет вводить пароль.
Правда, и эти меры не являются панацеей — при желании можно просто вытащить на минуту батарейку BIOS или использовать специальный джампер для сброса настроек (так будет быстрее), и все параметры вместе с вашими паролями будут сброшены. Теперь можно делать с компьютером все, что угодно. Надеюсь, что до этого не дойдет. Но и вы сами должны принять некоторые меры по обеспечению безопасности своего компьютера. Он должен располагаться в безопасном месте, желательно также, чтобы он вовсе не оставался без присмотра. Иначе злоумышленник может даже не извлекать батарейку BIOS, а сразу вытащить жесткий диск и взять оттуда все, что ему нужно.
Теперь поговорим о паролях. Ранее для шифровки паролей использовались алгоритмы DES или его развитие 3DES, которые легко можно было расшифровать. В современных дистрибутивах, а наш Ubuntu таким и является, пароли пользователей шифруются с помощью алгоритма MD5 — его расшифровать вообще невозможно. Правильность пароля определяется так: пароль шифруется и полученный шифр сравнивается с уже имеющимся. Если они совпадают, значит, пароль правильный. Видите, как система заботится о наших данных? Но заботимся ли мы о них? Если вы назначили пароль типа 123456, то можно сказать, что вы совсем не помогаете системе обеспечивать безопасность своих данных. Такой пароль подбирается за пару минут с помощью обычного перебора («brute force attacks»).
Как осуществляется подбор? Предположим, что у нас есть пароль из трех цифр, и мы знаем, что эти цифры не превышают 3. Тогда мы получим 3! (три факториал — если кто-то забыл школьный курс математики) возможных комбинаций, а именно: 123, 132, 213, 231, 312, 321, то есть шесть. Если предположить, что можно использовать цифры от 0 до 9, а длина пароля не превышает 9 символов, тогда вариантов будет уже 362 880. Про буквы и специальные символы говорить вообще не хочется.
Отсюда вывод: чем сложнее ваш пароль: длиннее, содержит цифры, специальные символы, разный регистр букв — тем сложнее его подобрать.
Каким должен быть идеальный пароль?
□ минимальная длина пароля — 8 символов;
□ пароль должен содержать символы разного регистра, например, PasSWorD;
□ кроме символов желательно, чтобы пароль содержал цифры, например, 5PasSWorD6;
□ пароль должен содержать специальные символы, например, знак подчеркивания (5PasS_WorD6);
□ пароль должен быть сложным для подбора и легким для запоминания, чтобы вы его не записали где-нибудь, где его могут прочитать.
Отсюда следует, что пароль 5PasS_WorD6 — практически идеальный. Цифры 5 и 6 легко запоминаются — они следуют по порядку: 5 — в начале, 6 — в конце. Специальный символ разделяет две значимые части слова — тоже легко запомнить его местонахождение. А вот регистр символов придется запомнить… Можно, конечно, немного упростить задачу, например, изменив пароль до 5PASS_word6. Так пароль тоже будет идеально легок для запоминания и труден для подбора.
Повседневные операции следует выполнять от имени обычного пользователя. Если нужно выполнить административное действие, используйте команду sudo, а не входите под именем root. Пусть учетная запись root будет вообще отключена. Так безопаснее.
Кроме этого выполните следующие действия:
□ запретите изменять меню GRUB во время загрузки (см. разд. 25.2) — ведь злоумышленник может изменить параметры ядра и получить права root;
□ отключите ведение истории команд в консоли (см. разд. 25.3) — чтобы никто не смог просмотреть введенные вами команды;
□ отключите использование комбинации клавиш в консоли (см. разд. 25.4) — чтобы никто не смог перезагрузить компьютер без вашего ведома;
□ установите антивирус (см. разд. 25.5) — хотя вирусы в Linux являются довольно редким явлением, но безопасность лишней не бывает.
25.2. Настройка загрузчика GRUB2
Как уже отмечалось, начиная с версии 9.10, в Ubuntu используется загрузчик GRUB2 вместо обычного GRUB. По сравнению с GRUB, новый загрузчик одновременно и проще в обращении, и сложнее в настройке. Настраивать GRUB2 придется реже, но к его сложной настройке надо будет привыкать, — практически все современные дистрибутивы перешли на GRUB2.
В GRUB можно было задать общий пароль для всех загрузочных меток, а также установить пароль только на некоторые загрузочные метки. В GRUB2 можно сделать то же самое, но, кроме самого пароля, понадобится указать еще и имя пользователя, что усложняет злоумышленнику взлом системы, поскольку ему нужно будет знать не только пароль, но и имя пользователя. Защита отдельных загрузочных меток, как правило, используется редко, чаще устанавливается пароль на все метки сразу, что и будет продемонстрировано в этой главе.
Сначала установим простой (незашифрованный) пароль, а затем зашифруем его, чтобы никто не смог его прочитать, загрузившись с LiveCD. Прежде всего откройте файл /etc/grub.d/00_header:
sudo nano /etc/grub.d/00_header
В конец файла добавьте строки:
cat << EOF
set superusers="den"
password den 1234
EOF
Здесь имя пользователя den, пароль — 1234.
Теперь обновите GRUB2:
sudo update-grub
Можно также напрямую редактировать файл конфигурации GRUB2 — grub.cfg. В него следует добавить вот такие строки:
set superusers="user1"
password userl passwordl
password user2 password2
Обратите внимание, что командами password заданы два пользователя: user1 и user2 с паролями password1 и password2 соответственно. Но пользователь user1 является суперпользователем, то есть может редактировать загрузочные метки GRUB2, а обычный пользователь (user2) может только загружать метки. Таким образом, у пользователя user1 получится передать ядру новые параметры, а пользователь user2 сможет только загрузить Linux с параметрами по умолчанию.
Можно даже задать условие, что метку Windows будет загружать только пользователь user2:
menuentry "Windows" — users user2 {
set root=(hd0,2)
chainloader +1
}
Теперь разберемся с шифрованием пароля. Команда password поддерживает только незашифрованные пароли. Если вы хотите использовать зашифрованные пароли, то нужно применить команду password_pbkdf2. Например:
password_pbkdf2 den зашифрованный_пароль
Получить зашифрованный пароль можно командой:
grub-mkpasswd-pbkdf2
После программа запросит у вас пароль и сообщит его хэш:
Your PBKDF2 is grub.pbkdf2.зашифрованный_пароль
Пример пароля:
grub.pbkdf2.sha512.10000.9290F727ED06C38BA4549EF7DE25CF5642659211B7FC076F 2D28FEFD71784BB8D8F6FB244A8CC5C06240631B97008565A120764C0EE9C2CB0073994D7 9080136.887CFF169EA8335235D8004242AA7D6187A41E3187DF0CE14E256D85ED97A9735 7AAA8FF0A3871AB9EEFF458392F462F495487387F685B7472FC6C29E293F0A0
Весь этот хэш нужно скопировать в конфигурационный файл GRUB2:
password_pbkdf2 den
grub.pbkdf2.sha512.10000.9290F727ED06C38BA4549EF7DE25CF5642659211B7FC076F 2D28FEFD71784BB8D8F6FB244A8CC5C06240631B97008565A120764C0EE9C2CB0073994D7 9080136.887CFF169EA8335235D8004242AA7D6187A41E3187DF0CE14E256D85ED97A9735 7AAA8FF0A3871AB9EEFF458392F462F495487387F685B7472FC6C29E293F0A0
Если вы не использовали файл 00_header, а редактировали непосредственно файл grub.cfg, то команду update-grub вводить не нужно!
Дополнительную информацию вы сможете получить по адресам: http://ubuntuguide.net/how-to-setup-boot-password-for-grub2-entries и http://grub.enbug.org/Authentication.
25.3. Отключение истории команд
Отключить ведение истории команд очень просто. Для этого введите три команды:
rm — f $HOME/.bash_history
touch $HOME/.bash_history
chmod 000 $HOME/.bash_history
После этого никто не сможет просмотреть, какие команды вы вводили.
25.4. Отключение комбинации клавиш ++
Предположим, у вас есть сервер. К нему подошел «хакер». Он прекрасно знает, что проникнуть в ваш безопасный сервер он не сможет. Там и пароли сложные, и пароль на BIOS стоит. В общем, не пробраться. Как же вывести сервер из строя? Можно, конечно стукнуть по нему молотком, но факт физического повреждения будет налицо, поэтому данный вариант не проходит. Вариант с отключением питания (или источника бесперебойного питания) отпадает по той же причине — уж больно он явный.
Что же остается? Нажать комбинацию клавиш . Сервер перезагрузится, а поскольку установлен пароль на загрузку, то загрузиться он не сможет, пока вы не введете этот пароль. А вас может не быть на месте, вы можете быть вообще в другом городе. Тогда вам придется кому-то сообщить пароль, чтобы он его ввел. Но это небезопасно — вдруг он в сговоре с «хакером»? Поэтому намного эффективнее отключить комбинацию клавиш и кнопку Reset. Кнопку Reset можно отключить физически (для этого понадобится разобрать корпус) или программно (в некоторых BIOS есть функция, позволяющая отключить кнопку Reset).
Для отключения комбинации клавиш откройте файл /etc/event.d/control-alt-delete:
sudo nano /etc/event.d/control-alt-delete
Найдите и закомментируйте строку:
exec /sbin/shutdown — r now "Control-Alt-Delete pressed"
Строка после редактирования должна выглядеть так:
#exec /sbin/shutdown — r now "Control-Alt-Delete pressed"
Сохраните файл.
25.5. Антивирус ClamAV
25.5.1. Вирусы и Linux
Linux считается одной из самых безопасных операционных систем. Она устойчива, ее сетевые сервисы надежны и… для Linux существует очень мало вирусов. Почему? Давайте подумаем. Представим на некоторое время, что мы — вирусописатели. Для какой операционной системы вы бы написали вирус? Для той, в которой работает на данный момент большинство компьютеров и которая более доступна в плане внедрения вируса? Или для той, которая не так популярна, как первая, и в несколько раз неприступнее? Думаю, вы бы выбрали первый вариант. Вот такой вариант как раз и есть — это Windows. Начнем с того, что для DOS было написано очень много вирусов, и все они по наследству перешли в Windows. Но система Windows несла в себе не только новые функции, но и новые ошибки, каждая из которых порождала новую волну вирусов. Не успевали в Microsoft закрыть одну «дыру», как появлялась следующая. Чего только стоит дырявый Internet Explorer, через который буквально за 10–15 минут в Интернете может проникнуть в систему целая армия троянов, сетевых червей и прочей нечисти. Windows, с ее передовыми, но и непроверенными технологиями, — отличная цель для вирусописателей. Ведь вирусописатели, в какой-то степени, творческие люди. И им интересно, чтобы их «творение» развивалось. А в Linux развитие вируса пресекает сама операционная система. Предположим, что Linux-пользователь скачал какой-то вирус для Linux. И даже запустил его. Максимум, что может сделать вирус, — это повредить файлы в домашнем каталоге пользователя. Ведь для всего остального у него не хватит полномочий. А если вирус запустит пользователь root? Да, в этом случае он сможет нанести ущерб системе. Но, скажем так, это единичный случай. Все грамотные Linux-пользователи никогда не запускают ничего подозрительного под пользователем root и вообще ежедневную работу выполняют под обычным пользователем, а под пользователем root осуществляют только системно-важные операции, просмотр же WWW к ним, как мы знаем, не относится. Да и Linux-браузеры не содержат такого огромного количества «дыр», как IE.
Если вирусов под Linux нет, спрашивается: зачем же тогда нужен антивирус? Да как раз для обеспечения безопасности Windows-машин. Большинство антивирусов для Linux предназначены для установки на шлюзах — машинах, которые предоставляют локальным сетям доступ к Интернету. Установив антивирус на шлюзе, вы сможете контролировать трафик, проходящий через шлюз. Таким образом, вы защитите Windows-машины от проникновения вируса. Охрану ставят на входе, не так ли? Конечно, антивирус на шлюзе — это не панацея. Не нужно рассчитывать, что он на все 100 % обезопасит вашу сеть. Желательно, чтобы на каждой Windows-машине был установлен отдельный антивирус, работающий в режиме монитора.
Настройка шлюза выходит за рамки этой книги, но установку и использование антивируса мы рассмотрим.
25.5.2. Установка и использование антивируса ClamAV
ClamAV, в отличие от многих своих коммерческих собратьев, является полностью бесплатным антивирусом. Это значит, что вы можете его абсолютно бесплатно скачать, установить на любое количество машин и использовать. Обновления тоже бесплатны.
Для установки ClamAV введите команду:
sudo apt-get install clamav
После установки нужно сразу обновить антивирусные базы:
sudo freshclam
Для проверки всей файловой системы следует выполнить команду:
sudo clamscan — r /
Если нужно проверить отдельный каталог, тогда укажите его имя:
sudo clamscan — r <каталог>
Можно также установить графическую оболочку для антивируса — пакет clamtk. Запустить программу можно командой меню Приложения | Стандартные | Проверка на вирусы.