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 /):
jatuh | tingkat kepercayaan minimum. Semua koneksi yang masuk diblokir tanpa respons, hanya koneksi keluar yang diizinkan; |
blokir | zona mirip dengan yang sebelumnya, tetapi ketika permintaan yang masuk ditolak, pesan icmp-host-dilarang untuk Ipv4 atau pesan icmp6-adm-dilarang untuk Ipv6 dikirim; |
publik | Merupakan jaringan publik yang tidak terpercaya. Anda dapat mengizinkan koneksi masuk yang dipilih secara individual; |
eksternal | jaringan eksternal saat menggunakan firewall sebagai gateway. Ini dikonfigurasi untuk menutupi NAT, sehingga jaringan internal Anda tetap pribadi tetapi dapat diakses; |
internal | antonim dari zona eksternal. Tuan rumah memiliki tingkat kepercayaan yang memadai, sejumlah layanan tambahan tersedia; |
dmz | digunakan untuk komputer yang berlokasi di DMZ (komputer terisolasi tanpa akses ke seluruh jaringan). Hanya koneksi masuk tertentu yang diizinkan; |
bekerja | zona untuk mesin yang bekerja (sebagian besar komputer di jaringan tepercaya); |
rumah | zona jaringan rumah. Anda dapat mempercayai sebagian besar PC, tetapi hanya koneksi masuk tertentu yang didukung; |
dipercaya | Percayai 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
# 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
Untuk menghapus aturan penerusan port:
# firewall-cmd --zone = publik --remove-forward-port = port = 443: proto = tcp: toport = 9090