การติดตั้ง internet gateway + NAT ด้วยโปรแกรม Shorewall
วิธีติดตั้ง internet gateway ด้วยโปรแกรม Shorewall
*** แหล่งข้อมูลต้นฉบับ shorewall คือ http://www.shorewall.net
- ตัวอย่างข้อกำหนดที่จัดทำ
- PC นี้มี Lan card 2 ใบ
- Lan card ใบแรกเป็น eth0 หมายเลข IP 172.20.0.1
ต่อเชื่อมอยู่กับเครือข่ายอินเทอร์เนตภายนอก
ตั้งชื่อเครือข่ายว่า net
- Lan card ใบที่สองเป็น eth1 หมายเลข IP 10.0.0.1
ต่อเชื่อมอยู่กับเครือข่ายอินเทอร์เนตภายใน
ตั้งชื่อเครือข่ายว่า loc
- ต้องการให้ PC ภายในเครือข่ายภายใน(loc)
สามารถต่อออกไปเชื่อมกับเครือข่ายภายนอก(net)ได้
โดยใช้วิธี NAT ที่สวมรอยใช้หมายเลข IP 172.20.0.1 ของ eht0
เชื่อมออกไปหาเครือข่ายภายนอกอื่นๆเพียงเลขเดียว
- ติดตั้งโปรแกรม shorewall ด้วยคำสั่ง
yum install shorewall
- ต้องมีการแก้ไขแฟ้มใน /etc/shorewall เพื่อให้เหมาะสมกับการใช้งาน
- ตรวจสอบหรือแก้ไขแฟ้มชื่อ /etc/shorewall/zones ให้มี zone ชื่อ net และ loc
***โดย default ถ้าแฟ้มนี้จะมี zone ชื่อ net และ loc อยู่แล้ว ไม่ต้องเพิ่ม
***ชื่อ Zone ว่า dmz ตั้งเผื่อเกินไว้ ไม่มีผลกระทบต่อการทำงาน
ถ้าเป็นดังตัวอย่าง ก็ไม่ต้องแก้ไขอะไร
#ZONE DISPLAY COMMENTS
fw firewall
loc ipv4
net ipv4
dmz ipv4
#LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE
- แก้ไขแฟ้มชื่อ /etc/shorewall/interfaces ให้มีค่าดังนี้
- interface eth0 เป็นของ zone ชื่อ net
- interface eth1 เป็นของ zone ชื่อ loc
***การปรับแก้ไขข้อมูลต้องอยู่บรรทัดก่อนบรรทัดสุดท้ายที่ขึ้นต้นว่า #LAST LINE
ดังตัวอย่าง
#ZONE INTERFACE BROADCAST OPTIONS
net eth0 detect
loc eth1 detect
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
*** หมายเหต ถ้าเป็น dhcp server ด้วย ให้เพิ่มคำว่า dhcp เข้าไปในส่วนของ OPTIONS สำหรับ interface ใบนั้น เช่นให้ eth1 เป็น dhcp server ตามตัวอย่าง
loc eth1 detect dhcp
- แก้ไขแฟ้มชื่อ /etc/shorewall/policy ให้มีค่าดังนี้
- อนุญาติให้ PC ตัวนี้ที่เป็น firewall(fw) เชื่อมต่อได้ทุกเครือข่าย
- อนุญาติให้ PC ในเครือข่าย loc เชื่อมต่อกับไปหาทุกเครือข่ายได้
- ไม่อนุญาติให้ PC ในเครือข่าย net ติดต่อกับเครือข่ายอื่น
- การติดต่อในลักษณะอื่นๆจากที่กล่าวมา จะถูกปฏิเสธทิ้งหมด
ให้ตรวจสอบและแก้ไขเพิ่มเติมตามความจำเป็น
***โปรดระวังตอนเติมข้อความว่า fw all ACCEPT
ต้องเติมให้เป็นเงื่อนไขลำดับแรกสุดก่อนเงื่อนไขอื่นๆด้วย
***การปรับแก้ไขข้อมูลต้องอยู่บรรทัดก่อนบรรทัดสุดท้ายที่ขึ้นต้นว่า #LAST LINE
ดังตัวอย่าง
#SOURCE DEST POLICY LOG LIMIT:BURST
# LEVEL
fw all ACCEPT
loc all ACCEPT
net all DROP info
#
# THE FOLLOWING POLICY MUST BE LAST
#
all all REJECT info
#LAST LINE -- DO NOT REMOVE
- แก้ไขแฟ้มชื่อ /etc/shorewall/masq ให้มีค่าดังนี้
- ให้ PC ในเครือข่าย loc บน interface eth0 สวมรอยหมายเลข IP ของเครือข่าย net บน interface eth0
***การปรับแก้ไขข้อมูลต้องอยู่บรรทัดก่อนบรรทัดสุดท้ายที่ขึ้นต้นว่า #LAST LINEดังตัวอย่าง
#INTERFACE SUBNET ADDRESS
eth0 eth1
#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE
- ในการติดตั้งครั้งแรก
- สำหรับ shorewall เวอร์ชั่น 2.2.x และ 3.x
ต้องแก้ไขแฟ้ม /etc/shorewall/shorewall.conf
ตั้งค่า STARTUP_ENABLED เปลี่ยนจาก no เป็น yes ดังตัวอย่าง
STARTUP_ENABLED=yes
- สั่งให้ shorewall ทำงานทุกครั้งที่บูทเครื่องด้วยคำสั่ง
chkconfig shorewall on
- ตรวจสอบและแก้ไขแฟ้ม /etc/shorewall/shorewall.conf
ว่ามีการกำหนดให้มีการ ip forward
*** โดย default จะกำหนดค่าให้ทำงานคุณสมบัตินี้อยู่แล้ว ดังตัวอย่าง
IP_FORWARDING=On
- สั่งให้ทำงานด้วยคำสั่งว่า
servcie shorewall start
Starting shorewall: [ OK ]
- สั่งให้ shorewall หยุดทำงานด้วยคำสั่ง
service shorewall stop
มีผลทำให้ shorewall หยุดทำงานเท่านั้น
ไม่สามารถเคลียร์ firewall ที่ทำงานค้างอยู่ได้
ต้องเคลียร์ firewall ที่ตกค้างอยู่ด้วยคำสั่ง
service shorewall clear
Restarting shorewall: [ OK ]
- ข้อกำหนดอนุญาติใช้งานตามลักษณะ protocol ต่างๆ
ให้แก้ไขแฟ้ม /etc/shorewall/rules ดังตัวอย่าง
- อนุญาติให้ทุก ip สามารถติดต่อกับ server นี้ ด้วยคำสั่ง ping
ACCEPT all fw icmp 8
- อนุญาติให้บาง ip สามารถติดต่อกับ server นี้ ผ่าน sshd (tcp port 22)
ACCEPT net:10.0.2.0/24 fw tcp 22
ACCEPT net:172.16.4.0/24 fw tcp 22
- หากแก้ไขแฟ้มต่างๆใน /etc/shorewall แล้ว ให้ระบบอ่านค่าที่ปรับใหม่ได้ด้วยคำสั่ง
service shorewall reload
Restarting shorewall: [ OK ]
อ้างอิงจาก : Research and Development Division psu