Откройте порт брандмауэра на CentOS 7

339

Я использую CentOS 7, и я должен убедиться, что порты 2888 и 3888 открыты.

Я читал эту статью, но это не сработало, потому что на ОС CentOS 7 нет iptables saveкоманды.

Кто-то сказал мне, что указанный выше URL-адрес недействителен для CentOS 7. Я должен следовать этому . Но из этой статьи мне не ясно, какую именно команду мне нужно выполнить.

Я также нашел

firewall-cmd --zone=public --add-port=2888/tcp 

но это не переживает перезагрузки.

Так как же я могу открыть порты и сделать так, чтобы он пережил перезагрузки?

Не много знает
источник
Stack Overflow - сайт для вопросов программирования и разработки. Этот вопрос кажется не по теме, потому что он не о программировании или разработке. Смотрите, какие темы я могу задать здесь, в Справочном центре. Возможно, лучше спросить Super User или Unix & Linux Stack Exchange .
jww

Ответы:

653

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

firewall-cmd --get-active-zones

Это скажет либо public, dmz, либо что-то еще. Вы должны подать заявку только на необходимые зоны.

В случае публики попробуйте:

firewall-cmd --zone=public --add-port=2888/tcp --permanent

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

firewall-cmd --reload

В противном случае, замените public для вашей зоны, например, если ваша зона dmz:

firewall-cmd --zone=dmz --add-port=2888/tcp --permanent
ganeshragav
источник
29
Я использовал эту команду, но она не работала для меня, что менялось, менялось --zone=dmzна--zone=public
Том Холл
2
Да, полезно также использовать public. Пожалуйста, проверьте ниже команду Sotsir для исправления тоже.
Ганешрагав
23
Ни один из двух лучших ответов здесь фактически не объясняет, что --permanentделает, они просто говорят, чтобы сделать это. Оба были бы более полными и полезными ответами, если бы было объяснено, как работает ответ. Из одного из ресурсов OP: «Правила можно сделать постоянными, добавив параметр --permanent [...]. Если правила не сделаны постоянными, их необходимо применять каждый раз после получения сообщения о запуске, перезапуске или перезагрузке из firewalld, используя D-BUS. "
dKen
9
Не надо просто слепо включать порты во всех зонах, пока вы не нажмете нужную, пожалуйста. Используйте, firewall-cmd --get-active-zonesчтобы узнать, какая зона используется в вашей системе. Также man firewall-cmd.
basic6
1
При чтении документации fedora говорится The --permanent option needs to be the first option for all permanent calls. Я не получил никакой ошибки, используя вышеупомянутое, но я не уверен, может ли это вызвать проблемы кому-то еще.
Марк
113

Ответ Ганешрагава правильный, но также полезно знать, что вы можете использовать:

firewall-cmd --permanent --zone=public --add-port=2888/tcp 

но если это известный сервис, вы можете использовать:

firewall-cmd --permanent --zone=public --add-service=http 

а затем перезагрузите брандмауэр

firewall-cmd --reload

[Ответ изменен, чтобы отразить комментарий Мартина Питера, исходный ответ был --permanentв конце командной строки]

Sotsir
источник
8
Я бы не стал использовать --permanentопцию в конце заявления. В документации явно указывается, что это должен быть первый вариант.
Мартин Питер,
1
@MartinPeter не man firewall-cmdдает таких указаний на моем компьютере (Fedora 21).
Джонатон Рейнхарт
@JonathonReinhart Я ссылаюсь на вики-страницу Fedora FirewallD, в которой говорится: The --permanent option needs to be the first option for all permanent calls.
Martin Peter
это дает мне firewallD не работает
Rahul Tathod
50

CentOS (RHEL) 7 изменил используемый брандмауэр, firewall-cmdкоторый имеет понятие зон, аналогичное версии Windows для публичных, домашних и частных сетей. Вы должны посмотреть здесь, чтобы выяснить, какой из них вы думаете, вы должны использовать. EL7 использует publicпо умолчанию, это то, что используют мои примеры ниже.

Вы можете проверить, с какой зоной вы пользуетесь, firewall-cmd --list-allи изменить ее firewall-cmd --set-default-zone=<zone>.

Затем вы узнаете, в какой зоне разрешен сервис (или порт):

firewall-cmd --permanent --zone=<zone> --add-service=http

firewall-cmd --permanent --zone=<zone> --add-port=80/tcp

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

firewall-cmd --zone=<zone> --query-port=80/tcp

firewall-cmd --zone=<zone> --query-service=http

Согласно документации ,

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

Вы можете перезагрузить настройки брандмауэра с: firewall-cmd --reload.

Рик Смит
источник
26

Fedora, сделал это через iptables

sudo iptables -I INPUT -p tcp --dport 3030 -j ACCEPT
sudo service iptables save

Кажется работать

Джовиано Диас
источник
23

Чтобы просмотреть открытые порты, используйте следующую команду.

firewall-cmd --list-ports

Мы используем следующее, чтобы увидеть сервисы, порты которых открыты.

firewall-cmd --list-services

Мы используем следующее, чтобы увидеть службы, чьи порты открыты, и увидеть открытые порты.

firewall-cmd --list-all

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

firewall-cmd --add-services=ntp 

Чтобы эта служба была постоянно открыта, мы используем следующую команду.

firewall-cmd —add-service=ntp --permanent 

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

firewall-cmd --add-port=132/tcp  --permanent

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

firewall-cmd --reload

Я Али

Хасан Барари
источник
Выше «firewall-cmd -add-service = ntp --permanent» следует изменить на «firewall-cmd --add-service = ntp --permanent»
Мадуранга Сиривардена,
14

В то время как Ганешрагав и Социр предоставляют правильные и непосредственно применимые подходы, полезно отметить, что вы можете добавлять свои собственные услуги /etc/firewalld/services. Для вдохновения посмотрите /usr/lib/firewalld/services/, где расположены предопределенные сервисы firewalld.

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

Например, вы можете создать /etc/firewalld/services/foobar.xml:

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>FooBar</short>
  <description>
    This option allows you to create FooBar connections between
    your computer and mobile device. You need to have FooBar
    installed on both sides for this option to be useful.
  </description>
  <port protocol="tcp" port="2888"/>
  <port protocol="tcp" port="3888"/>
</service>

(Для получения информации о синтаксисе, сделайте man firewalld.service.)

Как только этот файл создан, вы можете firewall-cmd --reloadсделать его доступным, а затем добавить его в какую-либо зону

firewall-cmd --permanent --zone=<zone> --add-service=foobar

затем, firewall-cmd --reloadчтобы сделать его активным сразу.

equaeghe
источник
6

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

firewall-cmd --list-ports

Мы используем следующее, чтобы увидеть сервисы, порты которых открыты:

firewall-cmd --list-services

Мы используем следующее для просмотра сервисов, чьи порты открыты, и для просмотра открытых портов:

firewall-cmd --list-all

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

firewall-cmd --add-services=ntp 

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

firewall-cmd -add-service=ntp --permanent 

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

firewall-cmd --add-port=132/tcp  --permanent
Хасан Барари
источник
4

Лучшие ответы здесь работают, но я нашел что-то более элегантное в ответе Майкла Хэмптона на связанный вопрос. «Новый» (firewalld-0.3.9-11 +) --runtime-to-permanentопция firewall-cmdпозволяет создавать во время выполнения правил и проверить их , прежде чем сделать их постоянными:

$ firewall-cmd --zone=<zone> --add-port=2888/tcp
<Test it out>
$ firewall-cmd --runtime-to-permanent

Или отменить изменения только во время выполнения:

$ firewall-cmd --reload

Также см . Комментарий Энтони Нгуена . Очевидно, что firewall-cmd --reload может работать некорректно в некоторых случаях, когда правила были удалены. В этом случае он предлагает перезапустить службу firewalld:

$ systemctl restart firewalld
Нил Гокли
источник
1

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

#firewall-cmd --add-port={port number/tcp,port number/tcp} --permanent

#firewall-cmd --reload


And check the Port opened or not after reloading the firewall.


#firewall-cmd --list-port


For other configuration [Linuxwindo.com][1]
Винай Патил
источник
0

Если вы знакомы со службой iptables, как в Centos 6 или более ранней версии, вы все равно можете использовать службу iptables путем ручной установки:

шаг 1 => установить репозиторий Epel

ням установить epel-release

шаг 2 => установить сервис iptables

ням установить iptables-сервисы

шаг 3 => остановить службу firewalld

systemctl stop firewalld

шаг 4 => отключить службу firewalld при запуске

systemctl отключить firewalld

шаг 5 => запустить сервис iptables

systemctl запустить iptables

шаг 6 => включить iptables при запуске

systemctl включить iptables

наконец, теперь вы можете редактировать конфигурацию iptables в / etc / sysconfig / iptables.

Итак -> изменить правило -> перезагрузить / перезапустить.

делаю как старые ченто с такой же функцией, как firewalld.

dek.tiram
источник
0

Firewalld немного не интуитивно понятен для ветерана iptables. Для тех, кто предпочитает управляемый iptables брандмауэр с iptables-подобным синтаксисом в легко настраиваемом дереве, попробуйте заменить firewalld на fwtree: https://www.linuxglobal.com/fwtree-f flex-linux-tree-based-firewall/, а затем сделайте следующее:

 echo '-p tcp --dport 80 -m conntrack --cstate NEW -j ACCEPT' > /etc/fwtree.d/filter/INPUT/80-allow.rule
 systemctl reload fwtree 
Эрик Уилер
источник
0

Привет в Centos 7 firewall-cmd. Да, правильно, если вы используете firewall-cmd --zone = public --add-port = 2888 / tcp, но если вы перезагрузите firewal firewall-cmd --reload

ваш конфиг не будет сохранен

вам нужно добавить ключ

firewall-cmd --permanent --zone = public --add-port = 2888 / tcp

Inv0k-эр
источник