Konsep Firewall IPtables di Linux

Linux Firewall (iptables concepts)

logo -linux

Firewall

Firewall merupakan sebuah perangkat yang digunakan untuk kepentingan keamanan suatu sistem. Firewall akan melakukan pemeriksaan paket data baik yang masuk maupun yang keluar dari suatu sistem. Paket-paket data yang mencurigakan dan membahayakan sistem akan dibuang oleh firewall.
Firewall dapat dibedakan menjadi :
  • Dedicated firewall, firewall yang berupa perangkat keras khusus yang dirancang untuk kepentingan keamanan jaringan, misalnya Cisco PIX Firewall
  • Server Based-Firewall, berupa Network Operating System (misalnya Linux, UNIX) yang menjalankan fungsi-fungsi firewall.
  • Integrated Firewall, fungsi firewall yang ditambahkan pada suatu perangkat jaringan, misalnya router yang menjalan fungsi firewall.
  • Personal Firewall, berupa firewall yang dipasang pada personal computer (host dalam jaringan), biasanya merupakan bawaan OS, Anti Virus maupun software dari vendor tertentu.


Iptables (Linux Firewall)

Linux merupakan Network Operating System yang sudah dilengkapi dengan aplikasi firewall. Fungsi-fungsi firewall pada suatu sistem Linux dijalankan oleh Iptables. Pada sistem Linux terdahulu, fungsi firewall dijalankan oleh Ipchains.
Selain menjalankan fungsi firewall, Iptables juga dapat menjalankan fungsi NAT. NAT merupakan fungsi yang dijalankan oleh sebuah Internet Gateway untuk menghubungkan jaringan lokal (Private IP Address) dengan jaringan Internet (Public IP Address).
Secara default Iptables telah terinstall pada sistem Linux Fedora Core maupun RedHat. Untuk memeriksa apakah Iptables telah terinstall dapat digunakan perintah :
[root@gateway]# rpm –q iptables
iptables-1.3.5-1.2.1


Tables

Setiap paket data yang diterima oleh Sistem Linux yang menjalankan fungsi firewall akan diperiksa oleh Iptables. Iptables akan melakukan pemeriksaan dengan memasukkan setiap paket data ke dalam tabel-tabel
Iptables memiliki 3 buah tabel built-in, yaitu :
  • mangle, digunakan untuk manipulasi paket data, misalnya melakukan perubahan TCP Header
  • filter, digunakan untuk melakukan filter paket data yang diterima firewall
  • nat, digunakan untuk melakukan network address translation.


Chain

Setiap tabel memiliki rule-rule atau aturan-aturan yang disebut chain.
 Mangle, memiliki 5 buah built-in chains :
  • PREROUTING
  • POSTROUTING
  • INPUT
  • OUTPUT
  • FORWARD
Semua chains diperuntukkan untuk TCP Packet Quality of Service sebelum proses routing dijalankan.

Filter, memiliki 3 buah built-in chains :
  • FORWARD          : melakukan filter paket yang akan diforward dari suatu NIC ke NIC yang lain pada firewall, seperti fungsi router.
  • INPUT                   : melakukan filter paket yang ditujukan bagi firewall
  • OUTPUT              : melakukan filter paket yang akan keluar dari firewall.

Nat memiliki 3 buah built-in chains :
  •  PREROUTING      : digunakan untuk mentranslasi address sebelum proses routing terjadi. Dilakukan dengan merubah Destination IP Address dari paket data. Biasa dikenal dengan Destination NAT atau DNAT.
  • POSTROUTING   : digunakan untuk mentranslasi address setelah proses routing terjadi. Dilakukan dengan merubah Source IP Address dari paket data. Biasa dikenal dengan Source NAT atau SNAT.
  • OUTPUT                : digunakan untuk mentranslasi address paket data yang berasal dari firewall itu sendiri.

Target dan Jump

Setiap paket data memasuki sebuah lingkaran, chain akan memeriksa paket tersebut sesuai kriteria yang sudah ditentukan. Pemeriksaan biasanya dilakukan dengan mencocokan TCP Header dari paket data dengan suatu rule yang sudah di tentukan pada chain. Bila ternyata cocok, maka chain akan melakukan “jump” atau eksekusi terhadap paket tersebut. Jump  dapat berupa DROP (buang) atau ACCEPT (terima).
Namun bila kriteria TCP Headernya tidak cocok, maka pemeriksaan akan diserahkan kepada chain selanjutnya. Bila sampai akhir chain tidak ada yang cocok, maka penentuan “jump” paket akan ditentukan oleh chain default dari Iptables. Jump default dari Iptables adalah default DROP ataupun default ACCEPT.
Berikut berbagai jenis “jump” yang dapat diterapkan pada paket data :
  • ACCEPT              : paket akan diterima oleh Iptables dan diteruskan kepada aplikasi yang membutuhkan atau diteruskan ke sistem operasi untuk diproses selanjutnya.
  • DROP                   : paket akan di-blok (tidak dijinkan masuk ke iptables)
  • LOG                      : informasi dari paket akan dimasukan ke syslog untuk keperluan logging, setelah di logging paket diserahkan ke chain berikutnya dalam tabel
  • REJECT               : paket akan di-blok (sama seperti DROP), namun dengan memberikan pesan error kepada host pengirim bahwa paket di-blok.
  • DNAT                   : destination IP address dari paket akan dirubah
  • SNAT                    : source IP address dari paket akan dirubah, source IP address baru yang akan digunakan harus ditentukan.
  • MASQUERADE  : source IP Address dari paket akan dirubah, source IP address baru yang akan digunakan sama dengan IP address dari interface firewall.


General Iptables Match Criteria

Dalam proses pencocokan kriteria paket  pada chain digunakan beberapa perintah sebagai berikut :
  • -t  <table>                :   mendefinisikan tabel yang akan digunakan (mangel, filter atau nat). Bila tidak didefinisikan, asumsi yang digunakan adalah tabel filter.
  • -j <target>                :   mendefinisikan jump yang akan diberlakukan pada suatu paket yang cocok dengan kriteria (rule) yang diterapkan.
  • -A                                :   menambahkan chain baru sesudah chain terakhir.
  • -F                                :   menghapus semua chain pada suatu tabel.
  • -p <protocol-type>  :   mencocokan protocol yang digunakan (TCP, UDP, ICMP dan lain-lain)
  • -s <ip address>         :   mencocokan source IP address pada paket data (host pengirim)
  • -d <ip address>         :   mencocokan destination IP address pada paket data (host tujuan)
  • -i <interface-name> :   mencocokan “input” interface dimana paket akan diterima.
  • -o <interface-name>  :   mencocokan “output” interface dimana paket akan dikeluarkan.
 Contoh :
iptables -A INPUT -s 0/0 -i eth0 -d 192.168.1.1  -p tcp -j ACCEPT
perintah yang mengkonfigurasikan iptables, sehingga firewall dapat menerima paket TCP yang masuk pada interface eth0 (192.168.1.1), dimana paket tersebut dapat berasal dari sembarang host



TCP dan UDP Match Criteria

Untuk pencocokan kriteria berdasarkan protokol TCP dan UDP, terdapat beberapa perintah tambahan, yaitu :
  • -p tcp –-sport  <port>    :    TCP source port, dapat berupa satu buah port atau range port. Untuk menggunakan range port formatnya adalah : startport:endport
  • -p tcp –-dport  <port>    :    TCP destination port
  • -p tcp –-syn                  :   mencocokan TCP Request Connection yang baru
  • -p udp –-sport  <port>    :    UDP source port, dapat berupa satu buah port atau range port. Untuk menggunakan range port formatnya adalah : startport:endport
  • -p udp –-dport  <port>    :    UDP destination port
Contoh :
iptables -A FORWARD -s 0/0 -i eth0 -d 192.168.1.58 -o eth1 -p TCP 
         –sport 1024:65535 –dport 80 -j ACCEPT
 perintah yang mengkonfigurasikan iptables, sehingga firewall dapat menerima paket TCP yang masuk pada interface eth0 (192.168.1.58 )untuk dilakukan routing, kemudian paket data tersebut dikeluarkan melalui ineterface eth1, dimana paket tersebut dapat berasal dari sembarang host dengan source port dalam range 1024 s/d 65535 dan destination port 80 (aplikasi www atau http)

ICMP (ping) Match Criteria

Pencocokan kriteria untuk protokol ICMP, perintah yang dapat digunakan :
  • -p icmp-type <type>     :   mencocokan tipe pesan ICMP, apakah icmp echo-request atau icmp echo-reply
Contoh :
 iptables -A OUTPUT -p icmp –icmp-type echo-request -j ACCEPT
iptables -A INPUT  -p icmp –icmp-type echo-reply   -j ACCEPT
 perintah yang mengkonfigurasikan iptables, sehingga firewall dapat mengirimkan paket ICMP echo-request (ping) dan kemudian dapat menerima kembali ICMP echo-reply.



Menjalankan Iptables

Untuk menjalankan Iptables, dapat digunakan perintah :
[root@gateway etc]# systemctl start iptables.service
[root@gateway etc]# systemctl status named.service
named.service – LSB: start|stop|status|restart|try-restart|reload|force-reload DNS server
          Loaded: loaded (/etc/rc.d/init.d/named)
          Active: active (running) since Wed, 29 Aug 2012 15:25:24 +0800; 7min ago
         Process: 9872 ExecStop=/etc/rc.d/init.d/named stop (code=exited, status=0/SUCCESS)
         Process: 9941 ExecReload=/etc/rc.d/init.d/named reload (code=exited, status=0/SUCCESS)
         Process: 9907 ExecStart=/etc/rc.d/init.d/named start (code=exited, status=0/SUCCESS)
        Main PID: 9912 (named)
          CGroup: name=systemd:/system/named.service
                  รข 9912 /usr/sbin/named -u named

Untuk menghentikan Iptables, dapat digunakan perintah sebagai berikut :
[root@gateway etc]# systemctl stop iptables.service
[root@gateway etc]# systemctl status iptables.service
iptables.service – IPv4 firewall with iptables
          Loaded: loaded (/lib/systemd/system/iptables.service; enabled)
          Active: inactive (dead)
                  start condition failed at Wed, 29 Aug 2012 15:11:01 +0800; 20min ago
          CGroup: name=systemd:/system/iptables.service
Untuk memastikan Iptables selalu dijalankan pada saat sistem akan boot, dapat digunakan perintah :
[root@gateway ~]# systemctl enable iptables.service
 
 
 
 

Konfigurasi Iptables

Konfigurasi iptables dapat dilihat pada  file /etc/sysconfig/iptables
Bila dilakukan pengeditan pada file tersebut, harus diikuti dengan perintah #systemctl restart iptables.service sehingga konfigurasi yang baru dapat dijalankan. Namun bila konfigurasi iptables diberikan pada shell prompt, maka konfigurasi tersebut akan langsung dijalankan oleh iptables.
Untuk melihat konfigurasi yang sedang digunakan oleh iptables, dapat digunakan perintah :
 [root@gateway etc]# iptables-save
# Generated by iptables-save v1.4.12 on Wed Aug 29 15:35:27 2012
*mangle
: PREROUTING ACCEPT [154:11803]
:INPUT ACCEPT [154:11803]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [132:13336]
: POSTROUTING ACCEPT [132:13336]
COMMIT
# Completed on Wed Aug 29 15:35:27 2012
# Generated by iptables-save v1.4.12 on Wed Aug 29 15:35:27 2012
*nat
: PREROUTING ACCEPT [1:119]
:INPUT ACCEPT [1:119]
:OUTPUT ACCEPT [1:108]
: POSTROUTING ACCEPT [1:108]
COMMIT
# Completed on Wed Aug 29 15:35:27 2012
# Generated by iptables-save v1.4.12 on Wed Aug 29 15:35:27 2012
*filter
:INPUT ACCEPT [164:12203]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [166:16816]
COMMIT
# Completed on Wed Aug 29 15:35:27 2012

Untuk mengosongkan konfigurasi Iptables, dapat digunakan perintah :
 [root@gateway]#iptables –flush

Back Up Configuration

 Bila ingin melakukan back-up terhadap konfigurasi iptables dapat digunakan perintah :
[root@gateway]#iptables-save > firewall-config-backup
(perintah menyimpan konfigurasi iptables pada file firewall-config-backup)
Bila ingin me-restore konfigurasi iptables yang telah disimpan, dapat digunakan perintah
[root@gateway]#iptables-restore < firewall-config-backup
 (perintah me-restore  konfigurasi iptables dari  file firewall-config-backup)

sumber:http://www.ilmujaringan.com/linux-firewall-iptables-concepts/

Read Users' Comments (0)

Konsep Routing di Linux


Routing Menggunakan Debian

Sebelum masuk ke sesi konfigurasi routernya, saya mau menjelaskan terlebih dahulu mengenai konsep jaringan yang akan kita buat. Coba perhatikan gambar di bawah ini.
Keterangan :
  -A = 192.168.1.1
  -B = 192.168.1.2
  -C = 192.168.31.1
  -D = 192.168.31.5
Perlu saya jelaskan sedikit mengenai konsep yang saya buat di atas. Pada gambar tersebut, Server dengan IP 192.168.1.1, memberikan layanan kepada Router dimana Router tersebut menggunakan OS Debian 5. Pada Router terdapat 2 Ethernet Card. NIC yang pertama (B) berperan untuk menerima layanan dari server. NIC kedua berperan untuk mengeluarkan layanan yang sudah diterima. Jadi fungsi routing di sini yaitu untuk meneruskan (forward) layanan dari server. Pada PC Router ini nanti, dapat kita gunakan untuk mengatur bandwidth yang akan kita keluarkan kepada Client, dan lainnya. Untuk postingan kali ini saya menjelaskan bagaimana caranya meneruskan layanan server agar dapat sampai ke Client.

Langkah pertama, kita harus mengkonfigurasi kedua NIC pada PC Router. Pastikan ethernet A mendapat IP 192.168.1.2 (satu jaringan dengan server). Dan ethernet B mendapat IP 192.168.31.1 (Seperti gambar di atas). Untuk cara setting IP address pada debian silahkan lihat postingan sebelumnya (Setting IP Address).

Selanjutnya kita aktivkan IP forward, caranya masukkan Commant berikut :
#echo 1 > /proc/sys/net/ipv4/ip_forward

Tekan Enter. Lalu masuk juga pada konfigurasi sysctl.conf :
#nano /etc/sysctl.conf

Cari script berikut ;
#net.ipv4.ip_forward=1

Hapus tanda pagar (#) agar script tersebut aktif.

Setelah itu aktifkan POSTROUTING. Langkah ini digunakan untuk membuka gerbang agar layanan server dapat melintasi router. masukkan commant berikut ;
#iptables -t nat -A POSTROUTING -j MASQUERADE

Tekan Enter. Sebenarnya konfigurasi sudah selesai, namun kita masih perlu menambah script lagi agar konfigurasi yang sudah kita buat tida hiang ketika PC Router di restart. Karena Konfigurasi ini bersifat sementara. Buka file rc.local ;
#nano /etc/rc.local

Selanjutnya masukkan konfigurasi yang sudah kita lakukan tadi, pada baris paling bawah, ketik ;
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -j MASQUERADE

Fungsi dari langkah tersebut agar ketika PC Router kita restart, konfigurasi yang sudah kita lakukan akan secara otomatis aktif.

Untuk menguji/melihat apakah konfigurasi yang kita lakukan sudah berhasil atau belum, lakukan langkah berikut ;
#iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target       prot opt source        destination

Chain POSTROUTING (policy ACCEPT)
target       prot opt source        destination
MASQUERADE   all  --  anywhere       anywhere

Chain OUTPUT (policy ACCEPT)
target       prot opt source        destination

Tampilan tersebut akan muncul jika konfigurasi kita sudah berhasil.

sumber: http://catatan-linux.blogspot.co.id/2012/04/routing-menggunakan-debian.html

Read Users' Comments (0)

Profil Kyu Hyun

Profil Kyu Hyun



Nama : Cho Kyu Hyun
TTL : Nowon, Seoul, 03 Februari 1988
Tinggi badan : 180 cm
berat badan : 68 kg
Golongan darah : A
Agama : Kristen
Posisi di SJ : lead vocal
Saudara : Cho Ahra (kakak perempuan)
Hobby : bermain game komputer, menyanyi, mendengarkan musik, menonton film
Pendidikan : Kyunghee University

Read Users' Comments (0)

Profil Ki Bum

Profil Ki Bum


Nama : Kim Ki Bum
TTL : Seoul, 21 Agustus 1987
Tinggi badan : 177 cm
Berat badan : 58 kg
Golongan darah : A
Agama : Kristen
Posisi di SJ : rapper
Hobby : akting, menyanyi, membaca buku, olahraga tinju
Saudara : Kim Sae Hee (adik perempuan)

Read Users' Comments (0)

Profil Ryeo Wook

Profil Ryeo Wook

Nama : Kim Ryeo Wook
TTL : Incheon Bupyung Sanggokdong, 21 Juni 1987
Tinggi badan : 173 cm
Berat badan : 58 kg
Golongan darah : O
Agama : Kristen
Posisi di SJ : Lead vocal
Saudara : - (anak tunggal)
Hobby : menyanyi, komposisi musik
Pendidikan : Inha University (lulus tahun 2012)

Read Users' Comments (0)

Profil Dong Hae

Profil Dong Hae




Nama : Lee Dong Hae
TTL : Mokpo, Provinsi Jeolla Selatan, 15 Oktober 1986
Tinggi badan : 175 cm
Berat badan : 60 kg
Golongan darah : A
Agama : Kristen
Posisi di SJ : Lead dancer, sub-vocal, rapper
Saudara : Lee Dong Hwa (kakak laki-laki)
Hobby : menari, olahraga, menyanyi, menonton film
Pendidikan : Myongji University

Read Users' Comments (0)

Profil Si Won

Profil Si Won


Nama : Choi Si Won
TTL : Gangnam, Seoul, 7 April 1986
Tinggi Badan : 183 cm
Berat badan : 65 kg
Golongan darah : B
Agama : Kristen
Posisi di SJ : sub-vocal
Saudara : Choi Ji Won (adik perempuan)
Hobby : Menyanyi, menari, akting, taekwondo, bermain drum
Pendidikan : Inha University (lulus tahun 2012)

Read Users' Comments (0)