Kebetulan beberapa bulan lalu saya sedang ada projek membangun infrastruktur di salah 1 kantor di Indonesia. Nah salah satunya adalah membuat DNS server internal mereka, dan mereka minta untuk pemblokiran situs sesuai arahan dari pemerintah.

Sebagai pendukung internet bebas, saya merasa sangat-sangat berdosa telah membangun sistem yang penuh sensor, apa lagi sumber rujukannya amburadul mirip rambutnya @74jTeZ. Tapi apalah daya, peraturan adalah peraturan dan wajib diikuti. Maka dari itu, untuk menebus dosa, saya buat script sederhana yang mudah-mudahanan berguna bagi netadmin/sysadmin, namanya Katanya Internet Positif.

Katanya Internet Positif adalah script sederhana untuk mengambil data blacklist dari trustpositif.kominfo.go.id, melakukan filterisasi kembali terhadap duplikasi domain atau alamat wildcard IP yang tidak valid, dan melakukan convert untuk konfigurasi BIND DNS zone blacklist.
Github Repo:

https://github.com/ditatompel/Katanya-Internet-Positif

Petunjuk Penggunaan

Script ini dapat dijalankan menggunakan Python 2.6 atau lebih.

1st run / update RAW_DATA

Untuk yang pertama kali menjalankan script ini (atau ingin melakukan update RAW_DATA), gunakan opsi -f alias --fetch untuk mengambil RAW_DATA dari trustpositif.kominfo.go.id

python ./internetpositif.py --fetch

Bersihkan duplikasi Data / list alamat IP yang tidak valid

Untuk membersihkan duplikasi data, menghapus alamat IP yang tidak valid, gunakan opsi -c alias --clean

python ./internetpositif.py -c

BIND zone file generator

Untuk membuat konfigurasi BIND blacklist zone, gunakan opsi -g alias --generate dengan opsi tambahan -n / --nameserver, -e / --email, -d / --domain

Misalnya :

python ./internetpositif.py --generate -n ns.domain.com -e admin.domain.com -d blokir.domain.com

akan menghasilkan file :

$TTL 86400      ; 1 day
@   IN      SOA ns.domain.com. admin.domain.com. (
                               2017040503 ; serial
                               3600       ; refresh (1 hour)
                               120        ; retry (2 minute)
                               604800     ; expire (1 week)
                               86400      ; minimum (1 day)
                               )
       IN      NS      ns.domain.com.
domain.yang.diblokir.com IN CNAME blokir.domain.com.
domain.lainnya.yang.diblokir.net IN CNAME blokir.domain.com.
[dan seterusnya]

Jalankan semua dalam 1 baris

python ./internetpositif.py -cfg -n=ns.domain.com --email=admin.domain.com -d blokir.domain.com

Default value:

Opsi tertentu memiliki default value, seperti :

  • -n / --nameserver = localhost.local
  • -n / -e / --email = administrator.localhost.local
  • -n / -d / --domain = internetbaik.wds.co.id

Informasi lebih lanjut:

python ./internetpositif.py

-h, --help            show this help message and exit
-f, --fetch           Ambil data blacklist dari trustpositif.kominfo.go.id
-c, --clean           Bersihkan duplikasi data dari
                   trustpositif.kominfo.go.id
-g, --generate        Buat file zone file untuk BIND (BIND zone file
                   generator)

Opsi tambahan untuk BIND zone file generator:
-n NAMESERVER, --nameserver NAMESERVER
                   Nameserver option, default : localhost.local
-e EMAIL, --email EMAIL
                   Email option, default : administrator.localhost.local
-d DOMAIN, --domain DOMAIN
                   CNAME domain tujuan. Default internetbaik.wds.co.id

Struktur File

Script akan membuat folder tertentu sesuai dengan opsi perintah yang diberikan.

  • -f --fetch membuat folder ./RAW_DATA/ berisi data asli yang didapat dari trustpositif.kominfo.go.id
  • -c --clean membuat folder ./DATA/ berisi hasil list domain yang telah dibersihkan dari folder ./RAW_DATA/
  • -g --generate membuat folder ./conf/ hasil convert named zone yang didapat dari folder ./DATA/

Berkontribusi:

Lihat CONTRIBUTING.md untuk informasi lebih detail mengenai cara berkontribusi pada repositori ini.