Intisari IP Filter

by : budsz ( budsz@indofreebsd.or.id )
- ipf melihat rule yg dilist secara "berurutan dari atas ke bawah".
  misalnya:
            block in all....(1)
            pass in all.....(2)
  
  Pertama akan dijalankan rule (1), setelah itu rule (2). Jadi otomatis
  hasilnya rule (2) alias "paket boleh masuk".

- Rule2 yg bertumpuk seperti.
  misalnya:
            block in all....(1)
            block in all....(2)
            block in all....(3)
            block in all....(4)
            block in all....(5)
            pass in all.....(6)
       
  Rule (1) s/d (4) tidak ada "faedahnya".

- Dengan "quick" kita dapat meyederhanakan rule2 kita. 
  misalnya:
            block in quick all...(1)
            pass in all..........(2)

  Bisa kita artikan rule (1) akan dilihat pertama, selanjutnya ipf
  melaksanakan ketentuan semua rule tsb sampe selesai baru rule (2).

- Penulisan subnet IP yg diperbolehkan adalah 255.255.0.0 atau /16.
  misalnya:
            block in quick from 192.168.0.0/16 to any 
            atau
            block in quick from 192.168.0.0/255.255.0.0 to any

- Kita dapat mengunakan keyword "on" untuk menspesifikan interface yg
  kita pake.
  misalnya:
            block in quick on xl0 all
            atau
            block in quick on xl0 from 192.168.0.0/16 to any

- Kita dapat menentukan juga outgoing paket dng nama keyword "out".
  misalnya:
            pass out quick on xl0 from 192.168.0.0/16 to any

- Jika kita ingin melogkan apa yg terjadi, maka ada baiknya kita gunakan 
  keyword "log".
  misalnya:
            block in log quick on xl0 from 192.168.0.0/24 to any
    
- Keyword "proto" dapat kita gunakan untuk menspesifikan protocol yg
  kita pake berikut dengan "tipe" protocolnya. backslash (\) dapat kita
  pake untuk menyambung perintah pada line berikutnya.
  misalnya:
            block in log quick on xl0 proto icmp from any to any
            atau
            pass in quick on xl0 proto icmp from any to 192.168.0.0/24 \
            icmp-type 0

- Pengunaan keyword "port" lebih menitik beratkan kepada port yg dilalui.
  misalnya:
            block in log quick on tun0 proto tcp from any to \
            192.168.0.0/24 port = 22
            
- Untuk membangun rule2 yg sangat kuat ada baiknya kita kompile kernel
  dengan "default deny all", shg kita list rule yg kita perlu (This my
  fav). Kita mulai dengan rule "deny" kayak gini.
  misalnya:
            block in all
            block out all

- Nah baru kita listing rule2 yg diperbolehkan.
  misalnya:
            pass in quick on xl0 proto tcp from any to 192.168.0.1/24 \
            port = 80
  
  Arti rule tsb adalah membolehkan paket yg masuk di ethernet xl0 dengan
                       jenis protocol tcp dari mana saja ke 192.168.0.1/24
                       lewat port 80 (www). Jika ada respon dari 192.168.0.1/24
                       akan tetep ditolak juga, maka agar terjadi komunikasi
                       (tidak pincang) maka kita listing juga rule sebaliknya
                       misalnya:
                       pass out quick on tun0 proto tcp from 20.20.20.1/32 \
                       port = 80 to any
                       

- Ada keyword yg sangat menarik disini yaitu "keep-state", jika rule
  kita dibubuhi keep-state ini berati rule tersebut dah masuk ke state
  table ipf, sehingga ipf "tidak perlu" lagi mengecek ulang validasi
  rule tersebut alias jika terjadi handshake di kemudian hari ipf akan
  langsung mengijinkan masuk.
  misalnya:
            pass out quick on xl0 proto tcp from 192.168.0.1/24 to any \
            keep state
            
  Artinya adalah mengijinkan paket yg keluar di xl0 dengan protocol tcp          
                 dari 192.168.0.1/24 ke mana saja, dengan "keep-state"
                 ini rule yg bersangkutan langsung di apply ke "state
                 table" dan ipf tidak akan ikut campur (nggak akan
                 ngulang ngecheck validasi dulu ini). ini terjadi pas pertama 
                 kali "SYN" paket menyentuh (hand shake) server kita.  

  Sangat delematis kita menggunakan "keep-state", coba kita pikirkan
  baik2 akan muncul pertanyaan dibenak kita "Oh..kalo gitu ipf hanya
  mengenal "SYN" yg dulu dung, dengan kata lain "SYN" pas entry ke state
  table pertama kali..?", yups memang benar meski ipf akan close (idle)
  selama 60 detik (1 menit) tapi bukan "refresh". dengan kata lain paket
  "SYN"-nya basi. ini pun berlaku untuk koneksi TCP selanjutnya misalnya
  yg lainya (FIN, XMAS etc) setelah handshake terjadi.

- Untuk masalah diatas tentunya ada solusi tersendiri. dengan penambahan
  keyword "flags" alias menspesifikan flags untuk TCP.
  misalnya:
            pass in quick on tun0 proto tcp from any to 192.168.0.1/24 \
            port = 23 flags S keep state

  Artinya rule diatas akan hanya melihat flags TCP "SYN" saja untuk flags
  lainya (FIN, XMAS etc) tentunya akan "keblock".

  Berikut 6 flags TCP:
  +----------------------------------+--------------+
  |Singkatan dari koneksi TCP/IP     |     Flags    |
  +----------------------------------+--------------+
  |         SYN                      |       S      |
  |         URG                      |       U      |
  |         PUSH                     |       P      |
  |         FIN                      |       F      |
  |         RST                      |       R      |
  |         ACK                      |       A      |
  +----------------------------------+--------------+
    
  Jika kita menulis "flags S" bisa kita tulis "S/SUPFRA". dengan kata lain 
  paket "hanya" cocok flags "S".
  misalnya:
            Jika kita tulis flags S/SA artinya match dengan "S" dan
            flags "UPFR"...(1)
            Jika kita tulis flags S/SAUP artinya match dengan "S" dan
            flags "FR".....(2)

- Dalam perjalan paket tersebut tidak jarang "terpecah-pecah (fragmention)"
  Untuk mengatisipasi tentunya ipf telah menyediakan, yaitu dengan
  keyword "keep frags" (tanpa tanda '-').
  misalnya:
            pass in quick on xl0 proto tcp from any to 192.168.0.1/32 \
            port = 23 flags S keep state keep frags

- Keyword "return-rst" berguna untuk merespon jika service tidak tersedia.
  "return-rst" hanya berlaku untuk jenis protocol TCP.
  misalnya:
            block return-rst in log proto tcp from any to 192.168.0.0/24 \
            port = 23

  Hasilnya untuk rule diatas adalah "connection refused". Ada keyword 
  "return-icmp(jenis_error)".
  misalnya:
            block return-icmp(port-unr) in log quick on tun0 proto udp \
            from any to 192.168.0.0/24 port = 111
           
  Untuk "jenis_error" kita pake "port-unr" (port unreachable).

- Selain respone block paket spt diatas ipf menyediakan keyword 
  "return-icmp-as-desta".
  misalnya:
            block return-icmp-as-dest(port-unr) in log on tun0 proto udp \
            from any to 192.168.0.1/24 port = 111

- Jika anda ingin mengatur log, kita bisa gabungkan dengan syslog. ada
  keyword "log level".
  misalnya:
            block in log level auth.info quick on xl0 from 192.168.0.1/24 to 
            any port = 22
            
- Jika anda mau mendapatkan informasi log header gunakan keyword "log body"
  pada proses ini ipf akan memberikan 128 bytes pertama dari paket
 
- Untuk mempersingkat/efesiensi rule, kita bisa bikin kelas2 nah dengan
  mengunakan pasangan keyword "head" dan "group".
  misalnya:
            block out quick on xl0 all head 10 ...(1)
            pass out quick proto tcp from any to 192.168.0.1/24 port = \
            80 flags S keep state group 10 .......(2)
            
  Jika paket bukan untuk "xl0", make nggak akan "match" dengan rule (1)
  dan rule (2) dan sebaliknya jika "match" maka akan dieksekusi rule (2)
  dan rule2 lainya yg mempunyai keyword "group 10". artinya jika kita
  mempunyai network yg cukup besar dengan macam2 rule tentunya kita
  sedikit kewalahan dengan head dan group kita bisa membagi rule
  tersebut menjadi "tree style".
  misalnya:
            block out quick on xl0 all head 1 ...(1a)
            pass out quick proto tcp from any to 192.168.0.1/24 port = \
            80 flags S keep state group 1 .......(2a)

            block out quick on xl1 all head 2 ...(1b)
            pass out quick proto tcp from any to 192.168.0.2/24 port = \
            80 flags S keep state group 2 .......(2b)
  
  Jika ada paket dengan cocok dengan rule (xa) make untuk kelompok rule
  (xb) akan "diabaikan", dan sebaliknya tentunya ini akan menambah
  efesiensi kerja ipf kita.

- Jika kita lakukan traceroute dari mesin luat ke mesin kita secara
  defautl kita mendapatkan hop2 routing tersebut, ada yg menarik dari
  ipf ini salah satunya keyword "fastroute", dengan keyword ini kita
  bisa menyembunyikan informasi2 hop tersebut.
  misalnya:
            block in quick on xl0 fastroute proto udp from any to any \
            port 33434 >< 33465
            
  Hal ini terjadi karena ada proses penurunan "Time To Live (TTL)" dari
  paket "Acknowledging (ACK)".
  catatan:
            <   : Lebih kecil
            >   : Lebih besar
            =   : Sama dengan
            <=  : Lebih kecil sama dengan
            >=  : Lebih besar sama dengan
            !=  : Tidak sama dengan
            <>  : Kurang dari X, lebih dari X
            ><  : Lebih besar dari X, kurang dari X            

Related

Application Support 158247774606543332

Posting Komentar

emo-but-icon

Follow Us

Hot in week

Recent

Comments

Side Ads

Text Widget

Connect Us

item