Centos 7 открыть 80 порт: Как открыть порт в Linux CentOS 7 с помощью firewalld?
Содержание
Как открыть порт в Linux CentOS 7 с помощью firewalld?
Файрвол и отсутствие соединения
Итак, вы купили VDS (виртуальный сервер), установили какой-то сервис, например ftp (File Transfer Protocol — протокол передачи файлов) и у вас не проходят
соединения на сервер из внешней сети Интернет, но локально в консоли всё работает. Это означает, что порт скорее всего закрыт файрволом от внешних соединений в целях безопасности.
Почему так происходит
По умолчанию большинство портов закрыто межсетевым краном от внешних соединений в целях безопасности. Системный администратор должен стараться по-максимуму ограничивать доступ
к сервисам из вне. Например, в большинстве случаев доступ к СУБД (Система управления базами данных) закрыт для внешних IP-адресов. Если какому-то серверу из вне нужен доступ,
то его открывают только для заданного IP-адреса или подсети.
Разумно ограничить доступы межсетевым экраном ко всем внутренним службам, которые не должны быть доступны любому пользователю Интернет.
Установка firewalld
firewall-cmd --state #смотрим состояние файрвол, если файрвола нет, то устанавливаем его yum install firewalld #скорее всего он у вас уже установлен systemctl enable firewalld #включаем автоматический запуск фарвол. Это нужно, чтобы он запускался после перезагрузки сервера. systemctl start firewalld #запускаем файрвол firewall-cmd --list-all #смотрим настройки public (active) target: default icmp-block-inversion: no interfaces: ens3 sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Как проверить, что порт закрыт именно файрволом?
systemctl stop firewalld #отключаем файрволл и проверяем есть ли соединение из вне systemctl start firewalld #включаем файрвол
Открываем порт для внешних соединений всем пользователям
firewall-cmd --add-port=21/tcp firewall-cmd --remove-port=21/tcp #эту команду используйте, чтобы закрыть порт
Это очевидный, но не самый лучший вариант. Он подойдёт вам, если нужно открыть какой-то конкретный порт. Если же задача разрешить сервис, то лучше подойдёт команда:
firewall-cmd --add-service=ftp firewall-cmd --get-services #эта команда выводит список всех возможных сервисов, которые можно добавлять в файрвол firewall-cmd --remove-service=ftp #эту команду используйте, чтобы закрыть службу
Пока эти команды только изменили текущую конфигурацию файрвола, но эти настройки не вступили в силу.
Чтобы они заработали, нужно перезагрузить файрвол мягко без разрыва текущих соединений.
firewall-cmd --reload #перезагружаем без разрыва текущих соединений firewall-cmd --complete-reload #сбросит и текущие соединения firewall-cmd --list-all #смотрим настройки public (active) target: default icmp-block-inversion: no interfaces: ens3 sources: services: dhcpv6-client ftp ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks:
И если эти настройки нам нужны постоянно, то есть и после перезагрузки сервера, то нужно их сохранить.
firewall-cmd --runtime-to-permanent #делаем текущие настройки постоянными
При выполнении команд можно использовать опцию —permanent, чтобы настройки сразу сохранялись глобально. Но лучше так не делать, потому что вы не можете быть на 100% уверены,
что ваши команды приведут к задуманному результату. Поэтому вы сначала добавляете настройки в текущую конфигурацию, перезагружаете файрвол, проверяете, что всё работает как требуется и
только после тестирования сохраняете настройки глобально. Важно, конечно, не забыть их сохранить, а то после перезагрузки сервера будут проблемы.
Кстати, это распространённая ошибка системных администраторов, что сервер не устойчив к перезагрузкам. Некоторые системные администраторы любят хвастаться UPTIME в не сколько лет.
Но у этого есть и обратная сторона, что они не могут быть уверены, что какие-то их команды не носят временный характер до ближайшей перезагрузки.
Открываем сервис для внешних соединений пользователям из заданной подсети
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="ftp" accept'
Как открыть порт 80 в CentOS
Если вы планируете размещать веб-сайты на CentOS 7, вы можете установить программное обеспечение веб-сервера, такое как Apache или Nginx. Веб-сервер, такой как Apache, по умолчанию работает на 80-м порту. То есть, если вы перейдете на IP-адрес, имя хоста или доменное имя вашего сервера из веб-браузера, тогда веб-сервер должен отправить вам веб-страницу. На сервере CentOS 7 должно быть установлено множество подобных сервисов. Подобно тому, как веб-сервер работает с портом 80, DNS-сервер работает с портом 53, SSH-сервер работает с портом 22, сервер MySQL работает с портом 3306 и так далее. Но вы не хотите, чтобы другие подключались к этим службам. Если кто-то получит доступ к вашему SSH-серверу, он / она сможет управлять вашим сервером, например остановите некоторые службы, установите некоторые новые службы, смените пароль и многое другое может случаться. Вот почему используется программа брандмауэра, позволяющая посторонним подключаться к определенному порту и блокировать другие. Для веб-сервера порт 80.
В этой статье я покажу вам, как открыть порт 80 и заблокировать все остальные порты на CentOS 7 с помощью firewalld. Давайте начнем.
В этом разделе я покажу вам, как установить веб-сервер на CentOS 7. Я включил этот раздел, чтобы вы могли получить реальный жизненный опыт о том, о чем я говорю.
Наиболее широко используемым программным обеспечением для веб-серверов является Apache. Apache доступен в официальном репозитории пакетов CentOS 7.
Чтобы установить веб-сервер Apache, выполните следующую команду:
$ судоням установить httpd
Нажмите ‘y’, а затем нажмите продолжить.
Должен быть установлен веб-сервер Apache.
Теперь выполните следующую команду, чтобы проверить, запущен ли HTTP-сервер Apache:
$ судо systemctl статус httpd
Как видно на скриншоте ниже, HTTP-сервер Apache не запущен.
Вы можете запустить HTTP-сервер Apache с помощью следующей команды:
$ судо systemctl start httpd
Вам нужно, чтобы HTTP-сервер Apache запускался автоматически при загрузке системы. Вы можете добавить HTTP-сервер Apache в автозагрузку с помощью следующей команды:
$ судо systemctl включить httpd
HTTP-сервер Apache добавлен в автозагрузку.
Теперь откройте веб-браузер и перейдите в http://localhost
Вы должны увидеть следующую страницу, как показано на скриншоте ниже.
Проверка открытых портов с помощью nmap
Сначала проверьте IP-адрес вашего сервера CentOS 7 с помощью следующей команды:
$ ip а
Как видно на скриншоте ниже, IP-адрес моего сервера CentOS 7 192.168.10.97
Вы можете проверить все открытые порты с помощью nmap утилита с другого компьютера следующим образом:
$ nmap-sT 192.168.10.97
Как видите, сейчас открыт только порт 22. Что нас интересует, так это открытие только порта 80 и закрытие других.
Открытие порта 80 и закрытие других
Сначала проверьте все разрешенные службы с помощью следующей команды:
$ судо firewall-cmd —list-all
Как видите, у меня есть сервисы dhcpv6-client и ssh, разрешенные извне. Вам может быть разрешено больше или меньше услуг.
Теперь вам нужно отключить их по одному.
Вы можете удалить службу ssh с помощью следующей команды:
$ судо firewall-cmd — удалить-сервис=ssh—постоянный
Вы можете удалить службу dhcpv6-client с помощью следующей команды:
$ судо firewall-cmd — удалить-сервис= dhcpv6-client —постоянный
Теперь добавьте службу HTTP или порт 80 с помощью следующей команды:
$ судо firewall-cmd —добавить сервис= http —постоянный
Когда вы закончите, перезапустите firewalld с помощью следующей команды:
$ судо firewall-cmd —reload
Теперь, если вы снова проверите службы firewalld:
$ судо firewall-cmd —list-all
Вы должны видеть только http сервис разрешен, как указано на скриншоте ниже.
Теперь вы можете выполнить сканирование портов с помощью nmap с другого компьютера:
$ судоnmap-sT 192.168.10.97
Вы должны увидеть, что открыт только порт 80, как показано на скриншоте ниже.
Вы также можете проверить, можете ли вы получить доступ к веб-серверу, если откроете браузер и введете IP-адрес веб-сервера.
Я могу получить доступ к веб-серверу из браузера, как вы можете видеть на скриншоте ниже.
Вот как вы открываете порт 80 и блокируете все остальные порты в CentOS 7. Спасибо, что прочитали эту статью.
Как открыть порт 80 на CentOS
Если вы планируете размещать веб-сайты на CentOS 7, вы можете установить программное обеспечение веб-сервера, такое как Apache или Nginx. Веб-сервер, такой как Apache, по умолчанию работает на порту 80. То есть, если вы переходите на IP-адрес или имя хоста или доменное имя вашего сервера из веб-браузера, веб-сервер должен отправить вам веб-страницу. На сервере CentOS 7 должно быть установлено множество подобных служб. Например, веб-сервер работает на порту 80, DNS-сервер работает на порту 53, SSH-сервер работает на порту 22, сервер MySQL работает на порту 3306 и так далее. Но вы не хотите, чтобы другие подключались к этим сервисам. Если кто-то получит доступ к вашему SSH-серверу, то он/она сможет управлять вашим сервером, например, остановить некоторые службы, установить новые службы, изменить ваш пароль и может произойти много непредвиденных вещей. Вот почему программа брандмауэра используется, чтобы позволить посторонним подключаться к определенному порту и блокировать другие. Для веб-сервера порт 80.9.0003
В этой статье я покажу вам, как открыть порт 80 и заблокировать все остальные порты в CentOS 7 с помощью firewalld. Давайте начнем.
В этом разделе я покажу вам, как установить веб-сервер на CentOS 7. Я включил этот раздел, чтобы вы могли получить реальный опыт в том, о чем я говорю.
Наиболее широко используемым программным обеспечением веб-сервера является Apache. Apache доступен в официальном репозитории пакетов CentOS 7.
Чтобы установить веб-сервер Apache, выполните следующую команду:
$ sudo yum install httpd
Нажмите «y», а затем нажмите
Должен быть установлен веб-сервер Apache.
Теперь выполните следующую команду, чтобы проверить, запущен ли HTTP-сервер Apache:
$ sudo systemctl status httpd
Как видно из снимка экрана ниже, HTTP-сервер Apache не запущен.
Вы можете запустить HTTP-сервер Apache с помощью следующей команды:
$ sudo systemctl start httpd
Вы хотите, чтобы HTTP-сервер Apache запускался автоматически при загрузке системы. Вы можете добавить HTTP-сервер Apache в автозагрузку с помощью следующей команды:
$ sudo systemctl enable httpd
HTTP-сервер Apache добавлен в автозагрузку.
Теперь откройте веб-браузер и перейдите по адресу http://localhost
. Вы должны увидеть следующую страницу, как показано на скриншоте ниже.
Проверка открытых портов с помощью nmap
Сначала проверьте IP-адрес вашего сервера CentOS 7 с помощью следующей команды:
$ ip a
Как вы можете видеть на снимке экрана ниже, IP-адрес моего сервера CentOS 7 is 192. 168.10.97
Вы можете проверить все открытые порты с помощью утилиты nmap с другого компьютера следующим образом:
$ nmap -sT 192.168.10.97
порт 22 открыт. Что нас интересует, так это открытие только порта 80 и закрытие остальных.
Открытие порта 80 и закрытие других
Сначала проверьте все разрешенные службы с помощью следующей команды:
$ sudo firewall-cmd —list-all
Как видите, у меня есть dhcpv6-client и ssh услуги, разрешенные извне. У вас может быть больше или меньше разрешенных услуг.
Теперь вы должны отключить их один за другим.
Вы можете удалить службу ssh с помощью следующей команды:
$ sudo firewall-cmd —remove-service=ssh —permanent
Вы можете удалить службу dhcpv6-client с помощью следующей команды:
$ sudo firewall-cmd —remove-service=dhcpv6-client —permanent
Теперь добавьте службу HTTP или порт 80 со следующей командой команда:
$ sudo firewall-cmd —add-service=http —permanent
Когда вы закончите, перезапустите firewalld с помощью следующей команды:
$ sudo firewall-cmd —reload
Теперь, если вы снова проверите службы firewalld:
$ sudo firewall-cmd —list-all
Вы должны увидеть только разрешенную службу http , как отмечено на снимке экрана ниже.
Теперь вы можете выполнить сканирование портов с помощью nmap с другого компьютера:
$ sudo nmap -sT 192.168.10.97
Вы должны увидеть, что открыт только порт 80, как показано на снимке экрана ниже.
Вы также можете проверить, можете ли вы получить доступ к веб-серверу, если откроете браузер и введете IP-адрес веб-сервера.
Я могу получить доступ к веб-серверу из браузера, как показано на скриншоте ниже.
Вот как вы открываете порт 80 и блокируете все остальные порты в CentOS 7. Спасибо за чтение этой статьи.
Открыть порт брандмауэра на CentOS 7
спросил
Изменено
3 года, 1 месяц назад
Просмотрено
1,0 м раз
Я использую CentOS 7 и должен убедиться, что порты 2888 и 3888 открыты.
Я прочитал эту статью, но это не сработало, потому что в ОС CentOS 7 нет команды iptables save
.
Кто-то сказал мне, что приведенный выше URL-адрес недействителен для CentOS 7, и я должен следовать этому.
Но в этой статье мне непонятно, какую именно команду мне нужно выполнить.
Я тоже нашел
брандмауэр-cmd --zone=public --add-port=2888/tcp
но это не выдерживает перезагрузки.
Итак, как я могу открыть порты и заставить его выдерживать перезагрузки?
- Centos
- порт
- брандмауэр
1
Используйте эту команду, чтобы найти ваши активные зоны:
firewall-cmd --get-active-zones
Он скажет либо public, dmz, либо что-то еще. Вы должны применять только к необходимым зонам.
В случае общедоступной попытки:
firewall-cmd --zone=public --add-port=2888/tcp --permanent
Затем не забудьте перезагрузить брандмауэр, чтобы изменения вступили в силу.
брандмауэр-cmd --перезагрузка
В противном случае замените вашу зону public, например, если ваша зона dmz:
firewall-cmd --zone=dmz --add-port=2888/tcp --permanent
10
Ответ Ганешрагава правильный, но
также полезно знать, что вы можете использовать:
брандмауэр-cmd --permanent --zone=public --add-port=2888/tcp
, но если это известная служба, вы можете использовать:
firewall-cmd --permanent --zone=public --add-service=http
, а затем перезагрузите брандмауэр
firewall-cmd --reload
[Ответ изменен, чтобы отразить комментарий Мартина Питера, исходный ответ имел --permanent
в конце командной строки]
4
CentOS (RHEL) 7 изменил брандмауэр, чтобы использовать firewall-cmd
, который имеет понятие зон, похожее на общедоступную, домашнюю и частную сети в Windows. Вы должны посмотреть здесь, чтобы выяснить, какой из них, по вашему мнению, следует использовать. EL7 по умолчанию использует общедоступный
, так что это то, что используется в моих примерах ниже.
Вы можете проверить, какую зону вы используете, с помощью firewall-cmd --list-all
и изменить ее с помощью firewall-cmd --set-default-zone=
.
Затем вы узнаете, в какой зоне разрешить службу (или порт):
firewall-cmd --permanent --zone=
firewall-cmd -- постоянный --zone=<зона> --add-port=80/tcp
Вы можете проверить, действительно ли порт был открыт, выполнив:
firewall-cmd --zone=
firewall-cmd --zone=
Согласно документации,
При внесении изменений в настройки брандмауэра в постоянном режиме ваш
выбор вступит в силу только после перезагрузки брандмауэра или
система перезагружается.
Вы можете перезагрузить настройки брандмауэра с помощью: firewall-cmd --reload
.
Fedora, сделал это через iptables
sudo iptables -I INPUT -p tcp --dport 3030 -j ACCEPT sudo сервис iptables сохранить
Вроде работает
1
Чтобы просмотреть открытые порты, используйте следующую команду.
брандмауэр-команда --список-портов
Мы используем следующее, чтобы увидеть службы, чьи порты открыты.
брандмауэр-команда --список-служб
Мы используем следующее, чтобы увидеть службы, чьи порты открыты и увидеть открытые порты
firewall-cmd --list-all
Чтобы добавить службу в брандмауэр, мы используем следующую команду, и в этом случае служба будет использовать любой порт для открытия в брандмауэре.
брандмауэр-cmd --add-services = ntp
Чтобы эта служба была постоянно открыта, мы используем следующую команду.
брандмауэр-cmd —добавить-сервис = ntp —постоянный
Чтобы добавить порт, используйте следующую команду
firewall-cmd --add-port=132/tcp --permanent
Для запуска брандмауэра необходимо перезагрузить его с помощью следующей команды.
брандмауэр-cmd --перезагрузка
Я Али
1
В то время как ganeshragav и Sotsir предлагают правильные и непосредственно применимые подходы, полезно отметить, что вы можете добавить свои собственные услуги к /etc/firewalld/services
. Для вдохновения посмотрите на /usr/lib/firewalld/services/
, где расположены предопределенные службы firewalld.
Преимущество этого подхода в том, что позже вы будете знать, почему эти порты открыты, как вы это описали в сервисном файле. Кроме того, теперь вы можете применить его к любой зоне без риска опечаток. Кроме того, изменения в сервисе нужно будет применять не ко всем зонам отдельно, а только к файлу сервиса.
Например, можно создать /etc/firewalld/services/foobar.xml
:
<сервис>FooBar <описание> Эта опция позволяет вам создавать соединения FooBar между ваш компьютер и мобильное устройство. У вас должен быть FooBar установлен с обеих сторон, чтобы эта опция была полезной. описание> <протокол порта="tcp" порт="2888"/> <протокол порта="tcp" порт="3888"/> сервис>
(Для получения информации о синтаксисе выполните man firewalld.service
.)
После создания этого файла вы можете firewall-cmd --reload
сделать его доступным, а затем окончательно добавить его в какую-либо зону с помощью
firewall-cmd --permanent -- zone=<зона> --add-service=foobar
, а затем firewall-cmd --reload
, чтобы сразу сделать его активным.
Чтобы просмотреть открытые порты, используйте следующую команду:
firewall-cmd --list-ports
Мы используем следующее, чтобы увидеть службы, чьи порты открыты:
брандмауэр-команда --список-служб
Мы используем следующее, чтобы увидеть службы, чьи порты открыты и увидеть открытые порты:
firewall-cmd --list-all
Чтобы добавить службу в брандмауэр, мы используем следующую команду, и в этом случае служба будет использовать любой порт для открытия в брандмауэре:
firewall-cmd --add-services=ntp
Чтобы эта служба была постоянно открыта, мы используем следующую команду:
firewall-cmd -add-service=ntp --permanent
Чтобы добавить порт, используйте следующую команду:
firewall-cmd --add-port=132/tcp --permanent
1
Лучшие ответы здесь работают, но я нашел что-то более элегантное в ответе Майкла Хэмптона на связанный вопрос. «Новая» (firewalld-0.3.9-11+) опция
--runtime-to-permanent
для firewall-cmd
позволяет создавать правила времени выполнения и тестировать их, прежде чем сделать их постоянными:
$ firewall-cmd --zone=<зона> --add-port=2888/tcp <Проверить> $ firewall-cmd --постоянная среда выполнения
Или отменить изменения только во время выполнения:
$ firewall-cmd --reload
См. также комментарий Энтони Нгуена. По-видимому, firewall-cmd —reload может работать неправильно в некоторых случаях, когда правила были удалены. В этом случае он предлагает перезапустить службу firewalld:
$ systemctl restart firewalld
0
Если у вас есть несколько портов, которые можно разрешить в Centos 7 FIrewalld, мы можем использовать следующую команду.
#firewall-cmd --add-port={номер порта/tcp,номер порта/tcp} --постоянный #firewall-cmd --reload И проверьте, открыт порт или нет после перезагрузки брандмауэра.#firewall-cmd --list-port Для другой конфигурации [Linuxwindo.com][1]
Привет в брандмауэре Centos 7-cmd.
Да, правильно, если вы используете
брандмауэр-cmd —zone=public —add-port=2888/tcp
но если перезагрузить брандмауэр
firewall-cmd —reload
ваша конфигурация не будет сохранена
вам нужно добавить ключ
firewall-cmd —permanent —zone=public —add-port=2888/tcp
Если вы знакомы со службой iptables, например, в CentOS 6 или более ранней версии, вы все равно можете использовать службу iptables путем ручной установки:
шаг 1 => установить epel repo
yum установить epel-релиз
шаг 2 => установить службу iptables
yum установить iptables-сервисы
шаг 3 => остановить службу firewalld
systemctl остановить брандмауэрd
шаг 4 => отключить службу firewalld при запуске
systemctl отключить брандмауэрd
шаг 5 => запустить службу iptables
systemctl запустить iptables
шаг 6 => включить iptables при запуске
systemctl включить iptables
Наконец-то вы можете редактировать конфигурацию iptables в /etc/sysconfig/iptables.