Открыть порт 80 centos 7: Как открыть 80 порт в Centos 7? — Хабр Q&A
Содержание
Firewall на CentOS 7 настройка и использование
Большинство IT специалистов в той или иной степени сталкиваются с Firewall, будь то настройка домашнего роутера или тонкий тюнинг, например, VMWare EDGE NSX-V виртуальной инфраструктуры. Сегодня расскажу, как использовать Firewall на CentOS 7.
Содержание
Вводная часть про Firewall
Большинству, наверное, известно, что для передачи данных между узлами сети на сетевом и транспортном уровнях модели OSI, необходимы два элемента: IP адрес и порт. Например, узел под номером один отправляет пакет узлу под номером два на порт 22 и ждет ответ. Если ответ пришел, то считается, что порт открыт для подключений.
С одной стороны это удобно, но с другой позволяет просканировать узел и понять, какие порты открыты. Большинство сервисов имеют уже устоявшиеся порты. Например, 22 это ssh, 21 — ftp, 80 — http. Таким образом, после сканирования злоумышленник может понять какой сервис находится за тем или иным портом. Зная сервис, будет проще найти и применить эксплойт.
Для чего же нужен Firewall на CentOS, да и не только?
Самое главное правило файрвола: запрещено все, что не разрешено. Что это значит? Представим, что развернули сервер из шаблона с прямым выходом в интернет. Тот, кто готовил шаблон, посчитал, что сервер будет находиться в локальной сети и доступа извне к нему не будет, поэтому оставил ssh на 22 порту. В результате, без Firewall, ssh порт доступен из интернета и может быть скомпрометирован. Если же файрвол включен, 22 порт извне доступен не будет, пока не будет добавлено разрешающее правило. То есть, у администратора появляется еще одна точка где нужно подумать — а можно ли так сделать? В данном примере с ssh портом, если невозможно избежать открытия, необходимо перенести его на более высокий порт, например 29865. Это усложнит поиск и применение эксплойтов.
Опции и ключи
Перед добавлением правил, в которых вы не уверены, особенно если сервер доступен только по ssh, желательно себя обезопасить. Например, добавить скрипт в cron, который будет перезагружать Firewall. И соответственно, не применять ключ: —permanent. Тогда после перезагрузки firewalld, доступ к серверу восстановится.
--permanent правило будет сохранено после перезагрузки firewalld; --zone=<имя зоны> указывает в какой зоне производятся изменения; --add-port - ключ для добавления (открытия) порта; --add-forward-port - проброс порта с одного узла на другой; --list-all-zones - просмотр всех зон firewalld и включенных в них разрешений; --reload - перечитать конфигурацию файрвола; --direct --get-all-rules получение всех правил с прямыми опциями; --direct используется перед всеми прямыми опциями.
https://fedoraproject.org/wiki/FirewallD/ru#.D0.9F.D1.80.D1.8F.D0.BC.D1.8B.D0.B5_.D0.BE.D0.BF.D1.86.D0.B8.D0.B8
Прямые опции предназначены, в основном, для возможности назначения пользовательских правил службам и приложениям. Правила не сохраняются и должны быть переопределены после перезагрузки или перезапуска. Аргументы сквозной опции такие же, как и соответствующие аргументы iptables, ip6tables, ebtables.
Практическое применение Firewall на CentOS 7
По умолчанию в CentOS 7 используется RHEL решение — firewalld. Установка, запуск, добавление в автозагрузку:
yum install firewalld systemctl start firewalld systemctl enable firewalld
Окружение
Пользовательское устройство: IP 192.168.100.21 Роутер: LAN - 192.168.100.1-192.168.100.200 Сервер №1: Роль: Шлюз Интерфейс: ens160 - 192.168.100.50 (Сеть с выходом в Inet) Интерфейс: ens192 - 192.168.211.1 (инфраструктурная сеть) Интерфейс: ens224 - 192.168.111.1 (проектная сеть) Сервер №2: 192.168.211.3 (в инфраструктурной сети) Сервисы - Prometheus:9090; Telegraf:9126 Сервер №3: 192.168.111.5 (в проектной сети) Сервисы - Grafana:3000; Telegraf:9126
Задачи
- открыть порт для внешних подключений;
- разрешить хождение трафика между инфраструктурной сетью и проектной;
- разрешить инфраструктурной и проектной сетям выходить в интернет;
- проброс портов. При обращении на шлюз:
- по порту 9090 должен открываться 192.168.211.3 по порту 9090, т.е. сервис prometheus;
- через 3000 должен открываться 192.168.111.5 по порту 3000, т.е. сервис grafana;
- с 9126 и 9127 должны открываться 192.168.211.3 и 192.168.111.5 соответственно по порту 9126, т.е. exporter telegraf.
Открыть порт для внешних подключений
Например, установили nginx, запустили, командой netstat видим, что 80 порт поднят и слушается nginx, но браузер подключиться не может. Для того, чтобы порт стал доступен извне, на Firewall необходимо открыть входящие подключения к нему:
firewall-cmd --permanent --zone=public --add-port=80/tcp
Разрешить хождение трафика между инфраструктурной сетью и проектной
Для того, чтобы разрешить хождение трафика между сетями, необходимо воспользоваться прямыми опциями. Проще говоря, воспользоваться возможностями iptables. В netfilter цепочке FORWARD разрешить (-j ACCEPT) прохождение пакета от одной сети в другую. Разрешающее правило с интерфейса ens192 на ens224 и обратно, выглядят так:
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ens192 -o ens224 -j ACCEPT firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ens224 -o ens192 -j ACCEPT firewall-cmd --reload
Разрешить инфраструктурной и проектной сетям выходить в интернет
Возможность выхода в интернет подсетям можно осуществить только через NAT, то есть для конечных узлов в интернете все запросы будут приходить от адреса шлюза (если шлюз не спрятан еще за один NAT). Вкратце, для цепочки POSTROUTING в таблице nat добавляется действие над пакетом MASQUERADE. Этот метод позволяет узлу, который не имеет общедоступного IP-адреса, обмениваться данными с другими узлами через посредника (шлюз), расположенного между ним и Интернетом. Хорошая статья про iptables: https://www.k-max.name/linux/netfilter-iptables-v-linux/.
firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -o ens160 -j MASQUERADE
Кроме включения маскарадинга, нужно добавить правило в таблицу filter (цепочка FORWARD), позволяющее хождение трафика с внешней сети во внутренние для пакетов, открывающих новый сеанс, который связан с уже открытым другим сеансом (RELATED), и пакетов, которые уже являются частью существующего сеанса (ESTABLISHED).
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens160 -o ens192 -m state --state RELATED,ESTABLISHED -j ACCEPT firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens160 -o ens224 -m state --state RELATED,ESTABLISHED -j ACCEPT firewall-cmd --reload
по порту 9090 должен открываться 192.168.211.3 по порту 9090, т.е. сервис Prometheus
firewall-cmd --permanent --zone=public --add-port=9090/tcp firewall-cmd --permanent --zone=public --add-forward-port=port=9090:proto=tcp:toport=9090:toaddr=192.168.211.3 firewall-cmd --reload
через 3000 должен открываться 192.168.111.5 по порту 3000, т.е. сервис Grafana
firewall-cmd --permanent --zone=public --add-port=3000/tcp firewall-cmd --permanent --zone=public --add-forward-port=port=3000:proto=tcp:toport=3000:toaddr=192.168.111.5 firewall-cmd --reload
с 9126 и 9127 должны открываться 192.168.211.3 и 192.168.111.5 соответственно по порту 9126, т.е. Exporter telegraf
firewall-cmd --permanent --zone=public --add-port=9126/tcp firewall-cmd --permanent --zone=public --add-port=9127/tcp firewall-cmd --permanent --zone=public --add-forward-port=port=9126:proto=tcp:toport=9126:toaddr=192. 168.211.3 firewall-cmd --permanent --zone=public --add-forward-port=port=9127:proto=tcp:toport=9126:toaddr=192.168.111.5 firewall-cmd --reload
Заключение
В статье постарался рассмотреть типовые задачи, для решения которых потребуется Firewall на CentOS 7. К сожалению, это лишь малая часть от того, какими возможностями обладает этот инструмент.
Управление портами в Linux (Ubuntu/Debian/CentOS)
Как много времени проходит с момента заказа сервера на хостинге до первого подключения к готовому серверу? Несколько минут. На сколько полученный сервер готов к тому, чтобы использовать его на полную? На 100%. Ну или почти на 100. Точнее, совсем не на 100. Новый сервер подобен новорождённому ребёнку. У него одежды, нет приобретённого иммунитета и нет почти никаких навыков. Он уязвим для любого внешнего воздействия. И защиту от окружающих угроз мы должны ему дать. Наш новый сервер на начальном этапе не готов противостоять всему, что приходит к нему извне. А значит, его необходимо оснастить защитой. Такая защита для сервера – брандмауэр, или файрвол (firewall), или межсетевой экран.
Обмен информацией между узлами сети происходит посредством портов открытых для использования на узлах. Для того, чтобы иметь гарантии прохождения исключительно легитимного трафика, следует уметь управлять портами нашего сервера при помощи брандмауэра.
Управление портами в Ubuntu и Debian
В операционных системах Ubuntu и Debian для управления брандмауэром довольно часто применяется утилита iptables. Её упрощённым интерфейсом является UFW (Uncomplicated Firewall). Открытие доступа к серверу для какого-либо приложения происходит путём регистрации этого приложения в UFW.
В Ubuntu интерфейс UFW как правило присутствует по умолчанию, в Debian же необходимо будет сначала его проинсталлировать. Перед установкой брандмауэра рекомендуется обновить репозитории:
$ sudo apt update $ sudo apt install ufw
Список приложений, зарегистрированных в брандмауэре, доступен по следующей команде:
$ sudo ufw app list
Если вы производите первоначальную настройку межсетевого экрана используя подключение к серверу по ssh
, логично было бы сразу же прописать в UFW соответствующее этому протоколу правило:
$ sudo ufw allow SSH
Эту команду также можно применить используя соответствующий номер порта вместо имени протокола. Для ssh
это, как правило, порт 22:
$ sudo ufw allow 22
В Ubuntu команда для разрешения подключения по ssh
выглядит как:
$ sudo ufw allow OpenSSH
Для того, чтобы межсетевой экран начал работать, его необходимо запустить:
$ sudo ufw enable
Теперь, можно добавить в UFW правило, которое позволит разрешить передачу данных, например, по порту 80, или другими словами, при помощи протокола http
. Это можно прописать командой:
$ sudo ufw allow 80
либо:
$ sudo ufw allow http
По аналогии можно также разрешить трафик с использованием порта 443, то есть по протоколу https
:
$ sudo ufw allow 443
или:
$ sudo ufw allow https
Подобными инструкциями можно давать разрешения для подключений, использующих несколько портов. Например, так выглядит команда на открытие целого диапазона портов (32810-32814):
$ sudo ufw allow 32810:32814/udp
Также, помимо номеров портов и названий протоколов, в разрешительных правилах есть возможность использовать IP-адреса. Вот как выглядит команда, разрешающая подключение только с IP-адреса 10.10.10.233:
$ sudo ufw allow from 10.10.10.233
Или из одной определённой подсети:
$ sudo ufw allow from 10.10.10.
0/24
Или с одного определённого IP-адреса и только по одному определённому порту:
$ sudo ufw allow from 10.10.10.233
to any port 22
Естественно существует возможность и закрыть доступ для уже открытого подключения через определённый порт. Для этого используется команда deny
. Следующей командой можно запретить подключения по протоколу http
:
$ sudo ufw deny http
Инструкция для закрытия всех подключений с определённого IP-адреса выглядит следующим образом:
$ sudo ufw deny from
10.10.10.233
где 10.10.10.233
– IP-адрес, для которого будут закрыты все соединения на наш сервер.
Уже созданные правила можно также удалить. Сделать это можно по номеру правила. Чтобы узнать номера правил, используйте следующую команду:
$ sudo ufw status numbered
Вывод данной команды выглядит следующим образом:
Номера правил указаны в скобках в начале строки. Например, правило для подключения по 443-му порту имеет номер 3. Исходя из этого, команда для удаления этого правила будет выглядеть как:
$ sudo ufw delete
3
То же самое можно сделать командой:
$ sudo ufw delete allow 443/tcp
Посмотреть текущее состояние межсетевого экрана позволяет команда:
$ sudo ufw status
Для отключения брандмауэра служит следующая инструкция:
$ sudo ufw disable
Управление портами в Centos
Клиентским интерфейсом для работы с межсетевым экраном в Centos является программа firewalld. Как правило, firewalld уже по умолчанию входит в состав служб Centos. Но если вдруг это не так, для его установки используйте следующие команды:
$ sudo dnf update -y
$ sudo dnf install firewalld -y
Если окажется, что firewalld уже был установлен в системе, команда вернёт следующее сообщение:
Текущее состояние службы можно увидеть набрав команду:
$ systemctl status firewalld
Если служба работает штатно, то вывод команды будет выглядеть так:
Список приложений, которым доступ в firewalld уже предоставлен, можно увидеть с помощью команды:
$ sudo firewall-cmd --permanent --list-all
Такие приложения перечислены в строке services
:
Чтобы предоставить приложению или протоколу, например, http
, возможность производить подключения к нашему серверу, необходимо использовать команду следующего вида:
$ sudo firewall-cmd --permanent --add-service=http
Этот протокол должен добавиться в строку services
:
Аналогичным образом можно открыть доступ для подключений к серверу по протоколу https
:
$ sudo firewall-cmd --permanent --add-service=https
В firewalld также есть возможность предоставить доступ для подключений по определённому порту. Так, например, будет выглядеть команда для открытия доступа по udp-порту 32810:
$ sudo firewall-cmd --zone=public --add-port=32810/udp
А так пишется команда для открытия доступа по пулу портов, например, для udp-портов с 32811 по 32814:
$ sudo firewall-cmd --zone=public --add-port=32811-32814/udp
И чтобы убедиться, что данные порты добавлены в список открытых, необходимо использовать следующую инструкцию:
$ sudo firewall-cmd --zone=public --list-ports
Доступ для подключений по определённому порту можно также и заблокировать. Например, закрытие доступа по udp-порту 32814 осуществляется командой:
$ sudo firewall-cmd --zone=public --remove-port=32814/
udp
И наконец, для применения всех внесённых изменений, брандмауэр необходимо перезапустить:
$ sudo firewall-cmd --reload
Заключение
Итак, мы рассмотрели установку и запуск межсетевых экранов в операционных системах Linux, таких как Ubuntu, Debian и Centos. А также, мы научились открывать доступ для подключений к нашему серверу через определённые порты и протоколы.
linux — порт 80 закрыт в Centos 7 с сервисом firewalld
Задавать вопрос
спросил
Изменено
2 года, 2 месяца назад
Просмотрено
8к раз
Я использую Centos 7 и пытаюсь открыть порты 80 и 443.
Следуя инструкциям от
Centos 7 — открыть порт брандмауэра
, RHEL7: как начать работу с Firewalld, как открыть http-порт 80 в Redhat 7 Linux с помощью firewall-cmd и некоторых других, у меня есть следующее:
[ricardo@m42srv02 ~]$ firewall-cmd --list -все публичный (по умолчанию, активный) интерфейсы: enp0s3 источники: 0.0.0.0/0 сервисы: dhcpv6-клиент http https ssh порты: маскарад: нет форвард-порты: icmp-блоки: богатые правила: [рикардо@m42srv02 ~]$
Даже если я добавлю порты 80/tcp и 443/tcp вместо добавления службы, результат тот же, с другой машины:
[root@m42srv01 ~]# nmap -T4 -sV -p 1-444 192. 168.1.12 Начиная с Nmap 5.51 ( http://nmap.org ) 04.06.2015 04:33 CEST Отчет сканирования Nmap для 192.168.1.12 Хост работает (задержка 0,017 с). Не показано: 441 отфильтрованный порт ПОРТОВАЯ СЛУЖБА ВЕРСИЯ 22/tcp open ssh OpenSSH 6.6.1 (протокол 2.0) 80/tcp закрытый http 443/tcp закрыт https MAC-адрес: 08:00:27:C1:8D:25 (Cadmus Computer Systems) Обнаружение службы выполнено. Пожалуйста, сообщайте обо всех неверных результатах на http://nmap.org/submit/. Nmap выполнен: 1 IP-адрес (1 хост включен) просканирован за 4,28 секунды. [root@m42srv01 ~]#
Я пробовал добавлять службы и порты с параметром —permanent, с источниками и без них, всегда перезагружая брандмауэр после каждого изменения и даже иногда перезапуская службу firewalld, но эти порты всегда закрыты.
Iptables отключен.
- linux
- брандмауэр
- centos7
Попробуйте: firewall-cmd --zone=public --add-port=80/tcp --permanent
Работает для меня на CentOS Linux выпуск 7. 1.1503 ( ядро)
2
Сначала установите и запустите службу firewalld
sudo yum install -y firewalld sudo systemctl запустить firewalld
Затем откройте порты 80 и 443 (и ssh 22 для удаленной оболочки, если необходимо)
Используйте флаг [—permanent], чтобы сохранить изменения после перезагрузки системы
sudo firewall-cmd --zone=public --permanent --add -порт=80/TCP sudo firewall-cmd --zone=public --permanent --add-port=443/tcp sudo firewall-cmd --zone=public --permanent --add-port=22/tcp
Затем перезагрузите службу firewalld, чтобы активировать новую конфигурацию
sudo systemctl reload firewalld
0
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Требуется, но никогда не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Проблема с открытым портом
в CentOS
спросил
Изменено
5 лет, 6 месяцев назад
Просмотрено
4к раз
Я работаю на машине с CentOS 6. Я пытался следовать следующим руководствам:
- Как открыть порт в CentOS
- http://ask.xmodulo.com/open-port-firewall-centos-rhel.html
Если я запускаю nmap ipofmachine
на целевой машине, я получаю странный результат.
Хост работает (задержка 0,0079 с). Не показано: 996 отфильтрованных портов ГОСУДАРСТВЕННАЯ СЛУЖБА ПОРТА 22/tcp открыть ssh 80/tcp закрытый http 443/tcp закрыт https 8080/tcp закрытый http-прокси
Тем не менее, когда я запускаю sudo iptables -L
, я получаю следующий вывод:
Chain INPUT (политика ACCEPT) целевая защита выбор источника назначения ПРИНЯТЬ tcp -- в любом месте tcp dpt:webcache ПРИНЯТЬ tcp -- в любом месте tcp dpt:webcache ПРИНЯТЬ tcp -- в любом месте tcp dpt:http ПРИНИМАТЬ все -- в любом месте в любом месте СВЯЗАННО, УСТАНОВЛЕНО ПРИНЯТЬ icmp -- везде где угодно ПРИНИМАТЬ все -- в любом месте в любом месте ПРИНЯТЬ tcp -- в любом месте в любом месте NEW tcp dpt:ssh ПРИНЯТЬ tcp -- в любом месте в любом месте NEW tcp dpt:http ПРИНЯТЬ tcp -- в любом месте в любом месте NEW tcp dpt:https ПРИНЯТЬ tcp -- в любом месте в любом месте NEW tcp dpt:webcache REJECT all -- везде, где угодно Сеть FORWARD (политика ACCEPT) целевая защита выбор источника назначения REJECT all -- везде, где угодно Цепочка OUTPUT (политика ACCEPT) целевая защита выбор источника назначения
Я что-то упустил? Дайте мне знать, если вам нужна дополнительная информация (я пытаюсь открыть порт 8080).