Security (Русский)

From ArchWiki
Jump to: navigation, search

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

Tango-dialog-warning.pngИнформация в этой статье или разделе устарелаTango-dialog-warning.png

Причина: пожалуйста, используйте первый аргумент шаблона для указания причины. (Обсудить)

Tango-document-new.pngThis article is a stub.Tango-document-new.png

Notes: please use the first argument of the template to provide more detailed indications. (Discuss in Talk:Security (Русский)#)
Важно: Любые действия, выполняемые от root, несут потенциальную угрозу! Обязательно создайте обычного пользователя для повседневных задач.

Описываются возможные методы повышения уровня безопасности и защиты информации в системах на базе ArchLinux.

Защита информации

  • Приемы, увеличивающие безопасность вашей системы, снижают удобство ее использования. Важно соблюсти баланс между безопасностью и удобством. Запомните: безопасный компьютер - не работающий компьютер.
  • Существует множество способов обезопасить компьютер, но наибольшая угроза всегда будет исходить от самого пользователя. Ведь злоумышленникам нужен не компьютер, а Ваши данные. Представьте, что ваша система безопасности имеет слои: если некоторые из них удалось обойти, остальных должно быть достаточно для защиты. Тем не менее вы никогда не сможете сделать систему абсолютно безопасной, ведь для этого вам придется отключить ее ото всех сетей, закрыть в сейфе и никогда не пользоваться.
  • Будьте немного параноиком и с осторожностью относитесь ко всему. Если что-то звучит слишком хорошо, чтобы быть правдой, то оно правдой может и не быть.
  • Ознакомьтесь с принципом минимальных привилегий.

Физическая безопасность

Примечание: Вы можете пропустить эту секцию, если вас интересует только защита от удаленных угроз.

Физический доступ к компьютеру обычно предполагает доступ с правами root. Можно ограничить доступ таким образом, чтобы злоумышленник мог получить информацию только сняв ваш жесткий диск (см. также шифрование) или сбросив настройки BIOS. Оба варианта предполагают вскрытие системного блока, так что, возможно, замок на системном блоке будет не лишним.

Блокировка BIOS

Установка пароля на BIOS препятствует изменению его настроек и загрузке с помощью съемных устройств для получения root-доступа к файловой системе. Вы должны убедиться, что ваш диск является первым загрузочным устройством в списке (или вообще отключите возможность загрузки с других устройств).

Пароль загрузчика

Очень важно защитить загрузчик. Существует волшебный параметр ядра init=/bin/sh. Он делает использование разграничений прав бесполезным.

Надежные пароли можно сгенерировать с помощью пакета apg или другого автоматического генератора паролей.

GRUB

GRUB (Русский)#Защита загрузчика паролем.

Отключение CTRL-ALT-DEL

Чтобы запретить использование CTRL-ALT-DEL для перезагрузки машины, вы можете использовать файл /etc/inittab. Используется в производственной среде, где оператор работает с клавиатурой, в то время как сам компьютер обычно защищен.

Откройте файл /etc/inittab и найдите линию:

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

Закоментируйте строку, вставив символ #. Изменения вступят в силу после перезагрузки. Для того, чтобы применить их сейчас, выполните:

# /sbin/init -q

Разумеется, кто-то может получить физический доступ к вашему компьютеру и ему будет достаточно нажать кнопку питания, чтобы выключить систему.

Автоматическая деавторизация в виртуальной консоли (и SSH)

Если вы не используете bash или zsh, вы можете настроить TMOUT, и вы, таким образом, не забудете выйти из оболочки (когда xscreensaver не запускается и не может вас защитить).

Вот пример скрипта, который можно поместить, например, сюда: /etc/profile.d/shell-timeout.sh

TMOUT="$(( 60*10 ))";
[ -z "$DISPLAY" ] && export TMOUT;
case $( /usr/bin/tty ) in
	/dev/tty[0-9]*) export TMOUT;;
esac

Если вы хотите использовать таймаут в любом терминале bash/zsh (даже в X), используйте просто:

export TMOUT="$(( 60*10 ))";

Обратите внимание, что скрипт не сработает, если в оболочке выполняется команда (например: ssh-сессия или закачка wget). Если вы используете виртуальные консоли в основном для перезагрузки зависших GDM/Xorg, это может быть весьма полезно.

Дисковые разделы

Все директории, в которые может записывать информацию обычной пользователь должны монтироваться отдельно от корня / to avoid hardlink vulnerabilities and Denial of Service attacks (quotas don't stop a user from causing a DoS if there are world-writable directories).

Минимальное число разделов, необходимых для "безопасной" системы:

/
/var: /var/spool/mail, /var/lock и /var/tmp право записи имеют все пользователи системы (world writable); избыток логов может быть использован для атаки переполнения раздела.
/tmp: право записи имеют все пользователи системы (world writable)
/home: право записи имеют обычные пользователи
Примечание: /tmp может быть смонтирован как tmpfs, так что такой раздел на диске можно не делать. См. fstab.

Опции монтирования

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

Монтирование

  • nodev: Данная опция предполагает что на монтируемой файловой системе не будут созданы файлы устройств (/dev). Корневой каталог и целевая директория команды chroot всегда должны монтироваться с опцией dev или defaults.
  • nosuid: Запрещает операции с set-user-identifier и set-group-identifier битами.
  • noexec: Бинарные файлы не выполняются. НИКОГДА не используйте эту опцию на вашей корневой системе.

Пример использования

Примечание: Разделы на которых предполагается лишь хранение данных должны монтироваться с параметрами nodev,nosuid,noexec.
Раздел nodev nosuid noexec
/var да да да
/home да да да, если вы не пишете программ или не используете wine
/dev/shm да да да
/tmp да да возможно, но запрещает компиляцию и некоторые другие вещи
/boot да да да

Настройка доступа к файловой системе

Параметры доступа по умолчанию предоставляют доступ на чтение практически для всего и изменение прав доступа может скрыть ценную информацию от злоумышленника, получившего доступ в правами не-root пользователя такого как http или nobody.

Например:

# chmod 700 /boot /etc/{iptables,arptables} 

Шифрование диска

Вы должны знать, что шифрование является единственным способом для защиты ваших данных от людей, которые имеют физический доступ к компьютеру. Шифрованные тома должны монтироваться только в условиях когда ни вам ни вашим данным ничего не угрожает: только вы имеете физический и root-доступ к системе (root сам по себе небезопасен, не используйте его без острой необходимости).

Пароли

Примечание: Лучший способ забыть пароль - это нажать на кнопку запомнить пароль.

Используйте надежный пароль. Составляйте его с помощью специальных сервисов или самостоятельно, но не используйте пароли которые легко подобрать, например набор обычных слов или имя вашей любимой тещи. Так как любой, кто знает вашу тёщу может догадаться использовать ее имя как пароль (даже она сама). Словом, опасайтесь тёщ и социальной инженерии. В пароле должно быть не менее 8 символов. Также стоит использовать буквы разного регистра, цифры и специальные символы. Дело в том, что при переборе пароля взломщик указывает, какие наборы символы может содержать подбираемый пароль. Обычно эти наборы: цифры, буквы (в одном или разных регистрах), специальные знаки. Некоторые люди в своих паролях используют даже редкие символы юникода(вроде неразрывного пробела), недоступные для простого набора с клавиатуры. Удлинение пароля даже на один символ значительно усложняет задачу взломщика. Но не переусердствуйте со сложностью.

Не забывайте использовать мнемонические правила запоминания. Например, можно использовать первые буквы из слов в стишках, которые вы учили в детстве. Обычно такое не забывается.

Запрет использования su

См. su#Security.

Запрет входа root в оболочку

Отключение возможности входа root в оболочку еще больше урежет возможности злоумышленнику. Кроме того, логин пользователя может быть неизвестен, что еще больше усложнит задачу взломщика. Для контроля над возможностью входа root в консоль используется файл /etc/securetty. Закоментируйте tty, чтобы запретить вход от root: Затем измените:

tty1

в

#tty1

Повторите для каждого tty который хотите заблокировать.

Чтобы убедиться в эффекте этого изменения, перейдите к соответствующей консоли. При попытке логина от имени root система выведет сообщение “Login incorrect”. Теперь, когда мы убедились что это работает, закоментируйте остальные tty.

Блокировка пользователя после трех неудачных попыток входа

Чтобы еще больше повысить безопасность системы, можно блокировать логин пользователя после нескольких неудачных попыток ввода пароля. Учетная запись может быть заблокирована на некоторый промежуток времени или до тех пор, пока root не разблокирует пользователя вручную. Чтобы блокировать учетную запись пользователя на определенный промежуток времени, после трех неудачных попыток ввода, изменить файл /etc/pam.d/login. Найдите следующую строку:

#auth required pam_tally.so deny=2 unlock_time=600 onerr=succeed file=/var/log/faillog

и удалите решетку #. Затем перейдите к этой строке:

auth required pam_tally.so onerr=succeed file=/var/log/faillog

и вставьте символ # в ее начале. Если вы не сделаете этого, каждая неудачная попытка будет считаться за две. На этом все. Можете проверить как работает блокировка, если есть желание. Чтобы разблокировать от root, используйте команду:

# pam_tally --user --reset

Удалите unlock_time чтобы пользователь не мог авторизоваться, пока его не разблокирует root.

Использование sudo для системных команд

Чтобы позволить пользователю запускать некоторые системные команды с правами root, рекомендуется использовать sudo. Так как пользователь должен будет вводить только свой пароль, вы сможете сохранить в секрете пароль root. Если вы являетесь единственным пользователем компьютера, то sudo позволяет как можно реже обращаться к учетной записи root. Таким образом, вы не забудете вернуться к учетной записи обычного пользователя.

Настроить sudo легко. Просто выполните команду visudo чтобы открыть конфигурационный файл в редакторе Vi. В файле есть пример, который можно использовать. Например, если вы хотите монтировать samba-разделы по сети, войдя под обычным пользователем, используйте следующую строку:

%users ALL=/sbin/mount.cifs,/sbin/umount.cifs

Это разрешает всем членам группы пользователя who are members of the group users to run the commands /sbin/mount.cifs and /sbin/umount.cifs from any machine(ALL). Если вы не умеете или не любите использовать редактор Vi, для использования другого редактора (например, nano), воспользуйтесь:

export EDITOR=nano

Тем не менее, это само по себе недостаточно безопасно. См. объяснения ниже.

По умолчанию, visudo не следует по директории, указанной в переменной EDITOR. Это брешь в безопасности, ведь в противном случае все что угодно может быть использовано в качестве редактора (привет, руткиты!). Лучше всего задать редактор по умолчанию в файле /etc/sudoers (используйте полный путь к редактору):

Defaults editor=/usr/bin/nano

Теперь используйте только команду visudo.

Пожалуйста, будте осторожны и не давайте пользователю право использовать все команды. Иначе, какой смысл создавать обычного пользователя?

Хеши паролей

Переход с MD5 на SHA-тип хеширования пароля усложняет задачу восстановить из хеша ваш пароль.

Контроль доступа

Kernel hardening

grsecurity

Firewall

  • См. Simple stateful firewall гид по настройке netfilter (iptables) firewall'a.
  • См. Firewalls для других способов настройки Firewall.
  • См. iptables для общей информации.
  • См. Iptables на Википедии.

Упрочнение стека TCP/IP

TCP/IP stack hardening

Безопасность пакетов на зеркалах

Пакеты ArchLinux не имеют цифровой подписи. Это значит, что при обновлении с вашего любимого зеркала вам могут подсунуть особый пакет. Последствия такого обновления непредсказуемы и можно достоверно утверждать лишь то, что ваша система больше не будет являться безопасной. С релизом Pacman 4 данная проблема должна решится. Пока функция подписи пакетов только добавляется в ArchLinux. Используйте paccheck (AUR, Forum) рекомендуется, чтобы помочь аутентифицировать и сравнивать пакеты, загруженные с разных зеркал. Скрипт сравнивает базы данных pacman sync и файлы package desc на различных зеркалах и в кеше pacman.

Источники