Відкрити порт брандмауера на CentOS 7


339

Я використовую CentOS 7 і мені потрібно забезпечити відкриття портів 2888 і 3888.

Я прочитав цю статтю, але це не спрацювало, оскільки в ОС CentOS 7 немає iptables saveкоманди.

Хтось сказав мені, що вказана вище URL-адреса не є дійсною для CentOS 7. і я повинен слідувати цьому . Але ця стаття мені не зрозуміла, яку саме команду мені потрібно виконати.

Я теж знайшов

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

але це не переживе перезавантаження.

Тож як я можу відкрити порти і змусити його переживати перезавантаження?


Переповнення стека - це сайт для програмування та питань розробки. Це питання видається поза темою, оскільки мова не йде про програмування чи розробку. Дивіться, які теми я можу запитати тут, у довідковому центрі. Можливо, краще користуватися питаннями Super User або Unix & Linux Stack Exchange .
jww

Відповіді:


653

Використовуйте цю команду, щоб знайти свою активну зону:

firewall-cmd --get-active-zones

Це скаже або публічне, dmz, або щось інше. Ви повинні застосовуватись лише до необхідних зон.

У разі публічної спроби:

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

Тоді не забудьте перезавантажити брандмауер, щоб зміни набрали чинності.

firewall-cmd --reload

В іншому випадку замініть public на вашу зону, наприклад, якщо ваша зона dmz:

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

29
Я скористався цією командою, але це не спрацювало для мене, що я зробив, змінився --zone=dmzна--zone=public
Том Холл,

2
Так, корисно використовувати і публічне. Будь ласка, перевірте нижче команду Соціра на коригування.
ganeshragav

23
Жоден з двох найкращих відповідей тут насправді не пояснює, що --permanentробить, вони просто кажуть зробити це. І те й інше було б більш повним і корисним відповідями, якби було пояснено, як працює відповідь. З одного з ресурсів ОП: "Правила можна зробити постійними, додавши опцію - постійний [...]. Якщо правила не стануть постійними, їх потрібно застосовувати кожен раз після отримання повідомлення про початок, перезапуск або перезавантаження". з firewalld за допомогою D-BUS. "
dKen

9
Не вмикайте порти наосліп у всіх зонах, доки не потрапите на потрібний. Використовуйте, firewall-cmd --get-active-zonesщоб дізнатися, яка зона використовується у вашій системі. Також людина брандмауер-cmd.
основні6

1
Читаючи документацію Fedora про це йдеться The --permanent option needs to be the first option for all permanent calls. Я не отримав жодної помилки, використовуючи вищезазначене, але не впевнений, чи це може спричинити проблеми у когось іншого.
Марк

113

Відповідь ganeshragav правильна, але також корисно знати, що ви можете використовувати:

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

але якщо це відома послуга, ви можете використовувати:

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

а потім перезавантажте брандмауер

firewall-cmd --reload

[Відповідь модифікована для відображення коментаря Мартіна Петра, оригінальну відповідь мала --permanentв кінці командного рядка]


8
Я б не покладався на використання --permanentопції в кінці заяви. У документації прямо вказується, що це має бути першим варіантом.
Мартін Пітер

1
@MartinPeter man firewall-cmdне дає такої вказівки на моїй машині (Fedora 21).
Джонатан Райнхарт

@JonathonReinhart я маю в виду в Fedora FirewallD Wiki з зазначенням: The --permanent option needs to be the first option for all permanent calls.
Мартін Пітер

це дає мені брандмауерD не працює
Рахул Татод

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

Федора, зробив це через 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 - постійний"
Maduranga Siriwardena

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щоб зробити його активним відразу.


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

Також дивіться коментар Антоні Нгуєна . Мабуть, завантаження брандмауера - cmd - може не працювати належним чином у деяких випадках, коли правила були видалені. У цьому випадку він пропонує перезапустити службу 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 repo

yum встановити epel-release

крок 2 => встановити службу iptables

yum встановити iptables-сервіси

крок 3 => припинення служби firewalld

systemctl зупинка firewalld

крок 4 => відключити послугу firewalld при запуску

systemctl відключити firewalld

крок 5 => запуск послуги iptables

Система запуску iptables

крок 6 => включити iptables при запуску

systemctl включити iptables

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

Отже -> правило редагування -> перезавантажити / перезапустити.

роблять старі центоси з такою ж функцією, як firewalld.


0

Firewalld трохи не інтуїтивно зрозумілий для ветерана iptables. Для тих, хто вважає за краще брандмауер, керований iptables, із синтаксисом, подібним до iptables, у легкому налагодженому дереві, спробуйте замінити firewalld на fwtree: https://www.linuxglobal.com/fwtree-f prilagod-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-cmd. Так правильно, якщо ви використовуєте firewall-cmd --zone = public --add-port = 2888 / tcp, але якщо ви перезавантажите firewall-firewall-cmd --reload

ваш конфігурація не буде збережено

вам потрібно додати ключ

firewall-cmd - постійний --zone = public --add-port = 2888 / tcp

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.