Sa nakaraang pag-aaral ay natutunan natin (may natutunan ba?) ang paggawa ng tumatayong magisa na firewall (stand alone firewall). Ngayon naman ay pag-aaralan natin kung paano gumawa ng firewall na magsisilbi ding gateway o router ng ating network. Kung isasalarawan natin ang aking sinasabi ay ganito ang kalalabasan.
LAN <----> FIREWALL <----> INTERNETbale ang ating firewall ay may dalawang NIC, isang nakaharap sa internet at isa ang nakaharap sa ating network na siyang magsisilbing default gateway ng mga miyembro sa ating LAN.
Narito ang ating mga gagamitin sa design ng ating ng firewall:
Makinang Firewall:dalawang Network Card: (eth0 and eth1)
kung saan:
eth0 == Ang NIC na nakaharap sa internet
eth1 == Ang NIC na nakaharap sa LAN
IP ng eth0 sa firewall: 1.2.3.4 (Public IP)
IP ng eth1 sa firewall: 192.168.0.254
IP ng LAN: 192.168.0.0/24Serbisyong tumatakbo sa firewall:SSH (22)Nota:Para sa kaalaman ng lahat, ang /24 ay katumbas ng netmask na 255.255.255.0Maglagay din tayo ng Mail Server at Web Server sa loob ng LAN na may settings na kagaya ng mga sumusunod:
IP Ng Web Server: 192.168.0.252
IP Ng Mail Server: 192.168.0.253Ang mga kinakailangang makamit:1.) Payagang makalabas ang packet ng Mail Server ngunit sa port lamang ng SMTP (25).
2.) Ang papayagan lamang na makapag internet ay ang mga IP na 192.168.0.1, 192.168.0.10 at 192.168.0.100.
3.) Payagan ang buong mundo na maka access sa Web Server at Mail Server.
4.) Payagang maka pasok ang kahit sino sa OpenSSH na tumatakbo sa firewall
5.) Payagang maka access ang makinang firewall sa port 80 at 21 lamang para makakuha ng updates sa internet.
6.) Maliban sa mga nabanggit sa itaas, wala nang packet na papayagang makadaloy.Base sa mga kailangang makamit ay masasabi nating lahat ng chains ay magagamit natin ngayon, hindi kagaya nung stand alone na firewall na puro INPUT chain lang ang nagamit.
Umpisahan na natin ang pag design sa ating firewall:
Kagaya ng nauna nating pag-aaral, uumpisahan natin ang rules na DROP lahat by default, kaya ang unang unang rule na dapat nating ilagay ay ang mga sumusunod:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROPAt para makasiguro tayong walang firewall rules na tumatakbo ay isunod datin ang rule na kagaya ng nasa ibaba:
iptables -FAt dahil sa ang firewall ay magsisilbi ring router/gateway, kailangan nating i enable ang ip forwarding sa pamamagitan ng command na gaya ng nasa ibaba
echo "1" > /proc/sys/net/ipv4/ip_forwardNgayon ay isa-isahin natin ang mga dapat na allowed lamang base sa requirements.
1.) Payagang makalabas ang packet ng Mail Server ngunit sa port lamang ng SMTP (25).
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 25 -s 192.168.0.253 -j ACCEPTdito ay gumamit tayo ng panibagong opsyon na hindi nabanggit sa mga una nating pag-aral, ito ay ang "
-i eth1", "
-o eth0", at "
-s 192.168.0.253" kung saan ang "
-i" ay tumutukoy sa input interface, "
-o" naman ay tumutukoy sa output interface at ang "
-s" ay tumutukoy naman sa source IP na sa pagkakataong ito ay ang IP ng ating Mail Server.
Kung isasalin ulet natin sa salita ang rule ng gaya sa itaaas ay ganito ang kakalabasan
"Magdagdag ng rule na magpapasa (
-A FORWARD) at pumasok sa interface eth1 (
-i eth1) at lumabas sa interface eth2 (
-o eth2) na ang protocol ay tcp (
-p tcp) at papunta sa port ng SMTP (
--dport 25) na galing sa ip na 192.168.0.253 (
-s 192.168.0.253) at ito ay tanggapin (
-j ACCEPT)"
2.) Ang papayagan lamang na makapag internet ay ang mga IP na 192.168.0.1, 192.168.0.10 at 192.168.0.100.iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 80 -s 192.168.0.1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 80 -s 192.168.0.10 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 80 -s 192.168.0.100 -j ACCEPTSa mga naunang rule ay pinapayagan natin ang ilang packet na makadaloy sa FORWARD chain at ang intensyon ay makalabas sa internet, ngunit para magkaroon ka ng komunikasyon sa internet ay kailangan mo ng public IP. Paano mo ito ngayon gagawin? Ang sagot? mag translate ka ng pribadong IP sa public IP. Gawin lang ang kagaya ng rule na nasa ibaba para makapag translate.
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to 1.2.3.4mapapansin nyo na gumamit tayo ng "
-t nat" na opsyon na kung saan ito ay tumutukoy sa pangalan ng table na gagamitin. Kinakailangan nating gamitin ang opsyon na
-t dahil kapag hindi natin ito ginamit, ito ay gagamit ng
filter table sa kadahilanang ito ang siyang default.
gumamit din tayo ng
POSTROUTING na chain sa kadahilanang ito ang huling stage na dadaanan papalabas, dito tayo dapat mag translate ng IP
gumamit din tayo ng "
-j SNAT --to 1.2.3.4" na ang ibig sabihin ay "source translation" na ang kasunod ay ang translated na IP na sa pagkakataong ito ay ang public IP
3.) Payagan ang buong mundo na maka access sa Web Server at Mail Server.Ito naman ay manggagaling sa internet ang packet at papunta sa ating Mail at Web Server na kung saan ay parehong nasa likod ng firewall at pareho ring pribado ang IP.
Muli ay kailangan nating mag translate ng IP ngunit sa pagkakataong ito ay mula sa Public IP ay i translate natin para maging pribadong IP, kaya ang chain na dapat nating gamitin ay ang
PREROUTING chain.
at dahil sa ang destinasyon ng packet ay mula sa labas papunta sa loob ng LAN, kailangan din nating payagan ang packet sa
FORWARD chain.
kaya kung isusulat natin ang rule ay ganito ang kalalabasan:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 192.168.0.253
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.252
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j ACCEPT4.) Payagang maka pasok ang kahit sino sa OpenSSH na tumatakbo sa firewallAng service na ito ay sa firewall mismo tumatakbo kaya ang chain na dapat nating gamitin ay ang INPUT chain
iptables -A INPUT -p tcp --dport 22 -j ACCEPT5.) Payagang maka access ang makinang firewall sa port 80 at 21 lamang para makakuha ng updates sa internet.Ito naman ay mula sa firewall papunta sa internet ngunit sa port lamang na 80 at 21. Dahil ito ay mula nasa firewall, hindi na natin kailangang mag translate ng IP dahil siya na mismo ang may public IP, kaya ang kailangan na lang nating gawin ay payagan ang port 80 at 21 na makalabas mula sa firewall. Tingnan ang rule sa ibaba
iptables -A OUTPUT -o eth0 -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT6.) Maliban sa mga nabanggit sa itaas, wala nang packet na papayagang makadaloy.wala na tayong kinakailangang rule para makamit ang huling requirement na ito sa kadahilanang DROP ang ating default policy sa lahat ng chain, maliban sa nga pinayagan nating makalusot sa firewall, lahat ay babawalan na.
Kaya kung pagsasama-samahin natin ang mga rules ay ganito ang kalalabasan
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -F
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 25 -s 192.168.0.253 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 80 -s 192.168.0.1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 80 -s 192.168.0.10 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 80 -s 192.168.0.100 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to 1.2.3.4
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 192.168.0.253
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.252
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPTSa tingin nyo ba ay okay na? kung ang sagot nyo ay Oo, mag-isip ulet kayo dahil nagkakamali kayo, dahil kung matatandaan nyo sa mga nakaraan nating pag-aaral ay kailngan nating gawing
stateful ang ating firewall kung saan ay papayagang makalusot ang mga packet na parte na ng aktibong kuneksyon at may relasyon sa aktibong kuneksiyon.
At isa pang importanteng rule ay ang pag-allow ng DNS traffic sa na dumaloy sa firewall, kahit hindi natin binanggit sa requirement na dapat itong i-allow ay kailangan nating isama ang rule na mag aallow sa DNS traffic, kaya kailangan nating isama ang mga sumusunod na rule:
iptables -A FORWARD -p tcp --dport 53 ACCEPT
iptables -A FORWARD -p udp --dport 53 ACCEPT
iptables -A OUTPUT -p tcp --dport 53 ACCEPT
iptables -A OUTPUT -p udp --dport 53 ACCEPT
Kaya kung kukumpletohin natin ang ating firewall ay ganito ang kalalabasan. Isaayos na rin natin ang pagkakasunod-sunod para magandang tingnan
# Mag set ng DROP na default policy sa tatlong mayor na chainiptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP# i-flush muna ang rule para siguradoiptables -F# i-enable ang ip forwardingecho "1" > /proc/sys/net/i[v4/ip_forward# Payagan ang ESTABLISHED at RELATED na packet sa lahat ng chainiptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT# Payagan ang SSH connection papunta sa firewalliptables -A INPUT -p tcp --dport 22 -j ACCEPT# Payagan ang DNS traffic na dumaloy sa firewalliptables -A FORWARD -p tcp --dport 53 ACCEPT
iptables -A FORWARD -p udp --dport 53 ACCEPT# I-translate ang packet na patungo sa Mail at Web server# sa kadahilanang ang mga ito ay pribado lamang ang IP
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 192.168.0.253
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.252
# Payagan ang Mail server mula sa LAN na makalabas papunta sa port 25iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 25 -s 192.168.0.253 -j ACCEPT# Payagan ang mga ip na 192.168.0.1, 192.168.0.10 at 192.168.0.100 na
# makalabas sa internetiptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 80 -s 192.168.0.1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 80 -s 192.168.0.10 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 80 -s 192.168.0.100 -j ACCEPT
# Payagan ang mga packet mula sa labas papunta sa loob ng LAN
# ngunit sa Mail at Web Server lamangiptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j ACCEPT
# I-translate ang sa public IP kapag ang source IP ay mula sa LANiptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to 1.2.3.4# Payagan ang firewall na makapag internet ngunit limitado lamang sa port na 80 at 21iptables -A OUTPUT -o eth0 -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT
# Payagan ang firewall na maka-acess din ng DNS serveriptables -A OUTPUT -p tcp --dport 53 ACCEPT
iptables -A OUTPUT -p udp --dport 53 ACCEPT