ติดตั้ง shorewall บน ubuntu
- ทดสอบกับ ubuntu 12.04, 10.04, 8.04
- เป็น firewall สำหรับ server ที่มี LAN card เพียงใบเดียว
- ต้นฉบับ shorewall อยู่ที่ http://www.shorewall.net
- ติดตั้งโปรแกรม shorewall ด้วยคำสั่ง sudo apt-get install shorewall
- สร้างแฟ้ม /etc/shorewall/zones
หากเป็น ubuntu 10.04 ใช้คำสั่ง sudo cp /usr/share/doc/shorewall/examples/one-interface/zones /etc/shorewall
หากเป็น ubuntu 8.04 ใช้คำสั่ง sudo cp /usr/share/doc/shorewall-common/examples/one-interface/zones /etc/shorewall
ตัวอย่างข้อมูลในแฟ้ม
fw firewall
net ipv4
- สร้างแฟ้ม /etc/shorewall/interfaces
หากเป็น ubuntu 10.04 ใช้คำสั่ง sudo cp /usr/share/doc/shorewall/examples/one-interface/interfaces /etc/shorewall
หากเป็น ubuntu 8.04 ใช้คำสั่ง sudo cp /usr/share/doc/shorewall-common/examples/one-interface/interfaces /etc/shorewall
ตัวอย่างข้อมูลในแฟ้มคือ
net eth0 detect dhcp,tcpflags,logmartians,nosmurfs
- สร้างแฟ้ม /etc/shorewall/policy
หากเป็น ubuntu 10.04 ใช้คำสั่ง sudo cp /usr/share/doc/shorewall/examples/one-interface/policy /etc/shorewall
หากเป็น ubuntu 8.04 ใช้คำสั่ง sudo cp /usr/share/doc/shorewall-common/examples/one-interface/policy /etc/shorewall
ตัวอย่างข้อมูลในแฟ้มคือ
$FW net ACCEPT
net all DROP info
all all REJECT info
- สร้างแฟ้ม /etc/shorewall/rules
หากเป็น ubuntu 10.04 ใช้คำสั่ง sudo cp /usr/share/doc/shorewall/examples/one-interface/rules /etc/shorewall
หากเป็น ubuntu 8.04 ใช้คำสั่ง sudo cp /usr/share/doc/shorewall-common/examples/one-interface/rules /etc/shorewall
ตัวอย่างข้อมูลในแฟ้มคือ
Ping/REJECT net $FW
ACCEPT $FW net icmp
- ตรวจสอบ/แก้ไขแฟ้ม /etc/shorewall/shorewall.conf ว่าเปิดการทำงานแล้ว
ดูที่บรรทัดตัวแปรมีว่า STARTUP_ENABLED=Yes
และตรวจสอบ/แก้ไขแฟ้ม /etc/default/shorewall ว่าเปิดการทำงานแล้ว
ดูที่บรรทัดตัวแปรมีว่า startup=1
เสร็จแล้วก็สั่งทำงานด้วยคำสั่ง sudo /etc/init.d/shorewall start
- ตัวอย่างการปรับแต่งอนุญาติให้เข้าถึง server แก้ไขแฟ้ม /etc/shorewall/rules ดังนี้
# APCUPSD
ACCEPT net:192.168.5.0/24 fw tcp 3551,6666
# FTP
ACCEPT net:192.168.5.0/24 fw tcp 21
# IPP (CUPS)
ACCEPT net:192.168.5.0/24 fw tcp 631
# HTTP,HTTPS
ACCEPT net:192.168.5.0/24 fw tcp 80,443
# NFSD,PORTMAP,STATD,LOCKD,MOUNTD (ต้องระบุ port ของ rpc.statd,rpc.lockd,rpc.mountd ให้เป็น 4000-4002 ด้วย)
ACCEPT net:192.168.5.0/24 fw tcp 111,2049
ACCEPT net:192.168.5.0/24 fw udp 111,2049
ACCEPT net:192.168.5.0/24 fw tcp 4000:4002
ACCEPT net:192.168.5.0/24 fw udp 4000:4002
# PING
ACCEPT net:192.168.5.0/24 fw icmp 8
# Pykota
ACCEPT net:192.168.5.0/24 fw tcp 7654
# Radius
ACCEPT net:192.168.5.0/24 fw udp 1812,1813
# ssh
ACCEPT net:192.168.5.0/24 fw tcp 22
#TFTP
ACCEPT net:192.168.5.0/24 fw udp 69
# TRACEROUTE
ACCEPT all fw udp 33434:33443
# UDPCAST
ACCEPT net:192.168.5.0/24 fw udp 9000,9001
แก้ไขเสร็จแล้ว สั่งให้ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/shorewall force-reload
- หากต้องการให้ shorewall หยุดทำงาน ให้ใช้คำสั่งว่า sudo /etc/init.d/shorewall stop
ลองดูว่า shorewall หยุดทำงานจริงๆด้วยคำสั่ง sudo iptables -nL จะได้ผลข้อความประมาณว่า
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
แสดงว่า shorewll หยุดทำงานสมบูรณ์แล้ว
แต่หากยังหยุดไม่สมบูรณ์ ให้อาจต้องสั่งทำงานเพิ่มด้วยคำสั่งว่า sudo shorewall clear
- หากต้องการอนุญาติทำการ mulicast ได้ ให้แก้ไขแฟ้ม /etc/shorewall/shorewall.conf
ตั้งค่าตัวแปรเป็นว่า MULTICAST=Yes
แก้ไขเสร็จแล้ว สั่งให้ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/shorewall force-reload