Wednesday, April 9.

Header Ads

ad728
  • Breaking News

    Pengenalan Firewalld - CENTOS 7

    Firewalld adalah solusi manajemen firewall yang tersedia untuk banyak distribusi Linux yang bertindak sebagai antarmuka untuk sistem penyaringan paket iptables yang disediakan oleh kernel Linux. Dalam panduan ini, kita akan membahas cara mengatur firewall untuk server Anda dan menunjukkan kepada Anda dasar-dasar mengelola firewall dengan alat administratif firewall-cmd (jika Anda lebih suka menggunakan iptables dengan CentOS, ikuti panduan ini).
    Ada kemungkinan bahwa Anda mungkin bekerja dengan versi firewall yang lebih baru daripada yang tersedia pada saat penulisan ini, atau bahwa server Anda diatur sedikit berbeda dari server contoh yang digunakan di seluruh panduan ini. Dengan demikian, perilaku dari beberapa perintah yang dijelaskan dalam panduan ini dapat bervariasi tergantung pada konfigurasi spesifik Anda.


    Konsep Dasar di Firewalld

    Sebelum kita mulai berbicara tentang bagaimana benar-benar menggunakan utilitas firewall-cmd untuk mengelola konfigurasi firewall Anda, kita harus mengenal beberapa konsep dasar yang diperkenalkan alat tersebut.


    Instal dan Aktifkan Firewall Anda untuk Mulai di Boot

    firewalld diinstal secara default pada beberapa distribusi Linux, termasuk banyak gambar CentOS 7. Namun, Anda mungkin perlu menginstal sendiri firewall:
    yum install firewalld -y
    Setelah Anda menginstal firewalld, Anda dapat mengaktifkan layanan dan reboot server Anda. Perlu diingat bahwa mengaktifkan firewall akan menyebabkan layanan untuk memulai saat boot. Ini adalah praktik terbaik untuk membuat aturan firewall Anda dan mengambil kesempatan untuk mengujinya sebelum mengkonfigurasi perilaku ini untuk menghindari potensi masalah.
    systemctl enable firewalld
    reboot

    Ketika server restart, firewall Anda harus dinaikkan, antarmuka jaringan Anda harus dimasukkan ke dalam zona yang Anda konfigurasikan (atau jatuh kembali ke zona default yang dikonfigurasi), dan setiap aturan yang terkait dengan zona (s) akan diterapkan ke antarmuka.

    Untuk menghentikan dan menonaktifkannya:
    sudo systemctl stop firewalld
    sudo systemctl disable firewalld

    Kita dapat memverifikasi bahwa layanan berjalan dan dapat dijangkau dengan mengetik:
    firewall-cmd --state
    running
    Ini menunjukkan bahwa firewall Anda aktif dan berjalan dengan konfigurasi default.

    Untuk melihat status daemon FirewallD:
    systemctl status firewalld
    firewalld.service - firewalld - dynamic firewall daemon
       Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled)
       Active: active (running) since Wed 2015-09-02 18:03:22 UTC; 1min 12s ago
     Main PID: 11954 (firewalld)
       CGroup: /system.slice/firewalld.service
               └─11954 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid


    Menjadi Familiar dengan Aturan Firewall Saat Ini

    Sebelum kita mulai melakukan modifikasi, kita harus membiasakan diri dengan lingkungan dan aturan default yang disediakan oleh sistem.

    Menjelajahi Default

    Untuk melihat zona mana yang saat ini dipilih sebagai default dengan mengetik:
    firewall-cmd --get-default-zone
    Tampilan hasilnya:
    public
    Karena belum memberikan perintah firewalld untuk menyimpang dari zona default, dan tidak ada antarmuka yang dikonfigurasi untuk mengikat ke zona lain, zona itu juga akan menjadi satu-satunya zona "aktif" (zona yang mengontrol lalu lintas untuk antarmuka). Dapat memverifikasi itu dengan mengetik:
    firewall-cmd --get-active-zones
    public
      interfaces: eth0 eth1

    Di sini, terlihat bahwa server contoh memiliki dua antarmuka jaringan yang dikontrol oleh firewall (eth0 dan eth1). Kedua Ethernet tersebut saat ini sedang dikelola sesuai dengan aturan yang ditetapkan untuk zona publik.

    Bagaimana mengetahui aturan apa yang terkait dengan zona publik? Kita dapat mencetak konfigurasi zona default dengan mengetik:
    sudo firewall-cmd --list-all
    public (default, active)
      target: default
      icmp-block-inversion: no
      interfaces: eth0 eth1
      sources: 
      services: ssh dhcpv6-client
      ports: 
      protocols: 
      masquerade: no
      forward-ports: 
      source-ports: 
      icmp-blocks: 
      rich rules: 
    Kita dapat mengetahui dari output bahwa zona ini adalah default dan aktif dan bahwa antarmuka eth0 dan eth1 terkait dengan zona ini (kita sudah tahu semua ini dari pertanyaan sebelumnya). Namun, kita juga dapat melihat bahwa zona ini memungkinkan untuk operasi normal yang terkait dengan klien DHCP (untuk penetapan alamat IP) dan SSH (untuk administrasi jarak jauh).

    Menjelajahi Zona Alternatif

    Sekarang kita memiliki gagasan bagus tentang konfigurasi untuk zona default dan aktif. Kita dapat menemukan informasi tentang zona lain juga.

    Untuk mendapatkan daftar zona yang tersedia, ketik:
    firewall-cmd --get-zones
    block dmz drop external home internal public trusted work
    Kita dapat melihat konfigurasi spesifik yang terkait dengan zona dengan memasukkan parameter --zone= di dalam perintah --list-all kita:
    firewall-cmd --zone=home --list-all
    home
      interfaces: 
      sources: 
      services: dhcpv6-client ipp-client mdns samba-client ssh
      ports: 
      masquerade: no
      forward-ports: 
      icmp-blocks: 
      rich rules:
    Anda dapat menampilkan semua definisi zona dengan menggunakan opsi --list-all-zones. Anda mungkin ingin menyalurkan output ke pager agar lebih mudah dilihat:
    firewall-cmd --list-all-zones | less


    Memilih Zona untuk Antarmuka Anda

    Kecuali Anda telah mengonfigurasi antarmuka jaringan Anda, jika tidak, setiap antarmuka akan diletakkan di zona default ketika firewall di-boot.


    Mengubah Zona Antarmuka

    Anda dapat mentransisikan antarmuka antar zona selama sesi dengan menggunakan parameter --zone= di kombinasi dengan parameter --change-interface=. Seperti semua perintah yang memodifikasi firewall, Anda harus menggunakan sudo.

    Misalnya, kita dapat mengalihkan antarmuka eth0 kita ke zona "rumah" dengan mengetik ini:
    sudo firewall-cmd --zone=home --change-interface=eth0
    success
    Setiap kali Anda mengalihkan antarmuka ke zona baru, perhatikan bahwa Anda mungkin memodifikasi layanan yang akan beroperasi. Misalnya, di sini kita pindah ke zona "rumah", yang memiliki SSH tersedia. Ini berarti koneksi kita tidak akan jatuh. Beberapa zona lain tidak memiliki SSH diaktifkan secara default dan jika koneksi Anda dijatuhkan saat menggunakan salah satu dari zona ini, Anda dapat menemukan diri Anda tidak dapat masuk kembali.
    Kita dapat memverifikasi bahwa ini berhasil dengan meminta zona aktif lagi:
    firewall-cmd --get-active-zones
    home
      interfaces: eth0
    public
      interfaces: eth1


    Menyesuaikan Zona Default

    Jika semua antarmuka Anda dapat ditangani oleh satu zona, mungkin lebih mudah untuk memilih zona default terbaik dan kemudian menggunakannya untuk konfigurasi Anda.

    Anda dapat mengubah zona default dengan parameter --set-default-zone=. Ini akan segera mengubah antarmuka yang jatuh kembali ke default ke zona baru:
    firewall-cmd --set-default-zone=home
    * Ganti home dengan zona sesuai keinginan anda
    success


    Menetapkan Aturan untuk Aplikasi Anda

    Cara dasar mendefinisikan pengecualian firewall untuk layanan yang ingin Anda sediakan adalah mudah. Kita akan menjalankan ide dasar di sini.


    Menambahkan Layanan ke Zona Anda

    Metode termudah adalah menambahkan layanan atau port yang Anda butuhkan ke zona yang Anda gunakan. Sekali lagi, Anda bisa mendapatkan daftar layanan yang tersedia dengan opsi --get-services:
    firewall-cmd --get-services
    RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server
    Anda bisa mendapatkan rincian lebih lanjut tentang masing-masing layanan ini dengan melihat file .xml terkait mereka dalam direktori 1/usr/lib/firewalld/services. Misalnya, layanan SSH didefinisikan seperti ini:

    Isi berkas /usr/lib/firewalld/services/ssh.xml
    <?xml version="1.0" encoding="utf-8"?>
    <service>
      <short>SSH</short>
      <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
      <port protocol="tcp" port="22"/>
    </service>

    Anda dapat mengaktifkan layanan untuk zona menggunakan parameter --add-service=. Operasi akan menargetkan zona default atau zona apa pun yang ditentukan oleh parameter --zone=. Secara default, ini hanya akan menyesuaikan sesi firewall saat ini. Anda dapat menyesuaikan konfigurasi firewall permanen dengan menyertakan flag --permanent.

    Misalnya, jika kita menjalankan server web yang melayani lalu lintas HTTP konvensional, kita dapat mengizinkan lalu lintas ini untuk antarmuka di zona "publik" kita untuk sesi ini dengan mengetik:
    firewall-cmd --zone=public --add-service=http
    Anda dapat meninggalkan --zone= jika Anda ingin memodifikasi zona default. Kita dapat memverifikasi operasi berhasil dengan menggunakan perintah --list-all atau --list-services:
    firewall-cmd --zone=public --list-services
    dhcpv6-client http ssh
    Setelah Anda menguji bahwa semuanya berjalan sebagaimana mestinya, Anda mungkin ingin memodifikasi aturan firewall permanen agar layanan Anda tetap tersedia setelah reboot. Kita dapat membuat perubahan zona "publik" permanen dengan mengetik:
    firewall-cmd --zone=public --permanent --add-service=http
    success
    Anda dapat memverifikasi bahwa ini berhasil dengan menambahkan flag --permanent ke perintah --list-services. Anda perlu menggunakan sudo untuk setiap perintah --permanent:
    firewall-cmd --zone=public --permanent --list-services
    dhcpv6-client http ssh
    Zona "publik" Anda sekarang akan memungkinkan lalu lintas web HTTP pada port 80. Jika server web Anda dikonfigurasi untuk menggunakan SSL / TLS, Anda juga ingin menambahkan layanan https. Kita dapat menambahkannya ke sesi saat ini dan aturan permanen dengan mengetik:
    firewall-cmd --zone=public --add-service=https
    firewall-cmd --zone=public --permanent --add-service=https

    Bagaimana Jika Tidak Ada Layanan Tepat yang Tersedia?

    Layanan firewall yang disertakan dengan instalasi firewalld mewakili banyak persyaratan paling umum untuk aplikasi yang Anda mungkin ingin mengizinkan akses. Namun, kemungkinan akan ada skenario di mana layanan ini tidak sesuai dengan kebutuhan Anda.

    Dalam situasi ini, Anda memiliki dua opsi.

    Membuka Port untuk Zona Anda

    Cara termudah untuk menambahkan dukungan untuk aplikasi khusus Anda adalah dengan membuka port yang digunakannya di zona yang sesuai. Ini semudah menentukan rentang port atau port, dan protokol terkait untuk port yang perlu Anda buka.

    Sebagai contoh, jika aplikasi kita berjalan di port 5000 dan menggunakan TCP, kita bisa menambahkan ini ke zona "publik" untuk sesi ini menggunakan parameter --add-port=. Protokol dapat berupa tcp atau udp:
    firewall-cmd --zone=public --add-port=5000/tcp
    Kita dapat memverifikasi bahwa ini berhasil menggunakan operasi --list-ports:
    firewall-cmd --zone=public --list-ports
    5000/tcp
    Juga dimungkinkan untuk menentukan rentang port berurutan dengan memisahkan port awal dan akhir dalam rentang dengan tanda pisah. Misalnya, jika aplikasi kita menggunakan port UDP 4990 hingga 4999, kita dapat membukanya di "publik" dengan mengetik:
    firewall-cmd --zone=public --add-port=4990-4999/udp
    Setelah pengujian, kita mungkin ingin menambahkan ini ke firewall permanen. Anda dapat melakukannya dengan mengetik:
    firewall-cmd --zone=public --permanent --add-port=5000/tcp
    firewall-cmd --zone=public --permanent --add-port=4990-4999/udp
    firewall-cmd --zone=public --permanent --list-ports
    success
    success
    5000/tcp 4990-4999/udp

    Mendefinisikan Layanan

    Membuka port untuk zona Anda mudah, tetapi bisa sulit untuk melacak apa yang masing-masing untuk. Jika Anda pernah menonaktifkan layanan di server Anda, Anda mungkin akan kesulitan mengingat port mana yang telah dibuka masih diperlukan. Untuk menghindari situasi ini, dimungkinkan untuk menentukan layanan.

    Layanan hanyalah koleksi port dengan nama dan deskripsi terkait. Menggunakan layanan lebih mudah untuk dikelola daripada port, tetapi membutuhkan sedikit pekerjaan dimuka. Cara termudah untuk memulai adalah menyalin skrip yang ada (ditemukan di /usr/lib/firewalld/services) ke direktori /etc/firewalld/services tempat firewall mencari definisi non-standar.

    Sebagai contoh, kita dapat menyalin definisi layanan SSH yang akan digunakan untuk definisi layanan "contoh" kita seperti ini. Nama file dikurangi sufiks .xml akan menentukan nama layanan dalam daftar layanan firewall:
    cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/example.xml
    Sekarang, Anda dapat menyesuaikan definisi yang ditemukan dalam file yang Anda salin:
    vi /etc/firewalld/services/example.xml
    Untuk memulai, file akan berisi definisi SSH yang Anda salin:
    <?xml version="1.0" encoding="utf-8"?>
    <service>
      <short>SSH</short>
      <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
      <port protocol="tcp" port="22"/>
    </service>

    Mayoritas definisi ini sebenarnya adalah metadata. Anda akan ingin mengubah nama pendek untuk layanan dalam tag <short>. Ini adalah nama yang dapat dibaca manusia untuk layanan Anda. Anda juga harus menambahkan deskripsi sehingga Anda memiliki informasi lebih lanjut jika Anda perlu mengaudit layanan. Satu-satunya konfigurasi yang perlu Anda buat yang benar-benar memengaruhi fungsi layanan mungkin akan menjadi definisi port tempat Anda mengidentifikasi nomor port dan protokol yang ingin Anda buka. Ini dapat ditentukan beberapa kali.

    Untuk layanan "contoh" kita, bayangkan bahwa kita perlu membuka port 7777 untuk TCP dan 8888 untuk UDP. Dengan memasuki mode INSERT dengan menekan i, kita dapat memodifikasi definisi yang ada dengan sesuatu seperti ini:
    <?xml version="1.0" encoding="utf-8"?>
    <service>
      <short>Example Service</short>
      <description>This is just an example service.  It probably shouldn't be used on a real system.</description>
      <port protocol="tcp" port="7777"/>
      <port protocol="udp" port="8888"/>
    </service>

    Tekan ESC, lalu masukkan :x untuk menyimpan dan menutup file.

    Muat ulang firewall Anda untuk mendapatkan akses ke layanan baru Anda:
    firewall-cmd --reload
    Anda dapat melihat bahwa itu sekarang berada di antara daftar layanan yang tersedia:
    firewall-cmd --get-services
    RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch example freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server
    Anda sekarang dapat menggunakan layanan ini di zona Anda seperti biasanya.


    Menciptakan Zona Anda Sendiri

    Sementara zona yang telah ditetapkan mungkin akan lebih dari cukup untuk sebagian besar pengguna, akan sangat membantu untuk menentukan zona Anda sendiri yang lebih deskriptif fungsi mereka.

    Misalnya, Anda mungkin ingin membuat zona untuk server web Anda, yang disebut "publicweb". Namun, Anda mungkin ingin memiliki zona lain yang dikonfigurasi untuk layanan DNS yang Anda berikan di jaringan pribadi Anda. Anda mungkin menginginkan sebuah zona yang disebut "privateDNS" untuk itu.

    Saat menambahkan zona, Anda harus menambahkannya ke konfigurasi firewall permanen. Anda kemudian dapat memuat ulang untuk membawa konfigurasi ke sesi berlari Anda. Misalnya, kita bisa membuat dua zona yang kita diskusikan di atas dengan mengetik:
    firewall-cmd --permanent --new-zone=publicweb
    firewall-cmd --permanent --new-zone=privateDNS
    Anda dapat memverifikasi bahwa ini ada dalam konfigurasi permanen Anda dengan mengetik:
    firewall-cmd --permanent --get-zones
    block dmz drop external home internal privateDNS public publicweb trusted work
    Sebagaimana dinyatakan sebelumnya, ini tidak akan tersedia dalam contoh firewall saat ini:
    firewall-cmd --get-zones
    block dmz drop external home internal public trusted work
    Muat kembali firewall untuk membawa zona baru ini ke konfigurasi aktif:
    firewall-cmd --reload
    firewall-cmd --get-zones
    block dmz drop external home internal privateDNS public publicweb trusted work
    Sekarang, Anda dapat mulai menetapkan layanan dan port yang sesuai ke zona Anda. Biasanya ada baiknya untuk menyesuaikan instance aktif dan kemudian mentransfer perubahan tersebut ke konfigurasi permanen setelah pengujian. Misalnya, untuk zona "publicweb", Anda mungkin ingin menambahkan layanan SSH, HTTP, dan HTTPS:
    firewall-cmd --zone=publicweb --add-service=ssh
    firewall-cmd --zone=publicweb --add-service=http
    firewall-cmd --zone=publicweb --add-service=https
    firewall-cmd --zone=publicweb --list-all
    publicweb
      target: default
      icmp-block-inversion: no
      interfaces: 
      sources: 
      services: ssh http https
      ports: 
      protocols: 
      masquerade: no
      forward-ports: 
      source-ports: 
      icmp-blocks: 
      rich rules:
    Demikian juga, kita dapat menambahkan layanan DNS ke zona "privateDNS" kami:
    firewall-cmd --zone=privateDNS --add-service=dns
    firewall-cmd --zone=privateDNS --list-all
    privateDNS
      interfaces: 
      sources: 
      services: dns
      ports: 
      masquerade: no
      forward-ports: 
      icmp-blocks: 
      rich rules:
    Kami kemudian dapat mengubah antarmuka kami ke zona baru ini untuk menguji mereka:
    firewall-cmd --zone=publicweb --change-interface=eth0
    firewall-cmd --zone=privateDNS --change-interface=eth1
    Pada titik ini, Anda memiliki kesempatan untuk menguji konfigurasi Anda. Jika nilai-nilai ini bekerja untuk Anda, Anda akan ingin menambahkan aturan yang sama ke konfigurasi permanen. Anda dapat melakukannya dengan menerapkan kembali aturan dengan paremeter perintah --permanent:
    firewall-cmd --zone=publicweb --permanent --add-service=ssh
    firewall-cmd --zone=publicweb --permanent --add-service=http
    firewall-cmd --zone=publicweb --permanent --add-service=https
    firewall-cmd --zone=privateDNS --permanent --add-service=dns
    Setelah menerapkan aturan ini secara permanen, Anda dapat memulai ulang jaringan dan memuat ulang layanan firewall Anda:
    systemctl restart network
    systemctl reload firewalld
    Validasi bahwa zona yang benar telah ditetapkan:
    firewall-cmd --get-active-zones
    privateDNS
      interfaces: eth1
    publicweb
      interfaces: eth0
    Dan memvalidasi bahwa layanan yang sesuai tersedia untuk kedua zona:
    firewall-cmd --zone=publicweb --list-services
    http https ssh
    firewall-cmd --zone=privateDNS --list-services
    dns
    Anda telah berhasil mengatur zona Anda sendiri! Jika Anda ingin menjadikan salah satu dari zona ini sebagai default untuk antarmuka lain, ingat untuk mengonfigurasi perilaku tersebut dengan parameter --set-default-zone=:
    firewall-cmd --set-default-zone=publicweb

    Conclusion

    Anda sekarang harus memiliki pemahaman yang cukup baik tentang cara mengelola layanan firewall pada sistem CentOS Anda untuk penggunaan sehari-hari.

    Layanan firewall memungkinkan Anda untuk mengonfigurasi aturan yang dapat dipertahankan dan kumpulan aturan yang mempertimbangkan lingkungan jaringan Anda. Hal ini memungkinkan Anda untuk transisi mulus antara kebijakan firewall yang berbeda melalui penggunaan zona dan memberi administrator kemampuan untuk mengabstrakkan manajemen port ke dalam definisi layanan yang lebih ramah. Memperoleh pengetahuan kerja dari sistem ini akan memungkinkan Anda untuk memanfaatkan fleksibilitas dan kekuatan yang disediakan alat ini.


    SUMBER DOC ©:
    1. How To Set Up a Firewall Using FirewallD on CentOS 7 (bahasa inggris)
    2. Introduction to FirewallD on CentOS (bahasa inggris)


    No comments

    Post Top Ad

    ad728

    Post Bottom Ad

    ad728