ทำความรู้จัก lokkit เครื่องมือจัดการ firewall แบบง่ายๆ บน centos 6

เตือนไว้ก่อนตรงนี้เลยนะครับ คำสั่งนี้สำหรับ default centos 6 installation ที่ยังไม่มีการแก้ไข iptables ใดๆ ทั้งสิ้นเท่านั้น
หากมีการแก้ไข iptables ไปก่อนหน้านี้แล้ว การใช้งานคำสั่งนี้จะทำให้ iptables กลับไปสู่สถานะเหมือนตอนติดตั้งใหม่ๆ นะครับ

แล้วก็คำสั่งนี้ใช้บน centos 5 ได้(ก็จริง) แต่คำสั่งมันมีบั๊ก ไม่แนะนำให้ใช้งานจริงครับ

=================================

โดยปกติแล้ว centos 6 หลังจากติดตั้งใหม่ๆ จะเปิด port มาให้แค่ port 22 เท่านั้น กรณีที่เราต้องการเปิด port อะไรก็ตามเพิ่มจะทำให้เราต้องเขียน rule เพิ่มเติมลงไปเอง
(หรือถ้าขี้เกียจมากๆ ก็ปิด iptables กันเลยก็มี… ซึ่งไม่แนะนำให้ทำแบบนั้นเท่าไหร่ครับ)

วิธีดูว่า server ของเราเปิด port อะไรอยู่บ้าง สามารถดูจาก iptables ได้โดยตรงโดยใช้คำสั่งต่อไปนี้ครับ

iptables -nvL

และ

ip6tables -nvL

ถ้าลง OS ใหม่ๆ เลยก็จะเจออะไรประมาณนี้

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
456M 453G ACCEPT all – * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
357 41782 ACCEPT icmp – * * 0.0.0.0/0 0.0.0.0/0
8448 562K ACCEPT all – lo * 0.0.0.0/0 0.0.0.0/0
2960 177K ACCEPT tcp – * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
8900 667K REJECT all – * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

  • ตัวเลขด้านหน้าเป็นจำนวน packet กับปริมาณข้อมูลที่ตรงกับ rule นั้นๆ ครับ

การเปิด port ใหม่นั้น หากแม่น iptables อยู่แล้วก็ใช้ iptables -I INPUT 5 -p tcp --dport 80 -j ACCEPT ได้เลย (แก้เลข 80 เป็นเลข port ที่ต้องการ) แต่ถ้าเอาสะดวกกว่า (ไม่ต้องสั่งสำหรับ ipv4 และ ipv6) ก็สามารถใช้คำสั่ง lokkit ได้ครับ ดังนี้

lokkit -p http:tcp

หรือ

lokkit -s http

โดยรูปแบบคำสั่งที่ใช้จะอยู่ในรูปแบบดังนี้ครับ

lokkit -p <port>:<protocol>

หรือ

lokkit -s <service>

ซึ่งสามารถดูรายการ service ที่รองรับได้ด้วยคำสั่ง lokkit --list-services ครับ

หาก port เป็น port แปลกๆ ที่ไม่เป็นที่รู้จัก เช่นเปิด port ขึ้นมาใหม่สำหรับ service ของตัวเอง หรือมีการเปลี่ยน port ไปใช้ port ที่ไม่ใช่ port ปกติของ service นั้นๆ ก็สามารถระบุเป็นเลข port ได้เลยเช่น

lokkit -p 2121:tcp

สำหรับ dns server แนะนำให้ระบุเป็น service เนื่องจากมีทั้ง tcp และ udp ครับ ทำให้ต้องสั่งหลายรอบ

lokkit -s dns

และหากต้องการเปิดหลายๆ port ด้วยการสั่งครั้งเดียวก็สามารถระบุเพิ่มไปได้ เช่น

lokkit -p 80:tcp -p 443:tcp


เพิ่มเติมสำหรับ FTP เนื่องจากการใช้งาน FTP จะต้องมี port สำหรับการรับส่ง data เพิ่มอีก แต่เราไม่ต้องการให้ iptables เปิด port ค้าง ก็สามารถใช้ความสามารถของ iptables ในการรองรับ ftp ได้ด้วย module ชื่อ ‘ip_conntrack_ftp’ ครับ โดยใช้ lokkit เพิ่ม module ลงไปดังนี้

lokkit --addmodule=ip_conntrack_ftp

จะทำให้เมื่อมีการใช้งาน FTP เข้ามาแล้ว iptables จะสามารถตรวจจับได้ว่าต้องเปิด port อะไรเพิ่มแบบอัตโนมัติ เพื่อให้รับส่งข้อมูลได้ตามปกติครับ

:slight_smile:

ไว้จะลองนะครับ ขอบคุณสำหรับความรู้ใหม่ครับ

ขอบคุณมากครับ:th_059_:

ขอบคุณมากครับ

โอ้ เจ๋งมากๆครับ ^^