Katanya Internet Positif Python Script Bind Named

Script untuk mengambil data blacklist dari kominfo.go.id, melakukan filterisasi kembali terhadap duplikasi domain atau alamat wildcard IP yang tidak valid.

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 (https://devilzc0de.id/forum/user-20584.html). 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: 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.

1python ./internetpositif.py --fetch

Membersihkan duplikasi Data / list alamat IP yang tidak valid

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

1python ./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 :

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

akan menghasilkan file :

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

Jalankan semua dalam 1 baris:

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

Default Values

Opsi tertentu memiliki default value, seperti :

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

Informasi lebih lanjut:

 1python ./internetpositif.py
 2
 3-h, --help            show this help message and exit
 4-f, --fetch           Ambil data blacklist dari trustpositif.kominfo.go.id
 5-c, --clean           Bersihkan duplikasi data dari
 6                   trustpositif.kominfo.go.id
 7-g, --generate        Buat file zone file untuk BIND (BIND zone file
 8                   generator)
 9
10Opsi tambahan untuk BIND zone file generator:
11-n NAMESERVER, --nameserver NAMESERVER
12                   Nameserver option, default : localhost.local
13-e EMAIL, --email EMAIL
14                   Email option, default : administrator.localhost.local
15-d DOMAIN, --domain DOMAIN
16                   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.