Iptables rule

iptables ဆိုတာ Linux system မှာ (network packets) တွေကို ထိန်းချုပ်ဖို့၊ စစ်ထုတ်ဖို့၊ ဒါမှမဟုတ် ပြောင်းလဲဖို့ သုံးတဲ့ tool တစ်ခုပါ။ iptables ဆိုတာ packet တွေကို ဘယ်လိုကိုင်တွယ်မလဲဆိုတာကို သတ်မှတ်တဲ့ Packet filtering tool တခုပါ။

(Ai ကို မေးထားတဲ့ Iptables နဲ့ ပါတ်သတ်တာလေးတွေပါ။ကိုယ်တိုင် ရော လေ့လာသူတွေပါကြည့်နိုင်အောင် ပြန်လည်မျှဝေပါတယ်။)


iptables Rule ရဲ့ ဖွဲ့စည်းပုံ

iptables rule တစ်ခုကို ရေးတဲ့အခါ အောက်ပါပုံစံမျိုးနဲ့ ရေးပါတယ်။

iptables [-t table] -A chain [-i interface] [-o interface] [-p protocol] [-s source] [-d destination] [--sport port] [--dport port] [-m module] [-j target]

အဓိက အစိတ်အပိုင်းများ

  1. -t table:
  • ဘယ် table ထဲမှာ စည်းကမ်းချမလဲဆိုတာ သတ်မှတ်ပါတယ်။
  • အဓိက table တွေကတော့:
    • filter: ပက်ကတ်တွေကို ခွင့်ပြုတာ ဒါမှမဟုတ် ပယ်ချတာအတွက် (မူလထည့်သွင်းထားတဲ့ table)။
    • nat: ကွန်ရက်လိပ်စာ ပြောင်းလဲတာ (ဥပမာ၊ port forward)။
    • mangle: ပက်ကတ်တွေရဲ့ အချက်အလက်ကို ပြင်ဆင်တာ။
    • raw: ပက်ကတ်တွေကို အထူးစစ်ဆေးဖို့ သုံးတယ်။
  • ဒီ option မထည့်ရင် filter table ကို သုံးပါတယ်။
  1. -A chain:
  • စည်းကမ်းကို ဘယ် chain ထဲမှာ ထည့်မလဲဆိုတာ သတ်မှတ်ပါတယ်။ Chain ဆိုတာ စည်းကမ်းတွေကို အစီအစဉ်တကျ စစ်ဆေးတဲ့ အဆင့်တွေပါ။
  • အဓိက chain တွေက:
    • INPUT: စက်ထဲကို ဝင်လာတဲ့ ပက်ကတ်တွေအတွက်။
    • OUTPUT: စက်ကနေ ထွက်သွားတဲ့ ပက်ကတ်တွေအတွက်။
    • FORWARD: စက်ကနေ ဖြတ်သန်းသွားတဲ့ ပက်ကတ်တွေအတွက် (ဥပမာ၊ router)။
    • PREROUTING: ပက်ကတ်တွေ လမ်းကြောင်းမရွေးခင် စစ်ဆေးတယ်။
    • POSTROUTING: ပက်ကတ်တွေ လမ်းကြောင်းရွေးပြီးနောက် စစ်ဆေးတယ်။
  1. စစ်ဆေးမှု သတ်မှတ်ချက်များ (Matching Criteria):
  • -i interface: ပက်ကတ်ဝင်လာတဲ့ ကွန်ရက်ကဒ် (ဥပမာ၊ eth0, wlan0)။
  • -o interface: ပက်ကတ်ထွက်သွားမယ့် ကွန်ရက်ကဒ်။
  • -p protocol: ဘယ်လို ပရိုတိုကောကို စစ်မလဲ (ဥပမာ၊ tcp, udp, icmp)။
  • -s source: ပက်ကတ်လာတဲ့ IP လိပ်စာ (ဥပမာ၊ 192.168.1.0/24)။
  • -d destination: ပက်ကတ်သွားမယ့် IP လိပ်စာ။
  • --sport port: ပက်ကတ်လာတဲ့ port နံပါတ်။
  • --dport port: ပက်ကတ်သွားမယ့် port နံပါတ်။
  • -m module: အထူး စစ်ဆေးမှုတွေအတွက် module တွေ သုံးတယ် (ဥပမာ၊ state, limit)။
    • ဥပမာ: -m state --state NEW,ESTABLISHED ဆိုရင် ချိတ်ဆက်မှုအခြေအနေကို စစ်တယ်။
    • ဥပမာ: -m limit --limit 5/second ဆိုရင် ပက်ကတ်ဝင်လာတဲ့ အရေအတွက်ကို ကန့်သတ်တယ်။
  1. -j target:
  • ပက်ကတ်နဲ့ ကိုက်ညီရင် ဘာလုပ်မလဲဆိုတာ သတ်မှတ်ပါတယ်။
  • အဓိက target တွေက:
    • ACCEPT: ပက်ကတ်ကို ခွင့်ပြုတယ်။
    • DROP: ပက်ကတ်ကို တိတ်တဆိတ် ပယ်ချတယ်။
    • REJECT: ပက်ကတ်ကို ပယ်ချပြီး အမှားတစ်ခု ပြန်ပို့တယ်။
    • LOG: ပက်ကတ်ကို မှတ်တမ်းတင်တယ် (ပြဿနာရှာဖို့ အသုံးဝင်တယ်)။
    • DNAT: ပက်ကတ်ကို တခြား IP/port ဆီ ပို့တယ် (nat table မှာ သုံးတယ်)။
    • SNAT: ပက်ကတ်ရဲ့ source IP ကို ပြောင်းတယ်။
    • MASQUERADE: SNAT နဲ့ ဆင်တယ်၊ ဒါပေမယ့် ပြောင်းလဲနိုင်တဲ့ IP တွေအတွက် သုံးတယ်။

iptables Rule ဘယ်လိုအလုပ်လုပ်လဲ?

  • ပက်ကတ်ရွေ့လျားမှု: ပက်ကတ်တွေဟာ chain တွေထဲကို အဆင့်ဆင့်ဝင်ပြီး စည်းကမ်းတွေနဲ့ စစ်ဆေးခံရတယ်။ ဥပမာ၊ စက်ထဲဝင်လာတဲ့ ပက်ကတ်ဆိုရင် INPUT chain ထဲ ဝင်မယ်။
  • အစီအစဉ်အရ စစ်ဆေးတယ်: Rule တွေကို အပေါ်ကနေ အောက်ကို တစ်ခုချင်း စစ်တယ်။ ကိုက်ညီတဲ့ rule တစ်ခုတွေ့ရင် အဲဒီ rule ရဲ့ target အတိုင်း လုပ်ဆောင်တယ်။
  • မူလထည့်သွင်းထားတဲ့ မူဝါဒ (Default Policy): ဘယ် rule နဲ့မှ မကိုက်ရင် chain ရဲ့ default policy (ဥပမာ၊ ACCEPT ဒါမှမဟုတ် DROP) ကို လိုက်နာတယ်။
  • ချိတ်ဆက်မှုအခြေအနေ စစ်ဆေးခြင်း: -m state သုံးပြီး ချိတ်ဆက်မှုရဲ့ အခြေအနေ (ဥပမာ၊ NEW, ESTABLISHED, RELATED) ကို စစ်ဆေးနိုင်တယ်။

ဥပမာ iptables Rule များ

  1. SSH (port 22) ကို ခွင့်ပြုတယ်:
   iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  • ရှင်းပြချက်: INPUT chain ထဲမှာ TCP ပက်ကတ်တွေထဲက port 22 (SSH) ကို ခွင့်ပြုတယ်။
  1. သတ်မှတ်ထားတဲ့ IP ကနေ လာတဲ့ ပက်ကတ်တွေကို ပယ်ချတယ်:
   iptables -A INPUT -s 192.168.1.100 -j DROP
  • ရှင်းပြချက်: 192.168.1.100 ဆိုတဲ့ IP ကနေ လာတဲ့ ပက်ကတ်တွေကို ပယ်ချတယ်။
  1. ရှိပြီးသား ချိတ်ဆက်မှုတွေကို ခွင့်ပြုတယ်:
   iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  • ရှင်းပြချက်: တည်ရှိပြီးသား ချိတ်ဆက်မှုတွေနဲ့ ဆက်စပ်တဲ့ ပက်ကတ်တွေကို ခွင့်ပြုတယ်။
  1. Port forwarding (NAT):
   iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:8080
  • ရှင်းပြချက်: nat table ရဲ့ PREROUTING chain မှာ port 80 ကို 192.168.1.10:8080 ဆီ ပို့တယ်။
  1. Ping တောင်းဆိုမှုကို ကန့်သတ်တယ်:
   iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 5/second -j ACCEPT
  • ရှင်းပြချက်: ICMP ping တောင်းဆိုမှုတွေကို တစ်စက္ကန့်ကို ၅ ခုနဲ့ ကန့်သတ်ပြီး ခွင့်ပြုတယ်။

အရေးကြီးတဲ့ အချက်များ

  • စည်းကမ်းတွေ သိမ်းဆည်းမှု: iptables rule တွေဟာ စက်ပြန်ဖွင့်ရင် ပျောက်သွားတတ်တယ်။ iptables-save နဲ့ iptables-restore သုံးပြီး သိမ်းထားဖို့ လိုတယ်။
  • အစီအစဉ်အရ အရေးကြီးတယ်: Rule တွေကို အစီအစဉ်အတိုင်း စစ်ဆေးတယ်ဆိုတော့ သတ်မှတ်တဲ့ rule တွေကို အရင်ထည့်ပါ။
  • Default Policy သတ်မှတ်နည်း:
   iptables -P INPUT DROP
  • INPUT chain ရဲ့ default policy ကို DROP ထားတယ် (ဘယ် rule နဲ့မှ မကိုက်ရင် ပက်ကတ်တွေကို ပယ်ချမယ်)။
  • Rule တွေကို ကြည့်ဖို့:
   iptables -L -v -n --line-numbers
  • ရှိတဲ့ rule တွေကို အသေးစိတ်နဲ့ နံပါတ်တွေပါ ပြတယ်။
  • Rule ဖျက်ဖို့:
   iptables -D INPUT 3
  • INPUT chain ထဲက နံပါတ် ၃ rule ကို ဖျက်တယ်။

ဘယ်လိုအသုံးပြုလဲ?

  • Firewall: မလိုလားအပ်တဲ့ IP တွေကို ပိတ်တာ၊ သတ်မှတ်ထားတဲ့ ဝန်ဆောင်မှုတွေ (ဥပမာ၊ HTTP, SSH) ကို ခွင့်ပြုတာ။
  • NAT: ပို့ဖောဝဒ်လုပ်တာ ဒါမှမဟုတ် ရောက်တာအတွက် ပက်ကတ်တွေ ပြောင်းလဲတာ။
  • Rate Limiting: DoS တိုက်ခိုက်မှုကို ကာကွယ်ဖို့ ပက်ကတ်အရေအတွက်ကို ကန့်သတ်တာ။
  • Logging: ပက်ကတ်တွေကို မှတ်တမ်းတင်ပြီး ပြဿနာရှာဖို့။

Linux ကို အခြေခံ မှ တဆင့် Linux system administration ကို လေ့လာနိုင်ဖို့ရာ အထူးပြုလုပ်ထားတဲ့ သင်တန်းကို ရှာနေတယ်ဆိုရင် လစဥ် တန်းခွဲတွေ ဖွင့်လှစ်ပေးထားပါတယ်။

လေ့လာရန်

Leave a comment