- Как открыть порт linux centos
- Популярные Похожие записи:
- 9 Responses to Как открыть порт в CentOS
- Открываем порт в Linux с помощью firewalld
- Файрвол и отсутствие соединения
- Почему так происходит
- Установка firewalld
- Как проверить, что порт закрыт именно файрволом?
- Открываем порт для внешних соединений всем пользователям
- Настройка firewalld в CentOS
- Установка и запуск
- Общие команды для управления firewalld
- Управление правилами
- Синтаксис
- Добавление портов
- Добавление сервиса
- Rich-Rule
- Удаление правил
- Управление зонами
- Пример настройки NAT (шлюза)
- Проброс портов
- Запретить или разрешить трафик между интерфейсами
- Запретить
- Разрешить
- Разрешить трафик в одном направлении
- Возможные проблемы при работе с firewalld
Как открыть порт linux centos
Всем привет, давайте рассмотрим ситуацию, что вы поставили нужную вам службу например Apache пытаетесь зайти по ip адресу в браузере а он не открывается, дело в том, что в CentOS по умолчанию все порты закрыты на iptable. Давайте этому научимся. НАм нужно открыть порты 443 и 80.
iptables -I INPUT -p tcp —dport 80 -m state —state NEW -j ACCEPT
iptables -I INPUT -p tcp —dport 443 -m state —state NEW -j ACCEPT
сохраняем это все дело
service iptables save
и перезапускаем iptable
/etc/init.d/iptables restart
Популярные Похожие записи:
9 Responses to Как открыть порт в CentOS
Иван, спасибо вам за сайт. Нашла тут хорошую инструкцию по установке Centos, но вот беда — доступа в инет с него не было. Пролистала ваши статьи и… «В CentOS по умолчанию все порты закрыты на iptables…». Приплыли. Открыла порты и всё в ажуре! Спасибо.
Добрый день, сайт и задумывался как помощь многочисленным людям, по своему опыту сталкивался со многими вещами, и всегда не хватало в интернете сайтов с подробными инструкциями, что я и пытаюсь исправить)) правда если бы у меня еще были коллеги авторы было бы еще быстрее:)
Оказалось, кривизна моих рук оставляет ждать лучшего. Эти команды вносят указанные правила в конфиг iptables, но указанные порты остаются закрытым по результатам проверки netstat -tlnd.
Открыты 22, 8000 и всё.
Бьюсь второй день, не помогает правка самого конфига (/etc/sysconfig/iptables) c последующим сохранением (service iptables save). После перезапуска службы /etc/init.d/iptables конфиг прежний. Подскажите, куда смотреть?
Добрый день а какая у вас версия Centos? Если 7 то там по умолчанию используется FirewallD а не iptable, если хотите его вернуть нужно выполнить
systemctl stop firewalld
systemctl disable firewalld
Устанавливаем его
yum install iptables-services
systemctl start iptables
systemctl enable iptables
можете еще добавить графический вариант
yum install system-config-firewall-tui
перезагрузка
а если настраивать FirewallD то там вот такой синтаксис firewall-cmd —permanent —add-port=№порта/протокол
Добрый день, отличный у вас сайт, такого крупного блога, который ведет один человек я не встречал. Спасибо.
Иван, у меня версия Centos 6.7. Может в этом проблема?
Ирина, добрый день попробуйте поставить утилиту yum install system-config-firewall-tui и открыть из графического режима. В 6 версии описанный в статье метод на моей практике работал всегда. А вы все делаете из под рутовой учетки?
Иван, сайт отличный, порты открылись, интернет потёк
Добрый день! нужна помощь, есть vps сервер, centos 7.3 к нему нужен доступ через браузер, к примеру 81.213.233.21:20025 или 81.213.233.21:10223 , открытый 22 и 10223 порт, это прокси сервер, пытаюсь открыть порт командой sudo firewall-cmd —zone=public —permanent —add-port=20025/tcp, sudo firewall-cmd —zone=public —permanent —add-port=20025/udp, пишет что он есть в зоне public, но доступа к нему нет, что уже только не пробовал, может нужно как-то пробросить порты? но как? уже не знаю что делать
Источник
Открываем порт в Linux с помощью firewalld
Файрвол и отсутствие соединения
Итак, вы купили VDS (виртуальный сервер), установили какой-то сервис, например ftp (File Transfer Protocol — протокол передачи файлов) и у вас не проходят соединения на сервер из внешней сети Интернет, но локально в консоли всё работает. Это означает, что порт скорее всего закрыт файрволом от внешних соединений в целях безопасности.
Почему так происходит
По умолчанию большинство портов закрыто межсетевым краном от внешних соединений в целях безопасности. Системный администратор должен стараться по-максимуму ограничивать доступ к сервисам из вне. Например, в большинстве случаев доступ к СУБД (Система управления базами данных) закрыт для внешних IP-адресов. Если какому-то серверу из вне нужен доступ, то его открывают только для заданного IP-адреса или подсети. Разумно ограничить доступы межсетевым экраном ко всем внутренним службам, которые не должны быть доступны любому пользователю Интернет.
Установка firewalld
Как проверить, что порт закрыт именно файрволом?
Открываем порт для внешних соединений всем пользователям
Это очевидный, но не самый лучший вариант. Он подойдёт вам, если нужно открыть какой-то конкретный порт. Если же задача разрешить сервис, то лучше подойдёт команда:
Пока эти команды только изменили текущую конфигурацию файрвола, но эти настройки не вступили в силу. Чтобы они заработали, нужно перезагрузить файрвол мягко без разрыва текущих соединений.
И если эти настройки нам нужны постоянно, то есть и после перезагрузки сервера, то нужно их сохранить.
При выполнении команд можно использовать опцию —permanent, чтобы настройки сразу сохранялись глобально. Но лучше так не делать, потому что вы не можете быть на 100% уверены, что ваши команды приведут к задуманному результату. Поэтому вы сначала добавляете настройки в текущую конфигурацию, перезагружаете файрвол, проверяете, что всё работает как требуется и только после тестирования сохраняете настройки глобально. Важно, конечно, не забыть их сохранить, а то после перезагрузки сервера будут проблемы.
Кстати, это распространённая ошибка системных администраторов, что сервер не устойчив к перезагрузкам. Некоторые системные администраторы любят хвастаться UPTIME в не сколько лет. Но у этого есть и обратная сторона, что они не могут быть уверены, что какие-то их команды не носят временный характер до ближайшей перезагрузки.
Источник
Настройка firewalld в CentOS
Firewalld — утилита для управления встроенным в ядро Linux брандмауэром Netfilter. Несмотря на собственный синтаксис, имеет такой же принцип работы, как Iptables. Дополнительно про управление Netfilter при помощи последнего.
Установка и запуск
В некоторых системах CentOS может не оказаться firewalld. Для его установки вводим:
yum install firewalld
Для автоматического зауска вводим:
systemctl enable firewalld
И для запуска службы:
systemctl start firewalld
Общие команды для управления firewalld
Мягко перечитать правила (применить настройки):
Перечитать правила и сбросить текущие подключения:
* в официальной документации сказано, что данную команду стоит применять только в случаях проблем с firewalld.
Посмотреть созданные правила:
systemctl stop firewalld
systemctl start firewalld
systemctl disable firewalld
systemctl enable firewalld
Сохранить текущие правила, сделав их постоянными (permanent):
Управление правилами
Синтаксис
Общий синтаксис для работы с правилами:
firewall-cmd [опции] [зона]
* порядок следования параметров не важен.
- [опции] — дополнительные параметры для создаваемого правила, например —permanent — постоянное правило, то есть будет действовать после перезагрузки. Не обязательный.
- [зона] — по умолчанию, правила создаются для зоны public. Для работы с конкретной зоной ее необходимо указать, например, —zone=dmz. Не обязательный.
- — само правило. Обязательный.
Чтобы правила применялись, не забываем их перечитывать:
Добавление портов
Открыть порт 80:
firewall-cmd —permanent —add-port=80/tcp
* где ключ —permanent — добавить постоянное правило (будет действовать после перезагрузки).
Добавить правило для определенной зоны:
firewall-cmd —permanent —zone=external —add-port=80/tcp
Добавить диапазон портов:
firewall-cmd —permanent —add-port=6500-6700/udp
Добавить несколько правил одной командой:
firewall-cmd —permanent —add-port=80/tcp —add-port=443/tcp
Добавление сервиса
Использование служб, вместо портов, может повысить удобство управления правилами за счет объединения нескольких портов в одну службу.
Посмотреть список доступных служб:
Разрешить порт, например, для сервиса ntp:
firewall-cmd —permanent —add-service=ntp
Создать собственную службу:
firewall-cmd —permanent —new-service=name-service
* где name-service — произвольное имя создаваемой службы.
Добавить порт, например TCP 2200 к службе:
firewall-cmd —permanent —service=name-service —add-port=2200/tcp
Задать описание для удобства:
firewall-cmd —permanent —service=name-service —set-short=»Service With This Name»
firewall-cmd —permanent —service=name-service —set-description=»Long Description For Service With This Name»
Информацию о созданном сервисе можно получить командой:
Теперь созданную службу можно использовать для создания правил, например:
firewall-cmd —permanent —add-service=name-service
Rich-Rule
rich-rule позволяет создавать правила с условиями. Рассмотрим несколько примеров:
1. Разрешаем службу http с условием, что запросы будут с определенных IP-адресов (подсети 192.168.0):
firewall-cmd —permanent —add-rich-rule ‘rule family=»ipv4″ source address=»192.168.0.0/24″ service name=»http» accept’
2. Или для конкретного порта:
firewall-cmd —permanent —add-rich-rule ‘rule family=»ipv4″ source address=»192.168.0.0/24″ port port=»5038″ protocol=»tcp» accept’
3. Чтобы заблокировать подсеть можно воспользоваться командой:
firewall-cmd —permanent —add-rich-rule=»rule family=’ipv4′ source address=’192.168.1.0/24′ reject»
Список правил с условиями можно отобразить командой:
Удаление правил
Аналогично созданию, но вместо add вводим remove, например —remove-port (удалит порт) или —remove-service (службу).
Удалим правило для открытия 80-о порта:
firewall-cmd —permanent —remove-port=80/tcp
Управление зонами
Все правила в firewalld могут быть разбиты по зонам. Для каждой свой набор правил и свои сетевые интерфейсы. Это нужно использовать, если мы захотим для разных сетевых адаптеров сделать разные по строгости правила.
Посмотреть список всех имеющихся зон:
Посмотреть список используемых зон:
Информация о конкретной зоне:
firewall-cmd —list-all —zone=public
Создать правило для зоны public:
firewall-cmd —permanent —zone=public —add-port=80/tcp
Добавить сетевой интерфейс в зону:
firewall-cmd —permanent —zone=public —remove-interface=ens34
firewall-cmd —permanent —zone=internal —add-interface=ens34
* сначала нужно удалить адаптер из текущей зоны.
Задать действие по умолчанию для зоны:
firewall-cmd —permanent —zone=public —set-target=DROP
Создать новую зону:
firewall-cmd —permanent —new-zone=custom_zone
* чтобы система увидела новую зону custom_zone, команда reload обязательная.
Пример настройки NAT (шлюза)
firewall-cmd —permanent —zone=dmz —add-masquerade
* без указания зон, будет включен для public и external.
Для примера берем два ethernet интерфейса — ens32 (внутренний) и ens33 (внешний). Для настройки nat последовательно вводим следующие 4 команды:
firewall-cmd —permanent —direct —add-rule ipv4 nat POSTROUTING 0 -o ens33 -j MASQUERADE
* правило включает маскарадинг на внешнем интерфейсе ens33. Где опция —direct требуется перед всеми пользовательскими правилами (—passthrough, —add-chain, —remove-chain, —query-chain, —get-chains, —add-rule, —remove-rule, —query-rule, —get-rules); nat — таблица, в которую стоит добавить правило; POSTROUTING 0 — цепочка в таблице nat; опция MASQUERADE указывает сетевому экрану менять внутренний IP-адрес на внешний.
firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens32 -o ens33 -j ACCEPT
* добавляет в таблицу filter (цепочку FORWARD) правило, позволяющее хождение трафика с ens32 на ens33.
firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens33 -o ens32 -m state —state RELATED,ESTABLISHED -j ACCEPT
* добавляет правило в таблицу filter (цепочку FORWARD), позволяющее хождение трафика с ens33 на ens32 для пакетов, открывающих новый сеанс, который связан с уже открытым другим сеансом (RELATED) и пакетов, которые уже являются частью существующего сеанса (ESTABLISHED).
systemctl restart firewalld
* для того, чтобы сервер CentOS заработал в качестве шлюза, также необходимо настроить ядро. Подробнее в статье Настройка Интернет шлюза на CentOS 7.
Для просмотра созданных данным способом правил используем команду:
firewall-cmd —direct —get-all-rules
Проброс портов
Проброс настраивается со следующим синтаксисом:
firewall-cmd —add-forward-port=port= :proto=tcp|udp|sctp|dccp:toport= :toaddr=
firewall-cmd —zone=external —permanent —add-forward-port=port=25:proto=tcp:toport=8025:toaddr=192.168.0.15
* в данном примере мы будем слушать запросы на порту 25 и передодить их на узел 192.168.0.15 и порт 8025.
Запретить или разрешить трафик между интерфейсами
Предположим, у нас есть два внутренних сетевых интерфейса ens35 и ens36. Мы хотим контролировать трафик между ними.
Запретить
Применяется в случаях, когда на сервере включен FORWARD, но необходимо блокировать трафик между определенными сегменами сети.
Вводим следующие команды:
firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j DROP
firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens36 -o ens35 -j DROP
Разрешить
Применяется в случаях, когда интерфейсы находятся в зонах, где по умолчанию, трафик блокируется.
Для разрешения команды, практически, аналогичные:
firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j ACCEPT
firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens36 -o ens35 -j ACCEPT
Разрешить трафик в одном направлении
В предыдущих примерах мы разрешали трафик в обоих направлениях. Если необходимо сделать так, чтобы только сеть ens35 видела сеть ens36, вводим одну команду:
firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j ACCEPT
Возможные проблемы при работе с firewalld
1. Ошибка command not found (команда не найдена).
Возможные причины: не установлен пакет или не запущена служба.
Выполняем установку пакета firewalld:
yum install firewalld firewall-config
systemctl start firewalld
2. Не применяются правила.
Причина: не введена команда перезапуска правил.
Если это не помогло, делаем перезапуск со сбросом подключений:
В некоторых случаях, необходимо перезапустить сетевые службы:
systemctl restart network
В исключительных случаях, перезагружаем компьютер:
3. The interface is under control of NetworkManager and already bound to the default zone.
Ошибка появляется при попытке удалить интерфейс из зоны, настройками которого управляет NetworkManager.
Для решения открываем конфигурационный файл для настройки сетевого интерфейса, например:
И дописываем следующее:
* в данном примере сетевой интерфейс ens34 будет добавлен в зону external.
Источник