เตือนไว้ก่อนตรงนี้เลยนะครับ คำสั่งนี้สำหรับ 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 อะไรเพิ่มแบบอัตโนมัติ เพื่อให้รับส่งข้อมูลได้ตามปกติครับ