ติดตั้ง shorewall บน ubuntu

จาก Wiki Opensource
รุ่นปรับปรุงเมื่อ 11:30, 19 พฤศจิกายน 2555 โดย Wiboon.w (พูดคุย | เรื่องที่เขียน)
(ต่าง) ←รุ่นปรับปรุงก่อนหน้า | รุ่นล่าสุด (ต่าง) | รุ่นปรับปรุงถัดไป→ (ต่าง)

บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 19-11-2555

บันทึกนี้ดูแลโดย WIBOON
บันทึกนี้เคยดูแลโดย WIPAT


  • ทดสอบกับ ubuntu 12.04, 10.04, 8.04
  • เป็น firewall สำหรับ server ที่มี LAN card เพียงใบเดียว
  • ต้นฉบับ shorewall อยู่ที่ http://www.shorewall.net


  1. ติดตั้งโปรแกรม shorewall ด้วยคำสั่ง sudo apt-get install shorewall

  2. สร้างแฟ้ม /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

  3. สร้างแฟ้ม /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

  4. สร้างแฟ้ม /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

  5. สร้างแฟ้ม /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

  6. ตรวจสอบ/แก้ไขแฟ้ม /etc/shorewall/shorewall.conf ว่าเปิดการทำงานแล้ว
    ดูที่บรรทัดตัวแปรมีว่า STARTUP_ENABLED=Yes

    และตรวจสอบ/แก้ไขแฟ้ม /etc/default/shorewall ว่าเปิดการทำงานแล้ว
    ดูที่บรรทัดตัวแปรมีว่า startup=1

    เสร็จแล้วก็สั่งทำงานด้วยคำสั่ง sudo /etc/init.d/shorewall start

  7. ตัวอย่างการปรับแต่งอนุญาติให้เข้าถึง 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

  8. หากต้องการให้ 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

  9. หากต้องการอนุญาติทำการ mulicast ได้ ให้แก้ไขแฟ้ม /etc/shorewall/shorewall.conf
    ตั้งค่าตัวแปรเป็นว่า MULTICAST=Yes
    แก้ไขเสร็จแล้ว สั่งให้ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/shorewall force-reload