Linux21

จาก Wiki Opensource

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

ดูแลโดย WIBOON


Linux 21: การติดตั้ง shorewall เพื่อทำเป็น firewall สำหรับ server


รายละเอียด

  • เป็นคำแนะนำเทคนิคการติดตั้ง firewall สำหรับ server ไม่ได้เพื่อสำหรับเป็น gateway
  • เทคนิคการป้องกันผู้บุกรุก server แบบพื้นฐานง่ายๆ คือให้ปิดทุก service ก่อน แล้วจึงเปิดเท่าที่จำเป็น
  • ลินุกซ์มีโปรแกรม iptables จัดการด้าน firewall อยู่แล้ว แต่คำสั่งใช้งานอาจยุ่งยากซับซ้อน
  • โปรแกรม shorewall เป็นเครื่องมือช่วยจัดการให้ใช้ iptables สะดวกขึ้น ด้วยการใช้วิธี config ที่อ่านเข้าใจง่ายกว่า iptables

ขั้นตอนปฏิบัติ

  1. ติดตั้งโปรแกรม shorewall ด้วยคำสั่ง
    sudo apt-get install shorewall
  2. สร้างแฟ้ม /etc/shorewall/zones ด้วยคำสั่ง
    sudo cp /usr/share/doc/shorewall/examples/one-interface/zones /etc/shorewall
  3. สร้างแฟ้ม /etc/shorewall/interfaces ด้วยคำสั่ง
    sudo cp /usr/share/doc/shorewall/examples/one-interface/interfaces /etc/shorewall
  4. สร้างแฟ้ม /etc/shorewall/policy ด้วยคำสั่ง
    sudo cp /usr/share/doc/shorewall/examples/one-interface/policy /etc/shorewall
  5. สร้างแฟ้ม /etc/shorewall/rules ด้วยคำสั่ง
    sudo cp /usr/share/doc/shorewall/examples/one-interface/rules /etc/shorewall
  6. แก้ไขแฟ้ม /etc/shorewall/shorewall.conf ว่าเปิดการทำงานแล้ว
    sudo nano /etc/shorewall/shorewall.conf
    ดูที่บรรทัดตัวแปรมีว่า STARTUP_ENABLED=Yes
  7. แก้ไขแฟ้ม /etc/default/shorewall ว่าเปิดการทำงานแล้ว
    sudo nano /etc/default/shorewall
    ดูที่บรรทัดตัวแปรมีว่า startup=1
  8. เสร็จแล้วก็สั่งทำงานด้วยคำสั่ง
    sudo /etc/init.d/shorewall start
  9. ตัวอย่างการปรับแต่งอนุญาตให้เข้าถึง server แก้ไขแฟ้ม /etc/shorewall/rules ดังนี้
    sudo nano /etc/shorewall/rules
    คัดลอกตัวอย่างข้างล่างนี้
    # HTTP,HTTPS
    ACCEPT net:10.168.5.0/24 fw tcp 80,443
    # PING
    ACCEPT all fw icmp 8
    # ssh
    ACCEPT net:10.168.5.0/24 fw tcp 22
    # TRACEROUTE
    ACCEPT all fw udp 33434:33443

  10. แก้ไขเสร็จแล้ว สั่งให้ทำงานใหม่ด้วยคำสั่ง
    sudo /etc/init.d/shorewall restart
  11. ตัวอย่างการปรับแต่งบล๊อคไม่ให้เข้าถึง server แก้ไขแฟ้ม /etc/shorewall/rules ดังนี้
    sudo nano /etc/shorewall/rules
    คัดลอกตัวอย่างข้างล่างนี้
    # ssh
    DROP net:10.168.5.21 fw tcp 22

    ไว้เหนือข้อความ
    # HTTP,HTTPS
    ACCEPT net:10.168.5.0/24 fw tcp 80,443

  12. แก้ไขเสร็จแล้ว สั่งให้ทำงานใหม่ด้วยคำสั่ง
    sudo /etc/init.d/shorewall restart


หากต้องการเลิกใช้ shorewall ชั่วคราว

  1. หากต้องการให้ 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 หยุดทำงานสมบูรณ์แล้ว
  2. แต่หากยังหยุดไม่สมบูรณ์ ให้อาจต้องสั่งทำงานเพิ่มด้วยคำสั่งว่า
    sudo shorewall clear