Demilitarized Zone (DMZ)
ในกรณีที่ผู้ใช้บริการมี Server ต่าง ๆ อยู่ด้วย ในที่นี่สมมุติว่ามี Web Server, FTP Server, DNS Server , Proxy Server, Mail Server และ MySQL Serer แล้วเราจะทำอย่างไรล่ะ
วิธีการที่นิยมกันคือการเพิ่มโซนของเครือข่ายมาอีกโซนหนึ่งนั่นคือ Demilitarized Zone (DMZ) ซึ่งถ้าแปลตรง ๆ ก็คือ "เขตปลอดทหาร" เช่น ที่กำหนดขึ้นที่เขตแดนระหว่างประเทศเกาหลีเหนือและประเทศเกาหลีใต้ในระหว่าง การสงบศึกชั่วคราวของสงครามเกาหลี
สำหรับในเรื่อง Network Security แล้ว DMZ เป็นคำจำกัดความของโซนอีกประเภทหนึ่งที่ไม่ใช่ทั้ง Internal (เครือข่ายภายใน) และ External (เครือข่ายภายนอกหรือเครือข่ายอินเตอร์เน็ต) แต่หมายถึงเครือข่ายที่ต้องมีการสื่อสารกับทั้งเครือข่ายภายในและเครือข่าย ภายนอกนั่นเอง และดังนั้นผมจึงได้จัดให้ Server ทั้ง 5 ซึ่งต้องติตต่อกับทั้งเครือข่ายภายในและเครือข่ายภายนอกให้อยู่ใน DMZ ดังรูปที่ 3
อาจจะสงสัยบ้างว่าถ้ามี DHCP Server ด้วยจะเอาไว้ตรงไหน เนื่องจาก DHCP Server ไม่ต้องมีการติดต่อสื่อสารกับเครือข่ายภายนอก จึงสามารถวางไว้ที่เครือข่ายภายในได้เลยครับ หรือถ้า Gateway มี Spec สูงหน่อย ก็สามารถวางไว้บน gateway เลยก็ได้ครับ
รูปที่ 3 การทำไฟร์วอลล์แบบที่มี DMZ ที่จัดแบ่งไอพีไม่ถูกต้อง
จาก รูปข้างบนนี้ผมลองทำดูแล้วมีปัญหาครับ คือ Linux ไม่ยอมรับลักษณะที่มีการ์ดแลนด์ 2 การ์ดแต่มีค่า IP อยู่ในวงเดียวกันนั่นคือการ์ด 202.129.48.162 กับการ์ด 202.29.48.163 ซึ่งเป็น IP ที่อยู่ในวงเดียวกันคืออยู่ในวง 202.129.48.160/28
เมื่อเป็นแบบนี้วิธีการแก้ปัญหาก็สามารถทำได้ด้วยการแบ่ง subnet ออกเป็น 2 subnet คือแบ่งไอพีวงแลนที่ได้จาก ISP เป็น 2 วงแลนนั่นเอง โดยวงแลนวงที่หนึ่งจะให้เป็นของ External และวงที่สองเป็นของ DMZ ซึ่งสามารถแบ่งได้เป็นดังนี้ :จาก รูปข้างบนนี้ผมลองทำดูแล้วมีปัญหาครับ คือ Linux ไม่ยอมรับลักษณะที่มีการ์ดแลนด์ 2 การ์ดแต่มีค่า IP อยู่ในวงเดียวกันนั่นคือการ์ด 202.129.48.162 กับการ์ด 202.29.48.163 ซึ่งเป็น IP ที่อยู่ในวงเดียวกันคืออยู่ในวง 202.129.48.160/28
วงที่ 1 : 202.129.48.160/29 ซึ่งจะมีไอพีเป็น 8 ไอพีที่อยู่ในช่วง 202.129.48.160 ถึง 202.129.48.167 แต่จะใช้งานได้จริงเป็น 6 ip คือ 202.129.48.161 ถึง 202.129.48.166
วงที่ 2 : 202.129.48.168/29 ซึ่งจะมีไอพีเป็น 8 ไอพีที่อยู่ในช่วง 202.129.48.168 ถึง 202.129.48.175 แต่จะใช้งานได้จริงเป็น 6 ip คือ 202.129.48.169 ถึง 202.129.48.174และแล้วก็จะได้รูปแบบของการจัดวางเครือข่ายทั้งหมดใหม่เป็น ดังรูปที่ 4
รูปที่ 4 การทำไฟร์วอลล์แบบที่มี DMZ ที่ถูกต้อง
เพื่อ ความสะดวกในการทำ ipchains เราควรจัดทำตารางแอคเซสรูลขึ้นมาก่อน เพื่อแสดงความต้องการในการใช้งานว่าเราต้องการจะยอมรับหรือปฏิเสธแอปปลิเค ชันอันไหนบ้าง โดยความต้องการในที่นี้ขออ้างถึงรูปที่ 4 และได้ดังตารางต่อไปนี้ :
เพื่อ ความสะดวกในการทำ ipchains เราควรจัดทำตารางแอคเซสรูลขึ้นมาก่อน เพื่อแสดงความต้องการในการใช้งานว่าเราต้องการจะยอมรับหรือปฏิเสธแอปปลิเค ชันอันไหนบ้าง โดยความต้องการในที่นี้ขออ้างถึงรูปที่ 4 และได้ดังตารางต่อไปนี้ :
ลำดับ | Source | Destination | Service | Port No. | Action |
1 | internal | any | เป็นการทำ NAT (MASQ) | | forward |
2 | internal | any | ftp | 21 tcp | accept |
3 | internal | any | dns | 53 udp | accept |
4 | dmz | any | dns | 53 udp | accept |
5 | any | dmz | dns | 53 udp | accept |
6 | any | any | http | 80 tcp | accept |
7 | Internal | any | telnet | 23 tcp | accept |
8 | any (external) | internal | telnet | 23 tcp | reject |
9 | any | any | smtp | 25 tcp | accept |
10 | internal | any | pop3 | 110 tcp | accept |
11 | Intenal | any | imap | 143 tcp | accept |
12 | Internal | any | https | 443 tcp | accept |
13 | Internal | any | ping | icmp | accept |
14 | ไม่ใช่ Internal | any | webcache (proxy) | 8080 tcp | reject |
15 | any (external) | dmz | ping | icmp | reject |
16 | any | any | tcp port 0-1023 | 0-1023 tcp | reject |
17 | any | any | tcp Network File System (NFS) | 2049 tcp | reject |
18 | any | any | udp port 0-1023 | 0-1023 udp | reject |
19 | any | any | udp Network File System (NFS) | 2049 udp | reject |
20 | internal | any | ดักจับโฮสต์ภายในที่ติดโปรแกรม SubSeven | 2773 tcp | reject |
21 | internal | any | ดักจับโฮสต์ภายในที่ติดโปรแกรม SubSeven | 6771 tcp | reject |
22 | internal | any | ดักจับโฮสต์ภายในที่ติดโปรแกรม SubSeven | 6713 tcp | reject |
23 | internal | any | ดักจับโฮสต์ภายในที่ติดโปรแกรม SubSeven | 7215 tcp | reject |
24 | internal | any | ดักจับโฮสต์ภายในที่ติดโปรแกรม SubSeven | 27374 tcp | reject |
25 | internal | any | ดักจับโฮสต์ภายในที่ติดโปรแกรม SubSeven | 27573 tcp | reject |
26 | internal | any | ดักจับโฮสต์ภายในที่ติดโปรแกรม SubSeven | 54283 tcp | reject |
27 | any | dmz | x windows system | 6000-6009 tcp | reject |
28 | any | dmz | X Font Service | 7100 tcp | reject |
29 | intenal | any | ดักจับโฮสต์ภายในที่ติดโปรแกรม Back Orifice 2000 | 8787 tcp | reject |
30 | internal | any | ดักจับโฮสต์ภายในที่ติดโปรแกรม Back Orifice 2000 | 54320-54321 | reject |
2:#ipchains -A input -s 192.168.1.0/24 -d 0/0 21 -p tcp -y -j ACCEPT
3.:#ipchains -A input -s 192.168.1.0/24 -d 0/0 53 -p udp -j ACCEPT
4:#ipchains -A input -s 202.129.48.168/29 -d 0/0 53 -p udp -j ACCEPT
5:#ipchains -A input -s 0/0 -d 202.129.48.168/29 53 -p udp -j ACCEPT
6:#ipchains -A input -s 0/0 -d 0/0 80 -p tcp -y -j ACCEPT
7:#ipchains -A input -s 192.168.1.0/24 -d 0/0 23 -p tcp -y -j ACCEPT
8:#ipchains -A input -s 0/0 -d 202.129.48.168/29 23 -p tcp -y -j REJECT
9:#ipchains -A input -s 0/0 -d 0/0 25 -p tcp -y -j ACCEPT
10:#ipchains -A input -s 192.168.1.0/24 -d 0/0 110 -p tcp -y -j ACCEPT
11:#ipchains -A input -s 192.168.1.0/24 -d 0/0 143 -p tcp -y -j ACCEPT
12:#ipchains -A input -s 192.168.1.0/24 -d 0/0 443 -p tcp -y -j ACCEPT
13:#ipchains -A input -s 192.168.1.0/24 -d 0/0 -p icmp --icmp-type ping -j ACCEPT
14: #ipchains -A input -s ! 192.168.1.0/24 -d 0/0 8080 -p tcp -y -j REJECT
15:#ipchains -A input -s 0/0 -d 202.129.48.168/29 -p icmp --icmp-type ping -j REJECT
16:#ipchains -A input -s 0/0 -d 0/0 0:1023 -p tcp -y -j REJECT
17:#ipchains -A input -s 0/0 -d 0/0 2049 -p tcp -y -j REJECT
18:#ipchains -A input -s 0/0 -d 0/0 0:1023 -p udp -j REJECT
19:#ipchains -A input -s 0/0 -d 0/0 2049 -p udp -j REJECT
20:#ipchains -A input -s 192.168.1.0/24 -d 0/0 2773 -p tcp -y -j REJECT
21:#ipchains -A input -s 192.168.1.0/24 -d 0/0 6771 -p tcp -y -j REJECT
22:#ipchains -A input -s 192.168.1.0/24 -d 0/0 6713 -p tcp -y -j REJECT
23#ipchains -A input -s 192.168.1.0/24 -d 0/0 7215 -p tcp -y -j REJECT
24:#ipchains -A input -s 192.168.1.0/24 -d 0/0 27374 -p tcp -y -j REJECT
25:#ipchains -A input -s 192.168.1.0/24 -d 0/0 27573 -p tcp -y -j REJECT
26:#ipchains -A input -s 192.168.1.0/24 -d 0/0 54283 -p tcp -y -j REJECT
27:#ipchains -A input -s 0/0 -d 202.129.48.168/29 6000:6009 -p tcp -y -j REJECT
28:#ipchains -A input -s 0/0 -d 202.129.48.168/29 7100 -p tcp -y -j REJECT
29:#ipchains -A input -s 192.168.0.1/24 -d 0/0 8787 -p tcp -y -j REJECT
30:#ipchains -A input -s 192.168.0.1/24 -d 0/0 54320:54321 -p udp -j REJECT
:
ความหมายแต่ละบรรทัด:
1.ทำ NAT ให้เครือข่ายภายในเพื่อจะให้สามารถออกสู่เครือข่ายภายนอกได้
2.อนุญาตให้เครือข่ายภายใน ftp ไปที่ไหนก็ได้
3.อนุญาตให้เครือข่ายภายในใช้ DNS ของที่ไหนก็ได้
4.อนุญาต ให้ DMZ ไปใช้ DNS ของที่ไหนก็ได้ ซึ่งตรงนี้เป็นการอนุญาตให้ทั้งเครือข่าย จริง ๆ แล้วอาจจะอนุญาตให้เฉพาะ Proxy Server กับ DNS Sever ก็พอแล้ว โดยให้ระบุ IP address ของ Server ไปได้เลย นั่นคือต้องใช้คำสั่งนี้สองบรรทัดนะ
5.อนุญาตให้ต้นทางที่ไหนก็ได้มาใช้ DNS ใน DMZ ได้ ซึ่งไอพีของปลายทางสามารถจะระบุเฉพาะ IP ของ DNS Server ไปเลยก็ได้
6.อนุญาตให้ใช้ http ไม่ว่าจะเป็นต้นทางและปลายทางที่ไหน
7.อนุญาตให้เครือข่ายภายในสามารถจะ telnet ไปที่ไหนก็ได้
8.ไม่ อนุญาตให้ต้นทางที่ไหนก็ได้ telnet เข้ามา DMZ ได้ แต่เมื่อย้อนไปดูข้อ 7 ก็สรุปว่าอนุญาตให้เฉพาะเครือข่ายภายในเท่านั้นที่ telnet เข้า DMZ ได้
9.อนุญาตให้ต้นทางที่ไหนสามารถใช้ smtp ที่ปลายทางที่ไหนก็ได้
10.อนุญาตให้เครือข่ายภายในไปใช้ pop3 ที่ปลายทางที่ไหนก็ได้
11.อนุญาตให้เครือข่ายภายในไปใช้ imap ณ ปลายทางที่ไหนก็ได้
12.อนุญาตให้เครือข่ายภายในไปใช้ https ณ ปลายทางที่ไหนก็ได้
13.อนุญาตให้เครือข่ายภายใน ping ไปที่ไหนก็ได้
14.ไม่อนุญาตให้เครือข่ายที่นอกเหนือจากเครือข่ายภายในสามารถใช้งาน Proxy Server ได้
15.ไม่ อนุญาตให้ทุกที่ ping เข้ามาใน DMZ แต่เมื่อย้อนไปดูข้อ 13 แล้ว สรุปเป็นว่าอนุญาตให้เฉพาะเครือข่ายภายในเท่านั้นที่ ping เข้า dmz ได้
16.ห้ามการใช้งานที่พอร์ต 0-1023 tcp ไม่ว่าจะเป็นต้นทางและปลายทางที่ไหน แต่จะอนุญาตให้เฉพาะกฎข้อก่อนหน้านี้เท่านั้น
17.ห้ามการใช้งาน tcp Network File System (NFS) ไม่ว่าจะเป็นต้นทางและปลายทางที่ไหน
18.ห้ามการใช้งานที่พอร์ต 0-1023 udp ไม่ว่าจะเป็นต้นทางและปลายทางที่ไหน แต่จะอนุญาตให้เฉพาะกฎข้อก่อนหน้านี้เท่านั้น
19.ห้ามการใช้งาน udp Network File System (NFS) ไม่ว่าจะเป็นต้นทางและปลายทางที่ไหน
20-26 ดักจับโฮสต์ภายในที่ติดโปรแกรม SubSeven
27.ห้ามต้นทางที่ไหนก็แล้วแต่ ติดต่อเข้าไปยัง x windows system ของ DMZ
28.ไม่อนุญาตให้ใช้งาน tcp พอร์ต 7100 (X Font Service) ไม่ว่าจะเป็นต้นทางและปลายทางที่ไหน
29-30 ดักจับโฮสต์ภายในที่ติดโปรแกรม Back Orifice 2000
ที่มา http://www.tkc.ac.th/osunun/technology/linux/gateway_firewall.html
0 comments:
Post a Comment