Настройка apache на роутере

Обновлено: 06.07.2024

Доступ к интернету через WI-Fi с программным перерывом на доступ в интернет
Доброго времени суток!Подскажите пожалуйста у меня на работе есть бесплатная сеть WI-FI с доступом.

Zyxel P660HT2EE доступ до настроек через интернет через web
не могу зайти на Zyxel через интернет,какие нюансы? пробовал пробрасывать 80 порт на его.

Доступ к БД через интернет
Программа. На ней один DataGridView с двумя столбцами. Пользователь просто пишет в них любые.

Доступ к БД через интернет
Здравствуйте! Не сочтите за спамоство, просто пытаюсь разобраться в вопросах и найти решение в моих.

таким образом результат достигнут не будет никогда.
valera_91, пробросьте 80-й порт с вашего роутера на комп

Добавлено через 6 минут
Илья Федин, не вводите valera_91 в заблуждение.

svsw, Почему же? Надо сделать так чтобы apache слушал внешний IP, а не локальный! Если он будет слушать локальный, то тогда точно
происходит подключение к интернету через роутер Надо сделать так чтобы apache слушал внешний IP, а не локальный! Если он будет слушать локальный, то тогда точно Апач открывает 80-й порт на локальном компе и с локального компа проблем доступа к апачу нет (пропишите в hosts 127.0.0.1 или ай-пи вашей локальной сетки, например, 192.168.0.100)
Посетитель из-вне попадает на внешний интерфейс роутера и для того, чтобы посетителю ответил апач необходимо использовать перенаправление портов (проброс, port forwarding)
Ваш вариант будет работать только при прямом подключении компа к инету.
Сорри, но это азы работы сетевого оборудования.

и также проброс порта 80 на роутере. и все-равно не получается.(((( и нужен только прямой доступ обязательно?

valera_91, У вас Денвер? Если да, то можно просто прописать dnwr_ip, если просто apache, то вам в альтернативу надо использовать ServerName
Нет, надо сделать так чтобы apache слушал IP который присвоил ему роутер (как сказал я) а также открыть 80 порт как и сказал svsw

Проверить порт можно еще и здесь или здесь

Приведу свою статью по этой теме

Когда ПО установлено и настроено, сайт создан и наполнен контентом, то естественно возникает правомерное желание открыть доступ к сайту из интернета…

В большинстве случаев проблем при этом не возникает, в частности, если сетевая карта компьютера подключена к интернету напрямую кабелем от провайдера, но иногда таковые проблемы случаются…

  1. Брандмауэр блокирует доступ к 80-му порту компьютера
  2. Провайдер блокирует доступ к 80-му порту, предоставляя доступ к нему за отдельную плату
  3. Компьютер подключен к интернету через роутер

Во втором случае лучше сменить провайдера, но если это невозможно, оплатить его «услуги» или смириться с тем, что ваш сайт из интернета доступен не будет.

Третий случай тоже не вызывает затруднений при решении возникшей проблемы. Обычно роутер имеет вэб-интерфейс управления и занимает именно 80-й порт. Поэтому необходимо задать другой порт, если необходимо перегрузить роутер и использовать в дальнейшем заданный порт для настройки роутера. И в завершении пробросить (port forwarding) 80-й порт внешнего интерфейса роутера на 80-й порт компьютера, на котором запущен Apache.

Этичный хакинг и тестирование на проникновение, информационная безопасность

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

Локальные и глобальные компьютерные сети

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

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

Поскольку локальные сети напрямую не связаны друг с другом, не возникает путаницы из-за одинаковых IP адресов. Связь между локальными сетями может происходить черед подключение к глобальной сети. Это происходит обязательно через устройства, которые имеют глобальный IP.

Примечание: Я знаю про NAT (технология, позволяющая нескольким устройствам иметь Интернет-подключение через один IP адрес), про объединение локальных сетей с помощью другой локальной сети, про туннелированние и т.д., но сознательно пропускаю это для упрощения.

Локальные и глобальные IP адреса

Чтобы не запутаться в терминологии, глобальный IP адрес ещё называют «внешним», «белым» - это разные обозначения одного и того же.

Локальный IP адрес называют «внутренним», «серым», «приватным» - это всё одно и то же.

Работа домашней (локальной) сети, в которой присутствует роутер и несколько устройств, подключённых к роутеру, обычно выглядит следующим образом:

  1. Роутер подключается к Интернет-провайдеру. Интернет-провайдер назначает роутеру внешний IP адрес, который позволяет устанавливать соединения с глобальной сетью Интернет.
  2. Компьютеры по кабелю или Wi-Fi, а также мобильные телефоны через Wi-Fi подключаются к роутеру. Роутер раздаёт им локальные IP адреса.
  3. Если два устройства в локальной сети хотят обменяться данными, то они это делают через роутер, но сетевые пакеты не отправляются в глобальную сеть.
  4. Если какому-либо устройству понадобиться «выйти в Интернет», то он передаст соответствующий запрос роутеру, роутер подключится к нужному узлу в глобальной сети, роутер же получит ответ от узла в глобальной сети и передаст этот ответ устройству в локальной сети, которое сделало первоначальный запрос.

Настройка веб-сервера, чтобы его можно было открыть на других компьютерах в локальной сети

По умолчанию, веб-сервер Apache настроен отвечать всем, кто пытается к нему подключиться. Подключиться к компьютеру, а, следовательно, и к веб-серверу, проще всего по его IP адресу.

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

Как узнать локальный IP адрес

Но чтобы это сделать, нужно знать, какой у компьютера с веб-сервером IP адрес. Как уже было сказано, локальные IP раздаёт роутер. Локальные IP могут быть в следующих диапазонах:

  • 10.0.0.0 - 10.255.255.255
  • 100.64.0.0 - 100.127.255.255
  • 172.16.0.0 - 172.31.255.255
  • 192.168.0.0 - 192.168.255.255

Причём, если вы не меняли настройки роутера, чаще всего используется диапазон 192.168.0.0 - 192.168.255.255. Скорее всего, ваш компьютер имеет адрес вида 192.168.0.* или 192.168.1.*. Но какой именно?

В Windows чтобы узнать локальный IP адрес откройте командную строку (нажмите Win+x, и выберите Windows PowerShell). В открывшемся окне выполните команду


У вас, наверное, будет меньше сетевых устройств, но в любом случае, для всех из них будет выведена информация, в том числе IP адреса.

Мой компьютер имеет локальный IP адрес 192.168.0.90. Если я, например, в телефоне, подключённому по Wi-Fi к роутеру наберу в адресной строке 192.168.0.90, то откроется веб-страница моего локального веб-сервера, запущенного на компьютере (да, у меня там бардак):


Внимание: если у вас не получается открыть веб-сервер, хотя IP адрес введён правильно – попробуйте отключить файервол. Если это помогло, то файервол можно включить, но настройте исключение для 80 порта.

Всё довольно просто, но имеется проблема – после перезагрузки компьютера IP адрес, скорее всего, изменится. Т.е. чтобы вновь открыть локальный веб-сервер понадобится проверять IP адрес и сообщать его другим желающим посетить ваш локальный веб-сайт.

Как уже было сказано, локальный IP адреса «раздаёт» роутер. Адреса являются произвольными в рамках данной подсети.

Динамичный IP адрес выдаётся произвольно (роутером, Интернет-провайдером). Он может меняться при последующих подключениях.

Статичный IP адрес закреплён за сетевым интерфейсом (фактически, закреплён за компьютером, мобильным телефоном). Он не меняется при последующих переключениях.

В локальной сети, по умолчанию используются динамичные IP адреса, но это легко изменить.

Имеется, как минимум, два способа поменять динамичный локальный адрес на статичный локальный адрес:

  • в настройках сетевого интерфейса (на компьютере, в мобильном телефоне)
  • в настройках роутера

Не нужно делать изменения и там, и там – достаточно сделать настройки или на компьютере, или в роутере. Принципиальной разницы нет, какой именно метод вы будете использовать.

Настройка постоянного IP в Windows

Для настройки статичного локального адреса на компьютере откройте «Сетевые подключения». Проще всего это сделать набрав в командной строке Windows:

Выберите интересующий вас сетевой адаптер (сетевой подключение), нажмите на него правой кнопкой мыши и выберите «Свойства»:


В открывшемся окне выберите «IP версии 4 (TCP/IPv4)» и нажмите кнопку «Свойства»:


Вы увидите следующее:


Переключите на «Использовать следующий IP адрес».

Теперь нужно заполнить все поля. Первые три поля являются взаимосвязанными и также связаны с роутером. Когда ранее мы смотрели свой локальный IP адрес, нам также была показана такая информация как Маска подсети (на моём скриншоте это 255.255.255.0) и Основной шлюз (на моём скриншоте это 192.168.0.1). Посмотрите ваши значения (вполне вероятно, что они будут такими же) и введите их в поля «Маска подсети» и «Основной шлюз». Кстати, основной шлюз – это адрес роутера. Очень часто локальными адресами роутера являются 192.168.0.1 и 192.168.1.1

В поле IP-адрес введите желаемый IP. Он должен соответствовать вашей сети. Т.е. если роутер имеет IP 192.168.0.1, то компьютер должен иметь IP вида 192.168.0.* (например, 192.168.0.100), если роутер имеет IP 192.168.1.1, то компьютер должен иметь адрес вида 192.168.1.* (например, 192.168.1.100).

Чтобы не было проблем, устройства в одной локальной сети не должны иметь одинаковый IP адрес.

В качестве DNS серверов («Предпочитаемый DNS-сервер» и «Альтернативный DNS-сервер») введите 8.8.8.8 и 8.8.4.4 соответственно.

У меня получилось так (для компьютера я выбрал IP 192.168.0.100):


Закройте окна с сохранением настроек.

Теперь при каждом подключении ваш компьютер будет иметь один и тот же IP адрес.

Настройка статичного IP в роутере

Для каждого роутера детальная инструкция по настройке различается. Но схема общая: в настройках локальной сети перейдите к настройкам DHCP-сервера, выберите желаемые компьютеры/телефоны по MAC-адресу и привяжите их к определённым локальным IP адресам.


Пример настройки статических IP адресов в ZyXEL Keenetic Lite II.

Имеется перечень компьютеров со следующими именами и следующими желательными статичными IP адресами:

  • HackWare-Server-2022 — 192.168.1.60
  • VYACHESLAV — 192.168.1.61
  • HackWare — 192.168.1.62
  • HackWare-Win — 192.168.1.63
  • HackWare-Windows-En — 192.168.1.64
  • HackWare-Server — 192.168.1.65

На роутере Переходим в Домашняя сеть → Параметры IP. По умолчанию размер пула адресов был равен 20, увеличиваем его количество до 40. Поскольку первым IP адресом пула является 192.168.1.33, то теперь доступный для использования диапазон стал 192.168.1.33-192.168.1.72.


Переходим в список устройств (вкладка «Устройства»):


Выбираем поочереди каждое устройство, ставим галочку «Постоянный IP-адрес», вводим желаемый статичный IP и нажимаем кнопку «Зарегистрировать»:


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

Когда всё будет готово, все устройства со статичными адресами будут выделены полужирным шрифтом.


Изменения вступят в силу при следующем подключения устройств к роутеру.

Как открыть веб-сервер для доступа из Интернета

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

Если кабель Интернет-провайдера подключён к вашему компьютеру напрямую, то, вероятно, доступ по IP адресу будет работать (имеются нюансы с NAT).

Но если вы используете роутер, то IP адрес принадлежит роутеру. Если из Интернета приходит запрос на роутер, то он просто не знает, какому именно устройству в локальной сети переадресовать этот запрос. Более того, большинство роутеров имеют свой собственный веб-сервер – это он показывает страницы с настройками роутера в веб-браузере.

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

Переадресация портов доступна для настроек локальной сети и для настроек Интернет-подключения – нам нужно именно второе.

В роутере перейдите в настройки Интернета, найдите там переадресацию портов. Некоторые роутеры поддерживают Переключение портов – нам это не подойдёт.

В качестве порта для переадресации выберите 80, введите локальный IP адрес компьютера, на котором размещён веб-сервер и введите порт, на который будет происходить переадресация – 80, протокол – TCP.


Теперь мой веб-сервер доступен также по внешнему IP:


Как сделать глобальный IP адрес статичным

Вы столкнётесь с той же проблемой, что и для локального IP адреса – скорее всего, ваш внешний IP адрес является динамичным и будет время от времени меняться. Если вам нужен статичный IP адрес, то, скорее всего, его придётся покупать у вашего Интернет-провайдера как дополнительную услугу с ежемесячной абонентской платой.

Очень хороший хостинг сайтов

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

Чтобы понимать, что такое Forwarding и для чего это нужно, вспомним как устроено подключение большинства домашних компьютеров. Обычно у большинства из нас дома установлен роутер, к которому подключён кабель Интернет-провайдера. От этого роутера наши домашние устройства — компьютеры, телефоны, планшеты, умные телевизоры и другие — подключаются к Интернету через Wi-Fi или кабель. То есть у нас дома функционирует локальная сеть, в которой у каждого из устройств есть свой локальный (серый) IP адрес.

Представим, что на одном из компьютеров вы установили и настроили веб-сервер Apache. И вы хотите, чтобы к этому веб-серверу можно было подключаться из Интернета. Самый простой способ это сделать — набрать в адресной строке внешний IP адрес.

Кстати, вот вы сидите за компьютером, который через роутер подключён к Интернету, у меня к вам вопрос, какой внешний IP адрес у компьютера? Вы можете зайти на один из многочисленных сервисов показа вашего IP адреса, но суть в том, что любой ответ будет неправильным. Дело в том, что у вашего компьютера, который подключён к Интернету через роутер, вообще нет внешнего IP! Этот внешний IP есть только у вашего роутера (и то не всегда — об этом в этой же статье, но позже).

Если вашему компьютеру нужно выйти в Интернет, то он по локальной сети обращается к роутеру, роутер для него делает запрос, и затем также по локальной сети отправляет полученный ответ. То есть роутер выходит в Интернет, а ваш компьютер — нет. У роутера есть внешний IP адрес, а у вашего компьютера — нет.

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

Вот именно эту проблему и решает Forwarding, который ещё называют «переадресацией» портов, «проброской портов», «перенаправлением портов».

Для чего нужна проброска портов. Что делает Forwarding

Перенаправление портов заключается в следующем: на роутере (или на другом сетевом устройстве) устанавливается правило, суть которого примерно в следующем

В качестве IP адреса может быть указан локальный, серый IP. Пример такого адреса выше (192.168.1.30). В качестве исходного порта и порта назначения можно указывать любые порты, они не обязательно должны быть одинаковыми.

Перенаправление портов для Apache

Как бы это не было странно, но именно в настройках Apache ничего для перенаправления портов делать не надо.

Настройка роутера требует добавления одной записи, в которой нужно указать локальный IP адрес, на который будет переадресовываться пришедший запрос. По умолчанию в роутерах используется DHCP — если коротко, благодаря этому протоколу любое подключившееся к роутеру устройство автоматически получает IP адрес. Это удобно — не нужно делать настройки. Но дело в том, что устройству выдаётся любой не занятый IP в локальной сети. Поэтому у компьютера с веб-сервером может меняться IP адрес при каждом переподключении, в результате, настроенная переадресация портов перестанет работать из-за смены IP веб-сервера.

То есть начать нужно с того, чтобы настроить статичный локальный IP адрес для компьютера. Это можно сделать двумя способами: 1) на компьютере с веб-сервером, 2) в роутере

Для изменения на компьютере, откройте Панель управления → Сеть и Интернет → Центр управления сетями и общим доступом → Изменение параметров адаптера:


Правой кнопкой мыши откройте контекстное меню интересующего вас подключения, найдите там пункт IP версии 4 (TCP/IPv4):


Нажмите Свойства и пропишите нужные параметры в зависимости от настроек вашей сети (Основной шлюз — это IP адрес вашего роутера):


Некоторые роутеры поддерживают выдачу статичных IP адресов определённым устройствам сети — они их запоминают на основе MAC-адреса устройства. У всех роутеров это настраивается чуть по-разному, но обычно нужно искать в настройках DHCP. Некоторые роутеры не поддерживают эту возможность.

Переадресация портов для Apache в роутере


В качестве портов назначения и перенаправления запроса укажите 80. На скриншоте видно, что можно установить не один порт, а диапазон портов. Если вы хотите настроить только один порт, то укажите одно и то же значение в качестве начала диапазона и конца диапазона.

В качестве Local (локальный IP, адрес, куда будет перенаправлен запрос) укажите IP веб-сервера. External (внешний IP) указывать не нужно.

Активируйте созданное правило перенаправления портов.

Теперь все запросы, пришедшие на 80 порт роутера, будут перенаправлены на указанный IP адрес и указанный порт. Аналогичные настройки можно сделать для любых служб — для FTP сервера, SSH и так далее. То есть к этим службам появиться доступ из внешней сети.

Делая такие настройки, всегда помните о безопасности. Теперь служба становится доступной из глобальной сети, и хакеры могут атаковать её.

Когда не нужен Forwarding

Если у вас кабель Интернет-провайдера напрямую подключается к компьютеру с веб-сервером, то вам не нужен форвардинг. При аренде VPS сервера также не нужен форвардинг, так как у таких серверов прямой (белый) IP адрес.

Если Интернет провайдер использует NAT

NAT — это технология, которая позволяет множеству устройств выходить в Интернет используя один и тот же IP адрес. Кстати, в вашей локальной сети, в которой имеется роутер, уже применяется NAT — именно благодаря этому все ваши устройства могут выходить в Глобальную сеть и не нужно каждому из них иметь внешний IP.

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

Этапы установки Apache

Установить веб-сервер Apache в Ubuntu 18.04 Bionic Beaver очень просто:

Сценарии установки Ubuntu позаботятся о запуске и включении apache2-сервиса при загрузке.

Настройка брандмауэра

Чтобы получить доступ к содержимому сервера на той же машине, где он работает, нужно запустить веб-браузер и ввести в адресную строку localhost . Если всё настроено правильно, страница поприветствует словами: «It works!».


Если в системе включён брандмауэр (как и должно быть), то чтобы сделать контент доступным извне нашей машины, нужно разрешить входящий трафик через порт 80. Команда для запуска зависит от используемого менеджера брандмауэра. Например, при использовании ufw (используется в Ubuntu по умолчанию) мы должны запустить:

Если вы используете firewalld , можно запустить:

Обратите внимание, что приведённая выше команда будет по умолчанию действовать в зоне firewalld . Если вы хотите работать с другой зоной, нужно указать её с помощью опции --zone .

Настройка виртуального хоста

Веб-сервер Apache может запускать несколько веб-сайтов на одном компьютере. Каждый запущенный сайт («виртуальный хост» в терминологии Apache) должен иметь свою собственную конфигурацию. Виртуальный хост может быть IP или именем.

В этом руководстве мы сосредоточимся на втором типе, так как он проще в настройке и не требует нескольких IP-адресов (виртуальные хосты на основе имён позволяют нескольким веб-сайтам использовать один и тот же IP-адрес).

Виртуальный хост по умолчанию

В Ubuntu виртуальный хост по умолчанию определён в каталоге /etc/apache2/sites-available внутри файла 000-default.conf . Рассмотрим его:

Директива <VirtualHost> на первой строке применяется для группы параметров, используемых Apache для конкретного виртуального хоста. Первое, что вы увидите в ней, — инструкцию *:80 . Она указывает IP-адрес и порт, используемый виртуальным хостом.

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

25–26 ноября, Москва и онлайн, От 24 000 до 52 000 ₽

Директива на строке 3 не является обязательной, она используется, чтобы указать контактный адрес. Обычно в качестве аргумента директивы предоставляют действительный адрес электронной почты, чтобы было проще связаться с администратором.

DocumentRoot в строке 4 является обязательным, это важно для конфигурации виртуального хоста. Аргумент этой инструкции должен иметь доступ к файловой системе. Указанный каталог будет считаться корневым каталогом виртуального хоста и не должен содержать завершающий символ «/». В этом случае корневая директория документа — /var/www/html . Если мы посмотрим на её содержимое, то увидим, что она содержит страницу index.html , которую вы до этого видели в качестве страницы приветствия сервера.

Последние две команды на строках 8–9, представленные в этом VirtualHost , — ErrorLog и CustomLog . Используя первый, вы указываете файл, в который сервер будет записывать возникающие ошибки. Второй используется для регистрации запросов, отправленных на сервер в указанном формате.

Новый виртуальный хост

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

Как сказано выше, файлы виртуальных хостов должны быть определены внутри каталога /etc/apache2/sites-available (по крайней мере в дистрибутивах на основе Debian). Поэтому создадим этот файл там. Прежде чем сделать это, следует создать каталог, который будет использоваться как document root, а также создать базовую страницу, которая будет отображаться при открытии сайта:

Теперь можно приступить к настройке виртуального хоста:

Это минимальная конфигурация, необходимая для его запуска. Здесь вы можете увидеть новую директиву ServerName . Это то, что определяет ваш виртуальный хост. Сохраним этот файл как example.conf . Чтобы активировать ваш виртуальный хост, используйте команду a2ensite . Эта команда создаёт символическую ссылку файла в каталоге /etc/apache2/sites-enabled :

После этого следует перезагрузить конфигурацию сервера:

Чтобы убедиться, что конфигурация работает, вы должны добавить запись в файл /etc/hosts той машины, с которой вы пытаетесь связаться с сайтом.

Без этой строки (и без записи DNS) было бы невозможно связать адрес сервера с именем вашего виртуального хоста, а использование IP-сервера напрямую вместо этого «инициировало» бы виртуальный хост по умолчанию.

Настройка SSL

Создаём самоподписанный SSL-сертификат

Создание самозаверенного сертификата — несложная задача. Это может быть удобно, если вы просто хотите получить шифрование. Мы можем создать самозаверяющий сертификат с помощью утилиты OpenSSL:

Посмотрим, что делает эта команда. Первая опция, -x509 определяет, что формируется сертификат стандарта X509.

С помощью -days мы устанавливаем срок действия сертификата в днях. Следующая опция — -newkey . С её помощью мы создаём новый ключ, в данном случае RSA-ключ размером 2048 бит. В тестовом примере нам не нужно шифровать файл закрытого ключа, поэтому используем -nodes . Если эта опция не указана, файл, в котором хранится ключ, будет защищён паролем, который нужно будет предъявлять каждый раз при перезапуске веб-сервера.

С помощью -keyout и -out мы указываем файл для записи сгенерированного ключа и сертификата соответственно. При запуске команды нам будет предложено ответить на несколько вопросов, после чего будет сгенерирован ключ и сертификат.


Скопируйте сгенерированный ключ и сертификат в каталоги /etc/ssl/private и /etc/ssl/ssl-certs соответственно:

Сертификат является общедоступным, поэтому не требует специального разрешения.

Важно настроить права доступа к файлу ключа. Папка /etc/ssl/private принадлежит root-пользователю и группе ssl-cert , и у неё есть права доступа 710. Это означает, что владелец имеет на неё полные права, а владелец группы может только получить к ней доступ и перечислить её содержимое, но не может дать разрешение другим:

Изменим права доступа к файлу ключа, предоставив владельцу права на чтение и запись, а группе — только для чтения:

Теперь, чтобы использовать сертификат, нужно включить модуль SSL с помощью команды a2enmod :

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

Мы также добавили инструкцию SSLEngine on в строке 6.

Наконец, в строках 8–9 мы определили пути для сертификата и файла ключей, используя инструкции SSLCertificateFile и SSLCertificateKeyFile .

Наконец, перезагрузите конфигурацию Apache:


Для этого используется протокол ACME (certificate management agent), который запускается на сервере.

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

Если же у вас есть доступ к shell, необходимо установить клиент certbotACME .

Для установки Certbot на Ubuntu 18.04 достаточно запустить:

Пакет Certbot поставляется с модулем systemd timer , который будет запускать Certbot два раза в день, чтобы поддерживать сертификат в актуальном состоянии. Получить сертификат довольно просто:

Очевидно, чтобы это работало, домен должен правильно указывать на ваш общедоступный IP-адрес. Certbot предложит вам несколько вопросов для настройки конфигурации, и, если всё пойдёт хорошо, сертификат и ключ будут сохранены в каталоге /etc/letsencrypt/live/ . Просто настройте файл виртуального хоста, чтобы указать на них, и всё готово.

Как обезопасить сервер Apache

Основные средства защиты

Установка Fail2ban на Ubuntu Server 18.04

Если вы хотите обезопасить свой сервер Ubuntu, первое, что вы должны сделать, — это установить систему обнаружения вторжений Fail2ban.

Fail2ban отслеживает определённые файлы журналов (в /var/log ) на предмет неудачных попыток входа или автоматических атак на сервер. Когда обнаруживается попытка компрометации с IP-адреса, Fail2ban блокирует его, добавляя новую цепочку в iptables и предотвращая доступ или дальнейшую атаку на сервер.

Fail2ban настолько легко установить и использовать, что его можно рассматривать как простое и универсальное решение для всех серверов Linux.

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

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

Проверьте установленную версию:

После этого Fail2ban готов к работе. Запустить и включить сервис можно так:

Настройка jail

Настроим его для попыток входа по SSH. В каталоге /etc/fail2ban вы найдёте файл jail.conf . Не редактируйте его. Вместо этого создайте новый файл jail.local , который переопределит любые подобные настройки в jail.conf . Новая конфигурация будет отслеживать /var/log/auth.log , использовать фильтр sshd fail2ban , устанавливать для порта SSH значение 22 и устанавливать максимальное количество попыток — 3. Для этого выполните команду:

В новый файл вставьте следующее содержимое:

Сохраните и закройте его. Перезапустите Fail2ban с помощью команды:

На этом этапе, если кто-либо попытается войти на ваш сервер Ubuntu через SSH и эта попытка 3 раза завершится ошибкой, он не сможет больше войти, поскольку iptables заблокирует IP-адрес.

Тестирование и разблокирование

Вы можете проверить, работает ли jail, намеренно провалив три попытки входа на сервер через SSH. После третьей неудачной попытки соединение будет зависать. Нажмите Ctrl+C, чтобы выйти, а затем попытайтесь вернуться по SSH на сервер. Вы больше не сможете использовать SSH на этом сервере с того IP-адреса, который вы использовали.

Затем вы можете разблокировать свой тестовый IP-адрес с помощью следующей команды:

Где ip_address — запрещённый IP-адрес.

Теперь вы снова можете войти.

Модуль mod_evasive

Ещё одна отличная утилита для обнаружения и блокировки IP-адресов, которые используются при атаке типа «отказ в обслуживании». Модуль помещает подозрительные IP-адреса во временный чёрный список и сохраняет их там, если они продолжают подозрительно себя вести.

Благодаря простоте настройки и эффективность он стал одним из любимых инструментов защиты систем Apache. Если вы хотите защитить свой сайт без затрат, можете также использовать его.

Установка mod_evasive в Ubuntu

Затем установите вспомогательную утилиту:

Чтобы установить модуль mod_evasive в Ubuntu, введите следующее:

Настройка mod_evasive

Как и большинство программных пакетов Linux, mod_evasive управляется файлом конфигурации.

Откройте его в текстовом редакторе с помощью следующей команды:

Отредактируйте файл журнала, чтобы он выглядел следующим образом:


Сохраните и выйдите, затем перезагрузите Apache:

Тестирование mod_evasive

Пришло время проверить, правильно ли работает модуль.
Используйте скрипт test.pl . Его сценарий расположен по этому адресу:

Для его запуска примените эту команду:

Вывод должен выглядеть таким образом:


Параметры и настройки

DOSSystemCommand

Вы, возможно, заметили, что эта опция была помечена как комментарий и отключена. Она позволяет указать системную команду, которая будет выполняться при добавлении IP-адреса в чёрный список. Вы можете использовать её, чтобы запустить команду для добавления IP-адреса в брандмауэр или IP-фильтр.

DOSHashTableSize

Увеличьте значение для более загруженных веб-серверов. Опция выделяет пространство для выполнения операций поиска. Увеличение размера улучшает скорость за счёт памяти.

DOSPageCount

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

DOSSiteCount

Общее количество запросов на один и тот же сайт по одному и тому же IP-адресу. По умолчанию установлено значение 50. Вы можете увеличить его до 100, чтобы уменьшить количество ложных срабатываний.

DOSPageInterval

Количество секунд для DOSPageCount. По умолчанию значение равно 1 секунде. Это означает, что если вы не измените его, запрос 2 страниц за 1 секунду временно поместит IP-адрес в чёрный список.

DOSSiteInterval

Как и DOSPageInterval, он определяет количество секунд, которые отслеживает DOSSiteCount. По умолчанию это значение равно 1 секунде, то есть если один IP-адрес запрашивает 50 ресурсов на одном и том же веб-сайте за одну секунду, он будет временно помещён в чёрный список.

DOSBlockingPeriod

Время, в течение которого IP-адрес остаётся в чёрном списке. По умолчанию установлено 10 секунд, но вы можете изменить его на любое значение, которое вам нравится.

DOSLogDir

По умолчанию он настроен на запись журналов в /var/log/mod_evasive . Эти журналы можно просмотреть позже, чтобы оценить поведение клиента.

Белые IP-адреса

Эта опция по умолчанию не включена в файл evasive.conf .

Откройте файл для редактирования и добавьте следующую строку:

Подставьте IP-адрес, который хотите добавить в белый список. Нужно указывать только одну запись в строке. Обычно список используется для доверенных клиентов, которые обмениваются с вашим сайтом большим количеством данных. Этот инструмент хорош для обнаружения ботов и скриптов. Если есть боты или сценарии, которые вы хотите разрешить, можете внести их.

Обязательно сохраните файл и выйдите из него, а затем перезагрузите службу Apache перед тестированием любого из этих параметров.

DNS Injection

Спам из веб-форм не только распространён, но и является быстрым способом внести домен в чёрный список подобный Spamhaus. Чтобы предотвратить подобное, вам нужно добавить ещё один модуль в Apache.

В терминале введите:

После завершения установки введите команду:

Далее откройте файл /etc/apache2/apache2.conf (используя sudo и ваш любимый текстовый редактор) и добавьте в конец вашего файла конфигурации блок:

Сохраните файл apache2.conf и перезапустите Apache, чтобы новый модуль вступил в силу.

Slowloris

В Apache есть модуль для предотвращения подобных DOS-атак. Вот как это работает. Откройте окно терминала. Введите команду:

После завершения установки проверьте конфигурацию в /etc/apache2/mods-available/qos.conf , чтобы убедиться, что она идеально соответствует вашим потребностям. После настройки модуля (при необходимости) перезапустите Apache.

Дополнительные средства защиты

Скрыть версию сервера

Это одно из первых соображений, поскольку вы не хотите показывать, какую версию веб-сервера вы используете. Её разоблачение означает, что вы помогаете хакеру ускорить процесс разведки.
Перейдите в папку:

Перезапустите Apache.
ServerSignature удалит информацию о версии со страницы.
ServerTokens изменит заголовок только на рабочий, т. е. Apache.

Защита от атаки Clickjacking

Атака данного типа позволяет злоумышленнику выполнить клик на сайте-жертве от имени легитимного посетителя.

Чтобы обезопасить свой веб-сервер, вам нужно использовать заголовок «X-FRAME-OPTIONS»
Вы можете сделать это, отредактировав файл apache2.conf .

Добавьте следующую строку внутри Directory /var/www/html/ :

Header always append X-Frame-Options SAMEORIGIN

Сохраните файл и перезапустите Apache.

Защита от атаки XSS

XSS (англ. Cross-Site Scripting — «межсайтовый скриптинг») является одной из наиболее распространённых атак на уровне приложений.

Вы можете защититься от неё, отредактировав файл конфигурации Apache.

Добавьте следующую строку внутри Directory /var/www/html/ :

Header set X-XSS-Protection "1; mode=block"

Заключение

Мы рассмотрели установку и настройку, а также все наиболее важные способы защиты сервера Apache, и теперь вы можете полноценно приступить к изучению его работы на практике.

Проброс портов и настройка роутера для внешнего доступа

Любительский

Аватар пользователя

Содержание

Содержание

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

Зачем открывать доступ извне?

Доступ «снаружи» нужен не только в экзотических случаях вроде открытия игрового сервера или запуска сайта на домашнем компьютере. Гораздо чаще приходится «открывать порт» для многопользовательской игры, а это — как раз предоставление внешнему пользователю (серверу игры) доступа к внутренней сети (порт компьютера). Если необходимо удаленно подключиться и настроить компьютер или роутер, скачать файл-другой из домашней сети, находясь в командировке, или посмотреть видео с подключенных к домашней сети IP-камер — нужно настроить доступ.

Цвета и формы IP-адресов

Прежде чем разбираться, как открыть доступ к своим ресурсам, следует понять, как вообще происходит соединение в сети Интернет. В качестве простой аналогии можно сравнить IP-адрес с почтовым адресом. Вы можете послать письмо на определенный адрес, задать в нем какой-то вопрос и вам придет ответ на обратный адрес. Так работает браузер, так вы посещаете те или иные сайты.

Но люди общаются словами, а компьютеры привыкли к цифрам. Поэтому любой запрос к сайту сначала обрабатывается DNS-сервером, который выдает настоящий IP-адрес.


Допустим теперь, что кто-то хочет написать письмо вам. Причем не в ответ, а самостоятельно. Не проблема, если у вас статический белый адрес — при подключении сегодня, завтра, через месяц и год он не поменяется. Кто угодно, откуда угодно, зная этот адрес, может написать вам письмо и получите его именно вы. Это как почтовый адрес родового поместья или фамильного дома, откуда вы не уедете. Получить такой адрес у провайдера можно только за отдельную и регулярную плату. Но и с удаленным доступом проблем меньше — достаточно запомнить выданный IP.

Обычно провайдер выдает белый динамический адрес — какой-нибудь из незанятых. Это похоже на ежедневный заезд в гостиницу, когда номер вам выдается случайно. Здесь с письмом будут проблемы: получить его можете вы или другой постоялец — гарантий нет. В таком случае выручит DDNS — динамический DNS.

Самый печальный, но весьма распространенный в последнее время вариант — серый динамический адрес: вы живете в общежитии и делите один-единственный почтовый адрес с еще сотней (а то и тысячей) жильцов. Сами вы письма писать еще можете, и до адресата они дойдут. А вот письмо, написанное на ваш почтовый адрес, попадет коменданту общежития (провайдеру), и, скорее всего, не пойдет дальше мусорной корзины.


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

Кто я, где я, какого я цвета?

С терминологией разобрались, осталось понять, какой именно адрес у вас. У большинства провайдеров фиксированный адрес стоит денег, так что если у вас не подключена услуга «статический IP-адрес», то он наверняка динамический. А вот белый он или серый гусь — это нужно проверить. Для начала надо узнать внешний IP-адрес роутера в его веб-интерфейсе и сравнить с тем адресом, под которым вас «видят» в Интернете.

В админ-панели роутера свой IP можно найти на вкладках «Информация о системе», «Статистика», «Карта сети», «Состояние» и т. п. Где-то там нужно искать WAN IP.


Если адрес начинается с «10.», или с «192.168.», то он определенно «серый» — большинство способов открытия доступа работать не будет и остается только VPN.



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

Что такое порты и зачем их бросать?

Проброс порта — это специальное правило в роутере, которое разрешает все обращения извне к определенному порту и передает эти обращения на конкретное устройство во внутренней сети.

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

Разрешать к компьютеру вообще все подключения, то есть пробрасывать на него весь диапазон портов — плохая идея, это небезопасно. Поэтому роутеры просто игнорируют обращения к любым портам «извне». А «пробросы» — специальные исключения, маршруты трафика с конкретных портов на конкретные порты определенных устройств.


Игровые порты: что, куда бросаем?

Какой порт открыть — зависит от конкретного программного обеспечения. Некоторые программы требуют проброса нескольких портов, другим — достаточно одного.

У разных игр требования тоже отличаются — в одни можно играть даже с «серого» адреса, другие без проброса портов потеряют часть своих возможностей (например, вы не будете слышать голоса союзников в кооперативной игре), третьи вообще откажутся работать.

Например, чтобы сыграть по сети в «Destiny 2», нужно пробросить UDP-порт 3074 до вашей «плойки», или UDP-порт 1200 на Xbox. А вот до ПК потребуется пробросить уже два UDP-порта: 3074 и 3097.

В следующей таблице приведены некоторые игры и используемые ими порты на ПК:

Читайте также: