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

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

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

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

Я также нашел

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

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

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

Ответ 1

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

firewall-cmd --get-active-zones

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

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

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

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

firewall-cmd --reload

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

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

Ответ 2

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

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

но если это известная услуга, вы можете использовать:

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

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

firewall-cmd --reload

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

Ответ 3

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

В соответствии с documentation,

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

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

Ответ 4

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

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

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

Ответ 5

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

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

Я Али

Ответ 6

В то время как ganeshragav и Sotsir предоставляют правильные и непосредственно применимые подходы, полезно отметить, что вы можете добавьте свои собственные услуги в /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, чтобы сразу активировать его.

Ответ 7

Лучшие ответы здесь работают, но я нашел что-то более элегантное в ответе Майкла Хэмптона на соответствующий вопрос. Опция "новый" (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

Ответ 8

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

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

Ответ 9

Если у вас есть несколько портов для разрешения в 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]

Ответ 10

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

шаг 1 = > установить epel repo

yum install epel-release

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

yum install iptables-services

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

systemctl stop firewalld

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

systemctl отключить firewalld

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

systemctl start iptables

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

systemctl включить iptables

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

So → edit rule → reload/restart.

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

Ответ 11

Firewalld немного не интуитивно понятен для ветерана iptables. Для тех, кто предпочитает межсетевой экран на основе iptables с iptables-подобным синтаксисом в легко настраиваемом дереве, попробуйте заменить firewalld на fwtree: https://www.linuxglobal.com/fwtree-flexible-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