Позвольте мне предварить этот вопрос некоторой информацией - я разработчик, работающий в небольшом стартапе. В настоящее время компания не может позволить себе нанять надлежащего системного администратора * nix; Впоследствии мне было поручено настроить сервер LAMP под управлением CentOS, который будет удаленно администрироваться нашим ведущим разработчиком. Указанный разработчик каждую неделю находится в разных часовых поясах. Безопасность очень важна для меня.
Сервер будет использоваться для бета-тестирования новой версии нашего флагманского продукта. Доступ к серверу будут осуществлять бета-тестеры (потребители, а не сотрудники отдела контроля качества) как через стандартный порт 80 http, так и через SSL. Наш разработчик получит доступ к нему через SSH, а также через ssl-доступ к Subversion для управления версиями и порт 21 для FTP.
Вот что я реализовал до сих пор ...
Путешествующий ноутбук:
Сервер CentOS LAMP:
Запуск Nmap 4.11 ( http://www.insecure.org/nmap/ ) в 31.08.2009, 10:56 EDT
Интересные порты на localhost.localdomain (127.0.0.1):
Не показано: 1668 закрытых портов
ПОРТОВАЯ ГОСУДАРСТВЕННАЯ СЛУЖБА
21 / tcp открыть ftp
22 / TCP открыть SSH
25 / tcp открыть smtp
80 / tcp открыть http
110 / tcp открытый pop3
143 / tcp открыть imap
225 / tcp открыто неизвестно
443 / TCP открыть https
631 / tcp открыть ипп
993 / tcp открыть imaps
995 / tcp открыть pop3s
3306 / tcp открыть mysql
Вот и все - я знаю, что в нынешнем состоянии это не очень безопасно. Я исследовал это в течение нескольких дней, и прежде чем внедрить или изменить что-либо еще с этой конфигурацией, я хотел бы получить отзывы от профессионалов. Надеюсь, наша экономика восстановится, и эту напряженную работу по обеспечению безопасности возьмет на себя кто-то более квалифицированный, чем простой разработчик C #.
Заранее спасибо!
Также обратите внимание на руководства, предоставленные Агентством национальной безопасности, людьми, ответственными за такие вещи, как Security Enhanced Linux. Они охватывают RedHat (и CentOS) 5.3, Mac, Windows, Solaris. Используйте руководство по адресу: http://www.nsa.gov/ia/_files/. (Будьте параноиком: введите URL-адрес в свой браузер, а не переходите по ссылкам.)
В этом руководстве не рассматривается использование списков контроля доступа. Найдите это на сайте. Google "red hat acl. Это радикально улучшает управление доступом на основе * nix, давая вам гораздо больше гибкости в разрешении или запрете доступа. К этому нужно некоторое время привыкнуть, но оно того стоит.
"Неиспользуемые порты" В вашем сообщении не сказано, необходимо эти приложения. Однако, если это не абсолютно необходимо (например, другого способа сделать это нет), я бы отключил доступ ко всему. Похоже, вам понадобятся http и ssh, но все остальное должно иметь обходной путь, если он вам действительно нужен. (т.е. к mysql можно получить доступ через командную строку после sshing в машину. Если вам нужно что-то еще, вы можете использовать переадресацию портов SSH и т. д.)
Прочие соображения:
Если возникает какой-либо вопрос о физической безопасности системы или дисков, рассмотрите возможность использования простой в использовании опции шифрования LUKS во время установки. Тогда есть резервная безопасность. Наслаждайся путешествием.
Эрик Човански
Я бы предложил несколько вещей:
При ВСЕХ условиях избегать FTP. SSH имеет встроенную поддержку передачи файлов, поэтому вообще не используйте FTP. Он отправляет как учетные данные (имя пользователя / пароль), так и файлы в виде открытого текста, поэтому любой в той же сети может перехватить все данные.
Считайте, что это отправная точка вашего увлекательного путешествия :).
Подумайте об использовании инструмента для закалки, такого как Бастилия. CentOS - это, по сути, ребрендинг RedHat и, как таковой, бинарно совместимый, поэтому по большей части любые инструкции для того же номера версии RHEL должны работать для CentOS.
Еще один хороший ресурс для CentOS - это Защита ОС вики-страница.
Самым глубоким анализом будет следовать Тест СНГ.