Difference between revisions of "IPv6 Firewall: Penggunaan"
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) |
||
(26 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | + | Bagi mereka yang familiar dengan firewall iptables, sebetulnya tidak terlalu sulit untuk menset ip6tables. Pada dasarnya IPv6 netfiter, ip6tables, sangat mirip dengan iptables. Perbedaan utama-nya adalah ip6tables menggunakan IPv6, sementara iptables menggunakan IPv4. | |
− | |||
− | Load module, | + | ==Cek untuk Dukungan== |
+ | |||
+ | Sebagian besar sistem operasi Linux modern sudah mendukung ip6tables. Cek menggunakan modinfo | ||
+ | |||
+ | # modinfo ip6_tables | ||
+ | |||
+ | Hasilnya kira-kira: | ||
+ | |||
+ | filename: /lib/modules/4.15.0-20-generic/kernel/net/ipv6/netfilter/ip6_tables.ko | ||
+ | description: IPv6 packet filter | ||
+ | author: Netfilter Core Team <coreteam@netfilter.org> | ||
+ | license: GPL | ||
+ | srcversion: 3A41F26537483F4CD281C89 | ||
+ | depends: x_tables | ||
+ | retpoline: Y | ||
+ | intree: Y | ||
+ | name: ip6_tables | ||
+ | vermagic: 4.15.0-20-generic SMP mod_unload | ||
+ | signat: PKCS#7 | ||
+ | signer: | ||
+ | sig_key: | ||
+ | sig_hashalgo: md4 | ||
+ | |||
+ | |||
+ | Berikut ini hanya berlaku pada Linux lama, pada Linux baru ini tidak berlaku. Pada Linux versi lama, bisa di-cek untuk dukungan IPv6 Firewall. Load module, jika sudah di compile. | ||
# modprobe ip6_tables | # modprobe ip6_tables | ||
− | + | Pastikan tidak ada error pada saat perintah di atas di berikan. | |
+ | Cek untuk kemampuan Sistem Operasi untuk menjalankan ip6tables | ||
+ | |||
+ | # [ ! -f /proc/net/ip6_tables_names ] && echo "Current kernel doesn't support 'ip6tables' firewalling (IPv6)!" | ||
− | + | Pastikan tidak keluar kata-kata “Current kernel doesn't support 'ip6tables' firewalling (IPv6)!”. Jika keluar kata-kata tersebut, maka kita punya masalah karena kernel tidak mendukung IPv6 firewalling. | |
− | |||
− | == | + | ==Belajar Mengunakan ip6tables== |
− | === | + | ===Lihat Semua Entri IPv6 netfilter=== |
− | + | Pendek | |
# ip6tables -L | # ip6tables -L | ||
− | + | Panjang | |
# ip6tables -n -v --line-numbers -L | # ip6tables -n -v --line-numbers -L | ||
− | === | + | ===Lihat filter tertentu=== |
# ip6tables -n -v --line-numbers -L INPUT | # ip6tables -n -v --line-numbers -L INPUT | ||
− | === | + | ===Masukan aturan log rule pada input filter dengan opsi tertentu=== |
− | # ip6tables --table filter --append INPUT -j LOG --log-prefix "INPUT:" | + | # ip6tables --table filter --append INPUT -j LOG --log-prefix "INPUT:" --log-level 7 |
− | |||
− | === | + | ===Masukan aturan drop pada input filter=== |
# ip6tables --table filter --append INPUT -j DROP | # ip6tables --table filter --append INPUT -j DROP | ||
− | === | + | ===Buang aturan berdasarkan nomor=== |
# ip6tables --table filter --delete INPUT 1 | # ip6tables --table filter --delete INPUT 1 | ||
− | === | + | ===Aktifkan connection tracking=== |
− | + | Sejak kernel versi 2.6.20 IPv6 connection tracking sudah didukung dengan baik dan sebaiknya digunakan daripada menggunakan rules filter stateless | |
# ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT | # ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT | ||
− | === | + | ===Ijinkan ICMPv6=== |
− | + | Menggunakan kernel lama (kernel 2.4.5 tidak di patch dan iptables-1.2.2) kita tidak dapat menspesifikasi tipe | |
− | + | Terima ICMPv6 yang masuk melalui tunnel | |
# ip6tables -A INPUT -i sit+ -p icmpv6 -j ACCEPT | # ip6tables -A INPUT -i sit+ -p icmpv6 -j ACCEPT | ||
− | + | Terima ICMPv6 yang keluar melalui tunnel | |
# ip6tables -A OUTPUT -o sit+ -p icmpv6 -j ACCEPT | # ip6tables -A OUTPUT -o sit+ -p icmpv6 -j ACCEPT | ||
− | + | Kernel baru memungkinkan untuk mengijinkan tipe ICMPv6: | |
# ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT | # ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT | ||
− | === | + | ===Rate-limiting=== |
− | + | Karena kemungkinan bisa saja terjadi badai ICMPv6, kita perlu menggunakan rate limiting paling tidak untuk ICMPv6. Selain itu, kita perlu menambahkan rule rate limiting untuk logging supaya tidak ada serangan DoS terhadap syslog maupun partisi log. Contoh dari rate limiting ICMPv6 adalah sebagai berikut: | |
− | # ip6tables -A INPUT --protocol icmpv6 --icmpv6-type echo-request | + | # ip6tables -A INPUT --protocol icmpv6 --icmpv6-type echo-request \ |
− | + | -j ACCEPT --match limit --limit 30/minute | |
− | === | + | ===Ijinkan SSH yang masuk=== |
− | + | Berikut adalah contoh rule yang mengijinkan sambungan masuk SSH dari address IPv6 tertentu. | |
− | + | Ijin SSH masuk dari 2001:0db8:100::1/128 | |
− | # ip6tables -A INPUT -i sit+ -p tcp -s 2001:0db8:100::1/128 --sport 512:65535 | + | # ip6tables -A INPUT -i sit+ -p tcp -s 2001:0db8:100::1/128 --sport 512:65535 --dport 22 -j ACCEPT |
− | |||
− | + | Ijin responds paket (tidak di perlukan kalau connection tracking digunakan) | |
− | # ip6tables -A OUTPUT -o sit+ -p tcp -d 2001:0db8:100::1/128 --dport 512:65535 | + | # ip6tables -A OUTPUT -o sit+ -p tcp -d 2001:0db8:100::1/128 --dport 512:65535 --sport 22 ! --syn -j ACCEPT |
− | |||
− | === | + | ===Aktifkan tunnel IPv6-in-IPv4=== |
− | + | Untuk menerima paket tunnel IPv6-in-IPv4 , kita perlu menambahkan rule di firewall IPv4 terhadap paket tersebut, contoh | |
− | + | Menerima masukan IPv6-in-IPv4 di interface ppp0 | |
# iptables -A INPUT -i ppp0 -p ipv6 -j ACCEPT | # iptables -A INPUT -i ppp0 -p ipv6 -j ACCEPT | ||
− | + | Mengijinkan keluaran IPv6-in-IPv4 ke interface ppp0 | |
# iptables -A OUTPUT -o ppp0 -p ipv6 -j ACCEPT | # iptables -A OUTPUT -o ppp0 -p ipv6 -j ACCEPT | ||
− | + | Jika kita hanya mempunyai statik tunnel, kita dapat menentukan address IPv4 tersebut, seperti, | |
− | + | Menerima masukan IPv6-in-IPv4 di interface ppp0 dari tunnel endpoint 192.0.2.2 | |
# iptables -A INPUT -i ppp0 -p ipv6 -s 192.0.2.2 -j ACCEPT | # iptables -A INPUT -i ppp0 -p ipv6 -s 192.0.2.2 -j ACCEPT | ||
− | + | Mengijinkan keluaran IPv6-in-IPv4 di interface ppp0 dari tunnel endpoint 1.2.3.4 | |
− | # iptables -A OUTPUT -o ppp0 -p ipv6 -d 192.0.2.2 -j ACCEPT | + | # iptables -A OUTPUT -o ppp0 -p ipv6 -d 192.0.2.2 -j ACCEPT |
− | === | + | ===Proteksi terhadap permohonan sambungan masuk TCP=== |
− | + | SANGAT DI SARANKAN! Untuk keamanan kita sebaiknya menambahkan aturan yang memblok permohonan masuk sambungan TCP. Pakai opsi "-i" , jika nama interface lain digunakan. | |
− | + | Blok permohonan sambungan masuk TCP ke mesin ini | |
# ip6tables -I INPUT -i sit+ -p tcp --syn -j DROP | # ip6tables -I INPUT -i sit+ -p tcp --syn -j DROP | ||
− | + | Blok permohonan sambungan masuk TCP ke mesin di belakangan router | |
# ip6tables -I FORWARD -i sit+ -p tcp --syn -j DROP | # ip6tables -I FORWARD -i sit+ -p tcp --syn -j DROP | ||
− | + | Mungkin aturan-aturan ini harus di letakan di bawah yang lain, anda perlu memikirkan tentang itu. | |
+ | Cara yang lebih baik adalah membuat script yang menjalankan aturan secara tertentu. | ||
− | === | + | ===Proteksi terhadap sambungan masuk UDP=== |
− | + | SANGAT DI ANJURKAN! kita perlu mengontrol port untuk sambungan UDP/TCP keluar. Jika sistem IPv6 yang kita gunakan menggunakan local port, seperti, dari 32768 s/d 60999 kita dapat memfilter sambungan UDP sebagai berikut: | |
− | + | Blok paket masuk UDP yang tidak dapat di responds oleh permohonan paket keluar dari mesin ini. | |
# ip6tables -I INPUT -i sit+ -p udp ! --dport 32768:60999 -j DROP | # ip6tables -I INPUT -i sit+ -p udp ! --dport 32768:60999 -j DROP | ||
− | + | Blok paket masuk UDP yang tidak bisa di responds untuk permohonan forward dari mesin di belakang router ini. | |
+ | |||
+ | # ip6tables -I FORWARD -i sit+ -p udp ! --dport 32768:60999 -j DROP | ||
+ | |||
+ | |||
+ | ===NAT menggunakan netfilter6=== | ||
+ | |||
+ | Sejak Linux kernel versi 3.9.0 dan menggunakan ip6tables sejak 1.4.18 maka Network Address Translation (NAT) dapat digunakan. | ||
+ | |||
+ | ====IPv6 Masquerading==== | ||
+ | |||
+ | Seperti layaknya client IPv4, maka client dapat di sembunyikan di belakang router dengan IPv6 masquerading (hide/overlap NAT), seperti | ||
+ | |||
+ | ip6tables -t nat -A POSTROUTING -s fec0::/64 -o tun0-j MASQUERADE | ||
+ | ip6tables -t nat -A POSTROUTING -s 2a07:123:456::/80 -o tun0 -j MASQUERADE | ||
+ | |||
+ | ====IPv6 Destination NAT==== | ||
+ | |||
+ | Sebuah dedicated IPv6 address global dapat di forward ke internal IPv6 address, seperti, | ||
+ | |||
+ | ip6tables -t nat -A PREROUTING -d 2001:db8:0:1:5054:ff:fe01:2345 -i sixxs -j DNAT --to-destination fec0::5054:ff:fe01:2345 | ||
+ | |||
+ | ====IPv6 Port Forwarding==== | ||
− | + | Sebuah port yang spesifik dapat di forward ke jaringan internal, seperti, | |
− | + | ip6tables -t nat -A PREROUTING -i sixxs -p tcp --dport 8080 -j DNAT --to-destination [fec0::1234]:80 | |
− | == | + | ==Contoh== |
− | + | ===Contoh Sederhana untuk Fedora=== | |
+ | |||
+ | Perintah berikut memperlihatkan konfigurasi firewalll sederhana untuk Fedora 6 (sejak kernel versi 2.6.20). Perintah ini di modifikasi dari default yang di buat oleh system-config-firewall untuk mendukung connection tracking dan memberikan kode yang benar untuk menolak ICMPv6. Sambungan SSH masuk ke port 22 di ijinkan. | ||
File: /etc/sysconfig/ip6tables | File: /etc/sysconfig/ip6tables | ||
Line 158: | Line 205: | ||
COMMIT | COMMIT | ||
− | + | Untuk melengkapi konfigurasi IPv4 di perlihatkan disini. | |
File: /etc/sysconfig/iptables | File: /etc/sysconfig/iptables | ||
Line 180: | Line 227: | ||
COMMIT | COMMIT | ||
− | + | Penggunaan: | |
− | + | * Buat / modifikasi file konfigurasi. | |
− | + | * Aktifkan firewall IPv4 & IPv6. | |
− | |||
# service iptables start | # service iptables start | ||
# service ip6tables start | # service ip6tables start | ||
− | + | * Aktifkan start automatis setelah reboot. | |
# chkconfig iptables on | # chkconfig iptables on | ||
# chkconfig ip6tables on | # chkconfig ip6tables on | ||
− | |||
− | + | ===Contoh Yang Lebih Kompleks=== | |
+ | |||
+ | Kalimat berkut menunjukan sebuah contoh yang lebih sophisticated tapi masih tetap filter stateless. | ||
# ip6tables -n -v -L | # ip6tables -n -v -L | ||
Line 305: | Line 352: | ||
¬ LOG flags 0 level 7 prefix `intOUT-default:' | ¬ LOG flags 0 level 7 prefix `intOUT-default:' | ||
0 0 DROP all * * ::/0 ::/0 | 0 0 DROP all * * ::/0 ::/0 | ||
+ | |||
+ | |||
+ | ==Simpan konfigurasi iptables== | ||
+ | |||
+ | ip6tables rules akan jalan secara automatis / instan, akan tetapi, apa yang kita set akan hilang jika server di restart. Oleh karenanya kita butuh untuk bisa menyimpan rules yang kita set tersebut, sehingga jika server / komputer di reboot akan langsung aktif. | ||
+ | |||
+ | Ada beberapa cara sebetulnya, salah satu yang paling mudah adalah menggunakan package iptables-persistent. Ketik perintah berikut untuk menginstall, | ||
+ | |||
+ | sudo apt-get install iptables-persistent | ||
+ | |||
+ | Ketik 'Yes" untuk rules IPv4 dan IPv6 saat di prompt. | ||
+ | |||
+ | Setelah instalasi kita akan menemukan dua file di | ||
+ | |||
+ | /etc/iptables | ||
+ | |||
+ | dengan nama IPv4 dan IPv6. Kita dapar mengedit rules sesuai dengan apa yang kita inginkan. Selanjutnya kita dapat start|restart|reload|force-reload|save|flush. Sebagai contoh, jika kita ingin "save" rules yang sedang berjalan, ketik perintah berikut: | ||
+ | |||
+ | sudo /etc/init.d/iptables-persistent save | ||
+ | |||
+ | Ini akan menyimpan rule dari IPv4 dan IPv6. | ||
+ | |||
+ | ==Pranala Menarik== | ||
+ | |||
+ | * [[IPv6]] |
Latest revision as of 03:07, 8 February 2024
Bagi mereka yang familiar dengan firewall iptables, sebetulnya tidak terlalu sulit untuk menset ip6tables. Pada dasarnya IPv6 netfiter, ip6tables, sangat mirip dengan iptables. Perbedaan utama-nya adalah ip6tables menggunakan IPv6, sementara iptables menggunakan IPv4.
Cek untuk Dukungan
Sebagian besar sistem operasi Linux modern sudah mendukung ip6tables. Cek menggunakan modinfo
# modinfo ip6_tables
Hasilnya kira-kira:
filename: /lib/modules/4.15.0-20-generic/kernel/net/ipv6/netfilter/ip6_tables.ko description: IPv6 packet filter author: Netfilter Core Team <coreteam@netfilter.org> license: GPL srcversion: 3A41F26537483F4CD281C89 depends: x_tables retpoline: Y intree: Y name: ip6_tables vermagic: 4.15.0-20-generic SMP mod_unload signat: PKCS#7 signer: sig_key: sig_hashalgo: md4
Berikut ini hanya berlaku pada Linux lama, pada Linux baru ini tidak berlaku. Pada Linux versi lama, bisa di-cek untuk dukungan IPv6 Firewall. Load module, jika sudah di compile.
# modprobe ip6_tables
Pastikan tidak ada error pada saat perintah di atas di berikan. Cek untuk kemampuan Sistem Operasi untuk menjalankan ip6tables
# [ ! -f /proc/net/ip6_tables_names ] && echo "Current kernel doesn't support 'ip6tables' firewalling (IPv6)!"
Pastikan tidak keluar kata-kata “Current kernel doesn't support 'ip6tables' firewalling (IPv6)!”. Jika keluar kata-kata tersebut, maka kita punya masalah karena kernel tidak mendukung IPv6 firewalling.
Belajar Mengunakan ip6tables
Lihat Semua Entri IPv6 netfilter
Pendek
# ip6tables -L
Panjang
# ip6tables -n -v --line-numbers -L
Lihat filter tertentu
# ip6tables -n -v --line-numbers -L INPUT
Masukan aturan log rule pada input filter dengan opsi tertentu
# ip6tables --table filter --append INPUT -j LOG --log-prefix "INPUT:" --log-level 7
Masukan aturan drop pada input filter
# ip6tables --table filter --append INPUT -j DROP
Buang aturan berdasarkan nomor
# ip6tables --table filter --delete INPUT 1
Aktifkan connection tracking
Sejak kernel versi 2.6.20 IPv6 connection tracking sudah didukung dengan baik dan sebaiknya digunakan daripada menggunakan rules filter stateless
# ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Ijinkan ICMPv6
Menggunakan kernel lama (kernel 2.4.5 tidak di patch dan iptables-1.2.2) kita tidak dapat menspesifikasi tipe
Terima ICMPv6 yang masuk melalui tunnel
# ip6tables -A INPUT -i sit+ -p icmpv6 -j ACCEPT
Terima ICMPv6 yang keluar melalui tunnel
# ip6tables -A OUTPUT -o sit+ -p icmpv6 -j ACCEPT
Kernel baru memungkinkan untuk mengijinkan tipe ICMPv6:
# ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT
Rate-limiting
Karena kemungkinan bisa saja terjadi badai ICMPv6, kita perlu menggunakan rate limiting paling tidak untuk ICMPv6. Selain itu, kita perlu menambahkan rule rate limiting untuk logging supaya tidak ada serangan DoS terhadap syslog maupun partisi log. Contoh dari rate limiting ICMPv6 adalah sebagai berikut:
# ip6tables -A INPUT --protocol icmpv6 --icmpv6-type echo-request \ -j ACCEPT --match limit --limit 30/minute
Ijinkan SSH yang masuk
Berikut adalah contoh rule yang mengijinkan sambungan masuk SSH dari address IPv6 tertentu.
Ijin SSH masuk dari 2001:0db8:100::1/128
# ip6tables -A INPUT -i sit+ -p tcp -s 2001:0db8:100::1/128 --sport 512:65535 --dport 22 -j ACCEPT
Ijin responds paket (tidak di perlukan kalau connection tracking digunakan)
# ip6tables -A OUTPUT -o sit+ -p tcp -d 2001:0db8:100::1/128 --dport 512:65535 --sport 22 ! --syn -j ACCEPT
Aktifkan tunnel IPv6-in-IPv4
Untuk menerima paket tunnel IPv6-in-IPv4 , kita perlu menambahkan rule di firewall IPv4 terhadap paket tersebut, contoh
Menerima masukan IPv6-in-IPv4 di interface ppp0
# iptables -A INPUT -i ppp0 -p ipv6 -j ACCEPT
Mengijinkan keluaran IPv6-in-IPv4 ke interface ppp0
# iptables -A OUTPUT -o ppp0 -p ipv6 -j ACCEPT
Jika kita hanya mempunyai statik tunnel, kita dapat menentukan address IPv4 tersebut, seperti,
Menerima masukan IPv6-in-IPv4 di interface ppp0 dari tunnel endpoint 192.0.2.2
# iptables -A INPUT -i ppp0 -p ipv6 -s 192.0.2.2 -j ACCEPT
Mengijinkan keluaran IPv6-in-IPv4 di interface ppp0 dari tunnel endpoint 1.2.3.4
# iptables -A OUTPUT -o ppp0 -p ipv6 -d 192.0.2.2 -j ACCEPT
Proteksi terhadap permohonan sambungan masuk TCP
SANGAT DI SARANKAN! Untuk keamanan kita sebaiknya menambahkan aturan yang memblok permohonan masuk sambungan TCP. Pakai opsi "-i" , jika nama interface lain digunakan.
Blok permohonan sambungan masuk TCP ke mesin ini
# ip6tables -I INPUT -i sit+ -p tcp --syn -j DROP
Blok permohonan sambungan masuk TCP ke mesin di belakangan router
# ip6tables -I FORWARD -i sit+ -p tcp --syn -j DROP
Mungkin aturan-aturan ini harus di letakan di bawah yang lain, anda perlu memikirkan tentang itu. Cara yang lebih baik adalah membuat script yang menjalankan aturan secara tertentu.
Proteksi terhadap sambungan masuk UDP
SANGAT DI ANJURKAN! kita perlu mengontrol port untuk sambungan UDP/TCP keluar. Jika sistem IPv6 yang kita gunakan menggunakan local port, seperti, dari 32768 s/d 60999 kita dapat memfilter sambungan UDP sebagai berikut:
Blok paket masuk UDP yang tidak dapat di responds oleh permohonan paket keluar dari mesin ini.
# ip6tables -I INPUT -i sit+ -p udp ! --dport 32768:60999 -j DROP
Blok paket masuk UDP yang tidak bisa di responds untuk permohonan forward dari mesin di belakang router ini.
# ip6tables -I FORWARD -i sit+ -p udp ! --dport 32768:60999 -j DROP
NAT menggunakan netfilter6
Sejak Linux kernel versi 3.9.0 dan menggunakan ip6tables sejak 1.4.18 maka Network Address Translation (NAT) dapat digunakan.
IPv6 Masquerading
Seperti layaknya client IPv4, maka client dapat di sembunyikan di belakang router dengan IPv6 masquerading (hide/overlap NAT), seperti
ip6tables -t nat -A POSTROUTING -s fec0::/64 -o tun0-j MASQUERADE ip6tables -t nat -A POSTROUTING -s 2a07:123:456::/80 -o tun0 -j MASQUERADE
IPv6 Destination NAT
Sebuah dedicated IPv6 address global dapat di forward ke internal IPv6 address, seperti,
ip6tables -t nat -A PREROUTING -d 2001:db8:0:1:5054:ff:fe01:2345 -i sixxs -j DNAT --to-destination fec0::5054:ff:fe01:2345
IPv6 Port Forwarding
Sebuah port yang spesifik dapat di forward ke jaringan internal, seperti,
ip6tables -t nat -A PREROUTING -i sixxs -p tcp --dport 8080 -j DNAT --to-destination [fec0::1234]:80
Contoh
Contoh Sederhana untuk Fedora
Perintah berikut memperlihatkan konfigurasi firewalll sederhana untuk Fedora 6 (sejak kernel versi 2.6.20). Perintah ini di modifikasi dari default yang di buat oleh system-config-firewall untuk mendukung connection tracking dan memberikan kode yang benar untuk menolak ICMPv6. Sambungan SSH masuk ke port 22 di ijinkan.
File: /etc/sysconfig/ip6tables
*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited COMMIT
Untuk melengkapi konfigurasi IPv4 di perlihatkan disini.
File: /etc/sysconfig/iptables
*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT
Penggunaan:
- Buat / modifikasi file konfigurasi.
- Aktifkan firewall IPv4 & IPv6.
# service iptables start # service ip6tables start
- Aktifkan start automatis setelah reboot.
# chkconfig iptables on # chkconfig ip6tables on
Contoh Yang Lebih Kompleks
Kalimat berkut menunjukan sebuah contoh yang lebih sophisticated tapi masih tetap filter stateless.
# ip6tables -n -v -L
Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 extIN all sit+ * ::/0 ::/0 4 384 intIN all eth0 * ::/0 ::/0 0 0 ACCEPT all * * ::1/128 ::1/128 0 0 ACCEPT all lo * ::/0 ::/0 0 0 LOG all * * ::/0 ::/0 ¬ LOG flags 0 level 7 prefix `INPUT-default:' 0 0 DROP all * * ::/0 ::/0 Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination ¬ 0 0 int2ext all eth0 sit+ ::/0 ::/0 0 0 ext2int all sit+ eth0 ::/0 ::/0 0 0 LOG all * * ::/0 ::/0 ¬ LOG flags 0 level 7 prefix `FORWARD-default:' 0 0 DROP all * * ::/0 ::/0 Chain OUTPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination ¬ 0 0 extOUT all * sit+ ::/0 ::/0 4 384 intOUT all * eth0 ::/0 ::/0 0 0 ACCEPT all * * ::1/128 ::1/128 0 0 ACCEPT all * lo ::/0 ::/0 0 0 LOG all * * ::/0 ::/0 ¬ LOG flags 0 level 7 prefix `OUTPUT-default:' 0 0 DROP all * * ::/0 ::/0 Chain ext2int (1 references) pkts bytes target prot opt in out source destination ¬ 0 0 ACCEPT icmpv6 * * ::/0 ::/0 0 0 ACCEPT tcp * * ::/0 ::/0 ¬ tcp spts:1:65535 dpts:1024:65535 flags:!0x16/0x02 0 0 LOG all * * ::/0 ::/0 ¬ LOG flags 0 level 7 prefix `ext2int-default:' 0 0 DROP tcp * * ::/0 ::/0 0 0 DROP udp * * ::/0 ::/0 0 0 DROP all * * ::/0 ::/0 Chain extIN (1 references) pkts bytes target prot opt in out source destination ¬ 0 0 ACCEPT tcp * * 3ffe:400:100::1/128 ::/0 ¬ tcp spts:512:65535 dpt:22 0 0 ACCEPT tcp * * 3ffe:400:100::2/128 ::/0 ¬ tcp spts:512:65535 dpt:22 0 0 ACCEPT icmpv6 * * ::/0 ::/0 0 0 ACCEPT tcp * * ::/0 ::/0 ¬ tcp spts:1:65535 dpts:1024:65535 flags:!0x16/0x02 0 0 ACCEPT udp * * ::/0 ::/0 ¬ udp spts:1:65535 dpts:1024:65535 0 0 LOG all * * ::/0 ::/0 ¬ limit: avg 5/min burst 5 LOG flags 0 level 7 prefix `extIN-default:' 0 0 DROP all * * ::/0 ::/0 Chain extOUT (1 references) pkts bytes target prot opt in out source destination ¬ 0 0 ACCEPT tcp * * ::/0 ¬ 2001:0db8:100::1/128tcp spt:22 dpts:512:65535 flags:!0x16/0x02 0 0 ACCEPT tcp * * ::/0 ¬ 2001:0db8:100::2/128tcp spt:22 dpts:512:65535 flags:!0x16/0x02 0 0 ACCEPT icmpv6 * * ::/0 ::/0 0 0 ACCEPT tcp * * ::/0 ::/0 ¬ tcp spts:1024:65535 dpts:1:65535 0 0 ACCEPT udp * * ::/0 ::/0 ¬ udp spts:1024:65535 dpts:1:65535 0 0 LOG all * * ::/0 ::/0 ¬ LOG flags 0 level 7 prefix `extOUT-default:' 0 0 DROP all * * ::/0 ::/0 Chain int2ext (1 references) pkts bytes target prot opt in out source destination ¬ 0 0 ACCEPT icmpv6 * * ::/0 ::/0 0 0 ACCEPT tcp * * ::/0 ::/0 ¬ tcp spts:1024:65535 dpts:1:65535 0 0 LOG all * * ::/0 ::/0 ¬ LOG flags 0 level 7 prefix `int2ext:' 0 0 DROP all * * ::/0 ::/0 0 0 LOG all * * ::/0 ::/0 ¬ LOG flags 0 level 7 prefix `int2ext-default:' 0 0 DROP tcp * * ::/0 ::/0 0 0 DROP udp * * ::/0 ::/0 0 0 DROP all * * ::/0 ::/0 Chain intIN (1 references) pkts bytes target prot opt in out source destination ¬ 0 0 ACCEPT all * * ::/0 ¬ fe80::/ffc0:: 4 384 ACCEPT all * * ::/0 ff02::/16 Chain intOUT (1 references) pkts bytes target prot opt in out source destination ¬ 0 0 ACCEPT all * * ::/0 ¬ fe80::/ffc0:: 4 384 ACCEPT all * * ::/0 ff02::/16 0 0 LOG all * * ::/0 ::/0 ¬ LOG flags 0 level 7 prefix `intOUT-default:' 0 0 DROP all * * ::/0 ::/0
Simpan konfigurasi iptables
ip6tables rules akan jalan secara automatis / instan, akan tetapi, apa yang kita set akan hilang jika server di restart. Oleh karenanya kita butuh untuk bisa menyimpan rules yang kita set tersebut, sehingga jika server / komputer di reboot akan langsung aktif.
Ada beberapa cara sebetulnya, salah satu yang paling mudah adalah menggunakan package iptables-persistent. Ketik perintah berikut untuk menginstall,
sudo apt-get install iptables-persistent
Ketik 'Yes" untuk rules IPv4 dan IPv6 saat di prompt.
Setelah instalasi kita akan menemukan dua file di
/etc/iptables
dengan nama IPv4 dan IPv6. Kita dapar mengedit rules sesuai dengan apa yang kita inginkan. Selanjutnya kita dapat start|restart|reload|force-reload|save|flush. Sebagai contoh, jika kita ingin "save" rules yang sedang berjalan, ketik perintah berikut:
sudo /etc/init.d/iptables-persistent save
Ini akan menyimpan rule dari IPv4 dan IPv6.