Menjaga keselamatan rangkaian adalah kunci untuk pentadbir sistem dan mengkonfigurasi firewall melalui baris perintah adalah kemahiran penting untuk dipelajari. Artikel ini akan menyoroti cara menguruskan firewall dengan firewall-cmd di baris perintah Linux.
Firewall pada dasarnya adalah perisian yang boleh anda konfigurasikan untuk mengawal lalu lintas rangkaian masuk dan keluar. Firewall dapat mengelakkan pengguna lain menggunakan perkhidmatan rangkaian pada sistem yang anda jalankan. Sebilangan besar sistem Linux dihantar dengan firewall lalai. Versi sistem Linux sebelumnya telah menggunakan iptables sebagai daemon untuk penyaringan paket. Versi baru Fedora, RHEL / CentOS, kapal openSUSE dengan Firewalld sebagai daemon firewall lalai. Anda juga boleh memasang Firewalld di distro Debian dan Ubuntu.
Saya mengesyorkan agar anda menggunakan Firewalld dan bukannya iptables. Jangan hanya mengambil kata-kata saya untuk itu. Ketahui lebih lanjut dari panduan komprehensif kami mengenai firewall sumber terbuka yang tersedia untuk sistem Linux anda.
Firewalld adalah daemon dinamik untuk menguruskan firewall dengan sokongan untuk zon rangkaian atau firewall. Zon firewall menentukan tahap kepercayaan keselamatan rangkaian antara muka, perkhidmatan, atau sambungan rangkaian. Pentadbir sistem keselamatan rangkaian mendapati Firewalld berfungsi dengan baik dengan set IPv4, IPv6, IP, dan jambatan Ethernet. Untuk menguruskan Firewalld, anda boleh menggunakan perintah terminal firewall-cmd atau alat konfigurasi GUI firewall-config.
Panduan ini akan menggunakan firewall-cmd perintah untuk menguruskan keselamatan rangkaian, dan persekitaran ujian kami akan Fedora Workstation 33.
Sebelum kita mendapatkan semua teknikal, mari kita pelajari beberapa asas rangkaian.
Asas rangkaian
Komputer yang disambungkan ke rangkaian diberikan alamat IP yang digunakan untuk merutekan data. Komputer juga mempunyai port dalam jarak 0-65535, yang berfungsi sebagai titik sambungan di alamat IP. Aplikasi mungkin menempah port tertentu. Pelayan web biasanya menempah port 80 untuk komunikasi HTTP yang selamat. Pada dasarnya julat port 0 - 1024 dikhaskan untuk tujuan terkenal dan sistem.
Dua protokol pemindahan data Internet utama (TCP & UDP) menggunakan port ini semasa komunikasi rangkaian. Komputer hos mewujudkan hubungan antara alamat IP sumber dan port (port 80 untuk HTTP tidak selamat) dan alamat dan port tujuan.
Untuk menguruskan keselamatan rangkaian, perisian firewall dapat membenarkan atau menyekat pemindahan data atau komunikasi berdasarkan peraturan seperti port atau alamat IP.
Memasang Firewalld
Fedora, RHEL / CentOS 7/8, openSUSE
Firewalld dipasang secara lalai di Fedora, RHEL / CentOS 7/8, dan openSUSE. Sekiranya tidak, anda boleh memasangnya menggunakan arahan berikut:
# yum pasang firewalld -y
ATAU
#dnf pasang firewalld -y
Debian / Ubuntu
Sistem Ubuntu dihantar dengan Firewall Tidak Ringkas secara lalai. Untuk menggunakan firewalld, anda mesti mengaktifkan repositori semesta dan menyahaktifkan Firewall Tidak Komplikasi.
sudo add-apt-repository semesta
sudo apt pasang firewalld
Nyahaktifkan Firewall Tidak Komplikasi:
sudo systemctl lumpuhkan ufw
Dayakan firewalld pada masa boot:
sudo systemctl aktifkan -sekarang firewalld
Sahkan Firewalld sedang dijalankan:
sudo firewall-cmd -state
berlari
Zon Firewall
Firewalld menjadikan konfigurasi firewall anda mudah dengan menetapkan zon lalai. Zon adalah sekumpulan peraturan yang sesuai dengan keperluan harian kebanyakan pentadbir Linux. Zon firewall dapat menentukan tahap yang dipercayai atau ditolak untuk perkhidmatan dan port.
- Zon dipercayai: Semua sambungan rangkaian diterima dan digunakan hanya dalam persekitaran yang dipercayai seperti rumah keluarga atau makmal ujian.
- Zon awam: Anda hanya boleh menentukan peraturan untuk membenarkan port tertentu membuka sambungan sementara sambungan lain akan terputus. Ia boleh digunakan di kawasan awam apabila anda tidak mempercayai host lain dalam rangkaian.
- Kawasan rumah, dalaman, tempat kerja: Sebilangan besar sambungan masuk diterima di ketiga-tiga zon ini. Sambungan masuk tidak termasuk lalu lintas di pelabuhan yang tidak mengharapkan sambungan atau aktiviti. Anda boleh menerapkannya di sambungan rumah di mana terdapat kepercayaan umum pengguna lain di rangkaian. Ia hanya membenarkan sambungan masuk yang dipilih.
- Zon blok: Ini adalah tetapan firewall yang sangat paranoid di mana hanya sambungan yang dimulakan dari dalam rangkaian atau pelayan yang mungkin. Semua sambungan masuk ke rangkaian ditolak, dan pesan dilarang host ICMP dikeluarkan.
- Zon DMZ: Zon demiliterisasi dapat digunakan untuk membenarkan akses ke beberapa perkhidmatan kepada orang ramai. Hanya sambungan terpilih yang diterima. Ini adalah pilihan penting untuk jenis pelayan tertentu dalam rangkaian organisasi.
- Zon luaran: Apabila diaktifkan, zon ini akan berfungsi sebagai penghala dan dapat digunakan di rangkaian luaran dengan penyamaran diaktifkan. Alamat IP rangkaian peribadi anda dipetakan dan disembunyikan di sebalik alamat IP awam. Hanya sambungan masuk yang dipilih yang diterima, termasuk SSH.
- Zon penurunan: Sebarang paket masuk dijatuhkan tanpa balasan. Zon ini hanya membenarkan sambungan rangkaian keluar.
Contoh zon lalai yang ditentukan oleh stesen kerja Fedora 33
cat / usr / lib / firewalld / zones / FedoraWorkstation.xmlStesen Kerja Fedora Paket rangkaian masuk yang tidak diminta ditolak dari port 1 hingga 1024, kecuali untuk perkhidmatan rangkaian terpilih. [firewall] Paket masuk yang berkaitan dengan sambungan rangkaian keluar diterima. Sambungan rangkaian keluar dibenarkan.
Dapatkan zon semasa anda:
Anda boleh menggunakan - - get-aktif-zon bendera untuk memeriksa zon yang sedang aktif dalam sistem anda.
sudo firewall-cmd --get-active-zones
[sudo] kata laluan untuk tut:
FedoraWorkstation
antara muka: wlp3s0
kebebasan
antara muka: virbr0
Zon lalai di Fedora Workstation 33 di zon FedoraWorkstation
Dapatkan zon lalai & semua zon yang ditentukan:
sudo firewall-cmd --get-default-zone
[sudo] kata laluan untuk tut:
FedoraWorkstation
[tuts @ fosslinux ~] $ sudo firewall-cmd --get-zones
Blok stesen kerja FedoraServer Fedora dmz lepaskan luaran dalaman rumah luaran nm-kongsi kerja dipercayai awam
Senaraikan perkhidmatan:
Anda boleh mendapatkan perkhidmatan yang firewall membolehkan sistem lain mengakses menggunakan - -senarai-perkhidmatan bendera.
[tuts @ fosslinux ~] $ sudo firewall-cmd - senarai-perkhidmatan
dhcpv6-client mdns samba-client ssh
Pada Fedora Linux 33, firewall membenarkan akses ke empat perkhidmatan (dhcpv6-client mdns samba-client ssh) dengan nombor port yang terkenal.
Senaraikan tetapan port firewall:
Anda boleh menggunakan - -senarai-port bendera untuk melihat tetapan port lain di zon mana pun.
tuts @ fosslinux ~] $ sudo firewall-cmd --list-port --zone = FedoraWorkstation
[sudo] kata laluan untuk tut:
1025-65535 / udp 1025-65535 / tcp
Kami telah menentukan zon untuk diperiksa menggunakan pilihan - -zone = FedoraWorkstaion.
Menguruskan zon, port, dan perkhidmatan
Konfigurasi firewall dapat dikonfigurasi sebagai runtime atau permanen. Semua tindakan firewall-cmd hanya bertahan sehingga komputer atau firewall dimulakan semula. Anda mesti membuat tetapan tetap dengan bendera -permanen.
Buat zon
Untuk membuat zon, anda mesti menggunakan - -zon baru bendera.
Contoh:
Buat zon kekal baru yang disebut fosscorp:
[tuts @ fosslinux ~] $ sudo firewall-cmd - fosscorp zon baru --permanen
[sudo] kata laluan untuk tut:
kejayaan
Muat semula peraturan firewall untuk mengaktifkan zon baru:
[tuts @ fosslinux ~] $ sudo firewall-cmd --muat semula
Tambahkan perkhidmatan ssh ke zon fosscorp sehingga anda dapat mengaksesnya dari jauh:
[tuts @ fosslinux ~] $ sudo firewall-cmd --zone fosscorp --add-service ssh --permanent
[sudo] kata laluan untuk tut:
kejayaan
Sahkan zon baru anda 'fosscorp' aktif:
[tuts @ fosslinux ~] $ sudo firewall-cmd --get-zones
Blok FedoraServer FedoraWorkstation dmz jatuh luaran fosscorp kerja dalaman rumah nm-berkongsi kerja dipercayai awam
Fosscorp zon baru anda kini aktif, dan ia menolak semua sambungan masuk kecuali trafik SSH.
Menggunakan - -menukar-antara muka bendera untuk menjadikan zon itu sebagai zon aktif dan lalai untuk antara muka rangkaian (wlp3s0) yang ingin anda lindungi:
[tuts @ fosslinux ~] $ sudo firewall-cmd --change-interface wlp3s0 \
> --zone fosscorp --permanent
Antaramuka berada di bawah kawalan [firewall] NetworkManager, menetapkan zon ke 'fosscorp'.
kejayaan
Sekiranya anda ingin menetapkan fosscorp sebagai zon lalai dan utama, jalankan arahan berikut:
[tuts @ fosslinux ~] $ sudo firewall-cmd --set-default fosscorp
kejayaan
Lihat zon yang ditugaskan pada setiap antara muka menggunakan - -get-aktif-zon bendera:
[tuts @ fosslinux ~] $ sudo firewall-cmd --get-active-zones
fosscorp
antara muka: wlp3s0
Tambah dan alih keluar perkhidmatan:
Cara cepat untuk membenarkan lalu lintas melalui firewall anda adalah dengan menambahkan perkhidmatan yang telah ditetapkan.
Senaraikan perkhidmatan yang telah ditetapkan:
tuts @ fosslinux ~] $ sudo firewall-cmd --get-service
[sudo] kata laluan untuk tut:
RH-Satelit-6 amanda-klien amanda-k5-klien amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc
bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine kokpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client
[…]
Buka sekatan perkhidmatan yang telah ditetapkan
Anda boleh membenarkan trafik HTTPS (atau perkhidmatan lain yang telah ditentukan) melalui firewall anda menggunakan - -perkhidmatan tambah bendera.
[tuts @ fosslinux ~] $ sudo firewall-cmd --add-service https --permanent
kejayaan
[tuts @ fosslinux ~] $ sudo firewall-cmd --muat semula
Anda juga boleh membuang perkhidmatan dengan - -buang-servis bendera:
[tuts @ fosslinux ~] $ sudo firewall-cmd --remove-service https --permanent
kejayaan
[tuts @ fosslinux ~] $ sudo firewall-cmd --muat semula
Tambah dan keluarkan Pelabuhan
Anda juga boleh menambahkan nombor port dan prototaip secara langsung dengan bendera -add-port. Menambah nombor port secara langsung boleh berguna apabila perkhidmatan yang telah ditentukan tidak ada.
Contoh:
Anda boleh menambah yang tidak standard pelabuhan 1717 untuk SSH ke zon tersuai anda menggunakan arahan berikut:
[tuts @ fosslinux ~] $ sudo firewall-cmd --add-port 1717 / tcp --permanen
[sudo] kata laluan untuk tut:
kejayaan
[tuts @ fosslinux ~] $ sudo firewall-cmd-muat semula
Keluarkan port menggunakan pilihan bendera -rove-port:
[tuts @ fosslinux ~] $ sudo firewall-cmd --remove-port 1717 / tcp --permanen
kejayaan
[tuts @ fosslinux ~] $ sudo firewall-cmd-muat semula
Anda juga boleh menentukan zon untuk menambah atau membuang port dengan menambahkan bendera -zone dalam arahan:
Tambahkan port 1718 untuk sambungan TCP ke zon FedoraWorstation:
[tuts @ fosslinux ~] $ sudo firewall-cmd --zone = FedoraWorkstation --permanent --add-port = 1718 / tcp
kejayaan
[tuts @ fosslinux ~] $ sudo firewall-cmd --muat semula
kejayaan
Sahkan jika perubahan telah berlaku:
[tuts @ fosslinux ~] $ sudo firewall-cmd --list-semua
FedoraWorkstation (aktif)
sasaran: lalai
icmp-block-inversion: tidak
antara muka: wlp3s0
sumber:
perkhidmatan: dhcpv6-client mdns samba-client ssh
pelabuhan: 1025-65535 / udp 1025-65535 / tcp 1718 / tcp
protokol:
penyamar: tidak
pelabuhan hadapan:
port sumber:
blok icmp:
peraturan kaya:
Catatan: Di bawah port, kami telah menambah nombor pelabuhan 1718 untuk membenarkan trafik TCP.
Anda boleh membuang pelabuhan 1718 / tcp dengan menjalankan arahan berikut:
[tuts @ fosslinux ~] $ sudo firewall-cmd --zone = FedoraWorkstation --permanent --remove-port = 1718 / tcp
kejayaan
[tuts @ fosslinux ~] $ sudo firewall-cmd --muat semula
kejayaan
Catatan: Sekiranya anda ingin menjadikan perubahan anda kekal, anda mesti menambahkan - -kekal benderakan arahan anda.
Ringkasan
Firewalld adalah utiliti yang hebat untuk menguruskan keselamatan rangkaian anda. Kaedah terbaik untuk meningkatkan kemahiran pentadbir sistem anda adalah dengan mendapatkan pengalaman langsung. Saya sangat mengesyorkan memasang Fedora di mesin maya kegemaran anda (VM) atau di Boxes untuk bereksperimen dengan semua fungsi firewall-cmd yang ada. Anda boleh mengetahui lebih banyak fungsi firewall-cmd dari halaman utama Firewalld.