Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
906
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Обеспечение безопасности linux webserver для публичного доступа
Я хотел бы установить дешевую коробку 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 Securiy (O'Reilly Press)
Что касается дистрибутивов, я запустил Debain и Ubuntu, но это зависит только от того, сколько вы хотите сделать. Я запускал Debian без X и просто ssh в него, когда мне что-то было нужно. Это простой способ снизить накладные расходы. Или у Ubuntu есть некоторые приятные GUI вещи, которые облегчают управление Apache/MySQL/PHP.
Важно следовать рекомендациям по безопасности везде, где это возможно, но вы не хотите делать вещи чрезмерно трудными для себя или терять сон, беспокоясь о том, чтобы не отставать от последних эксплойтов. По моему опыту, есть две ключевые вещи, которые могут помочь сохранить ваш личный сервер достаточно безопасным, чтобы бросить в интернет, сохраняя при этом ваше здравомыслие:
1) безопасность через неясность
Излишне говорить, что полагаться на это в 'real world'-плохая идея и не стоит развлекаться. Но это потому, что в реальном мире злодеи знают, что там есть и что там есть награбленное.
На персональном сервере большинство 'attacks', которые вы испытаете, будут просто автоматически очищаться от машин, которые уже были скомпрометированы, ища установки по умолчанию продуктов, которые, как известно, уязвимы. Если ваш сервер не предлагает ничего заманчивого на портах по умолчанию или в расположениях по умолчанию, автоматический злоумышленник будет двигаться дальше. Поэтому, если вы собираетесь запустить сервер ssh, поместите его на нестандартный порт (>1024), и, скорее всего, он никогда не будет найден. Если вы можете выйти сухим из воды с помощью этой техники для вашего веб-сервера, то отлично, переместите его в неизвестный порт тоже.
2) Управление пакетами
Не компилируйте и не устанавливайте Apache или sshd из исходного кода самостоятельно, если вам это абсолютно не нужно. Если вы это сделаете, вы берете на себя ответственность за сохранение up-to-date с последними исправлениями безопасности. Пусть хорошие сопровождающие пакетов из Linux дистрибутивов, таких как Debian или Ubuntu, сделают эту работу за вас. Установка из предварительно скомпилированных пакетов дистрибутива и сохранение актуальности становится вопросом выполнения случайной команды apt-get update && apt-get-u dist-upgrade или использования любого другого инструмента GUI Ubuntu, предоставляемого fancy.
Одна вещь, которую вы должны обязательно учитывать, - это то, какие порты открыты для всего мира. Я лично просто открываю порт 22 для SSH и порт 123 для ntpd. Но если вы откроете порт 80 (http) или ftp, убедитесь, что вы научились знать, по крайней мере, что вы служите миру и кто может делать с этим что-то. Я не очень много знаю о ftp,но есть миллионы отличных учебников Apache, которые можно найти только в Google search.
Если вы собираетесь сделать это, потратьте немного денег и, по крайней мере, купите выделенный маршрутизатор/брандмауэр с отдельным портом DMZ. Вы захотите отключить брандмауэр от своей внутренней сети с вашего сервера, чтобы когда (а не если!) ваш веб-сервер скомпрометирован, ваша внутренняя сеть также не сразу уязвима.
Это безопасно и безопасно, если вы будете держать свой голос ниже об этом (т. е. редко кто-то придет после вашего домашнего сервера, если вы просто размещаете прославленный webroot на домашнем соединении) и Ваше остроумие о вашей конфигурации (т. е. избегайте использования root для всего, убедитесь, что вы держите свое программное обеспечение в актуальном состоянии).
На этой ноте, хотя этот поток потенциально сократится до просто пылающего, мое предложение для вашего личного сервера-придерживаться чего-либо Ubuntu ( get Ubuntu Server here ); по моему опыту, быстрее всего получить ответы, откуда вы задаете вопросы на форумах (не знаю, что сказать о поглощении).
Мой домашний сервер security BTW отчасти выигрывает (я думаю, или мне нравится думать) от отсутствия статического IP (работает на DynDNS).
Удачи вам!
/mp
Будьте осторожны, открывая порт SSH для дикой природы. Если вы это сделаете, обязательно отключите корневые учетные записи (вы всегда можете su или sudo , как только войдете) и рассмотрите более агрессивные методы аутентификации в разумных пределах. Я видел огромную атаку словаря в моих журналах сервера в один из выходных дней, идущих после моего сервера SSH с сервера DynDNS home IP.
Тем не менее, это действительно здорово, чтобы иметь возможность добраться до вашего дома shell с работы или далеко... и если добавить тот факт, что вы можете использовать SFTP через тот же порт, я не мог представить себе жизнь без него. =)
Вы можете рассмотреть экземпляр EC2 из Amazon . Таким образом, вы можете легко протестировать "stuff", не вмешиваясь в производство. И платите только за пространство, время и пропускную способность, которые вы используете.
Если вы запускаете сервер Linux из дома, установите на него ossec для хорошего легкого IDS, который действительно хорошо работает.
[EDIT]
В качестве дополнительного замечания убедитесь, что вы не нарушаете политику допустимого использования вашего ISP и что они разрешают входящие соединения на стандартных портах. Провайдер, на которого я работал, написал в своих терминах, что вы можете быть отключены для запуска серверов через порт 80/25, если только вы не находитесь в учетной записи бизнес-класса. Хотя мы активно не блокировали эти порты (нам было все равно, если только это не вызывало проблемы), некоторые ISPs не допускают никакого трафика через порт 80 или 25, поэтому вам придется использовать альтернативные порты.
Ничего себе, вы открываете банку с червями, как только начинаете открывать что-либо для внешнего трафика. Имейте в виду, что то, что вы считаете экспериментальным сервером, почти как жертвенный ягненок, также является легкой добычей для людей, которые хотят делать плохие вещи с вашей сетью и ресурсами.
Весь ваш подход к внешнему доступному серверу должен быть очень консервативным и тщательным. Он начинается с простых вещей, таких как политика брандмауэра, включает в себя базовую OS (сохранение ее исправленной, настройка ее для обеспечения безопасности и т. д.) и включает в себя каждый слой каждого стека, который вы будете использовать. Боюсь, что здесь нет простого ответа или рецепта.
Если вы хотите поэкспериментировать, вам будет гораздо лучше сохранить сервер частным и использовать VPN, если вам нужно работать с ним удаленно.