Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Apache Securiy (O'Reilly Press)

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

Ответ 2

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

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

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

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

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

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

Ответ 3

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

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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

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

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

Удачи!

/тр

Ответ 7

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

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

Ответ 8

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

Ответ 9

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

[EDIT]

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

Ответ 10

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

Ответ 11

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

Ответ 12

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

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

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