- Home >
- Cara setting iptables
Posted by : Unknown
Friday, September 13, 2013
Cara
setting iptables
Pada kernel linux yang baru,
terdapat fasilitas netfilter dan iptables yang menggantikan ipchains dengan
penambahan beberapa fasilitas diantaranya pemberian tanda pada setiap paket
yang difilter, penambahan table NAT dan mangle.
Table-table ini mempunyai fungsi sendiri-sendiri, sesuai dengan namanya, table NAT menangani semua keperluan mengenai Network Addresss Translation, termasuk juga port redirection dan IP Masquerading, sedangkan untuk table Mangle bisa digunakan untuk memberikan tanda pada sebuah paket, dan selanjutnya untuk diolah atau ditransmisikan pada kondisi tertentu.
Pembahasan mengenai table Mangle ini tidak dibahas disini, karena hal tersebut menyimpang dari topik kita, yaitu Network Address Translation (NAT).
Seperti dibicarakan sebelumnya. terjadi perubahan juga pada implementasi IP Masquerading, yang semula diletakkan di table filter, namun pada iptables, IP Masqurading diletakkan pada table tersendiri yaitu NAT. Oleh karena itu penulis hanya menambahkan pengimplementasian IP Masquerading pada kernel 2.4.xx, sedangkan untuk hak ciptanya masih dipegang sdr. Agus Hartanto :-).
Jika anda belum mengetahui apakah IP Masquerade itu, dan apa kegunaannya, silahkan lihat tulisan terdahulu yaitu NAT dengan linux hasil karya sdr. Agus, karena dalam artikel ini tidak dijelaskan lagi secara detail mengenai hal tersebut, takut nanti dituduh menyontek ide orang lain :-), penulis juga masih menggunakan gambaran yang dikemukakan oleh tulisan sdr. Agus karena iptables pada dasarnya mirip dengan ipchains dan agar pembaca lebih mudah memahaminya. Pembahasan pada contoh-contoh yang dikemukakan menggunakan RedHat linux sebagai acuan, sehingga mungkin ada perbedaan letak file jika anda menggunakan distro lain selain RedHat.
1. Persiapan
Untuk koneksi ke internet menggunakan IP Masquerade, minimal harus ada sebuah mesin linux dalam jaringan yang tersambung ke internet dan mempunyai sedikitnya satu real/official IP, selain itu tentu saja kernel linux juga harus mendukung IP Masquerade. Adapun program untuk mengaktifkan IP Masquerade pada kernel 2.4.x adalah menggunakan iptables, meskipun sebenarnya ipchains dan ipfwadm juga tersedia, namun iptables mempunyai kinekerja lebih cepat dibandingkan dengan pendahulunya, dan mempunyai tingkat keamanan lebih tinggi, seperti pembatasan jumlah paket yang masuk.
iptables secara default telah tersedia pada kernel 2.4.x, namun apabila anda ingin mengkompilasinya secara terpisah, program tersebut dapat anda cari dan download melalui netfilter.samba.org, atau melalui site site linux archive lainnya seperti freshmeat.
Untuk langkah awal, komputer-komputer yang terkoneksi ke jaringan internal, sebaiknya diberi alamat menggunakan IP private dan diletakkan dalam satu netmask dengan komputer yang menjadi gateway.
Contoh :
ISP ppp0 router.linux-kita.com
client1 192.168.1.2
client2 192.168.1.3
client3 192.168.1.4
server 192.168.1.1
netmask 255.255.255.0
Untuk keperluan IP-Masquerade, kernel anda harus mendukung beberapa driver dibawah ini :
* Enable loadable module support
CONFIG_MODULES
- Mengijinkan anda untuk memanggil komponen kernel
dalam bentuk modul
* Networking support
CONFIG_NET
* Network firewalls
CONFIG_FIREWALL
* TCP/IP networking
CONFIG_INET
* Netfilter Support
CONFIG_NETFILTER
* Netfilter: Connection Tracking
CONFIG_IP_NF_CONNTRACK
* Netfilter: Iptables Style support
CONNFIG_IP_NF_IPTABLES
* Netfilter: Filter Packets
CONFIG_IP_NF_FILTER
* Netfilter: Reject Packets
CONFIG_IP_NF_TARGET_REJECT
* Netfilter: NAT Support
CONFIG_IP_NF_NAT
CONFIG_IP_NF_NAT_NEEDED
* Netfilter: IP Masquerading
CONFIG_IP_NF_TARGET_MASQUERADE
* Netfilter: Redirection
CONFIG_IP_NF_TARGET_REDIRECT
* Netfilter: IRC NAT Support
CONFIG_IP_NF_NAT_IRC
* Netfilter: Table Mangle
CONFIG_IP_NF_MANGLE
* Netfilter: Log target support
CONFIG_IP_NF_TARGET_LOG
* Netfilter: Ipchains Style Support
CONFIG_IP_NF_COMPAT_IPCHAINS
* Netfilter: Ipfwadm Style Support
CONFIG_IP_NF_COMPAT_IPFWADM
* Dummy net driver support
CONFIG_DUMMY
Pada kernel 2.4.x yang terpasang pada redhat, option-option di atas sudah diaktifkan dalam bentuk modul, sehingga anda tidak perlu mengkompile ulang kernel lagi, yang tentu sangat melelahkan bagi yang belum terbiasa :-). Dan untuk menggunakan modul-modul tersebut, anda tidak perlu memanggilnya terlebih dahulu menggunakan modprobe, namun anda hanya perlu menjalankan iptables, dan secara otomatis, modul yang diperlukan akan diload ke dalam memory oleh iptables.
2. Mengaktifkan IP_FORWARDING
Untuk mengaktifkan ip_forward anda harus memberikan nilai 1 ke file /proc/sys/net/ipv4/ip_forward, contohnya dengan mengetikkan perintah di prompt linux :
[root@server /]# echo "1" > /proc/sys/net/ipv4/ip_forward
Ini sangat penting untuk diperhatikan, karena sejak Kernel 2.0.34 , kernel tidak mengaktifkannya secara default.
Atau cara lain, anda bisa menambahkan baris berikut pada file /etc/sysctl.conf:
net.ipv4.ip_forward = 1
dengan adanya baris tersebut maka script /etc/rc.d/init.d/network akan memberikan nilai 1 secara otomatis ke file /proc/sys/net/ipv4/ip_forward pada saat memulai linux.
3. Memanggil modul modul pendukung IP Masquerade
Seperti yang telah disebutkan diatas, pada kernel 2.4.x modul-modul yang tersedia tidak perlu dipanggil terlebih dahulu, anda hanya menjalankan iptables, dan secara otomatis, modul-modul yang diperlukan akan diload ke memory. Adapun beberapa modul netfilter yang terdapat pada kernel 2.4.x (terletak di direktori /lib/modules/2.4.x/kernel/net/ipv4/netfilter) adalah:
ipchains.o ip_nat_ftp.o iptable_nat.o ipt_mark.o ipt_owner.o ipt_TCPMSS.o
ip_conntrack_ftp.o ip_nat_irc.o ip_tables.o ipt_MARK.o ipt_REDIRECT.o ipt_tos.o
ip_conntrack_irc.o ip_queue.o ipt_limit.o ipt_MASQUERADE.o ipt_REJECT.o ipt_TOS.o
ip_conntrack.o iptable_filter.o ipt_LOG.o ipt_MIRROR.o ipt_state.o ipt_unclean.o
ipfwadm.o iptable_mangle.o ipt_mac.o ipt_multiport.o ipt_tcpmss.o
4. Mengkonfigurasikan Aturan dari IP Forwarding dan sedikit ttg Firewall
Untuk mengaktifkan IP Masquerade, anda harus memberikan perintah :
iptables -t nat -A POSTROUTING -s yyy.yyy.yyy.yyy./x -j MASQUERADE dengan table seperti diatas.
Untuk lebih jelasnya coba perhatikan contoh dibawah ini :
Anda mempunyai jaringan dengan alamat IP gateway linux 192.168.1.1 dan klien klien 192.168.1.2 s/d 192.168.0.4 dengan netmask 255.255.255.0 , dan anda ingin mengaktifkan IP Masquerading atas alamat alamat ini, maka anda harus mengetikkan perintah :
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 0.0.0.0/0 -j MASQUERADE
Anda mempunyai alamat alamat IP spt diatas tapi anda ingin hanya klien dengan IP bernomer 192.168.1.5 dan 192.168.0.10 saja yang bisa mengakses internet, maka seharusnya anda hanya mengetikkan perintah :
iptables -t nat -A POSTROUTING -s 192.168.1.5/32 -d 0.0.0.0/0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.1.10/32 -d 0.0.0.0/0 -j MASQUERADE
Anda mempunyai alamat alamat IP spt diatas dan anda ingin semua klien bisa mengakses internet, kecuali IP 192.168.1.5 dan 192.168.1.10 saja yang tidak bisa mengakses internet, maka seharusnya anda mengetikkan perintah :
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 0/0 -j MASQUERADE
untuk mengaktifkan masquerading. Baru kemudian kita cegat kedua komputer tersebut dengan perintah :
iptables -I INPUT -s 192.168.1.5/32 -d 0/0 -j DROP
iptables -I INPUT -s 192.168.1.10/32 -d 0/0 -j DROP
Administrasi fasilitas fasilitas tertentu
Kita bisa juga melakukan pencegatan terhadap paket paket yang akan masuk ke port tertentu, hal ini juga memungkinkan kita untuk mematikan atau menghidupkan beberapa fasilitas internet, misalnya anda ingin klien anda dengan alamat 192.168.1.5 tidak diperbolehkan untuk melakukan chatting, maka kita bisa men-deny, paket paket dari klien 192.168.1.5 yang akan menuju ke port IRC (contoh port nomer 6667).
Dibawah ini contoh untuk mencegat paket TCP dari klien dengan alamat 192.168.1.5 yang menuju ke port 6667 :
iptables -I INPUT -p tcp -s 192.168.1.5/32 -d 0/0 --destination-port 6667 -j DROP
Untuk membuka atau menghapus aturan aturan yang telah kita buat kita bisa mengganti option -I , -A dsb, misalnya dengan option -D sebagai contoh:
iptables -I INPUT -p tcp -s 192.168.1.5/32 -d 0/0 --destination-port 6667 -j DROP
dapat dihapus dengan perintah :
iptables -D INPUT -p tcp -s 192.168.1.5/32 -d 0/0 --destination-port 6667 -j DROP
Catatan option option iptables yg digunakan diatas
-A menambahkan rule
-I menyisipkan (insert) rule firewall ke baris paling atas
-D menghapus rule yg telah dibuat
-s source address
-d destination address
DROP Pada iptables tidak dikenal target DENY, sebagai pengganti menggunakan target DROP
Table-table ini mempunyai fungsi sendiri-sendiri, sesuai dengan namanya, table NAT menangani semua keperluan mengenai Network Addresss Translation, termasuk juga port redirection dan IP Masquerading, sedangkan untuk table Mangle bisa digunakan untuk memberikan tanda pada sebuah paket, dan selanjutnya untuk diolah atau ditransmisikan pada kondisi tertentu.
Pembahasan mengenai table Mangle ini tidak dibahas disini, karena hal tersebut menyimpang dari topik kita, yaitu Network Address Translation (NAT).
Seperti dibicarakan sebelumnya. terjadi perubahan juga pada implementasi IP Masquerading, yang semula diletakkan di table filter, namun pada iptables, IP Masqurading diletakkan pada table tersendiri yaitu NAT. Oleh karena itu penulis hanya menambahkan pengimplementasian IP Masquerading pada kernel 2.4.xx, sedangkan untuk hak ciptanya masih dipegang sdr. Agus Hartanto :-).
Jika anda belum mengetahui apakah IP Masquerade itu, dan apa kegunaannya, silahkan lihat tulisan terdahulu yaitu NAT dengan linux hasil karya sdr. Agus, karena dalam artikel ini tidak dijelaskan lagi secara detail mengenai hal tersebut, takut nanti dituduh menyontek ide orang lain :-), penulis juga masih menggunakan gambaran yang dikemukakan oleh tulisan sdr. Agus karena iptables pada dasarnya mirip dengan ipchains dan agar pembaca lebih mudah memahaminya. Pembahasan pada contoh-contoh yang dikemukakan menggunakan RedHat linux sebagai acuan, sehingga mungkin ada perbedaan letak file jika anda menggunakan distro lain selain RedHat.
1. Persiapan
Untuk koneksi ke internet menggunakan IP Masquerade, minimal harus ada sebuah mesin linux dalam jaringan yang tersambung ke internet dan mempunyai sedikitnya satu real/official IP, selain itu tentu saja kernel linux juga harus mendukung IP Masquerade. Adapun program untuk mengaktifkan IP Masquerade pada kernel 2.4.x adalah menggunakan iptables, meskipun sebenarnya ipchains dan ipfwadm juga tersedia, namun iptables mempunyai kinekerja lebih cepat dibandingkan dengan pendahulunya, dan mempunyai tingkat keamanan lebih tinggi, seperti pembatasan jumlah paket yang masuk.
iptables secara default telah tersedia pada kernel 2.4.x, namun apabila anda ingin mengkompilasinya secara terpisah, program tersebut dapat anda cari dan download melalui netfilter.samba.org, atau melalui site site linux archive lainnya seperti freshmeat.
Untuk langkah awal, komputer-komputer yang terkoneksi ke jaringan internal, sebaiknya diberi alamat menggunakan IP private dan diletakkan dalam satu netmask dengan komputer yang menjadi gateway.
Contoh :
ISP ppp0 router.linux-kita.com
client1 192.168.1.2
client2 192.168.1.3
client3 192.168.1.4
server 192.168.1.1
netmask 255.255.255.0
Untuk keperluan IP-Masquerade, kernel anda harus mendukung beberapa driver dibawah ini :
* Enable loadable module support
CONFIG_MODULES
- Mengijinkan anda untuk memanggil komponen kernel
dalam bentuk modul
* Networking support
CONFIG_NET
* Network firewalls
CONFIG_FIREWALL
* TCP/IP networking
CONFIG_INET
* Netfilter Support
CONFIG_NETFILTER
* Netfilter: Connection Tracking
CONFIG_IP_NF_CONNTRACK
* Netfilter: Iptables Style support
CONNFIG_IP_NF_IPTABLES
* Netfilter: Filter Packets
CONFIG_IP_NF_FILTER
* Netfilter: Reject Packets
CONFIG_IP_NF_TARGET_REJECT
* Netfilter: NAT Support
CONFIG_IP_NF_NAT
CONFIG_IP_NF_NAT_NEEDED
* Netfilter: IP Masquerading
CONFIG_IP_NF_TARGET_MASQUERADE
* Netfilter: Redirection
CONFIG_IP_NF_TARGET_REDIRECT
* Netfilter: IRC NAT Support
CONFIG_IP_NF_NAT_IRC
* Netfilter: Table Mangle
CONFIG_IP_NF_MANGLE
* Netfilter: Log target support
CONFIG_IP_NF_TARGET_LOG
* Netfilter: Ipchains Style Support
CONFIG_IP_NF_COMPAT_IPCHAINS
* Netfilter: Ipfwadm Style Support
CONFIG_IP_NF_COMPAT_IPFWADM
* Dummy net driver support
CONFIG_DUMMY
Pada kernel 2.4.x yang terpasang pada redhat, option-option di atas sudah diaktifkan dalam bentuk modul, sehingga anda tidak perlu mengkompile ulang kernel lagi, yang tentu sangat melelahkan bagi yang belum terbiasa :-). Dan untuk menggunakan modul-modul tersebut, anda tidak perlu memanggilnya terlebih dahulu menggunakan modprobe, namun anda hanya perlu menjalankan iptables, dan secara otomatis, modul yang diperlukan akan diload ke dalam memory oleh iptables.
2. Mengaktifkan IP_FORWARDING
Untuk mengaktifkan ip_forward anda harus memberikan nilai 1 ke file /proc/sys/net/ipv4/ip_forward, contohnya dengan mengetikkan perintah di prompt linux :
[root@server /]# echo "1" > /proc/sys/net/ipv4/ip_forward
Ini sangat penting untuk diperhatikan, karena sejak Kernel 2.0.34 , kernel tidak mengaktifkannya secara default.
Atau cara lain, anda bisa menambahkan baris berikut pada file /etc/sysctl.conf:
net.ipv4.ip_forward = 1
dengan adanya baris tersebut maka script /etc/rc.d/init.d/network akan memberikan nilai 1 secara otomatis ke file /proc/sys/net/ipv4/ip_forward pada saat memulai linux.
3. Memanggil modul modul pendukung IP Masquerade
Seperti yang telah disebutkan diatas, pada kernel 2.4.x modul-modul yang tersedia tidak perlu dipanggil terlebih dahulu, anda hanya menjalankan iptables, dan secara otomatis, modul-modul yang diperlukan akan diload ke memory. Adapun beberapa modul netfilter yang terdapat pada kernel 2.4.x (terletak di direktori /lib/modules/2.4.x/kernel/net/ipv4/netfilter) adalah:
ipchains.o ip_nat_ftp.o iptable_nat.o ipt_mark.o ipt_owner.o ipt_TCPMSS.o
ip_conntrack_ftp.o ip_nat_irc.o ip_tables.o ipt_MARK.o ipt_REDIRECT.o ipt_tos.o
ip_conntrack_irc.o ip_queue.o ipt_limit.o ipt_MASQUERADE.o ipt_REJECT.o ipt_TOS.o
ip_conntrack.o iptable_filter.o ipt_LOG.o ipt_MIRROR.o ipt_state.o ipt_unclean.o
ipfwadm.o iptable_mangle.o ipt_mac.o ipt_multiport.o ipt_tcpmss.o
4. Mengkonfigurasikan Aturan dari IP Forwarding dan sedikit ttg Firewall
Untuk mengaktifkan IP Masquerade, anda harus memberikan perintah :
iptables -t nat -A POSTROUTING -s yyy.yyy.yyy.yyy./x -j MASQUERADE dengan table seperti diatas.
Untuk lebih jelasnya coba perhatikan contoh dibawah ini :
Anda mempunyai jaringan dengan alamat IP gateway linux 192.168.1.1 dan klien klien 192.168.1.2 s/d 192.168.0.4 dengan netmask 255.255.255.0 , dan anda ingin mengaktifkan IP Masquerading atas alamat alamat ini, maka anda harus mengetikkan perintah :
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 0.0.0.0/0 -j MASQUERADE
Anda mempunyai alamat alamat IP spt diatas tapi anda ingin hanya klien dengan IP bernomer 192.168.1.5 dan 192.168.0.10 saja yang bisa mengakses internet, maka seharusnya anda hanya mengetikkan perintah :
iptables -t nat -A POSTROUTING -s 192.168.1.5/32 -d 0.0.0.0/0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.1.10/32 -d 0.0.0.0/0 -j MASQUERADE
Anda mempunyai alamat alamat IP spt diatas dan anda ingin semua klien bisa mengakses internet, kecuali IP 192.168.1.5 dan 192.168.1.10 saja yang tidak bisa mengakses internet, maka seharusnya anda mengetikkan perintah :
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 0/0 -j MASQUERADE
untuk mengaktifkan masquerading. Baru kemudian kita cegat kedua komputer tersebut dengan perintah :
iptables -I INPUT -s 192.168.1.5/32 -d 0/0 -j DROP
iptables -I INPUT -s 192.168.1.10/32 -d 0/0 -j DROP
Administrasi fasilitas fasilitas tertentu
Kita bisa juga melakukan pencegatan terhadap paket paket yang akan masuk ke port tertentu, hal ini juga memungkinkan kita untuk mematikan atau menghidupkan beberapa fasilitas internet, misalnya anda ingin klien anda dengan alamat 192.168.1.5 tidak diperbolehkan untuk melakukan chatting, maka kita bisa men-deny, paket paket dari klien 192.168.1.5 yang akan menuju ke port IRC (contoh port nomer 6667).
Dibawah ini contoh untuk mencegat paket TCP dari klien dengan alamat 192.168.1.5 yang menuju ke port 6667 :
iptables -I INPUT -p tcp -s 192.168.1.5/32 -d 0/0 --destination-port 6667 -j DROP
Untuk membuka atau menghapus aturan aturan yang telah kita buat kita bisa mengganti option -I , -A dsb, misalnya dengan option -D sebagai contoh:
iptables -I INPUT -p tcp -s 192.168.1.5/32 -d 0/0 --destination-port 6667 -j DROP
dapat dihapus dengan perintah :
iptables -D INPUT -p tcp -s 192.168.1.5/32 -d 0/0 --destination-port 6667 -j DROP
Catatan option option iptables yg digunakan diatas
-A menambahkan rule
-I menyisipkan (insert) rule firewall ke baris paling atas
-D menghapus rule yg telah dibuat
-s source address
-d destination address
DROP Pada iptables tidak dikenal target DENY, sebagai pengganti menggunakan target DROP