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

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

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

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

7.08.2008 18:10:17
12 ОТВЕТОВ
РЕШЕНИЕ

Эта статья имеет несколько лучших способов заблокировать вещи:

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

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

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

Статья также берет некоторые указатели из этой книги:

Apache Securiy (О'Рейли Пресс)

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

5
7.08.2008 18:26:07

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

0
7.08.2008 18:12:47

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

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

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

Удачи!

/ тр

1
7.08.2008 18:18:29

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

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

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

0
7.08.2008 18:18:36

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

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

1
7.08.2008 18:26:15

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

1
7.08.2008 18:55:40

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

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

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

1
12.08.2008 20:21:47

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

2
12.08.2008 19:52:09

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

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

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

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

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

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

5
12.08.2008 20:33:45
Пока он позволяет внешний трафик, он является частью «реального мира».
icedwater 24.10.2013 07:53:10

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

1
15.08.2008 22:33:40

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

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

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

2
15.08.2008 22:48:00

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

2
23.08.2008 22:37:56