Защита веб-сервера linux для публичного доступа

Я хотел бы настроить дешевый Linux-сервер в качестве веб-сервера для размещения различных веб-технологий (на ум приходят PHP и Java EE, но в будущем я бы хотел поэкспериментировать с Ruby или Python).

Я достаточно разбираюсь в настройке Tomcat для работы в Linux для обслуживания приложений Java EE, но я хотел бы иметь возможность открыть этот сервер, даже если я могу создать некоторые инструменты, которые я могу использовать, пока я работаю в офис. Весь мой опыт настройки сайтов Java EE был связан с приложениями интрасети, где нам было сказано не сосредотачиваться на защите страниц для внешних пользователей.

Что вы посоветуете по настройке личного веб-сервера Linux достаточно безопасным способом, чтобы открыть его для внешнего трафика?

Ответов (12)

Решение

В этой статье есть несколько лучших способов заблокировать вещи:

http://www.petefreitag.com/item/505.cfm

Некоторые основные моменты:

  • Убедитесь, что никто не может просматривать каталоги
  • Убедитесь, что только root имеет права на запись для всего, и только root имеет права на чтение определенных файлов конфигурации.
  • Запустите mod_security

В статье также взяты некоторые указания из этой книги:

Apache Securiy (O'Reilly Press)

Что касается дистрибутивов, я запускал Debain и Ubuntu, но это просто зависит от того, сколько вы хотите сделать. Я запускал Debian без X и просто заходил в него по ssh всякий раз, когда мне что-то было нужно. Это простой способ снизить накладные расходы. Или в Ubuntu есть приятные вещи с графическим интерфейсом, которые упрощают управление Apache / MySQL / PHP.

Есть много способов сделать это, и они будут работать нормально. Обычно я просто использую файл .htaccess. Быстрая установка и достаточная безопасность . Возможно, не лучший вариант, но у меня он работает. Я бы не стал записывать номера своих кредитных карт, но кроме этого мне все равно.

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

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

Безопасность моего домашнего сервера BTW вроде как выигрывает (я думаю, или мне нравится думать) от отсутствия статического IP (работает на DynDNS).

Удачи!

/ мп

Вы можете рассмотреть экземпляр EC2 от Amazon . Таким образом, вы можете легко протестировать "вещи", не вмешиваясь в продакшн. И платите только за пространство, время и пропускную способность, которые вы используете.

Если вы запускаете Linux-сервер из дома, установите на нем ossec, чтобы получить хорошую легкую IDS, которая действительно хорошо работает.

[РЕДАКТИРОВАТЬ]

В качестве побочного примечания убедитесь, что вы не нарушаете политику допустимого использования вашего интернет-провайдера и что они разрешают входящие соединения на стандартных портах. Интернет-провайдер, на которого я работал, в своих условиях написал, что вас можно отключить для работы серверов через порт 80/25, если вы не используете учетную запись бизнес-класса. Хотя мы активно не блокировали эти порты (нам было все равно, если это не вызывает проблемы), некоторые интернет-провайдеры не разрешают трафик через порт 80 или 25, поэтому вам придется использовать альтернативные порты.

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

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

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

Будьте осторожны при открытии порта SSH для дикой природы. Если вы это сделаете, обязательно отключите вход в систему с правами root (вы можете всегда su или как sudo только войдете) и рассмотрите более агрессивные методы аутентификации в разумных пределах. Однажды на выходных я увидел огромную атаку по словарю в журналах моего сервера после моего SSH-сервера с домашнего IP-сервера DynDNS.

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

Одна вещь, которую вы должны обязательно учитывать, - это то, какие порты открыты для мира. Я лично просто открываю порт 22 для SSH и порт 123 для ntpd. Но если вы откроете порт 80 (http) или ftp, убедитесь, что вы научились знать хотя бы то, что вы обслуживаете миру, и кто что может с этим сделать. Я не очень разбираюсь в ftp, но есть миллионы отличных руководств по Apache всего в поиске в Google.

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

1) Безопасность через неизвестность

Излишне говорить, что полагаться на это в «реальном мире» - плохая идея, и ее не стоит развлекать. Но это потому, что в реальном мире злодеи знают, что там есть, и что там есть добыча.

На персональном сервере большинство «атак», от которых вы столкнетесь, будут просто автоматическими проверками с компьютеров, которые уже были скомпрометированы, в поисках установленных по умолчанию продуктов, которые, как известно, уязвимы. Если ваш сервер не предлагает ничего привлекательного на портах по умолчанию или в местах по умолчанию, автоматический злоумышленник продолжит работу. Поэтому, если вы собираетесь запустить ssh-сервер, поместите его на нестандартный порт (> 1024), и он, скорее всего, никогда не будет обнаружен. Если вам удастся использовать эту технику для своего веб-сервера, тогда отлично, переместите и ее на неясный порт.

2) Управление пакетами

Не компилируйте и не устанавливайте Apache или sshd из исходников самостоятельно, если в этом нет крайней необходимости. Если вы это сделаете, вы берете на себя ответственность за обновление последних исправлений безопасности. Позвольте специалистам по сопровождению пакетов из таких дистрибутивов Linux, как Debian или Ubuntu, сделать всю работу за вас. Установка из предварительно скомпилированных пакетов дистрибутива и поддержание актуальности сводится к тому, чтобы время от времени вводить команду apt-get update && apt-get -u dist-upgrade или использовать какой-либо необычный инструмент с графическим интерфейсом, который предоставляет Ubuntu.

Если вы собираетесь это сделать, потратьте немного денег и, по крайней мере, купите выделенный маршрутизатор / брандмауэр с отдельным портом DMZ. Вы захотите отключить брандмауэр своей внутренней сети со своего сервера, чтобы, когда (а не если!) Ваш веб-сервер будет скомпрометирован, ваша внутренняя сеть также не станет сразу уязвимой.

Bit-Tech.Net опубликовал несколько статей о том, как настроить домашний сервер с помощью Linux. Вот ссылки:

Статья 1
Статья 2

Надеюсь, это поможет.

@svrist упомянул EC2. EC2 предоставляет API для удаленного открытия и закрытия портов. Таким образом, вы сможете поддерживать свою коробку в рабочем состоянии. Если вам нужно предоставить демонстрацию из кафе или офиса клиента, вы можете получить свой IP-адрес и добавить его в ACL.