Tuesday, October 25, 2011

DMZ คือ

knowledge
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 ซึ่งสามารถแบ่งได้เป็นดังนี้ :
วงที่ 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 และได้ดังตารางต่อไปนี้ :
ลำดับ
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
1:#ipchains -A forward -s 192.168.1.0/24 -d 0/0 -j MASQ
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

 
Design by GURU