Советы по усилению безопасности Linux
Репозитории, PPA и прочее
В отличии от Windows/Mac OS X, в большинстве дистрибутивов Linux практикуется централизованная установка программ и обновлений из репозиториев. Обычно в таких репозиториях есть всё, что нужно, но если вам не повезло и какой-то очень нужной софтины нет — все равно ищите репозитории. В Ubuntu существуют Personal Package Archives, которые содержат практически весь софт мира, но помните — PPA заполняют люди, и нужно перед подключением очередного PPA посмотреть — а какие отзывы оставляют люди, и что оттуда тянется? Особенно это касается PPA с малоизвестными и подозрительными программами. Ну и уж на крайний случай пользуйтесь официальными сайтами программ и их пакетами. Но будьте бдительны — троян в скринсейвер в Ubuntu-пакет уже запихивали!unSecure Shell
В целях облегчения администрирования и удалённой установки системы некоторые дистрибутивы могут запускать SSH после установки при запуске системы. Вы можете проверить, запущен ли у вас SSH, так:
$ ps aux | grep sshdЕсли в выхлопе есть что-то типа такого:
root 2653 0.0 0.0 40612 168 ? Ss May24 0:00 /usr/sbin/sshdзначит, у вас запущен SSH. Выключить его вы можете через управление сервисами. Например, в Ubuntu:
$ sudo service ssh stopостанавливает сервис. А команда:
$ sudo update-rc.d -f ssh removeубирает сервис SSH из автозагрузки (Стоит отметить, что убирает ровно до первого обновления пакета openssh-server. Так что проще его вообще удалить, если не нужен. Прим. ред.).
Ну а если нам таки нужен SSH для работы, то не забудьте в /etc/ssh/sshd_config сделать следующее (строчки, начинающиеся с # — комментарии!):
# Выключить возможность логина под root
PermitRootLogin no
# Выключить возможность логиниться с пустым паролем
PermitEmptyPasswords no
# Запретить тупой подбор пароля: ограничить количество попыток тремя
MaxAuthTries 3
# Выключить многосессионный режим: вы не сможете зайти по SSH, если другая SSH-сессия уже активна!
MaxSessions 1
# Разрешить только определённым пользователям вход по SSH
AllowUsers me mymom mygrandmaМногие ещё рекомендуют переназначать порт с 22-го на какой-нибудь другой, но если вами вдруг заинтересуются, nmap покажет начилие «входа» на непонятном порту, и это будет большей приманкой. Впрочем, существуют так называемые honeypot, решающие задачу отвлечения внимания, но о них как-нибудь в другой раз.
Закройся фаерволом
В Linux существует мощнейший файервол iptables, который позволяет закрыть все нежелательные соединения. Если у вас непритязательное использование сети, и входящие подключения, инициированные не с вашего компьютера, вам не нужны, вы можете посмотреть ваши сетевые интерфейсы командой ifconfig (она выдаст все интерфейсы, по которым у вас идёт сетевой обмен, и небольшую статистику по ним), и для всех из них, кроме lo (loopback-интерфейс петли компьютера на самого себя), сделать запрет входящего неициированного вами трафика:
$ sudo iptables -A INPUT -i ваш_интерфейс (например, eth0) -j DROPПосле чего весь ненужный вам входящий трафик будет блокирован.
Однако, NetworkManager может порываться игнорировать iptables-правила, посему мы должны «рассказать» ему о них. В первую очередь, сохраним правила для текущей конфигурации iptables:
$ sudo bash -c "iptables-save > /etc/iptables.rules"Теперь мы можем записать в /etc/NetworkManager/dispatcher.d/01firewall скрипт, позволяющий восстановить NetworkManager-у при старте наши правила iptables. Скрипт выглядит так:
if [ -x /usr/bin/logger ]; then
LOGGER="/usr/bin/logger -s -p daemon.info -t FirewallHandler"
else
LOGGER=echo
fi
case "$2" in
up)
if [ ! -r /etc/iptables.rules ]; then
${LOGGER} "No iptables rules exist to restore."
return
fi
if [ ! -x /sbin/iptables-restore ]; then
${LOGGER} "No program exists to restore iptables rules."
return
fi
${LOGGER} "Restoring iptables rules"
/sbin/iptables-restore -c < /etc/iptables.rules
;;
down)
if [ ! -x /sbin/iptables-save ]; then
${LOGGER} "No program exists to save iptables rules."
return
fi
${LOGGER} "Saving iptables rules."
/sbin/iptables-save -c > /etc/iptables.rules
;;
*)
;;
esacПосле перезапуска NetworkManager будет уважать правила iptables и сюблюдать их.
Ну а если вы решили, что вам нужен SSH, то вам необходимо настроить приём входящих соединений с него:
$ sudo iptables -A INPUT 1 -p tcp --dport ssh -j ACCEPTПосле выполнения данной команды SSH-трафик не будет блокироваться. Текущие правила iptables вы всегда можете проверить командой:
$ sudo iptables -Lи если они вас устраивают, сохранить для автозапуска уже упоминавшейся выше командой:
$ sudo bash -c "iptables-save > /etc/iptables.rules"Вместо заключения
Описанные выше действия помогут вам сделать свой Linux немного защищённее, но как ни странно, главный защитник вашей системы — тот, кто расположен между монитором и стулом. И если вы будете думать о своей безопасности, не влезать на сомнительные сайты и не запускать сомнительные программы/скрипты — то ваша система станет наиболее безопасной. Ведь, как известно, человеческий фактор всегда является решающим. Удачи, и будьте бдительны!
P.S. Пост подготовлен Valdos Sinus <fat0troll@ya.ru> для конкурса. Ваш оценка решит получит ли автор годовую подписку на VPN-сервис. В любом случае его ждет утешительный приз в 1 месяц =). Просвещай людей — получай VPN!
Оригинал статьи - http://habrahabr.ru/company/kebrum/blog/120595/

