Konfigurasikan FirewallD di server dengan CentOS 8 dan 7

Dimulai dengan CentoOS 7, alat baru telah muncul untuk mengonfigurasi aturan penyaringan lalu lintas. firewalld. Disarankan untuk menggunakannya untuk mengelola aturan iptables. Di CentOS 8, alih-alih paket penyaringan iptables standar, kerangka nftables sekarang digunakan, dan ketika Anda mengkonfigurasi aturan firewall melalui firewalld, Anda sebenarnya mengkonfigurasi nftables. Pada artikel ini, kami akan mempertimbangkan instalasi, konsep dasar, dan konfigurasi firewalld pada server yang menjalankan CentOS 8 (dalam CentOS 7, semuanya sama).


Konten:

  • Konsep, zona, dan aturan inti Firewalld
  • Instal dan aktifkan firewalld pada CentOS
  • Bekerja dengan aturan firewalld
  • Firewalld: Pemblokiran IP, Pengecualian
  • Port Forwarding di firewalld

Firewalld - firewall untuk melindungi server dari lalu lintas yang tidak diinginkan dengan dukungan untuk manajemen aturan dinamis (tanpa memulai ulang) dan penerapan aturan firewall yang persisten. Berfungsi sebagai antarmuka untuk iptables dan nftables. FirewallD dapat digunakan di hampir semua distribusi Linux.

Konsep, zona, dan aturan inti Firewalld

Sebelum Anda memulai instalasi dan konfigurasi firewalld, kita akan menjadi terbiasa dengan konsep zona, yang digunakan untuk menentukan tingkat kepercayaan pada berbagai senyawa. Untuk berbagai zona firewalld Anda dapat menerapkan berbagai aturan penyaringan, menentukan opsi firewall aktif dalam bentuk layanan yang telah ditentukan, protokol dan port, penerusan porta dan aturan kaya.

Firewalld memfilter lalu lintas masuk oleh zona, tergantung pada aturan yang diterapkan ke zona. Jika IP-alamat pengirim permintaan sesuai dengan aturan zona apa pun, paket akan dikirim melalui zona ini. Jika alamat tidak cocok dengan salah satu zona yang dikonfigurasikan di server, paket akan diproses oleh zona default. Saat memasang firewalld zona default disebut publik.

Ada zona di firewalld di mana izin untuk berbagai layanan sudah dipra-konfigurasi. Anda dapat menggunakan pengaturan ini atau membuat zona Anda sendiri. Daftar zona default yang dibuat selama instalasi firewalld (disimpan di direktori / usr / lib / firewalld / zone /):

jatuhtingkat kepercayaan minimum. Semua koneksi yang masuk diblokir tanpa respons, hanya koneksi keluar yang diizinkan;
blokirzona mirip dengan yang sebelumnya, tetapi ketika permintaan yang masuk ditolak, pesan icmp-host-dilarang untuk Ipv4 atau pesan icmp6-adm-dilarang untuk Ipv6 dikirim;
publikMerupakan jaringan publik yang tidak terpercaya. Anda dapat mengizinkan koneksi masuk yang dipilih secara individual;
eksternaljaringan eksternal saat menggunakan firewall sebagai gateway. Ini dikonfigurasi untuk menutupi NAT, sehingga jaringan internal Anda tetap pribadi tetapi dapat diakses;
internalantonim dari zona eksternal. Tuan rumah memiliki tingkat kepercayaan yang memadai, sejumlah layanan tambahan tersedia;
dmzdigunakan untuk komputer yang berlokasi di DMZ (komputer terisolasi tanpa akses ke seluruh jaringan). Hanya koneksi masuk tertentu yang diizinkan;
bekerjazona untuk mesin yang bekerja (sebagian besar komputer di jaringan tepercaya);
rumahzona jaringan rumah. Anda dapat mempercayai sebagian besar PC, tetapi hanya koneksi masuk tertentu yang didukung;
dipercayaPercayai semua mesin di jaringan. Yang paling terbuka dari semua opsi yang tersedia, membutuhkan penggunaan sadar.

Masuk firewalld dua set aturan digunakan - permanen dan sementara. Aturan sementara berfungsi hingga server melakukan boot ulang. Secara default, saat menambahkan aturan ke firewalld, aturan dianggap sementara (runtime) Untuk menambahkan aturan secara berkelanjutan, Anda perlu menggunakan bendera - permanen. Aturan-aturan ini akan berlaku setelah server reboot..

Instal dan aktifkan firewalld pada CentOS

Pada CentOS 7/8, firewalld diinstal secara default saat menginstal OS. Jika Anda menghapusnya dan ingin menginstal firewalld, Anda dapat menggunakan manajer yum / dnf standar:

# yum install firewalld -y - untuk Centos 7
# dnf instal firewalld -y - untuk Centos 8

Untuk iblis firewalld dimulai secara otomatis dengan dimulainya server, Anda perlu menambahkannya ke startup:

# systemctl aktifkan firewalld

Dan jalankan:

# systemctl start firewalld

Periksa status layanan:

# systemctl status firewalld

● firewalld.service - firewalld - daemon firewall dinamis Dimuat: dimuat (/usr/lib/systemd/system/firewalld.service; diaktifkan; preset vendor: diaktifkan) Aktif: aktif (aktif) sejak Senin 2019-10-14 14:54 : 40 +06; 22d lalu Documents: man: firewalld (1) PID Utama: 13646 (firewalld) CGroup: /system.slice/firewalld.service └─13646 / usr / bin / python2 -Es / usr / sbin / firewalld --nofork --nopid 14 Okt 14:54:40 server.vpn.ru systemd [1]: Memulai firewalld - daemon firewall dinamis ... 14 Okt 14:54:40 server.vpn.ru systemd [1]: Memulai firewalld - daemon firewall dinamis.

Atau dengan perintah:

# firewall-cmd --state

Perintah firewall-cmd adalah firewalld frontend ke nftables / iptables.

# firewall-cmd --state

berlari

Bekerja dengan aturan firewalld

Aturan Bawaan:

Sebelum mengkonfigurasi aturan firewalld, Anda perlu memeriksa zona mana yang digunakan secara default:

# firewall-cmd --get-default-zone

Karena kami baru saja menginstal dan tidak mengkonfigurasi firewalld, kami memiliki zona default publik.

Periksa intinya. Dia juga satu-publik:

# firewall-cmd --get-active-zones

antarmuka publik: eth0

Seperti yang Anda lihat, antarmuka jaringan eth0 dikendalikan oleh zona. publik.

Daftar antarmuka jaringan CentOS dapat ditampilkan:

# Tampilkan tautan ip
Atau
# nmcli status perangkat

Untuk melihat aturan inti, masukkan:

# firewall-cmd --list-all

target publik (aktif): default icmp-block-inversion: tidak ada antarmuka: eth0 sumber: layanan: port ssh dhcpv6-client: protokol: masquerade: no forward-port: source-port: icmp-block: rich rules:

Seperti yang dapat Anda lihat dari daftar, operasi biasa yang terkait dengan klien DHCP dan ssh telah ditambahkan ke zona ini..

Zona yang Tersedia

Untuk melihat daftar semua zona, Anda perlu menjalankan perintah:

# firewall-cmd --get-zone

Saya mendapat daftar berikut:

blok dmz menjatuhkan pekerjaan dipercaya publik internal rumah eksternal

Untuk memeriksa aturan zona tertentu, tambahkan bendera - zona.

# firewall-cmd --zone = home --list-all

home target: default icmp-block-inversion: tidak ada antarmuka: sumber: layanan: dhcpv6-client mdns port samba-client ssh: protokol: masquerade: no forward-port: sumber-port: icmp-blocks: rich rules:

Aturan semua zona dapat dilihat dengan perintah:

# firewall-cmd --list-all-zone

Daftarnya akan cukup besar, karena mungkin ada banyak zona.

Ubah zona default.

Secara default, semua antarmuka jaringan berada di zona tersebut publik, tetapi mereka dapat ditransfer ke salah satu zona dengan perintah:

# firewall-cmd --zone = home -change-interface = eth0

Setelah parameter -zona = tentukan zona yang diinginkan.

Untuk mengubah zona default, gunakan perintah:

# firewall-cmd --set-default-zone = home

Menambahkan aturan untuk aplikasi

Untuk membuka port untuk suatu aplikasi, Anda dapat menambahkan layanan ke pengecualian. Tampilkan daftar layanan yang tersedia:

# firewall-cmd --get-services

Keluaran akan berisi sejumlah besar layanan. Rincian layanan tercantum dalam xml file. File-file ini terletak di direktori / usr / lib / firewalld / services.

Sebagai contoh:

# cd / usr / lib / firewalld / services

# cat smtp.xml

  Mail (SMTP) Opsi ini memungkinkan pengiriman email SMTP masuk. Jika Anda perlu mengizinkan host jarak jauh untuk terhubung langsung ke mesin Anda untuk mengirim email, aktifkan opsi ini. Anda tidak perlu mengaktifkan ini jika Anda mengumpulkan email dari server ISP Anda melalui POP3 atau IMAP, atau jika Anda menggunakan alat seperti fetchmail. Perhatikan bahwa server SMTP yang tidak dikonfigurasi dengan benar dapat memungkinkan mesin jarak jauh menggunakan server Anda untuk mengirim spam.  

File XML berisi deskripsi layanan, protokol, dan nomor port yang akan dibuka di firewalld.

Saat menambahkan aturan, Anda dapat menggunakan parameter -tambah layanan, Untuk membuka akses ke layanan tertentu:

# firewall-cmd --zone = publik --add-service = http

sukses

# firewall-cmd --zone = publik --add-service = https

sukses

Setelah menambahkan aturan, Anda dapat memeriksa apakah layanan ditambahkan ke zona yang ditentukan:

# firewall-cmd --zone = publik --list-services

http dhcpv6-client http https ssh

Jika Anda ingin membuat aturan ini permanen, Anda perlu menambahkan parameter saat menambahkan -permanen.

Untuk menghapus layanan dari zona:

# firewall-cmd --permanent --zone = publik --remove-service = http

# firewall-cmd --zone = publik --permanent --list-services

dhcpv6-client https ssh test

Jika Anda ingin menambahkan layanan Anda ke pengecualian, Anda dapat membuat file xml diri sendiri dan isi. Anda dapat menyalin data dari layanan apa pun, mengubah nama, deskripsi, dan nomor port.

Salin file tersebut smtp.xml ke direktori untuk bekerja dengan layanan pengguna:

# cp /usr/lib/firewalld/services/smtp.xml / etc / firewalld / services

Ubah deskripsi layanan dalam file.

File xml itu sendiri juga perlu diganti namanya dengan nama layanan Anda. Setelah itu, Anda perlu memulai ulang firewalld dan memeriksa apakah layanan kami ada dalam daftar:

# firewall-cmd --get-services

Saya menelepon layanan tes dan dalam daftar dia muncul:

syslog-tls telnet test tftp

Sekarang Anda dapat menambahkan layanan yang dibuat ke zona apa pun:

# firewall-cmd --zone = publik --add-service = test --permanent

sukses

# firewall-cmd --zone = publik --permanent --list-services

dhcpv6-client http https ssh test

Jika Anda belum menemukan layanan yang Anda butuhkan dalam daftar, Anda dapat membuka port yang diinginkan pada firewalld dengan perintah:

# firewall-cmd --zone = publik -add-port = 77 / tcp - buka port 77 tcp
# firewall-cmd --zone = publik -add-port = 77 / udp - buka port 77 udp
# firewall-cmd --zone = publik -add-port = 77-88 / udp - buka kisaran port 77-88 udp
# firewall-cmd --zone = publik -list-ports - periksa daftar port yang diizinkan

Blokir / izinkan tanggapan ICMP:

# firewall-cmd --zone = publik --add-icmp-block = echo-reply
# firewall-cmd --zone = publik --remove-icmp-block = echo-reply

Hapus port yang ditambahkan:

# firewall-cmd --zone = publik -remove-port = 77 / udp - hapus aturan sementara 77 udp

# firewall-cmd --permanent --zone = publik -remove-port = 77 / udp - hapus aturan persisten

Menambahkan zona khusus

Anda dapat membuat zona Anda sendiri (Saya akan menyebutkannya milik kita):

# firewall-cmd --permanent --new-zone = milik kami

Setelah membuat zona baru, dan juga setelah membuat layanan, Anda harus memulai ulang firewalld:

# firewall-cmd --reload

sukses

# firewall-cmd --get-zone

blok dmz drop eksternal rumah internal pekerjaan tepercaya kami

Zone milik kita tersedia Anda dapat menambahkan layanan atau membuka port tertentu.

Firewalld: Pemblokiran IP, Pengecualian

Anda dapat menambahkan alamat IP tepercaya ke pengecualian firewalld atau memblokir yang tidak diinginkan.

Untuk menambahkan alamat IP tertentu (misalnya 8.8.8.8) di server Anda melalui pengecualian firewalld, gunakan perintah:

# firewall-cmd --zone = publik --add-rich-rule = 'rule family = "ipv4" source address = "8.8.8.8" accept'

Periksa area dan pastikan IP ditambahkan ke pengecualian dalam aturan kaya aturan:

# firewall-cmd --zone = publik --list-all

target publik (aktif): default icmp-block-inversion: tidak ada antarmuka: eth0 sumber: layanan: dhcpv6-client http https ssh test ports: protokol: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: keluarga aturan = "ipv4" alamat sumber = "8.8.8.8" menerima

Untuk memblokir IP, perlu diganti terima pada tolak:

# firewall-cmd --zone = publik --add-rich-rule = 'rule family = "ipv4" source address = "8.8.4.4" reject'

# firewall-cmd --zone = publik --list-all

target publik (aktif): default icmp-block-inversion: tidak ada antarmuka: eth0 sumber: layanan: dhcpv6-client http https ssh test ports: protokol: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: keluarga aturan = "ipv4" alamat sumber = "8.8.8.8" menerima aturan keluarga = "ipv4" alamat sumber = "8.8.4.4" tolak

Anda dapat mengaktifkan layanan khusus hanya untuk permintaan dari alamat IP tertentu:

# firewall-cmd --permanent --add-rich-rule 'rule family = "ipv4" source address = "10.10.1.0/24" service name = "https" accept'

Jika Anda benar-benar harus memblokir semua permintaan ke server, gunakan perintah panik:

# firewall-cmd --panic-on

Anda dapat menonaktifkan mode panik dengan perintah:

# firewall-cmd --panic-off

Atau me-reboot server.

Anda dapat memblokir konfigurasi firewalld sehingga layanan lokal dengan hak akses root tidak dapat mengubah aturan firewall yang Anda buat:

# firewall-cmd --lockdown-on

Nonaktifkan mode kunci:

# firewall-cmd --lockdown-off

Port Forwarding di firewalld

Anda dapat membuat aturan penerusan port di firewalld. Untuk meneruskan port 443 ke 9090:

# firewall-cmd --zone = publik --add-forward-port = port = 443: proto = tcp: toport = 9090 --permanent

Pada Windows, Anda dapat mengonfigurasi port forwarding dengan netsh.

Untuk menghapus aturan penerusan port:

# firewall-cmd --zone = publik --remove-forward-port = port = 443: proto = tcp: toport = 9090