Ouvrir le port du pare-feu sur CentOS 7

339

J'utilise CentOS 7 et je dois m'assurer que les ports 2888 et 3888 sont ouverts.

J'ai lu cet article mais cela n'a pas fonctionné car sur CentOS 7 OS il n'y a pas de iptables savecommande.

Quelqu'un m'a dit que l'URL ci-dessus n'est pas valide pour CentOS 7. Je devrais suivre cette . Mais cet article ne me dit pas exactement quelle commande je dois exécuter.

J'ai aussi trouvé

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

mais cela ne survit pas aux redémarrages.

Alors, comment puis-je ouvrir les ports et le faire survivre aux redémarrages?

Ne sait pas grand-chose
la source
Stack Overflow est un site de questions de programmation et de développement. Cette question semble être hors sujet car elle ne concerne pas la programmation ou le développement. Voir Quels sujets puis-je poser ici dans le centre d'aide. Peut-être que Super User ou Unix & Linux Stack Exchange seraient un meilleur endroit pour demander.
2017

Réponses:

653

Utilisez cette commande pour trouver vos zones actives:

firewall-cmd --get-active-zones

Il indiquera soit public, dmz ou autre chose. Vous ne devez postuler qu'aux zones requises.

Dans le cas d'un essai public:

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

N'oubliez pas de recharger le pare-feu pour que les modifications prennent effet.

firewall-cmd --reload

Sinon, remplacez public par votre zone, par exemple, si votre zone est dmz:

firewall-cmd --zone=dmz --add-port=2888/tcp --permanent
ganeshragav
la source
29
J'ai utilisé cette commande , mais il n'a pas fonctionné pour moi, ce qui a fait, changeait --zone=dmzà--zone=public
Tom Hall
2
Oui, il est également utile d'utiliser public. Veuillez également vérifier la commande ci-dessous par Sotsir pour la correction.
ganeshragav
23
Aucune des deux réponses ci-dessus n'explique réellement ce qui se --permanentpasse, elles disent simplement de le faire. Les deux seraient des réponses plus complètes et utiles si on expliquait comment la réponse fonctionne. À partir d'une des ressources de l'OP: "Les règles peuvent être rendues permanentes en ajoutant l'option --permanent [...]. Si les règles ne sont pas rendues permanentes, elles doivent être appliquées à chaque fois après avoir reçu le message de démarrage, de redémarrage ou de rechargement. de firewalld en utilisant D-BUS. "
dKen
9
Ne vous contentez pas d'activer aveuglément les ports dans toutes les zones jusqu'à ce que vous frappiez la bonne, s'il vous plaît. Utilisez firewall-cmd --get-active-zonespour savoir quelle zone est utilisée sur votre système. Aussi, man firewall-cmd.
basic6
1
En lisant la documentation de fedora, il indique The --permanent option needs to be the first option for all permanent calls. Je n'ai reçu aucune erreur en utilisant ce qui précède, mais je ne suis pas sûr que cela puisse causer des problèmes à quelqu'un d'autre.
Marc
113

La réponse de ganeshragav est correcte, mais il est également utile de savoir que vous pouvez utiliser:

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

mais s'il s'agit d'un service connu, vous pouvez utiliser:

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

puis rechargez le pare-feu

firewall-cmd --reload

[Réponse modifiée pour refléter le commentaire de Martin Peter, la réponse originale se trouvait --permanentà la fin de la ligne de commande]

Sotsir
la source
8
Je ne compterais pas sur l'utilisation de l' --permanentoption à la fin de la déclaration. La documentation souligne explicitement que ce devrait être la première option.
Martin Peter
1
@MartinPeter man firewall-cmdne donne aucune indication de ce genre sur ma machine (Fedora 21).
Jonathon Reinhart
@JonathonReinhart Je fais référence au FirewallD Wiki de Fedora, déclarant: The --permanent option needs to be the first option for all permanent calls.
Martin Peter
cela me donne firewallD ne fonctionne pas
Rahul Tathod
50

CentOS (RHEL) 7, a changé le pare-feu à utiliser firewall-cmdqui a une notion de zones qui est comme une version Windows des réseaux publics, domestiques et privés. Vous devriez regarder ici pour déterminer lequel vous pensez que vous devriez utiliser. EL7 utilisepublic par défaut, c'est donc ce que mes exemples ci-dessous utilisent.

Vous pouvez vérifier avec quelle zone vous utilisez firewall-cmd --list-allet la modifier avecfirewall-cmd --set-default-zone=<zone> .

Vous saurez alors sur quelle zone autoriser un service (ou port) sur:

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

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

Vous pouvez vérifier si le port a bien été ouvert en exécutant:

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

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

Selon la documentation ,

Lorsque vous modifiez les paramètres du pare-feu en mode permanent, votre sélection ne prend effet que lorsque vous rechargez le pare-feu ou que le système redémarre.

Vous pouvez recharger les paramètres de pare - feu avec: firewall-cmd --reload.

Rick Smith
la source
26

Fedora, l'a fait via iptables

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

Semble fonctionner

Joviano Dias
la source
23

Pour afficher les ports ouverts, utilisez la commande suivante.

firewall-cmd --list-ports

Nous utilisons ce qui suit pour voir les services dont les ports sont ouverts.

firewall-cmd --list-services

Nous utilisons ce qui suit pour voir les services dont les ports sont ouverts et voir les ports ouverts

firewall-cmd --list-all

Pour ajouter un service au pare-feu, nous utilisons la commande suivante, auquel cas le service utilisera n'importe quel port pour s'ouvrir dans le pare-feu.

firewall-cmd --add-services=ntp 

Pour que ce service soit ouvert en permanence, nous utilisons la commande suivante.

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

Pour ajouter un port, utilisez la commande suivante

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

Pour exécuter le pare-feu doit être rechargé à l'aide de la commande suivante.

firewall-cmd --reload

Ya Ali

Hasan Barary
la source
Au-dessus de "firewall-cmd -add-service = ntp --permanent" devrait être changé en "firewall-cmd --add-service = ntp --permanent"
Maduranga Siriwardena
14

Bien que ganeshragav et Sotsir fournissent des approches correctes et directement applicables, il est utile de noter que vous pouvez ajouter vos propres services /etc/firewalld/services. Pour l'inspiration, regardez/usr/lib/firewalld/services/ où se trouvent les services prédéfinis de firewalld.

L'avantage de cette approche est que vous saurez plus tard pourquoi ces ports sont ouverts, comme vous l'avez décrit dans le fichier de service. De plus, vous pouvez désormais l'appliquer à n'importe quelle zone sans risque de fautes de frappe. En outre, les modifications apportées au service ne devront pas être appliquées à toutes les zones séparément, mais uniquement au fichier de service.

Par exemple, vous pouvez créer /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>

(Pour plus d'informations sur la syntaxe, faites man firewalld.service .)

Une fois ce fichier créé, vous pouvez le firewall-cmd --reloadrendre disponible puis l'ajouter définitivement à une zone avec

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

suivi de firewall-cmd --reloadpour le rendre actif immédiatement.

equaeghe
la source
6

Pour afficher les ports ouverts, utilisez la commande suivante:

firewall-cmd --list-ports

Nous utilisons ce qui suit pour voir les services dont les ports sont ouverts:

firewall-cmd --list-services

Nous utilisons ce qui suit pour voir les services dont les ports sont ouverts et voir les ports ouverts:

firewall-cmd --list-all

Pour ajouter un service au pare-feu, nous utilisons la commande suivante, auquel cas le service utilisera n'importe quel port pour s'ouvrir dans le pare-feu:

firewall-cmd --add-services=ntp 

Pour que ce service soit ouvert en permanence, nous utilisons la commande suivante:

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

Pour ajouter un port, utilisez la commande suivante:

firewall-cmd --add-port=132/tcp  --permanent
Hasan Barary
la source
4

Les meilleures réponses ici fonctionnent, mais j'ai trouvé quelque chose de plus élégant dans la réponse de Michael Hampton à une question connexe. L' --runtime-to-permanentoption "nouveau" (firewalld-0.3.9-11 +) firewall-cmdvous permet de créer des règles d'exécution et de les tester avant de les rendre permanentes:

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

Ou pour annuler les modifications d'exécution uniquement:

$ firewall-cmd --reload

Voir également le commentaire d'Antony Nguyen . Apparemment, firewall-cmd --reload peut ne pas fonctionner correctement dans certains cas où les règles ont été supprimées. Dans ce cas, il suggère de redémarrer le service firewalld:

$ systemctl restart firewalld
Neal Gokli
la source
1

Si vous avez plusieurs ports à autoriser dans Centos 7 FIrewalld, nous pouvons utiliser la commande suivante.

#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]
Vinay Patil
la source
0

Si vous connaissez le service iptables comme dans centos 6 ou une version antérieure, vous pouvez toujours utiliser le service iptables par une installation manuelle:

étape 1 => installer epel repo

yum install epel-release

étape 2 => installer le service iptables

yum install iptables-services

étape 3 => arrêter le service firewalld

systemctl stop firewalld

étape 4 => désactiver le service firewalld au démarrage

systemctl désactiver le pare-feu

étape 5 => démarrer le service iptables

systemctl start iptables

étape 6 => activer iptables au démarrage

systemctl enable iptables

enfin, vous pouvez maintenant modifier votre configuration iptables dans / etc / sysconfig / iptables.

Donc -> modifier la règle -> recharger / redémarrer.

faire comme des centos plus anciens avec la même fonction que firewalld.

dek.tiram
la source
0

Firewalld est un peu non intuitif pour le vétéran d'iptables. Pour ceux qui préfèrent un pare-feu basé sur iptables avec une syntaxe semblable à iptables dans une arborescence facilement configurable, essayez de remplacer firewalld par fwtree: https://www.linuxglobal.com/fwtree-flexible-linux-tree-based-firewall/ , puis procédez comme suit:

 echo '-p tcp --dport 80 -m conntrack --cstate NEW -j ACCEPT' > /etc/fwtree.d/filter/INPUT/80-allow.rule
 systemctl reload fwtree 
Eric Wheeler
la source
0

Bonjour dans le pare-feu Centos 7-cmd. Oui, correct si vous utilisez firewall-cmd --zone = public --add-port = 2888 / tcp mais si vous rechargez firewal firewall-cmd --reload

votre configuration ne sera pas sauvegardée

vous devez ajouter une clé

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

Inv0k-er
la source