hping3 ဟာ network packet တွေကို စိတ်ကြိုက်ဖန်တီးပြီး ပို့လွှတ်နိုင်တဲ့ tool တစ်ခုဖြစ်ပြီး၊ များသောအားဖြင့် DoS (Denial of Service) တိုက်ခိုက်မှု၊ port scanning၊ ဒါမှမဟုတ် firewall testing အတွက် အသုံးပြုပါတယ်။ ၎င်းဟာ TCP flags (ဥပမာ: SYN, ACK, FIN, RST) တွေကို စိတ်ကြိုက်သတ်မှတ်ပြီး packets တွေကို ပို့လွှတ်နိုင်တဲ့အတွက် firewalld မှာ hping3 ရဲ့ malicious သို့မဟုတ် ပုံမမှန်တဲ့ packets တွေကို ကာကွယ်ဖို့ သတိထားဖို့ လိုအပ်ပါတယ်။
firewalld မှာ --direct option ကို သုံးပြီး hping3 လို tools တွေကနေ လာနိုင်တဲ့ တိုက်ခိုက်မှုတွေကို ကာကွယ်ဖို့ အောက်မှာ အဆင့်ဆင့် ရှင်းပြပါမယ်။
(Ai ကို မေးထားတဲ့ Iptables နဲ့ ပါတ်သတ်တာလေးတွေပါ။ကိုယ်တိုင် ရော လေ့လာသူတွေပါကြည့်နိုင်အောင် ပြန်လည်မျှဝေပါတယ်။)
ဘယ်လို ကာကွယ်ရမလဲ?
hping3 ကို အသုံးပြုပြီး လုပ်လေ့ရှိတဲ့ တိုက်ခိုက်မှုတွေက:
- SYN Flood: SYN packets တွေကို အများအပြား ပို့ပြီး server ရဲ့ resources တွေကို ပိတ်ဆို့ဖို့ ကြိုးစားတယ်။
- TCP Flag Manipulation: Invalid ဒါမှမဟုတ် unusual TCP flag combinations (ဥပမာ: SYN+FIN, NULL flags) တွေကို ပို့ပြီး firewall သို့မဟုတ် system ကို confuse လုပ်ဖို့ ကြိုးစားတယ်။
- Port Scanning: Ports တွေကို scan လုပ်ဖို့ SYN, ACK, သို့မဟုတ် အခြား flags တွေကို အသုံးပြုတယ်။
- Packet Spoofing: Source IP ကို spoof လုပ်ပြီး တိုက်ခိုက်တယ်။
firewalld မှာ --direct rules ကို သုံးပြီး ဒီလို တိုက်ခိုက်မှုတွေကို ကာကွယ်နိုင်ပါတယ်။
firewalld –direct နဲ့ hping3 ကို ကာကွယ်နည်း
firewalld ရဲ့ --direct option ကို သုံးပြီး backend (nftables သို့မဟုတ် iptables) ရဲ့ native rules တွေကို ထည့်သွင်းပြီး hping3 ရဲ့ malicious packets တွေကို block လုပ်နိုင်ပါတယ်။ အောက်မှာ ဥပမာ configuration တွေကို ဖော်ပြထားပါတယ်။
1. SYN Flood ကို ကာကွယ်ခြင်း
SYN flood တိုက်ခိုက်မှုကို ကာကွယ်ဖို့ connection tracking နဲ့ rate limiting ကို အသုံးပြုနိုင်ပါတယ်။
- iptables backend:
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --syn -m conntrack --ctstate NEW -m limit --limit 50/second --limit-burst 100 -j ACCEPT
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --syn -m conntrack --ctstate NEW -j DROP
- ရှင်းပြချက်:
--syn: TCP SYN flag ပါတဲ့ packets တွေကို match လုပ်တယ်။-m conntrack --ctstate NEW: New connections တွေကို filter လုပ်တယ်။-m limit --limit 50/second --limit-burst 100: Second တစ်ခုမှာ SYN packets 50 ခုထိ (burst 100 ထိ) ခွင့်ပြုတယ်။- ကျော်လွန်တဲ့ SYN packets တွေကို DROP လုပ်တယ်။
- nftables backend:
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp tcp flags syn -m conntrack --ctstate new -m limit --limit 50/second --limit-burst 100 -j ACCEPT
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp tcp flags syn -m conntrack --ctstate new -j DROP
- Permanent လုပ်ဖို့:
sudo firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 -p tcp --syn -m conntrack --ctstate NEW -m limit --limit 50/second --limit-burst 100 -j ACCEPT
sudo firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 1 -p tcp --syn -m conntrack --ctstate NEW -j DROP
sudo firewall-cmd --reload
2. Invalid TCP Flags တွေကို Block လုပ်ခြင်း
hping3 ဟာ invalid TCP flag combinations (ဥပမာ: SYN+FIN, NULL flags) တွေကို ပို့ပြီး firewall ကို bypass လုပ်ဖို့ ကြိုးစားနိုင်ပါတယ်။ ဒါတွေကို block လုပ်ဖို့:
- iptables backend:
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --tcp-flags ALL NONE -j DROP
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
- ရှင်းပြချက်:
--tcp-flags ALL NONE: NULL flags (flag တစ်ခုမှ မပါတဲ့ packets) တွေကို DROP လုပ်တယ်။--tcp-flags SYN,FIN SYN,FIN: SYN+FIN combination တွေကို DROP လုပ်တယ်။--tcp-flags SYN,RST SYN,RST: SYN+RST combination တွေကို DROP လုပ်တယ်�。
- nftables backend:
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp tcp flags 0/0 -j DROP
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp tcp flags syn,fin -j DROP
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp tcp flags syn,rst -j DROP
- Permanent လုပ်ဖို့:
sudo firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 -p tcp tcp flags 0/0 -j DROP
sudo firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 -p tcp tcp flags syn,fin -j DROP
sudo firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 -p tcp tcp flags syn,rst -j DROP
sudo firewall-cmd --reload
3. Port Scanning ကို ကာကွယ်ခြင်း
hping3 က port scanning အတွက် SYN သို့မဟုတ် ACK packets တွေကို အသုံးပြုနိုင်ပါတယ်။ ဒါကို ကာကွယ်ဖို့ rate limiting နဲ့ connection tracking ကို အသုံးပြုပါ။
- iptables backend:
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --syn -m conntrack --ctstate NEW -m recent --set
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --syn -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 10 -j DROP
- ရှင်းပြချက်:
-m recent --set: Packet တစ်ခုချင်းစီရဲ့ source IP ကို track လုပ်တယ်။-m recent --update --seconds 60 --hitcount 10: 60 စက္ကန့်အတွင်း SYN packets 10 ခုထက် ကျော်လွန်ရင် DROP လုပ်တယ်။
- nftables backend:
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp tcp flags syn -m conntrack --ctstate new -j SET --add-set scan_block src
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp tcp flags syn -m conntrack --ctstate new -m set --match-set scan_block src -j DROP
4. Packet Spoofing ကို ကာကွယ်ခြင်း
Spoofed packets တွေကို block လုပ်ဖို့ source address validation ကို အသုံးပြုပါ။
- iptables backend:
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -s 127.0.0.0/8 -i eth0 -j DROP
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -s 0.0.0.0/0 -i eth0 -j DROP
- ရှင်းပြချက်:
-s 127.0.0.0/8: Loopback address တွေကို external interface (eth0) ကနေ လာရင် DROP လုပ်တယ်။-s 0.0.0.0/0: Invalid source addresses တွေကို DROP လုပ်တယ်။
- nftables backend:
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -i eth0 -s 127.0.0.0/8 -j DROP
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -i eth0 -s 0.0.0.0/0 -j DROP
5. Logging ထည့်သွင်းပြီး Monitor လုပ်ပါ
hping3 ရဲ့ suspicious packets တွေကို ဖမ်းယူပြီး log လုပ်ဖို့:
- iptables backend:
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --tcp-flags ALL NONE -j LOG --log-prefix "NULL_PACKET: "
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --tcp-flags ALL NONE -j DROP
- nftables backend:
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp tcp flags 0/0 -j LOG --log-prefix "NULL_PACKET: "
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp tcp flags 0/0 -j DROP
- Logs ကို စစ်ဆေးဖို့:
sudo journalctl -k | grep NULL_PACKET
သတိထားရမယ့် အချက်များ
- firewalld နဲ့ Direct Rules:
--directrules တွေဟာ firewalld ရဲ့ standard rules (zones, services) တွေနဲ့ conflict ဖြစ်နိုင်တယ်။ ဒါကြောင့် rule priority ကို ဂရုတစိုက် သတ်မှတ်ပါ (ဥပမာ: priority 0 က အမြင့်ဆုံး)။- Direct rules တွေကို ထည့်ပြီးရင်
firewall-cmd --reloadနဲ့ apply လုပ်ပါ။
- Performance Impact:
- Rate limiting နဲ့ logging တွေကို အလွန်အမင်း သုံးရင် system performance ကို ထိခိုက်နိုင်တယ်။ လိုအပ်သလောက်သာ သုံးပါ။
- Testing:
- Rules တွေ ထည့်ပြီးရင်
hping3ကို သုံးပြီး test လုပ်ပါ (ဥပမာ:hping3 -S -p 80 <target-ip>SYN flood test အတွက်)။ - Packet capture လုပ်ဖို့
tcpdumpသုံးပါ:bash sudo tcpdump -i eth0 -n tcp
- nftables vs iptables:
- firewalld ရဲ့ backend က nftables လား iptables လားဆိုတာကို စစ်ဆေးပါ:
bash cat /etc/firewalld/firewalld.conf | grep FirewallBackend - RHEL 8+ မှာ default က nftables ဖြစ်တယ်။ Syntax ကို backend ပေါ်မူတည်ပြီး ညှိပါ။
- Backup:
- Rules တွေ မဖျက်ခင် backup လုပ်ထားပါ:
bash sudo firewall-cmd --direct --get-all-rules > direct_rules_backup.txt
အကျဉ်းချုပ်
hping3 ရဲ့ တိုက်ခိုက်မှုတွေကို firewalld မှာ --direct rules ကို သုံးပြီး ကာကွယ်နိုင်ပါတယ်။ အဓိက လုပ်ဆောင်ရမှာတွေက:
- SYN flood ကို rate limiting နဲ့ ကာကွယ်ပါ။
- Invalid TCP flags (NULL, SYN+FIN, SYN+RST) တွေကို DROP လုပ်ပါ။
- Port scanning ကို recent module ဒါမှမဟုတ် set နဲ့ block လုပ်ပါ။
- Spoofed packets တွေကို source address validation နဲ့ filter လုပ်ပါ။
- Logging ထည့်ပြီး suspicious packets တွေကို monitor လုပ်ပါ�。
Linux ကို အခြေခံ မှ တဆင့် Linux system administration ကို လေ့လာနိုင်ဖို့ရာ အထူးပြုလုပ်ထားတဲ့ သင်တန်းကို ရှာနေတယ်ဆိုရင် လစဥ် တန်းခွဲတွေ ဖွင့်လှစ်ပေးထားပါတယ်။

