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

StackOverflow https://stackoverflow.com/questions/5078

  •  08-06-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

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

Безопасность Apache (Издательство "О'Рейли Пресс")

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

Другие советы

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

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

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

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

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

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

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

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

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

Надеюсь, это вам хоть как-то поможет.

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

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

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

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

Удачи вам!

/мп

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

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

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

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

[ПРАВИТЬ]

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top