Как только вы подключаете вашу Linux систему к ЛЮБОЙ сети, вам сразу же нужно решить, какие сервисы предоставлять. Сервисы, которые вы не будете предоставлять, должны быть выключены, чтобы у вас было меньше вещей, о которых вам нужно беспокоиться, и взломщику будет меньше мест для выискивания дыр.
Существует много способов выключить сервисы в Linux. Вы можете посмотреть в файле /etc/inetd.conf, какие сервисы у вас предоставляются через inetd. Чтобы выключить все, что вам ненужно, просто закоментируйте соответствующие строчки, а затем пошлите вашему inetd SIGHUP (прим. перев. killall -HUP inetd).
Вы также можете удалить (или закомментрировать) соответствующие сервисы в файле /etc/services. Это означает, что локальный клиент также не сможет использовать эти сервисы (например, если вы удалите ftp, а затем попробуете сделать ftp связь с этой машины на удаленный компьютер, вы получите ошибку типа "неизвестный сервис"). Обычно не стоит удалять сервисы, если это не приносит дополнительного повышения уровня безопасности. Если локальный пользователь хочет использовать ftp в том случае, когда вы его уже закомментировали, он может создать своего собственного клиента, который будет использовать общий ftp порт и отлично работать.
Вот некоторые из сервисов, которые вам нужно оставить включенными:
Если вы знаете, что вы не собираетесь использовать какие-то пакеты, лучше их полностью удалить. В дистрибутиве RedHat полностью удаляет пакет команда rpm -e. В Debian подобные вещи делает dpkg.
Дополнительно вам действительно лучше в файле /etc/inetd.conf выключить rsh/rlogin/rcp, включая login (используется rlogin), shell (используется rcp) и exec (используется rsh). Эти протоколы чрезвычайно небезопасны и часто были в прошлом причиной взломов.
Вы должны также проверить ваши /etc/rc.d/rcN.d, где N стартовые уровни вашей системы, на предмет наличия сервисов в этих каталогах, которые вам не нужны. Файлы в /etc/rc.d/rcN.d фактически являются символьными ссылками на файлы в каталоге /etc/rc.d/init.d. Переименование файлов в каталоге init.d выключит все символьные ссылки в /etc/rc.d/rcN.d. Если вы хотите выключить сервис только в определенном стартовом уровне, то переименуйте соответствующий файл, чтобы он начинался с маленькой буквы "s"?, а не с большой как надо (скажем S45dhcpd).
Если у вас rc файлы в стиле BSD, вам нужно проверить /etc/rc* для обнаружения ненужных программ.
Большинство дистрибутивов Linux поставляется с tcp_wrapper, которые "заворачивают" все ваши tcp сервисы. tcp_wrapper (tcpd) вызывается из inetd, а не является отдельным сервером. tcpd затем проверяет компьютер, который запрашивает сервис, и либо запускает реальный сервер либо запрещает доступ от этого компьютера. tcpd позволяет вам ограничить доступ к вашим tcp сервисам. Вы можете создать /etc/hosts.allow и добавить в него только те машины, которым нужно иметь доступ к сервисам на вашем компьютере.
Если вы являетесь домашним пользователем с коммутируемым доступом, то мы рекомендуем вам запретить доступ всем (deny ALL). tcpd также протоколирует все неудачные попытки доступа к сервисам, так что это позволят отследить возможные атаки. Если вы добавляете новые сервисы, вы обязательно должны сконфигурировать их, чтобы использовать основываясь на tcp_wrappers. Например, обыкновенный dial-up пользователь может запретить доступ к своему компьютеру извне, и в то же время иметь возможность забирать почту и путешествовать в интернете. Чтобы это сделать, вам нужно добавить к файлу /etc/hosts.allow:
ALL: 127.
И конечно же /etc/hosts.deny должен содержать:
ALL: ALL
что запретит внешние соединения к вашей машине, позволяя тем не менее вам изнутри соединяться с серверами в Интернете.