Открытие портов в centos 7

Содержание:

Введение в POM

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

Наложение «заплат» на ядро — задача весьма нетривиальная и для непосвященного может оказаться весьма сложной и запутанной. Ошибки при наложении «заплат» или наложение «заплат» несовместимых с данной версией ядра, могут привести к тому, что ядро невозможно будет собрать или хуже того — ядро откажется загружаться. Команда разработчиков Netfilter постаралась упростить процесс наложения «заплат», поставляя в составе POM, или Patch-o-matic, сценарии, выполняющие эту работу за нас. POM — это набор «заплат» на исходные тексты ядра и комплект сценариев, выполняющих наложение этих «заплат», что делает возможным работу с POM даже для новичков.

«Заплаты», входящие в состав POM подразделяются на ряд категорий, в зависимости от хронологии и уровня готовности. Некоторые из них обязательны при каждой установке iptables/Netfilter. Другие — необязательные или находящиеся на стадии тестирования, но предоставляющие весьма интересные дополнительные возможности, это и есть те самые скрытые возможности, которым посвящена данная статья. В документации к POM они описаны как: «Maybe broken, Maybe cool extensions.» («Возможно неустойчивы в работе. Возможно чертовски хороши.» да простит меня читатель за эмоциональный перевод прим. перев.)

Установка POM очень проста: скачайте тарболл с последней версией Patch-o-matic из каталога /pub/patch-o-matic на ftp.netfilter.org, распакуйте и запустите соответствующую команду, само собой разумеется из под пользователя root. Не забудьте указать корректный путь к исходным текстам ядра в параметре KERNEL_DIR:KERNEL_DIR=/usr/src/linux-2.4 ./runme extra

Сам процесс установки — интерактивный и достаточно понятный.

4: Настройка соединений SSH

Если включить UFW сейчас, он заблокирует все входящие соединения. Потому нужно создать правила, которые разрешат входящий трафик заведомо безопасных сервисов (например, SSH и HTTP). Обязательно нужно разрешить трафик SSH на облачном сервере, так как этот протокол позволяет вам подключаться к серверу.

Чтобы разблокировать соединения SSH, введите:

Это правило разрешит входящие соединения по порту 22 (порт SSH по умолчанию). UFW знает имена некоторых сервисов (в том числе и SSH). Все эти сервисы перечислены в файле /etc/services.

Вместо названия сервиса в правиле можно указать порт. Например:

Если вы используете нестандартный порт SSH, укажите его в команде. К примеру, если SSH прослушивает порт 2222, нужно ввести:

Порты, протоколы, и службы

В файле /etc/services несколько строк, связанных с Samba:

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

…потому что это порты, которые слушают службы сервера Samba. Первые три строки представляют порты, используемые сетью windows, так как сеть TCP/IP стала стандартной в операционной системе Windows 95. Оставшийся порт стал использоваться, когда Microsoft представила свою службу каталогов с Windows 2000. Для устранения неполадок или настройки полезно отметить, что протоколы UDP (порты 137 и 138) обслуживаются демоном nmbd, а протоколы TCP (порты 139 и 445) обслуживаются smbd.

Вы можете сами проверить, какие порты используются Samba, с помощью этих команд (от root):

И Вы увидите, что порты, перечисленные выше, появляются в выходных данных вместе с протоколом (TCP или UDP), которые используются для связи.

Статистика открытых портов в Linux через netstat

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

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

Формат командной строки:

Команда netstat умеет показывать сетевые соединения (входящие/исходящие), таблицу маршрутизации, статистику по сетевым интерфейсам и т.д. Список всех открытых портов (TCP):

Список всех открытых портов (UDP)

Список только прослушиваемых портов (TCP)

Статистика по всем открытым портам

Подробное отображение списка с открытыми портами — добавлен PID и имя процессов

Объединим все ключи в полезную команду для просмотра открытых TCP/UDP портов с именами процессов (может понадобиться root-доступ)

Список подключенных хостов

Настройка UFW Ubuntu

1. Как включить UFW

Сначала нужно отметить, что в серверной версии Ubuntu UFW по умолчанию включён, а в версии для рабочего стола он отключён. Поэтому сначала смотрим состояние фаервола:

Если он не включён, то его необходимо включить:

Затем вы можете снова посмотреть состояние:

Обратите внимание, что если вы работаете по SSH, то перед тем, как включать брандмауэр, нужно добавить правило, разрешающее работу по SSH, иначе у вас не будет доступа к серверу. Подождите с включением до пункта 3

2. Политика по умолчанию

Перед тем, как мы перейдём к добавлению правил, необходимо указать политику по умолчанию. Какие действия будут применяться к пакетам, если они не подпадают под созданные правила ufw. Все входящие пакеты будем отклонять:

А все исходящие разрешим:

3. Добавление правил UFW

Чтобы создать разрешающее правило, используется команда allow. Вместо allow могут использоваться и запрещающие правила ufw — deny и reject. Они отличаются тем, что для deny компьютер отсылает отправителю пакет с уведомлением об ошибке, а для reject просто отбрасывает пакет и ничего не отсылает. Для добавления правил можно использовать простой синтаксис:

$ ufw allow имя_службы$ ufw allow порт$ ufw allow порт/протокол

Например, чтобы открыть порт ufw для SSH, можно добавить одно из этих правил:

Первое и второе правила разрешают входящие и исходящие подключения к порту 22 для любого протокола, третье правило разрешает входящие и исходящие подключения для порта 22 только по протоколу tcp.

Посмотреть доступные имена приложений можно с помощью команды:

Можно также указать направление следования трафика с помощью слов out для исходящего и in для входящего.

$ ufw allow направление порт

Например, разрешим только исходящий трафик на порт 80, а входящий запретим:

Также можно использовать более полный синтаксис добавления правил:

$ ufw allow proto протокол from ip_источника to ip_назначения port порт_назначения

В качестве ip_источника может использоваться также и адрес подсети. Например, разрешим доступ со всех IP-адресов для интерфейса eth0 по протоколу tcp к нашему IP-адресу и порту 3318:

4. Правила limit ufw

С помощью правил limit можно ограничить количество подключений к определённому порту с одного IP-адреса, это может быть полезно для защиты от атак перебора паролей. По умолчанию подключения блокируются, если пользователь пытается создать шесть и больше подключений за 30 секунд:

К сожалению, настроить время и количество запросов можно только через iptables.

5. Просмотр состояния UFW

Посмотреть состояние и действующие на данный момент правила можно командой status:

Чтобы получить более подробную информацию, используйте параметр verbose:

С помощью команды show можно посмотреть разные отчеты:

  • raw — все активные правила в формате iptables;
  • builtins — правила, добавленные по умолчанию;
  • before-rules — правила, которые выполняются перед принятием пакета;
  • user-rules — правила, добавленные пользователем;
  • after-rules — правила, которые выполняются после принятия пакета;
  • logging-rules — правила логгирования пакетов;
  • listening — отображает все прослушиваемые порты и правила для них;
  • added — недавно добавленные правила;

Например, посмотрим список всех правил iptables:

Посмотрим все прослушиваемые порты:

Или недавно добавленные правила:

Чтобы удалить правило ufw, используется команда delete. Например, удалим ранее созданные правила для порта 80:

7. Логгирование в ufw

Чтобы отлаживать работу ufw, могут понадобится журналы работы брандмауэра. Для включения журналирования используется команда logging:

Также этой командой можно изменить уровень логгирования:

  • low — минимальный, только заблокированные пакеты;
  • medium — средний, заблокированные и разрешённые пакеты;
  • high — высокий.

Лог сохраняется в папке /var/log/ufw. Каждая строчка лога имеет такой синтаксис:

В качестве действия приводится то, что UFW сделал с пакетом, например ALLOW, BLOCK или AUDIT. Благодаря анализу лога настройка UFW Ubuntu станет гораздо проще.

8. Отключение UFW

Если вы хотите полностью отключить UFW, для этого достаточно использовать команду disable:

Также, если вы что-то испортили в настройках и не знаете как исправить, можно использовать команду reset для сброса настроек до состояния по умолчанию:

Проброс и перенаправление портов в iptables

Проброс трафика за NAT или проброс трафика на другой сервер

Чаще всего проброс трафика используется, если мы находимся в локальной сети и от внешнего мира отделены шлюзом. Для того, чтобы открыть доступ для локальных служб (ssh, web, ftp), нам необходимо пробросить порты. Поскольку в качестве шлюза мы будем использовать сервер на Linux, то осуществлять данные действия будем с помощью iptables.

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

$EXT_IP – внешний, реальный IP-адрес шлюза;$INT_IP – внутренний IP-адрес шлюза, в локальной сети;$LAN_IP – внутренний IP-адрес сервера, предоставляющего службы внешнему миру;$SRV_PORT – порт службы. Для веб-сервера равен 80, для SMTP – 25 и т.д.;eth0 – внешний интерфейс шлюза. Именно ему присвоен сетевой адрес $EXT_IP;eth1 – внутренний интерфейс шлюза, с адресом $INT_IP;

Проброс портов

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

iptables -t nat -A PREROUTING –dst $EXT_IP -p tcp –dport $SRV_PORT -j DNAT –to-destination $LAN_IP

Рассмотрим пример

iptables -t nat -A PREROUTING –dst 1.2.3.4 -p tcp –dport 80 -j DNAT –to-destination 192.168.1.50

Если входящий пакет пришёл извне на шлюз (1.2.3.4), но предназначен веб-серверу (порт 80), то адрес назначения подменяется на локальный адрес 192.168.1.50. И впоследствии маршрутизатор передаст пакет в локальную сеть.

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

iptables -I FORWARD 1 -i eth0 -o eth1 -d $LAN_IP -p tcp -m tcp –dport $SRV_PORT -j ACCEPT

Перенаправление портов

Перенаправление портов нужно в том случае, если мы хотим «замаскировать» внутреннюю службу, обеспечив к ней доступ извне не по стандартному, а совсем по другому порту.

Пусть $FAKE_PORT – обманный порт на внешнем интерфейсе шлюза, подключившись к которому мы должны попасть на адрес $LAN_IP и порт $SRV_PORT.

Набор правил для iptables будет отличаться несущественно, поэтому приведу сразу пример итогового скрипта для ленивых.

iptables -t nat -A PREROUTING -d $EXT_IP -p tcp -m tcp –dport $FAKE_PORT -j DNAT –to-destination $LAN_IP:$SRV_PORTiptables -t nat -A POSTROUTING -d $LAN_IP -p tcp -m tcp –dport $SRV_PORT -j SNAT –to-source $INT_IPiptables -t nat -A OUTPUT -d $EXT_IP -p tcp -m tcp –dport $SRV_PORT -j DNAT –to-destination $LAN_IPiptables -I FORWARD 1 -i $EXT_IF -o $INT_IF -d $LAN_IP -p tcp -m tcp –dport $SRV_PORT -j ACCEPT

Что такое порты и зачем они нужны?

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

Но как указать программу, к которой нужно обратиться? Для решения этой проблемы оба протокола UDP и TCP поддерживают систему портов. Порт — это целое число от 1024 до 65535. Все номера до 1024 зарезервированы и используются только определёнными службами, например, 22 — ssh, http — 80, FTP — 21 и так далее.

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

Как работает NAT?

Чтобы иметь возможность общаться с другими компьютерами в сети компьютер должен иметь уникальный ip адрес. Но поскольку количество адресов уменьшалось нужно было придумать технологию, которая позволяла бы давать один адрес нескольким машинам. И была придумана технология NAT или Network Address Translation.

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

Недостаток в том, что инициировать подключение извне нельзя, потому что маршрутизатор просто еще не знает к кому обращаются. Тут на помощь приходит проброс портов. Мы можем сказать роутеру: при поступлении пакетов на порт 80 перенаправлять их на порт 80 компьютера 192.168.1.2. Теперь адрес отправителя и порт будет заменяться на указанный нами и пакет будет передан туда, куда нужно. Если на маршрутизаторе установлен Linux, то все это можно настроить с помощью iptables.

Настройка форвардинга

Перейдите на сервер брандмауэра.

Включение форвардинга в ядро

Сначала нужно включить форвардинг на уровне ядра. По умолчанию в большинстве систем эта функция отключена.

Чтобы включить форвардинг на одну сессию, введите:

Чтобы включить форвардинг на постоянной основе, нужно отредактировать файл /etc/sysctl.conf.

Найдите и раскомментируйте эту строку:

Сохраните и закройте файл, а затем обновите настройки:

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

Чтобы выполнить базовую настройку брандмауэра, читайте это руководство, которое поможет вам:

  • Установить iptables-persistent.
  • Сохранить набор правил по умолчанию в /etc/iptables/rules.v4.
  • Научиться добавлять и редактировать правила брандмауэра.

Настроив свой брандмауэр, можно добавить в него правила перенаправления портов.

Правила форвардинга

Итак, теперь нужно настроить брандмауэр таким образом, чтобы трафик, поступающий на порт 80 открытого интерфейса eth0, перенаправлялся на закрытый интерфейс eth1.

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

Цепочка FORWARD будет принимать новые соединения, предназначенные для порта 80 и поступающие от открытого интерфейса, и передавать их закрытому интерфейсу. Новые соединения обнаруживаются по расширению conntrack и пакету TCP SYN.

Это правило пропустит через брандмауэр первый пакет, который предназначен для создания соединения. Также необходимо разрешить любой последующий трафик в обоих направлениях, что является результатом этого соединения. Чтобы разрешить трафик между открытым и закрытым интерфейсом (ESTABLISHED,RELATED), введите:

Если цепочка FORWARD использует другую политику по умолчанию, установите в ней политику DROP:

Теперь брандмауэр пропускает трафик между открытым и закрытым интерфейсом. Однако пока iptables ещё не знает, как именно нужно направлять этот трафик.

Правила NAT

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

Первая операция, DNAT, будет выполняться в цепи PREROUTING таблицы nat. Эта операция изменяет целевой адрес пакета. Клиенты будут подключаться к серверу брандмауэра по общедоступной сети, не подозревая о перенаправлении пакетов. Нужно изменить адрес получателя каждого пакета, чтобы пакет, попадая в частную сеть, знал, как найти веб-сервер.

NAT не нужно применять ко всем пакетам, которые прошли брандмауэр. Настройте NAT для пакетов, поступающих на порт 80 внутреннего IP-адреса (в данном примере это 192.0.2.2).

Теперь пакет будет перенаправлен на веб-сервер. Однако на данный момент исходным адресом пакета все еще остается адрес клиента. Сервер попытается отправить ответ непосредственно на этот адрес, в результате чего TCP-соединение не будет легитимным.

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

Для этого нужно добавить правило в цепочку POSTROUTING в таблицу nat. Она читается непосредственно перед отправкой пакетов по сети.

Теперь веб-сервер будет доступен в браузере, если направить его на внешний адрес хоста брандмауэра.

Форвардинг портов настроен.

Сохранение правил

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

Если в постоянном наборе правил нет важных комментариев, можете просто использовать такую команду:

Чтобы сохранить комментарии, откройте файл и отредактируйте его вручную:

Отредактируйте конфигурации в таблице filter, в цепочке FORWARD. Также нужно отредактировать таблицу nat, в которую нужно добавить правила PREROUTING и POSTROUTING. В данном случае эти правила будут выглядеть так:

Сохраните и закройте файл.

Проверьте ошибки в файле:

Если ошибок нет, обновите список правил:

Убедитесь, что веб-сервер всё ещё доступен по внешнему адресу сервера брандмауэра:

Проверка правила iptables.

Проверяем открытость / закрытость портов: # netstat -tulpn

Проверяем открытость / закрытость определенного порта: # netstat -tulpn | grep :80

Проверим, что iptables разрешает соединение с 80 портом: # iptables -L INPUT -v -n | grep 80

В противном случае откроем его для всех: # iptables -A INPUT -m state —state NEW -p tcp —dport 80 -j ACCEPT

Проверяем с помощью telnet $ telnet ya.ru 80

Можно использовать nmap для проверки: $ nmap -sS -p 80 ya.ru

Автор статьи Platon Puhlechev aka iFalkorr разрешает печатать данный текст.

Iptables отличный инструмент в руках администратора. Если нужно легко и просто защититься в десктопной Ubuntu, то стоит знать, что есть удобная консольная надстройка над iptables под названием UFW, а к ней есть графическая программа GUFW. Сделать свою Ubuntu ещё более защищённой поможет видеоматериал.

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

Операции с портами

Для открытия/закрытия портов также используется команды Allow/Deny, в зависимости от требований администратора. Синтаксис выглядит следующим образом:

Расшифровка:

1. action — одно из двух действий: разрешить (Allow) или запретить (Deny);
2. port — цифровое имя порта, для которого применяется правило;
3. name_protocol — наименование протокола.

Если требуется указать перечень портов, используем двоеточие между начальной и конечной точкой. Альтернативный вариант — использовать имя службы, для которой создается запись. Например, откроем порт для сервиса HTTP:

Важно! UFW разрешает стандартный порт, который закреплен за службой. Если значение отличается от общепринятых, то создавать правило по имени сервиса нельзя — оно не активируется

Как настроить ufw для перенаправления трафика 80/443 на внутренний сервер, размещенный в локальной сети | Администрирование серверов и техническая поддержка сайтов

Как настроить ufw для перенаправления трафика 80/443 на внутренний сервер, размещенный в локальной сети

5 (100%) 1 vote

Я использую UFW для защиты своей сети. Как перенаправить TCP HTTP-порт # 80 и 443 на внутренний сервер, размещенный по адресам 192.168.1.100:80 и 192.168.1.100:443, используя UFW на сервере Ubuntu Linux?

UFW — акроним для несложного брандмауэра.

Он используется для управления брандмауэром Linux и предназначен для обеспечения простого в использовании интерфейса для пользователя.

В этом учебном руководстве вы узнаете, как перенаправить входящий трафик на ваш сервер с ufw по порту 80/443 на порт 80/443 на другом внутреннем сервере, размещенном в вашей локальной сети / VLAN .

Наш пример

Предположим, вы хотите переслать запросы, отправляемые на {80,443} на сервер, прослушивающий 192.168.1.100:{80,443}. : Как настроить ufw для перенаправления http-трафика на другой IP-адрес: порт

Все запросы для порта 202.54.1.1 80 и 443 необходимо перенаправить на другой внутренний сервер.

DNAT

Если у вас есть сервер во внутренней сети, который вы хотите сделать доступным извне, вы можете использовать -j DNAT-адрес цепи PREROUTING в NAT, чтобы указать IP-адрес и порт назначения, где могут быть входящие пакеты, запрашивающие подключение к вашей внутренней службе. Синтаксис:

/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp -d {PUBLIC_IP} –dport 80 -j DNAT –to {INTERNAL_IP}:80

/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp -d {PUBLIC_IP} –dport 80 -j DNAT –to {INTERNAL_IP}:80

или

/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp -d {PUBLIC_IP} –dport 443 -j DNAT –to {INTERNAL_IP}:443

/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp -d {PUBLIC_IP} –dport 443 -j DNAT –to {INTERNAL_IP}:443

Постобработка и IP-Masquerading

Чтобы разрешить узлам локальной сети с частными IP-адресами связываться с внешними общедоступными сетями, настройте брандмауэр для маскировки IP-адресов, который маскирует запросы от узлов локальной сети с IP-адресом внешнего устройства брандмауэра, например eth0. Синтаксис:

/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

или

/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j MASQUERADE

/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j MASQUERADE

Как настроить ufw для перенаправления порта

Вам нужно отредактировать файл /etc/ufw/before.rules, введите:

$ sudo vi etc/ufw/before.rules

$ sudo vi etc/ufw/before.rules

Затем настройте ufw для перенаправления http-трафика на другой (LAN) IP: порт. В верхнем файле добавьте:

*nat :PREROUTING ACCEPT # forward 202.54.1.1 port 80 to 192.168.1.100:80 # forward 202.54.1.1 port 443 to 192.168.1.100:443 -A PREROUTING -i eth0 -d 202.54.1.

1 -p tcp –dport 80 -j DNAT –to-destination 192.168.1.100:80 -A PREROUTING -i eth0 -d 202.54.1.1 -p tcp –dport 443 -j DNAT –to-destination 192.168.1.100:443 # setup routing -A POSTROUTING -s 192.168.1.

0/24 ! -d 192.168.1.0/24 -j MASQUERADE COMMIT

*nat

:PREROUTING ACCEPT

# forward 202.54.1.1  port 80 to 192.168.1.100:80

# forward 202.54.1.1  port 443 to 192.168.1.100:443

-A PREROUTING -i eth0 -d 202.54.1.1   -p tcp –dport 80 -j  DNAT –to-destination 192.168.1.100:80

-A PREROUTING -i eth0 -d 202.54.1.1   -p tcp –dport 443 -j  DNAT –to-destination 192.168.1.100:443

# setup routing

-A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j MASQUERADE

COMMIT

Сохраните и закройте файл. Измените /etc/sysctl.conf:

$ sudo vi /etc/sysctl.conf

$ sudo vi /etc/sysctl.conf

Установите / отредактируйте следующим образом:

Net.ipv4.ip_forward = 1

Сохраните и закройте файл. Обновить изменения:

$ sudo sysctl -p

Наконец, перезапустите брандмауэр, чтобы включить маршрутизацию:

$ sudo systemctl restart ufw

$ sudo systemctl restart ufw

Убедитесь, что разрешены порты 80 и 443, иначе ufw заблокирует запросы, перенаправленные на внутренние 192.168.1.100:{80,443}:

$ sudo ufw allow proto tcp from any to 202.54.1.1 port 80 $ sudo ufw allow proto tcp from any to 202.54.1.1 port 443

$ sudo ufw allow proto tcp from any to 202.54.1.1 port 80

$ sudo ufw allow proto tcp from any to 202.54.1.1 port 443

Проверьте новые настройки:

$ sudo ufw status $ sudo iptables -t nat -L -n -v

$ sudo ufw status

$ sudo iptables -t nat -L -n -v

Наконец, убедитесь, что в вашем домене указанаDNS ‘a’ запись , установлена на 202.54.1.1.

Как открыть порт Ubuntu

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

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

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

Просмотр правил Iptables

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

sudo iptables -L

Здесь мы видим три цепочки OUTPUT, INPUT и FORWARD, за открытые порты отвечает цепочка INPUT, именно через нее проходят все входящие пакеты. Сейчас политика по умолчанию – ACCEPT, это значит, что подключение ко всем портам разрешено. Здесь нам нужно настроить все самим и это будет проще если бы какая-либо программа уже создала свои настройки, но этот вариант мы тоже рассмотрим ниже.

Как открыть порт iptables с нуля

Если в iptables уже есть какие-либо правила и вы хотите их удалить просто выполните:

sudo iptables -F

Теперь нам нужно добавить правила, которые разрешат обмен данными между любыми портами на локальном интерфейсе lo, это нужно чтобы не вызвать системных ошибок:

sudo iptables -A INPUT -i lo -j ACCEPT$ sudo iptables -A OUTPUT -o lo -j ACCEPT

Если кратко, то здесь добавляется два правила в цепочки INPUT и OUTPUT, разрешающие отправку и прием данных из интерфейса lo

Еще одно интересное и важное правило, которое многие упускают. Нужно запрещать только новые соединения, а пакеты для уже открытых нужно разрешать

Иначе получится, что мы отправляем серверу запрос (цепочка OUTPUT открыта), соединение открывается, но сервер не может нам ответить, потому что все пакеты отбрасываются в INPUT. Поэтому нужно разрешить все пакеты с состоянием ESTABLISHED и RELATED.

Для этого есть модуль state:

sudo iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

Теперь самое интересное, рассмотрим как открыть порт 22 и 80 для протокола TCP:

sudo iptables -A INPUT -p tcp –dport 22 -j ACCEPT$ sudo iptables -A INPUT -p tcp –dport 80 -j ACCEPT

Опция -A сообщает, что нужно добавить пакет в конец цепочки, -p – указывает протокол, а –dport или Destination Port (порт назначения) указывает из какого порта пакеты нужно принимать. Теперь вы можете снова посмотреть список правил:

sudo iptables -L

 sudo iptables -nvL

Чтобы все это в действительности заработало, осталось поменять политику по умолчанию на DROP:

sudo iptables -P INPUT DROP

Все, можете проверять. Все пользователи смогут получить доступ к портам 22 и 80, а к остальным доступа не будет.

Как открыть порт, если уже есть правила

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

Допустим, программа или предыдущий администратор для надежности добавили в конец цепочки правило такого вида:

sudo iptables -A INPUT -j DROP

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

Естественно, что к нему уже никакие пакеты не дойдут, потому что они были отброшены ранее.

Чтобы обойти эту проблему нужно использовать опцию -I (INSERT) вместо -A (ADD), она добавляет правило в начало цепочки и все будет работать. Осталось открыть порты Linux:

sudo iptables -I INPUT -p tcp –dport 1924 -j ACCEPT

Теперь смотрим список правил и проверяем:

sudo iptables -L

Выводы

В этой статье мы рассмотрели как открыть порт Ubuntu 16.04 или в любом другом Linux дистрибутиве, а также закрыть ненужные порты. Это повысит безопасность вашей системы. Только на первый взгляд кажется, что с iptables сложно работать. Если разобраться, то все будет достаточно просто. Надеюсь, эта информация была полезной для вас.

(10 4,90 из 5) Загрузка…

Разрешение доступа клиентам

В этой статье объясняется, как настроить брандмауэр iptables, чтобы разрешить сетевым клиентам доступ к серверу Samba на узле Linux.
Я запускал серверы Samba уже несколько лет, всегда в частных сетях за брандмауэрами, и обычно отключал брандмауэр на внутреннем хосте, чтобы не усложнять настройку или избавиться от неожиданных багов. С годами я стал более сознательным в вопросах безопасности, и теперь я стараюсь всегда настраивать фаервол, чтобы впускать трафик только тот, что мне нужен. Эта краткая статья должна объяснить основы разрешения трафика Samba через iptables. А пока немного о самой Samba.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector