Selasa, 29 Agustus 2023

Cara Setting Firewall dengan FirewallD di CentOS 7

 FirewallD adalah perangkat lunak untuk mengelola firewall di Linux yang mendukung fitur zones (zona jaringan) untuk menentukan tingkat kepercayaan koneksi.

Konsep FirewallD

FirewallD menggunakan zones dan services, dibandingkan dengan iptables yang menggunakan chain dan rules. Berdasarkan pada zones dan services, kita dapat mengontrol koneksi jaringan apa yang diizinkan dan tidak diizinkan masuk atau keluar dari sistem.

FirewallD Zones

Zones adalah kumpulan aturan yang telah ditetapkan, koneksi jaringan apa yang harusnya diizinkan berdasarkan tingkat kepercayaan pada jaringan yang terhubung ke sistem. Kita dapat menetapkan nama interface jaringan dan sumber jaringan ke dalam zones.

Di bawah ini zones yang tersedia pada FirewallD yang disusun berdasarkan tingkat kepercayaan dari tidak terpercaya ke terpercaya.

  1. drop: Semua koneksi jaringan yang masuk didrop tanpa adanya notifikasi atau pesan error. Hanya koneksi jaringan yang keluar dari sistem yang diizinkan.
  2. block: Semua koneksi jaringan yang masuk direject dengan pesan icmp-host-prohibited untuk IPv4 dan icmp6-adm-prohibited untuk IPv6. Hanya koneksi jaringan yang keluar yang diizinkan.
  3. public: Jaringan publik, jaringan yang tidak bisa dipercaya. Kita dapat memilih koneksi jaringan apa yang diizinkan.
  4. external: Jaringan eksternal, jika kita menggunakan Linux sebagai gateway atau router. Dikonfigurasi sebagai NAT masquerading. Hanya trafik yang dipilih yang diizinkan.
  5. internal: Digunakan pada jaringan internal, saat Linux berfungsi sebagai gateway atau router. Sistem lain pada jaringan internal secara umum dapat dipercaya, hanya koneksi jaringan yang dipilih yang diizinkan.
  6. dmz: Demilitarized zone, jika kita ingin memberikan akses terhadap services ke jaringan publik. Hanya koneksi jaringan yang dipilih saja yang diizinkan.
  7. work: Zona yang diperuntukkan jaringan internal kantor. Semua sistem dalam jaringan kantor dapat dipercaya, hanya koneksi jaringan yang dipilih yang diizinkan.
  8. home: Zona yang diperuntukkan jaringan internal rumah. Semua sistem dalam jaringan kantor dapat dipercaya, hanya koneksi jaringan yang dipilih yang diizinkan.
  9. trusted: Zona yang paling terbuka, semua sistem pada jaringan dipercaya, dan semua koneksi jaringan diizinkan.

Install FirewallD

Secara default FirewallD sudah terinstall di CentOS 7, tetapi jika belum terinstall jalankan perintah di bawah ini untuk install.

Aktifkan service FirewallD pada saat boot lalu jalankan

Mengecek status firewall

Hasilnya adalah running atau not running.

Konfigurasi Zones

Menampilkan semua zones

Hasilnya

Membuat zone baru

Menghapus zone

Melihat seluruh zone beserta konfigurasinya

Hasilnya

Hanya menampilkan konfigurasi satu zone, misalnya zone public.

Menampilan default zone

Hasil dari CentOS yang saya gunakan adalah trusted.

Mengganti default zone

Menampilkan zones yang aktif

Hasilnya

Zone yang aktif bisa lebih dari satu zone, setiap zone minimal ada satu interface jaringan.

Menambahkan interface pada zone

Mengubah interface pada zone

Menampilkan zone dari interface

Konfigurasi Services

Menampilkan nama services yang didukung oleh FirewallD

Hasilnya

Menampilkan services pada zone

Hasilnya

Menambahkan service pada zone

Tambahkan opsi –permanent agar service yang sudah ditambahkan tetap ada setelah reboot

Reload konfigurasi firewall setelah melakukan konfigurasi, tapi jika tanpa opsi –permanent konfigurasi itu akan hilang setelah reload.

Menghapus service

Jika nama services yang ingin dimasukkan pada zone tidak tersedia secara default, kita dapat menggunakan nomor port dari service tersebut atau membuat nama service baru.

File deskripsi services berada di direktori /usr/lib/firewalld/services/ dengan ektensi file xml.

Membuka isi file ssh.xml

Isinya

Membuat deskripsi service baru dengan mengcopy file service.xml yang sudah ada

Contoh isinya

Reload dan cek services

Konfigurasi Port

Menampilkan port pada satu zone

Menambahkan port dari protokol TCP atau UDP

Menambahkan range port

Menghapus port

Port Forwarding

Port Forwarding adalah mengalihkan koneksi dari satu port ke port lainnya, misalnya client mengakses port 80 kemudian diteruskan ke port 12345.

Forward port ke server lain

Aktifkan masquerade pada zone, lalu tambahkan rule forward.

Jika ingin menghapus masquerade ubah opsi –add-masquerade menjadi –remove-masquerade

Rich Rules

Rich Rules adalah rule firewall yang lebih luas tidak hanya memasukkan nama services saja tetapi juga IP address.

Menampilkan rich-rules

Izinkan koneksi jaringan dari IP 192.168.0.14

Tolak koneksi jaringan dari IP 192.168.1.10 pada port 22

Izinkan koneksi TCP dari IP 10.1.0.3 untuk mengakses port 80 yang kemudian diteruskan ke port 6532

Izinkan koneksi TCP pada port 80 yang diteruskan ke IP 172.31.4.2 port 8080 (Masquerade harus aktif pada zone)

Izinkan network 192.168.0.0/24 mengakses https

Tambahkan opsi –permanent agar rule tetap ada setelah reload dan reboot sistem. Jika ingin menghapus rich rule, ganti opsi –add-rich-rule menjadi –remove-rich-rule.

IP Set

IP Set adalah sekumpulan IP address yang digunakan sebagai source rule firewall.

Menampilkan IP Set

Membuat IP Set baru dengan nama blacklist

Menambah IP address pada IP Set blacklist

Menghapus IP address dari IP Set

Menampilkan info IP Set

Menampilkan IP address dari IP Set

IP Set yang sudah dibuat kemudian dimasukkan ke rule sebagai source

Menghapus IP Set

IP Set juga dapat berisi 2 atau lebih network yang berbeda



1
2
3
4
firewall-cmd --permanent --new-ipset=netlist --type=hash:ip
firewall-cmd --reload
firewall-cmd --ipset=netlist --add-entry=192.168.1.0/24
firewall-cmd --ipset=netlist --add-entry=192.168.2.0/24  


sumber : https://musaamin.web.id/cara-setting-firewall-dengan-firewalld-di-centos-7/

Senin, 21 Agustus 2023

[Fixed] Solusi Gagal Upload File PHP di Centos 7 Meski Sudah Chmod 777

 Assalamualaikum wr wb.

Pagi cerah gini ane punya ilmu baru nih. Jadi gini ceritanya, ane punya server yang sudah di install Centos 7, berikut webserver serta php nya sudah diinstal. Begitu saya buat project php untuk upload file, ternyata file gagal terupload. Biasanya kan masalah terlatak di permission folder kan. Terus ane coba ubah permission ke 777 namun masih tetap gagal. File masih tidak bisa terupload. Setelah berkeliling di stackoverflow dll masih belum menemukan solusi nih. Dan masalahnya ane kurang variatif aja dalam mencari kata kunci di google terkait masalahnya. Kemudian ane masuk komunitas Centos di facebook, basisnya bule semua sih jadi ane coba diskusi dengan bahasa inggris hehe. Dan langsung banyak jawaban juga terkait masalah yang ane alami. Begini solusinya.

  1. Buka terminal dan masuk ke server. Kemudian arahkan terminal ke folder tujuan upload. Kemudian ketikkan perintah dibawah ini
  2. ls -Z
  3. Hingga muncul seperti gambar dibawah ini.rinaldyvirgiawan.com
  4. Perhatikan gambar diatas, terdapat 2 folder yaitu test_exec dan  tesupload. Perhatikan status SELinux foldernya. Folder test_exec status SELinux nya httpd_sys_content_t. Sedangkan folder tesupload status SELinuxnya httpd_sys_rw_content_t. Perbedaannya terletak di kata rw content (Read Write Content). Kedua folder memiliki permission yang sama 777. Tapi jika kita coba upload ke folder test_exec maka akan gagal, karena folder nya hanya bersifat Read saja. Tetapi jika kita upload ke folder tesupload maka akan bisa terupload karena status foldernya Read dan Write. Kurang lebih begitu penjelasan nya. Nah lalu bagaimana cara merubah status SELinux pada foldernya.
  5. Untuk merubah nya cukup ketikkan perintah dibawah ini
  6. chcon -Rv --type=httpd_sys_rw_content_t namafolder/
  7. Namafolder bisa kalian ganti dengan nama folder yang ingin kalian ubah SELinux nya. Contoh ane akan ubah folder test_exec. Maka jadi seperti ini.
  8. chcon -Rv --type=httpd_sys_rw_content_t test_exec/
  9. Lalu Enter dan cek kembali seperti no 2. Kemudian coba kembali untuk mengupload file dengan project PHP nya.
sumber : https://bukansinchan.com/fixed-solusi-gagal-upload-file-php-di-centos-7-meski-sudah-chmod-777/

Minggu, 30 Juli 2023

Request Apache

 Ada masalah request di apache dan mengakibatkan serangan di server. 

Langkah : 

1. Hentikan service apache nya.

2. Hapus folder dan file injeksi


Jumat, 28 Juli 2023

Mengatasi you don't have permission to access / on this server

Hari ini sabtu tanggal 29 juli 2023 salah satu server yang saya kelola aplikasinya tidak bisa diakses. Setiap kali diakses alamat url nya muncul you don't have permission to access / on this server. Saya berpikiran ada hacker yang mencoba menyerang server tersebut. 

Dari indikasi gagal akses tersebut saya mencoba melakukan upload ulang file index pada aplikasi yang gagal akses. Tapi setelah saya upload dengan yang baru pun tetap gagal akses. Langkah selanjunya saya mencoba reboot server, dengan asumsi akan memperbaiki service yang menjadi terduga terkena serangan. Setelah di reboot saya kembali akses url aplikasi, dan masih tetap gagal.

Setelah beberapa kali uji perbaikan gagal dilakukan, saya mencoba melihat permission dari beberapa file yang ada di aplikasi tersebut. Terutama file yang menjadi permulaan di load oleh aplikasi. Dan saya menemukan ada perubahan permission pada salah satu file utama, yaitu r-- r-- r--. Yang mana ini sangat mencurigakan. Sebelumnya saya tidak pernah melakukan setting permission seperti tersebut.

Kemudian saya lakukan perubahan permission pada file tersebut, dan alhamdulillah aplikasi kemudian bisa diakses kembali. 

Minggu, 16 Juli 2023

Membuat Cetakan Halaman Dengan PHP dan Javascript

 Ketika membuat sebuah aplikasi tentu tak lepas dari proses mencetak laporan. Karena kebutuhan untuk pelaporan mengharuskan cetak printer dari laporan yang dibuat.

untuk membuat cetak laporan yang nyaman buat pengguna, biasanya dengan membuka tab kosong di samping halaman aktif. untuk mengkombinasikan hal tersebut, bisa menggunakan PHP dan javascript. contoh program sebagai berikut :

    1. Membuat fungsi javascript :

<script>
function getExportData(){
    
    var id = document.getElementById('k').value; //parameter yang dikirim
    var k = document.getElementById('l').value; 
    var t = document.getElementById('t').value; 

    var url = 'urlFile_cetak?m='+btoa(id)+'&k='+btoa(k)+'&t='+btoa(t);
//menambahkan btoa untuk mengenskripsi value parameter
  
    var printWindow = window.open(url, '_blank');
    printWindow.onload = function() {
    var isIE = /(MSIE|Trident\/|Edge\/)/i.test(navigator.userAgent);
    if (isIE) {

        printWindow.print();
        setTimeout(function () { printWindow.close(); }, 100);

    } else {

        setTimeout(function () {
            printWindow.print();
            var ival = setInterval(function() {
                printWindow.close();
                clearInterval(ival);
            }, 200);
        }, 500);
    }
}
}

</script>


2 Membuat File hasil cetakan (value url diisikan dengan nama file yang dibuat, dan pastikan path nya betul)

3. Silahkan membuat tombol cetak.
<section class="panel panel-success">
            <div class="alert alert-warning">  
                <span class="alert-icon"><i class="fa fa-search"></i></span>
                <div class="notification-info">  Kelurahan :&nbsp; 
                 <select name="k" id="k"  class="js-example-basic-single" 
                    style="text-align:left; width:75%">
                 <option value="0">Semua</option>
                  </select> &nbsp;&nbsp;

                                 
                </div>
                <br>
                <div class="notification-info">  Kegiatan :&nbsp;   &nbsp;
              <select name="l" id="l" class="js-example-basic-single" 
               style="text-align:left; width:75%">
               <option value="0">Semua</option> 
                </select> &nbsp;&nbsp;  
                </div>
                <br>
                <div class="notification-info">  Tahun : &nbsp;   &nbsp;&nbsp;   
                    &nbsp;
           <select name="t" id="t" class="js-example-basic-single" 
            style="text-align:left; width:25%">
             </select> &nbsp;&nbsp
        <button onClick="javascript:LoadSearchData()" class="btn btn-success"> 
        <i class="fa fa-search"></i> SELEKSI | </button> 
        <input type="hidden" name="proses" value="seleksi">  
        <a href="javascript:getExportData();" ><button class="btn btn-primary"> 
        <i class="fa fa-print"></i>  Cetak</button></a>
                </div>

            </div>
        </section>

Rabu, 07 Juni 2023

Membuat list nomor pada satu cell yang sama di excel

Hari ini saya diperintahkan untuk mengisi RTP (Rencana Tindakan Pengendalian) terhadap proses pengawasan oleh Inpektorat. ada bebrapa dafra resiko yang mempunya beberapa permasalahan. dan format yang disuguhkan adalah excel, maka butuh membuat penomoran pada baris yang sama pada resiko dan berada pada satu cell. 
Untuk itu ada beberapa langkah penambahan : Pastikan data yang diberikan adalah data yang valid sehingga tidak perlu evaluasi kembali. 
isikan data pertama kemudian tekan ALT+ENTER, maka baris akan pindah pada baris bawahny.

Concat tidak berfungsi untuk indexing

 $sql = "SELECT a.* , CONCAT(a.Kode_Barang,'<br><b>',b.Nm_Aset5,'</b>') as Nm_Aset5, CONCAT(a.latitud...