Buka port firewall pada CentOS 7

339

Saya menggunakan CentOS 7 dan saya harus memastikan bahwa port 2888 dan 3888 terbuka.

Saya membaca artikel ini tetapi ini tidak berhasil karena pada CentOS 7 OS tidak ada iptables saveperintah.

Seseorang mengatakan kepada saya bahwa URL di atas tidak berlaku untuk CentOS 7. dan saya harus mengikuti ini . Tetapi artikel ini tidak jelas bagi saya tentang perintah apa yang perlu saya jalankan.

Saya juga menemukan

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

tapi ini tidak selamat dari reboot.

Jadi bagaimana saya bisa membuka port dan membuatnya selamat dari reboot?

Tidak Tahu Banyak
sumber
Stack Overflow adalah situs untuk pertanyaan pemrograman dan pengembangan. Pertanyaan ini tampaknya di luar topik karena ini bukan tentang pemrograman atau pengembangan. Lihat Topik apa yang bisa saya tanyakan di sini di Pusat Bantuan. Mungkin Super User atau Unix & Linux Stack Exchange akan menjadi tempat yang lebih baik untuk bertanya.
jww

Jawaban:

653

Gunakan perintah ini untuk menemukan zona aktif Anda:

firewall-cmd --get-active-zones

Itu akan mengatakan publik, dmz, atau sesuatu yang lain. Anda seharusnya hanya menerapkan zona yang diperlukan.

Dalam kasus percobaan publik:

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

Kemudian ingat untuk memuat ulang firewall agar perubahan diterapkan.

firewall-cmd --reload

Jika tidak, gantikan publik untuk zona Anda, misalnya, jika zona Anda dmz:

firewall-cmd --zone=dmz --add-port=2888/tcp --permanent
Ganeshragav
sumber
29
Saya menggunakan perintah ini tetapi tidak berhasil, apa yang berubah, berubah --zone=dmzmenjadi--zone=public
Tom Hall
2
Ya, berguna juga untuk menggunakan publik. Silakan periksa perintah di bawah ini oleh Sotsir untuk koreksi juga.
ganeshragav
23
Tidak satu pun dari dua jawaban teratas di sini yang benar-benar menjelaskan apa yang --permanentdilakukan, mereka hanya mengatakan untuk melakukannya. Keduanya akan menjadi jawaban yang lebih lengkap dan berguna jika dijelaskan bagaimana jawabannya bekerja. Dari salah satu sumber daya OP: "Aturan dapat dibuat permanen dengan menambahkan opsi --permanent [...]. Jika aturan tersebut tidak dibuat permanen maka mereka harus diterapkan setiap kali setelah menerima permulaan, memulai kembali atau memuat kembali pesan dari firewalld menggunakan D-BUS. "
dKen
9
Jangan hanya membolehkan port secara membabi buta di semua zona sampai Anda menekan yang benar, tolong. Gunakan firewall-cmd --get-active-zonesuntuk mencari tahu zona apa yang digunakan pada sistem Anda. Juga, man firewall-cmd.
basic6
1
Dalam membaca dokumentasi fedora ia menyatakan The --permanent option needs to be the first option for all permanent calls. Saya tidak mendapatkan kesalahan menggunakan hal di atas, tapi saya tidak yakin apakah ini dapat menyebabkan masalah kepada orang lain.
Marc
113

Jawaban oleh ganeshragav benar, tetapi juga berguna untuk mengetahui bahwa Anda dapat menggunakan:

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

tetapi jika layanan yang dikenal, Anda dapat menggunakan:

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

dan kemudian memuat ulang firewall

firewall-cmd --reload

[Jawaban dimodifikasi untuk mencerminkan komentar Martin Peter, jawaban asli ada --permanentdi akhir baris perintah]

Sotsir
sumber
8
Saya tidak akan bergantung pada penggunaan --permanentopsi di akhir pernyataan. Dokumentasi secara eksplisit menunjukkan, bahwa itu harus menjadi opsi pertama.
Martin Peter
1
@ MartinPeter man firewall-cmdtidak memberikan indikasi seperti itu di komputer saya (Fedora 21).
Jonathon Reinhart
@JonathonReinhart yang saya maksud adalah Fedora's FirewallD Wiki yang menyatakan: The --permanent option needs to be the first option for all permanent calls.
Martin Peter
itu memberi saya firewallD tidak berjalan
Rahul Tathod
50

CentOS (RHEL) 7, telah mengubah firewall untuk digunakan firewall-cmdyang memiliki gagasan tentang zona yang seperti versi Windows dari jaringan Publik, Rumah, dan Pribadi. Anda harus melihat di sini untuk mencari tahu mana yang menurut Anda harus Anda gunakan. EL7 menggunakan publicsecara default sehingga itulah yang digunakan oleh contoh saya di bawah ini.

Anda dapat memeriksa zona mana yang Anda gunakan firewall-cmd --list-alldan mengubahnya firewall-cmd --set-default-zone=<zone>.

Anda kemudian akan tahu zona apa yang memungkinkan layanan (atau port):

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

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

Anda dapat memeriksa apakah port telah benar-benar dibuka dengan menjalankan:

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

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

Menurut dokumentasi ,

Saat melakukan perubahan pada pengaturan firewall dalam mode Permanen, pilihan Anda hanya akan berlaku ketika Anda memuat ulang firewall atau sistem restart.

Anda dapat reload pengaturan firewall dengan: firewall-cmd --reload.

Rick Smith
sumber
26

Fedora, melakukannya via iptables

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

Tampaknya bekerja

Joviano Dias
sumber
23

Untuk melihat port terbuka, gunakan perintah berikut.

firewall-cmd --list-ports

Kami menggunakan yang berikut ini untuk melihat layanan yang port-portnya terbuka.

firewall-cmd --list-services

Kami menggunakan yang berikut ini untuk melihat layanan yang port-portnya terbuka dan melihat port-port terbuka

firewall-cmd --list-all

Untuk menambahkan layanan ke firewall, kami menggunakan perintah berikut, dalam hal ini layanan akan menggunakan port apa saja untuk membuka di firewall.

firewall-cmd --add-services=ntp 

Agar layanan ini terbuka secara permanen, kami menggunakan perintah berikut.

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

Untuk menambahkan port, gunakan perintah berikut

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

Untuk menjalankan firewall harus dimuat ulang menggunakan perintah berikut.

firewall-cmd --reload

Ya Ali

Hasan Barary
sumber
Di atas "firewall-cmd -add-service = ntp --permanent" harus diubah sebagai "firewall-cmd --add-service = ntp --permanent"
Maduranga Siriwardena
14

Sementara ganeshragav dan Sotsir memberikan pendekatan yang benar dan langsung berlaku, penting untuk dicatat bahwa Anda dapat menambahkan layanan Anda sendiri /etc/firewalld/services. Untuk inspirasi, lihat, di /usr/lib/firewalld/services/mana layanan standar firewalld berada.

Keuntungan dari pendekatan ini adalah nanti Anda akan tahu mengapa port ini terbuka, seperti yang telah Anda jelaskan di file layanan. Selain itu, Anda sekarang dapat menerapkannya ke zona apa pun tanpa risiko kesalahan pengetikan. Selanjutnya, perubahan pada layanan tidak perlu diterapkan ke semua zona secara terpisah, tetapi hanya untuk file layanan.

Misalnya, Anda dapat membuat /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>

(Untuk informasi tentang sintaks, lakukan man firewalld.service.)

Setelah file ini dibuat, Anda dapat firewall-cmd --reloadmembuatnya tersedia dan kemudian menambahkannya secara permanen ke beberapa zona

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

diikuti dengan firewall-cmd --reloaduntuk membuatnya aktif segera.

Equaeghe
sumber
6

Untuk melihat port terbuka, gunakan perintah berikut:

firewall-cmd --list-ports

Kami menggunakan yang berikut ini untuk melihat layanan yang port-portnya terbuka:

firewall-cmd --list-services

Kami menggunakan yang berikut ini untuk melihat layanan yang port-portnya terbuka dan melihat port-port terbuka:

firewall-cmd --list-all

Untuk menambahkan layanan ke firewall, kami menggunakan perintah berikut, dalam hal ini layanan akan menggunakan port apa saja untuk membuka di firewall:

firewall-cmd --add-services=ntp 

Agar layanan ini terbuka secara permanen, kami menggunakan perintah berikut:

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

Untuk menambahkan port, gunakan perintah berikut:

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

Jawaban teratas di sini berfungsi, tetapi saya menemukan sesuatu yang lebih elegan dalam jawaban Michael Hampton untuk pertanyaan terkait. Opsi "baru" (firewalld-0.3.9-11 +) --runtime-to-permanentuntuk firewall-cmdmemungkinkan Anda membuat aturan runtime dan mengujinya sebelum membuatnya permanen:

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

Atau untuk mengembalikan perubahan runtime-only:

$ firewall-cmd --reload

Lihat juga komentar Antony Nguyen . Rupanya firewall-cmd --reload mungkin tidak berfungsi dengan benar dalam beberapa kasus di mana aturan telah dihapus. Dalam hal ini, ia menyarankan untuk memulai kembali layanan firewalld:

$ systemctl restart firewalld
Neal Gokli
sumber
1

Jika Anda memiliki beberapa port untuk memungkinkan dalam Centos 7 FIrewalld maka kita dapat menggunakan perintah berikut.

#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
sumber
0

Jika Anda terbiasa dengan layanan iptables seperti pada centos 6 atau sebelumnya, Anda masih dapat menggunakan layanan iptables dengan instalasi manual:

langkah 1 => instal repo epel

yum instal rilis-epel

langkah 2 => instal layanan iptables

yum instal iptables-services

langkah 3 => hentikan layanan firewalld

systemctl stop firewalld

langkah 4 => nonaktifkan layanan firewalld pada startup

menonaktifkan systemctl firewalld

langkah 5 => memulai layanan iptables

systemctl mulai iptables

langkah 6 => aktifkan iptables pada saat startup

systemctl mengaktifkan iptables

akhirnya Anda sekarang dapat mengedit konfigurasi iptables Anda di / etc / sysconfig / iptables.

Jadi -> edit aturan -> muat ulang / mulai ulang.

lakukan seperti centos yang lebih tua dengan fungsi yang sama seperti firewalld.

dek.tiram
sumber
0

Firewalld sedikit tidak intuitif untuk veteran iptables. Bagi mereka yang lebih suka firewall yang digerakkan iptables dengan sintaks seperti iptables di pohon yang mudah dikonfigurasi, coba ganti firewalld dengan fwtree: https://www.linuxglobal.com/fwtree-flexible-linux-tree-based-firewall/ lalu lakukan hal berikut:

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

Halo di Centos 7 firewall-cmd. Ya benar jika Anda menggunakan firewall-cmd --zone = publik --add-port = 2888 / tcp tetapi jika Anda memuat ulang firewal firewall-cmd --reload

konfigurasi Anda tidak akan disimpan

Anda perlu menambahkan kunci

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

Inv0k-er
sumber