<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SpaLinux.com - สปาลีนุกซ์ &#187; Networking</title>
	<atom:link href="http://spalinux.com/category/networking/feed" rel="self" type="application/rss+xml" />
	<link>http://spalinux.com</link>
	<description>เพื่อชีวิตที่ผ่อนคลายของคนใช้ลีนุกซ์</description>
	<lastBuildDate>Sat, 12 May 2012 10:38:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>ตั้งเวลาเครื่องให้ตรงมาตรฐานด้วย NTP</title>
		<link>http://spalinux.com/2012/05/use-ntp-to-synchronize-time</link>
		<comments>http://spalinux.com/2012/05/use-ntp-to-synchronize-time#comments</comments>
		<pubDate>Mon, 07 May 2012 15:17:08 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Linux Installation]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ntp]]></category>
		<category><![CDATA[synchronize]]></category>
		<category><![CDATA[time]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=2328</guid>
		<description><![CDATA[จากบทความ เปลี่ยนวันเวลาบนลีนุกซ์ด้วยคำสั่ง date นั้น เวลาที่ตั้งอาจคลาดเคลื่อนกับเวลามาตรฐานไปพอสมควร อาจผิดเป็นหน่วยนาที หรือวินาที ซึ่งบางระบบอาจไม่สามารถยอมรับความคลาดเคลื่อนขนาดนี้ได้ วิธีที่ดีที่สุดที่จะตั้งเวลาให้ตรงกับมาตรฐานจริงๆ คือต้องใช้ NTP NTP ย่อมาจาก Network Time Protocol ใช้ในการปรับเวลาของเครื่องต่างๆ ที่อยู่บนเครือข่ายให้มีเวลาตรงกันตลอดเวลา โดยเครื่องจะรัน ntpd เพื่อใช้เทียบเวลากับเซิร์ฟเวอร์ที่คอนฟิกไว้อยู่เรื่อยๆ ตลอดเวลา ซึ่งถ้าเวลาไม่ตรง โปรแกรม ntpd จะค่อยๆ ปรับเวลาของเครื่อง client ให้ใกล้เคียงเรื่อยๆ จนตรงกับ server ในที่สุด ในการใช้งาน จะมีวิธีการอ้างอิงเวลาเป็นลำดับขั้นที่เรียกว่า stratum โดยบนเครื่องคอมพิวเตอร์ค่าเริ่มต้นจะตั้งแต่ 1 ซึ่งถือเป็นเวลามาตรฐานกลาง เครื่องที่ทำหน้าที่เป็น stratum 1 นั้น จะมีกระบวนการเทียบเวลาจากอุปกรณ์ชนิดอื่นๆ ที่ไม่ใช่คอมพิวเตอร์  เช่น GPS เป็นต้น อุปกรณ์จำพวกนี้ ถือว่าเป็น stratum 0 ตอนคอนฟิก ถ้าเราไม่มีอุปกรณ์ที่เป็น stratum 0 [...]]]></description>
			<content:encoded><![CDATA[<p>จากบทความ<a href="http://spalinux.com/2012/04/change-linux-date-time-using-command-date"> เปลี่ยนวันเวลาบนลีนุกซ์ด้วยคำสั่ง date</a> นั้น เวลาที่ตั้งอาจคลาดเคลื่อนกับเวลามาตรฐานไปพอสมควร อาจผิดเป็นหน่วยนาที หรือวินาที ซึ่งบางระบบอาจไม่สามารถยอมรับความคลาดเคลื่อนขนาดนี้ได้</p>
<p>วิธีที่ดีที่สุดที่จะตั้งเวลาให้ตรงกับมาตรฐานจริงๆ คือต้องใช้ NTP<br />
<span id="more-2328"></span></p>
<p>NTP ย่อมาจาก Network Time Protocol ใช้ในการปรับเวลาของเครื่องต่างๆ ที่อยู่บนเครือข่ายให้มีเวลาตรงกันตลอดเวลา</p>
<p>โดยเครื่องจะรัน ntpd เพื่อใช้เทียบเวลากับเซิร์ฟเวอร์ที่คอนฟิกไว้อยู่เรื่อยๆ ตลอดเวลา ซึ่งถ้าเวลาไม่ตรง โปรแกรม ntpd จะค่อยๆ ปรับเวลาของเครื่อง client ให้ใกล้เคียงเรื่อยๆ จนตรงกับ server ในที่สุด</p>
<p>ในการใช้งาน จะมีวิธีการอ้างอิงเวลาเป็นลำดับขั้นที่เรียกว่า stratum โดยบนเครื่องคอมพิวเตอร์ค่าเริ่มต้นจะตั้งแต่ 1 ซึ่งถือเป็นเวลามาตรฐานกลาง เครื่องที่ทำหน้าที่เป็น stratum 1 นั้น จะมีกระบวนการเทียบเวลาจากอุปกรณ์ชนิดอื่นๆ ที่ไม่ใช่คอมพิวเตอร์  เช่น GPS เป็นต้น อุปกรณ์จำพวกนี้ ถือว่าเป็น stratum 0</p>
<p>ตอนคอนฟิก ถ้าเราไม่มีอุปกรณ์ที่เป็น stratum 0 แล้ว เราก็ต้องต่ออินเตอร์เน็ต เพื่ออ้างอิง (sync) เวลามาจากเครื่องที่เป็น stratum 1 และเมื่อเวลาตรงกันแล้ว เครื่องของเราก็ จะถือว่าเป็น stratum 2 แล้วถ้าเครื่องที่มาอ้างอิงเวลาจากเครื่องนี้อีกที ก็จัดเป็น stratum 3, 4 เรื่อยๆ</p>
<p>ประโยชน์ในการจัดเป็น stratum คือจะลดโหลดที่เกิดขึ้น คือแทนที่ทุกเครื่องจะไปอ้างอิง (sync) เวลามาจาก stratum 1 ก็กระจายโหลดไป ทั้งลดโหลดบน stratum 1 เอง แล้วก็ประหยัด bandwidth อินเตอร์เน็ตด้วย</p>
<p>คำแนะนำ : ในทางปฎิบัติ แนะนำให้คอนฟิก NTP บนเครื่องเดียวหรือสองเครื่อง ที่ต่ออินเตอร์เน็ตได้ ให้ไปเทียบเวลาจาก  stratum 1 ส่วนเครื่องอื่นๆ ในสำนักงานของเรา ก็คอนฟิกเพื่อมาเทียบเวลาจากเครื่องนี้แทน หรืออาจจะมี ลำดับ 3, 4 ต่อไปอีกก็ได้ แล้วแต่จำนวนเครื่องที่มีอยู่ เช่น มีเครื่องที่ทำหน้าที่ stratum 2 ที่ต่ออินเตอร์เน็ตอยู่ 2 เครื่อง แล้วมี stratum 3 อีกจำนวนหนึ่งของแต่ละฝ่าย ส่วนเครื่อง client ที่อยู่ในฝ่ายก็คอนฟิกให้เทียบเวลาจาก stratum 3 อีกที ก็จะเป็น statum 4</p>
<p>โดยดีฟอลต์แล้ว NTP จะติดตั้งมาพร้อมกับ CentOS 6 และจะมีคอนฟิกไฟล์หลักคือ /etc/ntp.conf ในคอนฟิกจะอ้างอิงเวลากับเซิร์ฟเวอร์จำนวน 3 ตัว พร้อมใช้งานได้เลย หากเครื่องเราต่ออินเตอร์เน็ตได้</p>
<p>ตัวอย่างคอนฟิก NTP ที่ติดตั้งมากับ CentOS 6.2</p>
<pre>[root@cent6 ~]# <strong>cat /etc/ntp.conf</strong>
# For more information about this file, see the man pages
# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).
...
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org
...</pre>
<p>หากเครื่องที่เราจะคอนฟิกไม่สามารถเชื่อมต่ออินเตอร์เน็ตได้ หรือต้องการแก้ไข NTP server ให้ชี้ไปยัง IP อื่น ก็สามารถทำได้โดยลบคอนฟิก server ทั้งสามบรรทัดนี้ (อาจใส่เป็นเครื่องหมาย # นำหน้าคอนฟิก) แล้วเพิ่มคอนฟิก server ตามด้วย IP ของเซิร์ฟเวอร์ที่เราต้องการไป sync ด้วย เช่น</p>
<pre>#server 0.centos.pool.ntp.org
#server 1.centos.pool.ntp.org
#server 2.centos.pool.ntp.org
server 192.168.1.1</pre>
<p>&nbsp;</p>
<h4>รันเซอร์วิส ntpdate, ntp</h4>
<p>หลังจากแก้ไขคอนฟิก ขั้นต่อไปคือการรัน service โดยจะมี ntpdate และ ntpd ที่ต้องรัน</p>
<p>ntpdate จะเป็นเซอร์วิสที่รันเพื่อปรับเวลาของเครื่องให้ใกล้เคียงกับเซิร์ฟเวอร์ที่เราคอนฟิกไว้ มากที่สุด จะทำให้เวลาของเครื่องเปลี่ยนไปทันที เหมือนกับคำสั่ง date</p>
<p>รันเซอร์วิส ntpdate</p>
<pre>[root@cent6 ~]# <strong>service ntpdate start</strong>
ntpdate: Synchronizing with time server:                   [  OK  ]</pre>
<p>ส่วนการปรับโดยละเอียดจะเป็นหน้าที่ของ ntpd ซึ่งจะรันเป็น daemon อยู่ตลอดเวลา ค่อยๆ ปรับเวลาให้ตรงกับ server ซึ่งบางครั้งต้องใช้เวลานานพอสมควร</p>
<p>รันเซอร์วิส ntpd เพื่อสตาร์ต ntpd</p>
<pre>[root@cent6 ~]# <strong>service ntpd start</strong>
Starting ntpd:                                             [  OK  ]</pre>
<p>&nbsp;</p>
<h4>ตรวจสอบสถานะการ sync</h4>
<p>เราสามารถใช้คำสั่ง ntpstat เพื่อตรวจสอบสถานะการ ลำดับ stratum เท่าไร</p>
<pre>[root@cent6 ~]# <strong>ntpstat</strong>
unsynchronised
  time server re-starting
   polling server every 64 s</pre>
<p>ถ้าขึ้น &#8220;unsynchronised&#8221; แปลว่าเวลาของเครื่องเรายังไม่ตรง</p>
<p>เมื่อเวลาผ่านไปซักพัก  เครื่องก็น่าจะสามารถปรับเวลาให้ตรงได้แล้ว อาจใช้ tail -f ดูไฟล์ /var/log/messages</p>
<p>เมื่อ sync ได้แล้วจะมีข้อความ &#8220;synchronized to &#8230;&#8221;  พร้อมรายงาน IP และ stratum ของเซิร์ฟเวอร์ที่ sync ได้ ตัวอย่างเช่น</p>
<pre>[root@cent6 ~]# <strong>tail -f /var/log/messages</strong>
May  7 21:14:14 cent6 ntpd[1813]: synchronized to 203.158.118.2, stratum 2
May  7 21:14:14 cent6 ntpd[1813]: kernel time sync status change 2001</pre>
<p>ลองใช้สั่ง ntpstat ดูสถานะอีกครั้ง</p>
<pre>[root@cent6 ~]# <strong>ntpstat</strong>
synchronised to NTP server (203.158.118.2) at stratum 3
   time correct to within 655 ms
   polling server every 64 s</pre>
<p>ผลลัพธ์ที่ได้ หมายความว่าเครื่องเซิร์ฟเวอร์ของเรา มีเวลาตรง (sync) กับเซิร์ฟเวอร์ 203.158.118.2 ที่มี stratum 3 แล้ว</p>
<p>&nbsp;</p>
<h4>เปิดเซอร์วิสตอนบู๊ตเครื่อง</h4>
<p>หลังจากทดสอบเรียบร้อยแล้ว ใช้คำสั่ง chkconfig เพื่อเปิดเซอร์วิส ntpdate และ ntpd ตอนบู๊ตเครื่องด้วย</p>
<pre>[root@cent6 ~]# <strong>chkconfig ntpdate on</strong>
[root@cent6 ~]# <strong>chkconfig ntpd on</strong>

[root@cent6 ~]# <strong>chkconfig --list | grep ntp</strong>
ntpd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
ntpdate         0:off   1:off   2:on    3:on    4:on    5:on    6:off</pre>
<p>&nbsp;</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://spalinux.com/2008/08/configure_ntp_on_linux">คอนฟิก NTP บนลินุกซ์</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/05/use-ntp-to-synchronize-time/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>แก้ไขคอนฟิก firewall ด้วย system-config-firewall</title>
		<link>http://spalinux.com/2012/04/configure-firewall-using-system-config-firewall</link>
		<comments>http://spalinux.com/2012/04/configure-firewall-using-system-config-firewall#comments</comments>
		<pubDate>Sun, 08 Apr 2012 16:46:12 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[Linux Installation]]></category>
		<category><![CDATA[Linux Shell]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=2032</guid>
		<description><![CDATA[จากบทความ แก้ไขคอนฟิก firewall บนลีนุกซ์ด้วย iptables ผู้ที่จะแก้ไขคอนฟิกแบบนี้ได้ ต้องมีความรู้ทางด้านเน็ตเวิร์ก มีความเข้าใจเรื่อง firewall รวมทั้งต้องทราบว่าเซอร์วิสที่รันใช้พอร์ตอะไร ซึ่งอาจทำให้เกิดความยากสำหรับผู้เริ่มต้น เพราะไม่รู้ว่าจะเพิ่ม หรือลบ rule อย่างไร ใส่ออปชั่นอะไรบ้าง สำหรับผู้เริ่มต้นหัดใช้ แนะนำให้ใช้โปรแกรม system-config-firewall เพื่อช่วยแก้ไข rule ของ firewall บนลีนุกซ์ โปรแกรม system-config-firewall มีสองเวอร์ชั่น ทำงานได้เหมือนกัน system-config-firewall รันเป็น GUI บน X Window เช่น GNOME system-config-firewall-tui รันบนหน้าจอคอนโซล จะเป็นแบบเมนูให้เลือก ในที่นี้จะแสดงวิธีการใช้แบบรันบนหน้าจอคอนโซล เพื่อเปรียบเทียบสิ่งที่โปรแกรม system-config-firewall จะแก้ไข ก่อนรันคำสั่ง ใช้คำสั่ง iptables -L เพื่อแสดงคอนฟิก firewall ที่ทำงานอยู่ [root@cent6 ~]# iptables -L -v -n --line-numbers [...]]]></description>
			<content:encoded><![CDATA[<p>จากบทความ <a href="http://spalinux.com/2012/04/configure-linux-firewall-by-iptables">แก้ไขคอนฟิก firewall บนลีนุกซ์ด้วย iptables</a> ผู้ที่จะแก้ไขคอนฟิกแบบนี้ได้ ต้องมีความรู้ทางด้านเน็ตเวิร์ก มีความเข้าใจเรื่อง firewall รวมทั้งต้องทราบว่าเซอร์วิสที่รันใช้พอร์ตอะไร</p>
<p>ซึ่งอาจทำให้เกิดความยากสำหรับผู้เริ่มต้น เพราะไม่รู้ว่าจะเพิ่ม หรือลบ rule อย่างไร ใส่ออปชั่นอะไรบ้าง</p>
<p>สำหรับผู้เริ่มต้นหัดใช้ แนะนำให้ใช้โปรแกรม system-config-firewall เพื่อช่วยแก้ไข rule ของ firewall บนลีนุกซ์</p>
<p><span id="more-2032"></span></p>
<p>โปรแกรม system-config-firewall มีสองเวอร์ชั่น ทำงานได้เหมือนกัน</p>
<ul>
<li><strong>system-config-firewall</strong> รันเป็น GUI บน X Window เช่น GNOME</li>
<li><strong>system-config-firewall-tui</strong> รันบนหน้าจอคอนโซล จะเป็นแบบเมนูให้เลือก</li>
</ul>
<p>ในที่นี้จะแสดงวิธีการใช้แบบรันบนหน้าจอคอนโซล</p>
<p>เพื่อเปรียบเทียบสิ่งที่โปรแกรม system-config-firewall จะแก้ไข ก่อนรันคำสั่ง ใช้คำสั่ง iptables -L เพื่อแสดงคอนฟิก firewall ที่ทำงานอยู่</p>
<pre>[root@cent6 ~]# <strong>iptables -L -v -n --line-numbers</strong>
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1     2414  180K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        1    64 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 1379 packets, 505K bytes)
num   pkts bytes target     prot opt in     out     source               destination</pre>
<div></div>
<p>พิมพ์คำสั่ง system-config-firewall-tui</p>
<pre>[root@cent6 ~]# <strong>system-config-firewall-tui</strong></pre>
<p>หมายเหตุ หากรันคำสั่งแล้วขึ้น &#8220;command not found&#8221; ให้ติดตั้งไฟล์ rpm ชื่อ system-config-firewall-tui-1.2.27-5.el6.noarch.rpm</p>
<p>หน้าจอ Firewall Configuration สามารถเลือกที่จะเปิด ปิด firewall ได้</p>
<pre>[*] Enabled เปิดใช้งาน firewall
[ ] Enabled ปิดการใช้ firewall (ไม่แนะนำ)</pre>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/f01-system-config-firewall-tui-Firewall-Configuration.png"><img class="alignnone size-full wp-image-2035" title="f01-system-config-firewall-tui-Firewall Configuration" src="http://spalinux.com/wp-content/uploads/2012/04/f01-system-config-firewall-tui-Firewall-Configuration.png" alt="" width="639" height="411" /></a></p>
<p>&nbsp;</p>
<p>กดปุ่ม [Tab] เพื่อเลื่อนแถบสีไปยัง [Customize] แล้วกดปุ่ม [Enter]</p>
<p>หน้าจอแสดง Services ต่างๆ ที่โปรแกรมเตรียมไว้ให้สามารถเลือกคอนฟิกได้</p>
<p>กดปุ่มลูกศร (cursor) ขึ้นลง เพื่อเลื่อนไปยังเซอร์วิสต่างๆ ได้</p>
<p>โดยดีฟอลต์จากการติดตั้ง ถ้าไม่ได้แก้ไข จะอนุญาตให้เครื่องอื่นเข้ามาใช้ SSH ได้อย่างเดียว</p>
<p>เครื่องหมายดอกจัน ในวงเล็บสี่เหลี่ยม [*] หน้าเซอร์วิส หมายถึงการอนุญาตเซอร์วิสนั้น</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/f02-Trusted-Services.png"><img class="alignnone size-full wp-image-2036" title="f02-Trusted-Services" src="http://spalinux.com/wp-content/uploads/2012/04/f02-Trusted-Services.png" alt="" width="492" height="332" /></a></p>
<p>&nbsp;</p>
<p>กดปุ่มลูกศรลง เพื่อไปยังชื่อเซอร์วิสที่ต้องการอนุญาตให้เครื่องอื่นสามารถเข้ามาใช้บนเครื่องลีนุกซ์นี้ได้</p>
<p>เช่นต้องการให้เครื่องอื่น สามารถใช้เว็บเซิร์ฟเวอร์พอร์ต 80 WWW (HTTP) บนเครื่องเราได้</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/f03-select-WWW.png"><img class="alignnone size-full wp-image-2037" title="f03-select-WWW" src="http://spalinux.com/wp-content/uploads/2012/04/f03-select-WWW.png" alt="" width="313" height="109" /></a></p>
<p>กดปุ่ม [Spacebar] เพื่อเปลี่ยนค่าในวงเล็บสี่เหลี่ยม ต้องเปลี่ยนให้เป็นเครื่องหมายดอกจัน</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/f04-Enable-WWW.png"><img class="alignnone size-full wp-image-2038" title="f04-Enable-WWW" src="http://spalinux.com/wp-content/uploads/2012/04/f04-Enable-WWW.png" alt="" width="312" height="111" /></a></p>
<p>หลังจากเปลี่ยนเป็นเครื่องหมายดอกจันเรียบร้อยแล้ว กดปุ่ม [Tab] เพื่อเลื่อนแถบสีมาที่ [Close] แล้วกดปุ่ม [Enter]</p>
<p>จะกลับมาหน้าจอหลัก กดปุ่ม [Tab] เลื่อนไปยัง [OK] แล้วกดปุ่ม [Enter]<br />
หน้าจอเตือน Warning ว่าจะมีการสร้างคอนฟิกไฟล์ของ firewall ใหม่ เลื่อนแถบสีอยู่ที่ [Yes] แล้วกดปุ่ม [Enter]</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/f05-Warning.png"><img class="alignnone size-full wp-image-2039" title="f05-Warning" src="http://spalinux.com/wp-content/uploads/2012/04/f05-Warning.png" alt="" width="378" height="289" /></a></p>
<p>&nbsp;</p>
<p>ลองใช้คำสั่ง iptables -L เพื่อดูคอนฟิก firewall ที่เปลี่ยนไป จะเห็น num 5 เพิ่มขึ้นมา เพื่ออนุญาต tcp dpt:80 หรือพอร์ตเว็บ WWW (HTTP) นั่นเอง</p>
<pre>[root@cent6 ~]# <strong>iptables -L -v -n --line-numbers</strong>
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1       13   916 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        1   100 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
<span style="color: #0000ff;">5        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:80</span>
6        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 8 packets, 960 bytes)
num   pkts bytes target     prot opt in     out     source               destination</pre>
<pre></pre>
<p>หากต้องการยกเลิก หรือไม่ต้องการให้เครื่องอื่นเข้าใช้งานพอร์ตเว็บบนเครื่องนี้อีกต่อไปแล้ว ก็ใช้คำสั่ง system-config-firewall-tui เข้าไปเอาเครื่องหมายดอกจันหน้าเซอร์วิส WWW (HTTP) ออกไป ทำตามขั้นตอนอื่นๆ เหมือนเดิม</p>
<p>การใช้คำสั่ง system-config-firewall ไม่ว่าจะแบบ GUI หรือคอนโซล เมื่อแก้ไขเสร็จแล้วกดยืนยันเพื่อให้คอนฟิกใหม่มีผล นอกจากจะทำให้คอนฟิกใหม่มีผลทันทีแล้ว คำสั่งนี้จะเข้าไปแก้ไขไฟล์คอนฟิกของ iptables เพื่อให้มีผลต่อการบู๊ตเครื่องครั้งต่อไปด้วย</p>
<p>ไฟล์คอนฟิกของ iptables ของ CentOS คือไฟล์ /etc/sysconfig/iptables</p>
<p>ตัวอย่างของไฟล์หลังจากเพิ่ม การอนุญาตพอร์ต 80</p>
<pre>[root@cent6 ~]# cat /etc/sysconfig/iptables
 # Firewall configuration written by system-config-firewall
 # Manual customization of this file is not recommended.
 *filter
 :INPUT ACCEPT [0:0]
 :FORWARD ACCEPT [0:0]
 :OUTPUT ACCEPT [0:0]
 -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 -A INPUT -p icmp -j ACCEPT
 -A INPUT -i lo -j ACCEPT
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
<span style="color: #0000ff;"> -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT</span>
 -A INPUT -j REJECT --reject-with icmp-host-prohibited
 -A FORWARD -j REJECT --reject-with icmp-host-prohibited
 COMMIT</pre>
<p>ชื่อเซอร์วิสที่มาอ่านไฟล์นี้ก็คือ iptables โดยดีฟอลต์จะถูกรันเมื่อเข้าสู่ runlevel 2,3,4,5 หรือการบู๊ตเครื่องใหม่</p>
<pre>[root@cent6 ~]# <strong>chkconfig --list iptables</strong>
iptables        0:off 1:off 2:on 3:on 4:on 5:on 6:off</pre>
<p>&nbsp;</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a title="View Details: แก้ไขคอนฟิก firewall บนลีนุกซ์ด้วย iptables" href="http://spalinux.com/2012/04/configure-linux-firewall-by-iptables" rel="bookmark">แก้ไขคอนฟิก firewall บนลีนุกซ์ด้วย iptables</a></li>
<li><a title="View Details: การเปิดเซอร์วิสตอนบู๊ตเครื่องของ CentOS 6" href="http://spalinux.com/2012/04/start-service-when-boot-centos-6" rel="bookmark">การเปิดเซอร์วิสตอนบู๊ตเครื่องของ CentOS 6</a></li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/04/configure-firewall-using-system-config-firewall/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>แก้ไขคอนฟิก firewall บนลีนุกซ์ด้วย iptables</title>
		<link>http://spalinux.com/2012/04/configure-linux-firewall-by-iptables</link>
		<comments>http://spalinux.com/2012/04/configure-linux-firewall-by-iptables#comments</comments>
		<pubDate>Sun, 08 Apr 2012 10:28:19 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[Linux Installation]]></category>
		<category><![CDATA[Linux Shell]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[iptables]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=2013</guid>
		<description><![CDATA[บนลีนุกซ์มีคุณสมบัติ firewall ติดตั้งมาให้สามารถเลือกอนุญาต หรือปฏิเสธการ รับ/ส่ง packet เข้า/ออกเครื่องได้ จุดมุ่งหมายหลักๆ ของ firewall ก็เพื่อเพิ่มความปลอดภัยให้กับเครื่องเซิร์ฟเวอร์ หลายคนมักจะปิดคุณสมบัตินี้ไป ด้วยเหตุผลบอกว่ายากต่อการทำความเข้าใจ และแก้ไข ในบทความนี้จะอธิบายการใช้คำสั่ง iptables เพื่อแสดงสถานะ firewall ที่เปิดใช้งาน การเพิ่ม rule เพื่ออนุญาตการเชื่อมต่อ การลบ rule ที่ไม่ได้ใช้แล้ว ลองทำตามดู ในหลายเซอร์วิส เพียงแค่แก้ไข rule นิดเดียวเท่านั้น ก็จะใช้งานได้แล้ว ไม่จำเป็นต้องปิดคุณสมบัติ firewall แต่อย่างได้ แสดง (list) rule ที่เปิดใช้งานอยู่ ใช้คำสั่ง iptables ออปชั่น &#8220;-L&#8221; เพื่อแสดงคอนฟิก firewall ที่เปิดใช้งานอยู่ ออปชั่นเพิ่มเติม ที่มักจะใช้ร่วมกับออปชั่น &#8220;-L&#8221; ออปชั่น &#8220;-v&#8221; เพื่อแสดงรายละเอียดเพิ่มเติมของ rule เช่นผลรวมสะสมของจำนวน packets (pkts) [...]]]></description>
			<content:encoded><![CDATA[<p>บนลีนุกซ์มีคุณสมบัติ firewall ติดตั้งมาให้สามารถเลือกอนุญาต หรือปฏิเสธการ รับ/ส่ง packet เข้า/ออกเครื่องได้</p>
<p>จุดมุ่งหมายหลักๆ ของ firewall ก็เพื่อเพิ่มความปลอดภัยให้กับเครื่องเซิร์ฟเวอร์</p>
<p>หลายคนมักจะปิดคุณสมบัตินี้ไป ด้วยเหตุผลบอกว่ายากต่อการทำความเข้าใจ และแก้ไข</p>
<p>ในบทความนี้จะอธิบายการใช้คำสั่ง iptables เพื่อแสดงสถานะ firewall ที่เปิดใช้งาน การเพิ่ม rule เพื่ออนุญาตการเชื่อมต่อ การลบ rule ที่ไม่ได้ใช้แล้ว</p>
<p>ลองทำตามดู ในหลายเซอร์วิส เพียงแค่แก้ไข rule นิดเดียวเท่านั้น ก็จะใช้งานได้แล้ว ไม่จำเป็นต้องปิดคุณสมบัติ firewall แต่อย่างได้</p>
<p><span id="more-2013"></span></p>
<h4>แสดง (list) rule ที่เปิดใช้งานอยู่</h4>
<p>ใช้คำสั่ง iptables ออปชั่น &#8220;-L&#8221; เพื่อแสดงคอนฟิก firewall ที่เปิดใช้งานอยู่</p>
<p>ออปชั่นเพิ่มเติม ที่มักจะใช้ร่วมกับออปชั่น &#8220;-L&#8221;</p>
<ul>
<li>ออปชั่น &#8220;<strong>-v</strong>&#8221; เพื่อแสดงรายละเอียดเพิ่มเติมของ rule เช่นผลรวมสะสมของจำนวน packets (pkts) ขนาด (bytes)</li>
<li>ออปชั่น &#8220;<strong>-n</strong>&#8221; เพื่อแสดง IP (source และ destination) และพอร์ตให้เป็นตัวเลข</li>
<li>ออปชั่น &#8220;<strong>&#8211;line-numbers</strong>&#8221; เพื่อแสดงตัวเลขกำกับ rule ในแต่ละบรรทัด เพื่อสะดวกต่อการแก้ไข rule</li>
</ul>
<p>ตัวอย่างการใช้คำสั่ง iptables ออปชั่น &#8220;-L&#8221; เพื่อแสดงค่าคอนฟิก firewall ที่ใช้งานอยู่</p>
<pre>[root@cent6 ~]# <strong>iptables -L -v -n --line-numbers</strong>
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1      630 49714 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
4        2   128 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 349 packets, 55278 bytes)
num   pkts bytes target     prot opt in     out     source               destination</pre>
<pre></pre>
<pre></pre>
<p>คอนฟิก rule ที่แสดงนี้ เป็นคอนฟิกดีฟอลต์จากติดตั้ง CentOS 6 (หากไม่ได้มีการเลือกแก้ไข firewall ระหว่างการติดตั้ง)</p>
<p>ในที่นี้ขออธิบาย rule คร่าวๆ ในส่วนของ Chain INPUT ที่เปิดใช้งานอยู่ดังนี้</p>
<ul>
<li>num 1 : อนุญาต (ACCEPT) ให้ทุก packet ที่ผ่านขั้นตอนการเชื่อมต่อเรียบร้อยแล้ว (RELATED, ESTABLISHED) เข้าสู่เครื่องได้</li>
<li>num 2 : อนุญาต (ACCEPT) ให้ packet ประเภท (icmp) เช่น ping เข้าสู่เครื่องได้</li>
<li>num 3 : อนุญาต (ACCEPT) ให้ทุก packet ที่ส่งภายในของเครื่องเองได้ (lo หรือ loopback)</li>
<li>num 4 : อนุญาต (ACCEPT) ให้ packet แรก (NEW) ที่พยายามเชื่อมต่อเข้าพอร์ตปลายทาง tcp dpt:22 (secure shell) สามารถเข้าสู่เครื่องได้ หรือสรุปง่ายๆ คืออนุญาตให้สามารถ ssh เข้าสู่เครื่องนี้ได้นั่นเอง</li>
<li>num 5 : packet อื่นๆ นอกจากนี้ จะถูกปฏิเสธ (REJECT) การเข้าถึงเครื่อง และจะมีการตอบ icmp-host-prohibited กลับไปยังเครื่องต้นทางที่พยายามส่ง packet เข้ามา</li>
</ul>
<p>การทำงาน firewall ของลีนุกซ์จะตรวจสอบ (match) ตามลำดับ rule num ที่คอนฟิกไว้ เช่นเมื่อมี packet พยายามส่งเข้า (INPUT) ก็จะตรวจสอบเรียงตาม num 1, 2, 3, 4, 5</p>
<p>&nbsp;</p>
<h4>เพิ่ม (insert) rule ใหม่</h4>
<p>หากเราติดตั้งเซอร์วิสใหม่ คอนฟิกและรันได้เรียบร้อยแล้ว เช่นเว็บเซิร์ฟเวอร์ เปิดใช้งานพอร์ต tcp 80</p>
<p>ตัวอย่างการใช้คำสั่ง netstat -an เพื่อดูพอร์ตที่เปิดอยู่ ในที่นี้จะใช้คำสั่ง grep เพื่อเลือกแสดงเฉพาะบรรทัดที่มีตัวเลข 80</p>
<pre>[root@cent6 ~]# <strong>netstat -an | grep 80</strong>
tcp        0      0 :::80                       :::*                        LISTEN</pre>
<p>เราสามารถทดสอบจากเครื่องที่รันเว็บเซิร์ฟเวอร์เองได้ เพราะ rule ของ firewall โดยดีฟอลต์อนุญาตให้การส่งข้อมูลภายใน (lo) สามารถทำได้ (rule num 3)</p>
<p>ตัวอย่างการใช้คำสั่ง telnet เพื่อทดสอบการเชื่อมต่อเข้าพอร์ต 80 ของเว็บเซิร์ฟเวอร์ 192.168.5.62 (ทดสอบบนเครื่องเดียวกัน กับที่รันเว็บเซิรฟ์เวอร์)</p>
<pre>[root@cent6 ~]# <strong>telnet 192.168.5.62 80</strong>
Trying 192.168.5.62...
Connected to 192.168.5.62.
Escape character is '^]'.

<strong>HEAD / HTTP/1.0</strong>

HTTP/1.1 403 Forbidden
Date: Sun, 08 Apr 2012 08:53:11 GMT
Server: Apache/2.2.15 (CentOS)
Accept-Ranges: bytes
Content-Length: 5039
Connection: close
Content-Type: text/html; charset=UTF-8

Connection closed by foreign host.</pre>
<p>คำอธิบายการใช้คำสั่ง telnet เข้าพอร์ต</p>
<ul>
<li>หากใช้คำสั่ง telnet แล้วขึ้น &#8220;command not found&#8221; ต้องติดตั้งไฟล์ rpm ของโปรแกรม telnet เพิ่ม ซึ่งอยู่ในแผ่นดีวีดีติดตั้ง CentOS อยู่แล้ว</li>
</ul>
<pre>[root@cent6 Packages]# <strong>rpm -i telnet-0.17-47.el6.x86_64.rpm</strong></pre>
<ul>
<li>เราสามารถใช้คำสั่ง telnet เพื่อทดสอบเข้าพอร์ตเว็บ (tcp 80) ได้ โดยพิมพ์คำสั่ง telnet ตามด้วย IP ของเว็บเซิร์ฟเวอร์ แล้วตามด้วยพอร์ตที่รันเว็บ</li>
<li>ในคำสั่ง telnet เมื่อขึ้น Connected แปลว่าสามารถเชื่อมต่อเข้าพอร์ตที่ระบะไว้ได้</li>
<li>กดปุ่ม [Enter] หนึ่งครั้ง แล้วพิมพ์คำสั่ง HEAD / HTTP/1.0 เพื่อเป็นการส่งคำสั่งขอดูข้อมูลเบื้องต้นของเว็บเซิร์ฟเวอร์ได้</li>
<li>หากต้องการออกจากคำสั่ง telnet ให้กดปุ่ม [Ctrl] และ ] พร้อมกัน จะมีพร้อมพต์ telnet&gt; ขึ้นมาให้พิมพ์คำสั่ง quit เพื่อออจาก telnet</li>
</ul>
<pre>[root@cent6 ~]# <strong>telnet 192.168.5.62 80</strong>
Trying 192.168.5.62...
Connected to 192.168.5.62.
Escape character is '^]'.
<strong>^]</strong>
telnet&gt; <strong>quit</strong>
Connection closed.</pre>
<p>แต่ถ้าใช้ browser หรือทดสอบด้วยคำสั่ง telnet เข้าพอร์ต 80 จากเครื่องอื่นๆ เปิดเว็บเข้ามา จะเข้าไม่ได้</p>
<pre>$ <strong>telnet 192.168.5.62 80</strong>
 Trying 192.168.5.62...
 telnet: connect to address 192.168.5.62: No route to host</pre>
<p>ต้องเพิ่ม rule ใหม่ เข้าไปเพื่ออนุญาตการเชื่อมต่อเข้ามา โดย rule ที่เพิ่มใหม่ ต้องเพิ่มก่อน rule สุดท้ายที่มีการปฏิเสธการเข้าถึง (REJECT) ทุก packet</p>
<p>ใช้คำสั่ง iptables ออปชั่น &#8220;-L&#8221; เพื่อแสดงคอนฟิก firewall ที่ใช้งานอยู่</p>
<pre>[root@cent6 ~]# <strong>iptables -L -v -n --line-numbers</strong>
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     2363  182K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        2   168 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3       11   660 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
4        4   252 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5       10   620 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 1358 packets, 169K bytes)
num   pkts bytes target     prot opt in     out     source               destination</pre>
<pre></pre>
<p>ใช้คำสั่ง iptables ออปชั่น &#8220;-I&#8221; เพิ่มด้วยการแทรก (insert) rule ใหม่เข้าไปแทนที่ rule num 5 ระบุว่าอนุญาต (ACCEPT) ให้การเชื่อมต่อใหม่ (NEW) เข้า (INPUT) พอร์ต tcp 80 ได้</p>
<pre>[root@cent6 ~]# <strong>iptables -I INPUT 5 -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT</strong></pre>
<p>ตรวจสอบผลลัพธ์ที่ได้จาก iptables ออปชั่น &#8220;-L&#8221;</p>
<pre>[root@cent6 ~]# <strong>iptables -L -v -n --line-numbers</strong>
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     2383  184K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        2   168 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3       11   660 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
4        4   252 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
<span style="color: #0000ff;">5 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80</span>
6       10   620 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 5 packets, 692 bytes)
num   pkts bytes target     prot opt in     out     source               destination</pre>
<pre></pre>
<p>ทดสอบจากเครื่องอื่นด้วยการ telnet เข้าพอร์ต 80 อีกครั้ง จะสามารถเชื่อมต่อได้แล้ว</p>
<pre>$ <strong>telnet 192.168.5.62 80</strong>
Trying 192.168.5.62...
Connected to 192.168.5.62.
Escape character is '^]'.

<strong>HEAD / HTTP/1.0</strong>

HTTP/1.1 403 Forbidden
Date: Sun, 08 Apr 2012 09:06:10 GMT
Server: Apache/2.2.15 (CentOS)
Accept-Ranges: bytes
Content-Length: 5039
Connection: close
Content-Type: text/html; charset=UTF-8

Connection closed by foreign host.</pre>
<pre></pre>
<p>&nbsp;</p>
<h4>ลบ (delete) rule</h4>
<p>หากต้องการยกเลิก rule ที่ใส่ไว้ เช่นไม่ต้องการให้เครื่องอื่นสามารถเชื่อมต่อเข้าพอร์ต 80 ได้อีกต่อไปแล้ว สามารถทำได้โดยใช้คำสั่ง iptables ออปชั่น -D ตามด้วย rule num ที่ต้องการลบ (delete) ใช้คำสั่ง iptables ออปชั่น &#8220;-L&#8221; เพื่อแสดง rule ที่เปิดใช้งานอยู่</p>
<pre>[root@cent6 ~]# <strong>iptables -L -v -n --line-numbers</strong>
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     2417  186K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        2   168 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3       11   660 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
4        4   252 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
<span style="color: #0000ff;">5 1 60 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80</span>
6       10   620 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 27 packets, 5466 bytes)
num   pkts bytes target     prot opt in     out     source               destination</pre>
<p>สมมติว่าต้องการลบ rule ที่อนุญาตการเชื่อมต่อเข้า (INPUT) พอร์ต 80 หรือ rule num 5 สามารถทำได้โดย</p>
<pre>[root@cent6 ~]# <strong>iptables -D INPUT 5</strong></pre>
<p>ใช้คำสั่ง iptables -L จะเห็นว่า rule num 5 ถูกลบไป</p>
<pre>[root@cent6 ~]# <strong>iptables -L -v -n --line-numbers</strong>
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     2518  194K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        2   168 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3       11   660 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
4        4   252 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5       10   620 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 6 packets, 728 bytes)
num   pkts bytes target     prot opt in     out     source               destination</pre>
<p>&nbsp;</p>
<p>ลองทดสอบ telnet เข้าพอร์ต 80 จากเครื่องอื่นดู ก็ไม่สามารถเชื่อมต่อได้แล้ว</p>
<pre>$ telnet 192.168.5.62 80
 Trying 192.168.5.62...
 telnet: connect to address 192.168.5.62: No route to host</pre>
<p>&nbsp;</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a title="View Details: แก้ไขคอนฟิก firewall ด้วย system-config-firewall" href="http://spalinux.com/2012/04/configure-firewall-using-system-config-firewall" rel="bookmark">แก้ไขคอนฟิก firewall ด้วย system-config-firewall</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/04/configure-linux-firewall-by-iptables/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>แก้ไขชื่อ hostname เปลี่ยน IP Address ของ CentOS 6.2</title>
		<link>http://spalinux.com/2012/03/change-hostname-or-change-ip-address-on-centos-6-2</link>
		<comments>http://spalinux.com/2012/03/change-hostname-or-change-ip-address-on-centos-6-2#comments</comments>
		<pubDate>Sat, 31 Mar 2012 10:13:53 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Linux Installation]]></category>
		<category><![CDATA[Networking]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1911</guid>
		<description><![CDATA[หลังการ ติดตั้ง CentOS 6.2 : ใส่ชื่อ hostname และคอนฟิกเน็ตเวิร์ค หากเราต้องการแก้ไขชื่อ hostname หรือ เปลี่ยน IP Address ของเครื่องสามารถทำได้สองวิธี ใช้โปรแกรม system-config-network แก้ไขไฟล์ในไดเร็คทอรี /etc/sysconfig/network-scripts โดยตรง ล็อกอินด้วย root ชื่อเครื่อง hostname ใช้คำสั่ง hostname เพื่อดูชื่อเครื่อง [root@cent6 ~]# hostname cent6.example.com หมายเหตุ โดยดีฟอลต์ เชลล์ (shell) หรือพร้อมต์ (prompt) จะขึ้นชื่อเครื่องด้วย เช่นในที่นี้คือ cent6 คำสั่ง ifconfig เพื่อดู IP, Netmask ของพอร์ตแลน ใช้คำสั่ง ifconfig เพื่อดูคอนฟิกเน็ตเวิร์ก เช่น IP Address, Netmask ชองพอร์ตแลน (LAN) [...]]]></description>
			<content:encoded><![CDATA[<p>หลังการ<a href="http://spalinux.com/2012/03/install-centos-6-2-configure-network"> ติดตั้ง CentOS 6.2 : ใส่ชื่อ hostname และคอนฟิกเน็ตเวิร์ค</a></p>
<p>หากเราต้องการแก้ไขชื่อ hostname หรือ เปลี่ยน IP Address ของเครื่องสามารถทำได้สองวิธี</p>
<ul>
<li>ใช้โปรแกรม system-config-network</li>
<li>แก้ไขไฟล์ในไดเร็คทอรี /etc/sysconfig/network-scripts โดยตรง</li>
</ul>
<p><span id="more-1911"></span></p>
<p>ล็อกอินด้วย root</p>
<h4>ชื่อเครื่อง hostname</h4>
<p>ใช้คำสั่ง hostname เพื่อดูชื่อเครื่อง</p>
<pre>[root@cent6 ~]# <strong>hostname</strong>
cent6.example.com</pre>
<p>หมายเหตุ โดยดีฟอลต์ เชลล์ (shell) หรือพร้อมต์ (prompt) จะขึ้นชื่อเครื่องด้วย เช่นในที่นี้คือ cent6</p>
<h4>คำสั่ง ifconfig เพื่อดู IP, Netmask ของพอร์ตแลน</h4>
<p>ใช้คำสั่ง ifconfig เพื่อดูคอนฟิกเน็ตเวิร์ก เช่น IP Address, Netmask ชองพอร์ตแลน (LAN) ได้</p>
<p>พอร์ตแลนของ CentOS หรือลีนุกซ์ส่วนใหญ่ ที่ใช้รับส่งข้อมูล จะมีชื่อขึ้นต้นด้วย eth แล้วตามด้วยตัวเลขแสดงลำดับพอรต์ โดยเริ่มจากเลข 0</p>
<p>เช่น พอร์ตแลนแรก ชื่อ eth0 พอร์ตที่สองก็จะเป็น eth1 ตามลำดับ</p>
<p>ส่วน lo เป็นพอร์ตพิเศษคือ (loopback) มี IP เป็น 127.0.0.1 ใช้สำหรับติดต่อส่งข้อมูลภายในเครื่องลีนุกซ์เอง เราไม่ต้องแก้ไขอะไร</p>
<p>ตัวอย่างการใช้คำสั่ง ifconfig</p>
<p>ในตัวอย่าง พอร์ตแลนแรก eth0 มีคอนฟิกเน็ตเวิร์กดังนี้</p>
<ul>
<li>IP Address: 192.168.5.62</li>
<li>Netmask: 255.255.255.0</li>
</ul>
<p>&nbsp;</p>
<pre>[root@cent6 ~]# <strong>ifconfig</strong>
<span style="color: #0000ff;">eth0     </span> Link encap:Ethernet  HWaddr ...
          inet addr:<span style="color: #0000ff;">192.168.5.62</span>  Bcast:192.168.5.255  Mask:<span style="color: #0000ff;">255.255.255.0</span>
          inet6 addr: ... Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:436 errors:0 dropped:0 overruns:0 frame:0
          TX packets:200 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:113770 (111.1 KiB)  TX bytes:32038 (31.2 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:26 errors:0 dropped:0 overruns:0 frame:0
          TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2254 (2.2 KiB)  TX bytes:2254 (2.2 KiB)</pre>
<h4>คำสั่ง netstat -rn เพื่อดู Routing Table</h4>
<p>ใช้คำสั่ง netstat -rn หรือ route -n เพื่อดู routing table ของลีนุกซ์ได้ ตัวอย่าง</p>
<pre>[root@cent6 ~]# <strong>netstat -rn</strong>
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.5.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         <span style="color: #0000ff;">192.168.5.1</span>     0.0.0.0         UG        0 0          0 eth0</pre>
<h4>โปรแกรม system-config-network เพื่อเปลี่ยน IP Address</h4>
<p>พิมพ์คำสั่ง system-config-network เพื่อเข้าสู่โปรแกรม</p>
<pre>[root@cent6 ~]# <strong>system-config-network</strong></pre>
<p>ในหน้าจอ &#8220;Select Action&#8221;  ใช้ปุ่มลูกศร (cursor) ขึ้นลง เลือกที่ &#8220;Device Configuration&#8221; แล้วกด [Enter]</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/01-Select-Action.png"><img class="alignnone size-full wp-image-1917" title="01-Select-Action" src="http://spalinux.com/wp-content/uploads/2012/03/01-Select-Action.png" alt="" width="305" height="241" /></a></p>
<p>&nbsp;</p>
<p>หน้าจอ &#8220;Select A Device&#8221; แสดงพอร์ตแลน ที่มีอยู่ เลือกที่ &#8220;eth0&#8243; แล้วกด [Enter]</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/02-Select-A-Device.png"><img class="alignnone size-full wp-image-1912" title="02-Select-A-Device" src="http://spalinux.com/wp-content/uploads/2012/03/02-Select-A-Device.png" alt="" width="717" height="234" /></a></p>
<p>&nbsp;</p>
<p>หน้าจอแสดงคอนฟิกเน็ตเวิร์กของพอร์ตแลน eth0 ใช้ลูกศรขึ้น ลง หรือกดปุ่ม [Tab] เพื่อเลื่อนไปยังช่องต่างๆ</p>
<p>คำเตือน ไม่แนะนำให้เปลี่ยน Name: eth0 และ Device: eth0</p>
<ul>
<li>Use DHCP L หากต้องการเลือกคอนฟิกแบบ DHCP ให้เลื่อน มาที่บรรทัดนี้แล้วกดปุ่ม [Spacebar] เพื่อเลือก [*]</li>
<li>Static IP : IP Address ของพอร์ต</li>
<li>Netmask : Netnmask ของพอร์ต</li>
<li>Default gateway IP : default gateway ของเครื่อง</li>
<li>Primary DNS Server : IP Addrss ของ DNS Server ตัวหลัก</li>
<li>Secondary DNS Server : IP Addrss ของ DNS Server ตัวสำรอง (ถ้ามี)</li>
</ul>
<p>เมื่อใส่เรียบร้อยแล้ว ให้เลื่อนมาที่ปุ่ม [Ok] แล้วกด [Enter]</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/03-Network-Configuration.png"><img class="alignnone size-full wp-image-1913" title="03-Network-Configuration" src="http://spalinux.com/wp-content/uploads/2012/03/03-Network-Configuration.png" alt="" width="432" height="319" /></a></p>
<p>&nbsp;</p>
<p>หน้าจอจะกลับมาที่หน้า &#8220;Select A Device&#8221; กดปุ่ม [Tab] มาที่ปุ่ม [Save] แล้วกด [Enter]</p>
<p>หน้าจอจะกลับมาที่หน้า &#8220;Select Action&#8221; กดปุ่ม [Tab] เลื่อนมาที่ [Save&amp;Quit] แล้วกด [Enter]</p>
<p>โปรแกรม system-config-network จะเข้าไปเปลี่ยนไฟล์คอนฟิกใน /etc/sysconfig/network-scripts/ เช่นเมื่อแก้ไข IP Address ของ eth0 โปรแกรมจะเปลี่ยนไฟล์</p>
<pre>[root@cent6 ~]# <strong>cat /etc/sysconfig/network-scripts/ifcfg-eth0</strong>
DEVICE=<span style="color: #0000ff;">eth0</span>
NM_CONTROLLED=yes
ONBOOT=yes
HWADDR=...
TYPE=Ethernet
BOOTPROTO=none
IPADDR=<span style="color: #0000ff;">192.168.5.162</span>
PREFIX=<span style="color: #0000ff;">24</span>
GATEWAY=<span style="color: #0000ff;">192.168.5.1</span>
DNS1=192.168.5.1
DOMAIN=example.com
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
UUID=...
NETMASK=<span style="color: #0000ff;">255.255.255.0</span>
USERCTL=no</pre>
<p>แทนที่จะรันโปรแกรม system-config-network เราก็สามารถเข้ามาเปลี่ยนไฟล์นี้โดยตรงได้</p>
<p>หลังจากรันโปรแกรม หรือแก้ไขไฟล์ ifcfg-eth0 แล้ว  ลองใช้คำสั่ง ifconfig ดู จะเห็นว่า IP Address ของพอร์ตแลน ยังคงเหมือนเดิม</p>
<pre>[root@cent6 ~]# <strong>ifconfig</strong>
eth0      Link encap:Ethernet  HWaddr ...
          inet addr:<span style="color: #0000ff;">192.168.5.62</span>  Bcast:192.168.5.255  Mask:255.255.255.0</pre>
<p>&nbsp;</p>
<p>ต้องรันคำสั่ง service network restart เพื่อให้อ่านคอนฟิกในส่วนเน็ตเวิร์กใหม่</p>
<p>คำเตือน หากมีการเปลี่ยน IP Address ของเครื่อง เช่นในตัวอย่างนี้  แนะนำให้ทำหน้าเครื่อง หรือจอคอนโซลของเครื่อง</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/04-service-network-restart.png"><img class="alignnone size-full wp-image-1914" title="04-service-network-restart" src="http://spalinux.com/wp-content/uploads/2012/03/04-service-network-restart.png" alt="" width="610" height="101" /></a></p>
<p>&nbsp;</p>
<p>ใช้คำสั่ง ifconfig เพื่อดู IP Address ของพอร์ต จะเห็นว่าเปลี่ยนเป็น IP ใหม่แล้ว</p>
<pre>[root@cent6 ~]# <strong>ifconfig</strong>
eth0      Link encap:Ethernet  HWaddr ...
          inet addr:<span style="color: #0000ff;">192.168.5.162</span>  Bcast:192.168.5.255  Mask:255.255.255.0</pre>
<h4>ใช้โปรแกรม system-config-network เพื่อเปลี่ยน hostname</h4>
<p>พิมพ์คำสั่ง system-config-network เพื่อเข้าสู่โปรแกรม</p>
<pre>[root@cent6 ~]# <strong>system-config-network</strong></pre>
<p>ในหน้าจอ &#8220;Select Action&#8221;  ใช้ปุ่มลูกศร (cursor) ขึ้นลง เลื่อนมาที่ &#8220;DNS configuration&#8221; แล้วกด [Enter]<br />
<a href="http://spalinux.com/wp-content/uploads/2012/03/05-Select-DNS-Configuration.png"><img class="alignnone size-full wp-image-1915" title="05-Select-DNS-Configuration" src="http://spalinux.com/wp-content/uploads/2012/03/05-Select-DNS-Configuration.png" alt="" width="303" height="238" /></a></p>
<p>&nbsp;</p>
<p>หน้าจอ &#8220;DNS configuration&#8221; แสดงคอนฟิก หากต้องการเปลี่ยนชื่อเครื่อง ก็แก้ไขในช่อง Hostname เช่นเปลี่ยนเป็น cent62.example.com</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/06-DNS-configuration.png"><img class="alignnone size-full wp-image-1916" title="06-DNS-configuration" src="http://spalinux.com/wp-content/uploads/2012/03/06-DNS-configuration.png" alt="" width="336" height="270" /></a></p>
<p>&nbsp;</p>
<p>เมื่อแก้ไขเรียบร้อยแล้ว เลื่อนมาที่ปุ่ม [Ok] แล้วกด [Enter]</p>
<p>หน้าจอจะกลับมาที่หน้า &#8220;Select Action&#8221; กดปุ่ม [Tab] เลื่อนมาที่ [Save&amp;Quit] แล้วกด [Enter]</p>
<p>หลังจากออกจากโปรแกรมแล้ว เช่นเดียวกับการเปลี่ยน IP คือคอนฟิกใหม่ยังไม่มีผล</p>
<pre>[root@cent6 ~]# <strong>hostname</strong>
<span style="color: #0000ff;">cent6</span>.example.com</pre>
<p>การแก้ไขชื่อ hostname นี้ โปรแกรมจะเข้าไปแก้ไขไฟล์ /etc/sysconfig/network</p>
<pre>[root@cent6 ~]# <strong>cat /etc/sysconfig/network</strong>
NETWORKING=yes
HOSTNAME=<span style="color: #0000ff;">cent62</span>.example.com</pre>
<p>เพื่อจะให้ชื่อ hostname ใหม่ (ไม่สามารถใช้คำสั่ง service network restart ได้ เพื่อเปลี่ยนชื่อได้)</p>
<p>มีผลทันที สามารถทำได้สองวิธี</p>
<ol>
<li>ใช้คำสั่ง shutdown -r now เพื่อรีบู๊ตเครื่องใหม่</li>
<li>ใช้คำสั่ง hostname เพื่อเปลี่ยนชื่อใหม่เลย</li>
</ol>
<p>ตัวอย่างการใช้คำสั่ง hostname เพื่อเปลี่ยนชื่อเครื่อง</p>
<pre>[root@cent6 ~]# <strong>hostname</strong>
cent6.example.com

[root@cent6 ~]# <strong>hostname <span style="color: #0000ff;">cent62</span>.example.com</strong>

[root@cent6 ~]# <strong>hostname</strong>
<span style="color: #0000ff;">cent62</span>.example.com</pre>
<p>ลอง logout แล้ว login ใหม่ด้วย root</p>
<p>จะสังเกตว่า พร็อมต์ เปลี่ยนไปเป็นขื่อใหม่แล้ว</p>
<pre>[root@<span style="color: #0000ff;">cent62</span> ~]# <strong>hostname</strong>
cent62.example.com</pre>
<p>หมายเหตุ การเปลี่ยนชื่อ hostname อาจมีผลต่อโปรแกรมอื่นๆ ที่ใช้ชื่อ hostname ในการทำงาน เช่น X window หรือ แม้กระทั่ง syslog อาจมีปัญหาในการใช้งานได้ ต้องตามแก้เป็นโปรแกรมไป</p>
<p>สำหรับการหัดใช้ การรีบู๊ตเครื่องใหม่ หลังจากการเปลี่ยน hostname ก็อาจเป็นวิธีที่ง่ายกว่า</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/03/change-hostname-or-change-ip-address-on-centos-6-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ติดตั้ง CentOS 6.2 : ใส่ชื่อ hostname และคอนฟิกเน็ตเวิร์ค</title>
		<link>http://spalinux.com/2012/03/install-centos-6-2-configure-network</link>
		<comments>http://spalinux.com/2012/03/install-centos-6-2-configure-network#comments</comments>
		<pubDate>Sun, 25 Mar 2012 14:09:05 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Linux Installation]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[configure]]></category>
		<category><![CDATA[network]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1755</guid>
		<description><![CDATA[หน้าจอใส่ชื่อ Hostname ของเครื่อง แนะนำให้ใส่เป็นชื่อเต็มคือมีชื่อเครื่องและชื่อโดเมนเนมด้วย &#160; ในหน้านี้ สามารถกดปุ่ม [Configure Network] เพื่อเข้าสู่หน้าคอนฟิกเน็ตเวิร์คได้ ตัวอย่างเครื่องที่มีการ์ดแลนหนึ่งพอร์ต &#160; คลิ้กที่พอร์ต “System eth0”   แล้วกดปุ่ม [Edit] เพื่อแก้ไขค่าคอนฟิกของพอร์ตได้ คลิ้ก [x] Connect automatically แล้วกดแท็ป “IPv4 Settings” เลือก Method เป็น Manual แล้วกดปุ่ม [Add] เพื่อใส่ค่า IP Address, Netmask, Gateway ใส่ค่า DNS Servers, Search Domain เสร็จเรียบร้อยกดปุ่ม [Apply]]]></description>
			<content:encoded><![CDATA[<p>หน้าจอใส่ชื่อ Hostname ของเครื่อง</p>
<p><span id="more-1755"></span></p>
<p>แนะนำให้ใส่เป็นชื่อเต็มคือมีชื่อเครื่องและชื่อโดเมนเนมด้วย</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/01-Hostname.png"><img class="alignnone size-full wp-image-1758" title="01-Hostname" src="http://spalinux.com/wp-content/uploads/2012/03/01-Hostname.png" alt="" width="711" height="409" /></a></p>
<p>&nbsp;</p>
<p>ในหน้านี้ สามารถกดปุ่ม [Configure Network] เพื่อเข้าสู่หน้าคอนฟิกเน็ตเวิร์คได้</p>
<p>ตัวอย่างเครื่องที่มีการ์ดแลนหนึ่งพอร์ต</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/02-Network-Connections.png"><img class="alignnone size-full wp-image-1756" title="02-Network-Connections" src="http://spalinux.com/wp-content/uploads/2012/03/02-Network-Connections.png" alt="" width="488" height="355" /></a></p>
<p>&nbsp;</p>
<p>คลิ้กที่พอร์ต “System eth0”   แล้วกดปุ่ม [Edit] เพื่อแก้ไขค่าคอนฟิกของพอร์ตได้</p>
<p>คลิ้ก [x] Connect automatically แล้วกดแท็ป “IPv4 Settings”</p>
<p>เลือก Method เป็น Manual แล้วกดปุ่ม [Add] เพื่อใส่ค่า IP Address, Netmask, Gateway</p>
<p>ใส่ค่า DNS Servers, Search Domain</p>
<p>เสร็จเรียบร้อยกดปุ่ม [Apply]</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/03-Editing-System-eth0.png"><img class="alignnone size-full wp-image-1757" title="03-Editing-System-eth0" src="http://spalinux.com/wp-content/uploads/2012/03/03-Editing-System-eth0.png" alt="" width="745" height="558" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/03/install-centos-6-2-configure-network/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>แกะกล่องทดสอบ AirLive WL-5460AP v2 Wireless Access Point</title>
		<link>http://spalinux.com/2011/12/basic-test-airlive-wl-5460ap-v2-wireless-access-point</link>
		<comments>http://spalinux.com/2011/12/basic-test-airlive-wl-5460ap-v2-wireless-access-point#comments</comments>
		<pubDate>Wed, 28 Dec 2011 18:41:57 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[Wireless]]></category>
		<category><![CDATA[Access Point]]></category>
		<category><![CDATA[AirLive]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1584</guid>
		<description><![CDATA[วันก่อนเดินตลาดเพื่อหาซื้อ Access Point รุ่นประจำที่เคยใช้ แต่ของขาดตลาด ผู้ขายเลยแนะนำรุ่นนี้มาให้ ว่ากันว่าสามารถปรับสัญญาณ Wireless ได้แรงมาก เลยต้องมาทดสอบกันหน่อย ในที่นี้จะทดสอบคอนฟิกเบื้องต้น รายละเอียดรุ่น AirLive WL-5460AP v2 802.11g Multi-function Wireless Access Point LAN: 2 port LAN1, LAN2 ดีฟอลต์คอนฟิกจากโรงงาน AP default IP address : 192.168.100.252 Subnet Mask : 255.255.255.0 default passsword: airlive คำแนะนำ ให้ทดสอบทำความเข้าใจ ก่อนที่จะต่อเชื่อม Access Point เข้ากับ network ที่ใช้งานจริงอยู่ เริ่มคอนฟิก Access Point เซ็ต IP ของพอร์ต LAN เครื่อง [...]]]></description>
			<content:encoded><![CDATA[<p>วันก่อนเดินตลาดเพื่อหาซื้อ Access Point รุ่นประจำที่เคยใช้ แต่ของขาดตลาด ผู้ขายเลยแนะนำรุ่นนี้มาให้ ว่ากันว่าสามารถปรับสัญญาณ Wireless ได้แรงมาก</p>
<p>เลยต้องมาทดสอบกันหน่อย ในที่นี้จะทดสอบคอนฟิกเบื้องต้น</p>
<p><span id="more-1584"></span></p>
<p>รายละเอียดรุ่น</p>
<ul>
<li>AirLive WL-5460AP v2</li>
<li>802.11g Multi-function Wireless Access Point</li>
<li>LAN: 2 port LAN1, LAN2</li>
</ul>
<p>ดีฟอลต์คอนฟิกจากโรงงาน</p>
<ul>
<li>AP default IP address : 192.168.100.252</li>
<li>Subnet Mask : 255.255.255.0</li>
<li>default passsword: airlive</li>
</ul>
<p><span style="color: #ff0000;">คำแนะนำ ให้ทดสอบทำความเข้าใจ ก่อนที่จะต่อเชื่อม Access Point เข้ากับ network ที่ใช้งานจริงอยู่</span></p>
<h4>เริ่มคอนฟิก Access Point</h4>
<p>เซ็ต IP ของพอร์ต LAN เครื่อง PC หรือ Notebook ที่จะใช้คอนฟิกให้อยู่ใน Subnet 192.168.100.x (ห้ามตั้งชนกับ 192.168.100.252)</p>
<p>ต่อสายแลนเข้ากับพอร์ต LAN1 ของ AirLive</p>
<p>ใช้ Browser เปิดไปที่ http://192.168.100.252</p>
<p>หน้าเว็บขอบคุณที่เลือกใช้</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/12/a01.png"><img class="alignnone size-full wp-image-1585" title="a01" src="http://spalinux.com/wp-content/uploads/2011/12/a01.png" alt="" width="733" height="275" /></a></p>
<p>&nbsp;</p>
<p>คลิ้กที่แท็ป &#8220;Mode&#8221; เพิ่อเริ่มคอนฟิก Wireless</p>
<p>หน้าเว็บ &#8220;Wireless Mode&#8221;</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/12/a02.png"><img class="alignnone size-full wp-image-1586" title="a02" src="http://spalinux.com/wp-content/uploads/2011/12/a02.png" alt="" width="733" height="519" /></a></p>
<p>&nbsp;</p>
<ul>
<li> เลือกโหมด AP (Access Point) แล้วกดปุ่ม [Setup]</li>
</ul>
<p>&nbsp;</p>
<p>หน้าเว็บ &#8220;AP Mode Settings&#8221; เพื่อแก้ไขค่าคอนฟิก Wireless</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/12/a03.png"><img class="alignnone size-full wp-image-1587" title="a03" src="http://spalinux.com/wp-content/uploads/2011/12/a03.png" alt="" width="734" height="676" /></a></p>
<p>&nbsp;</p>
<ul>
<li>แนะนำให้เปลี่ยนชื่อ SSID</li>
<li>บรรทัด Secrity: กดปุ่ม [Setup] เพื่อตั้งค่ารหัส (Encryption key) =&gt; ไปที่หน้าเว็บ &#8220;Wireless Security Setup&#8221;</li>
<li>บรรทัด Advanced Settings: กดปุ่ม [Setup] เพื่อเข้าสู่การตั้งค่าขั้นสูง =&gt; ไปที่หน้าเว็บ &#8220;Wireless Advanced Settings&#8221;</li>
</ul>
<p>หน้าเว็บ &#8220;Wireless Security Setup&#8221;</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/12/a04.png"><img class="alignnone size-full wp-image-1588" title="a04" src="http://spalinux.com/wp-content/uploads/2011/12/a04.png" alt="" width="710" height="259" /></a></p>
<p>&nbsp;</p>
<ul>
<li>เลือก Encryption: ที่ต้องการใช้ เช่นเลือกเป็น WPA-PSK2 Mixed</li>
<li>เลือก Pre-Shared Key Format: Passphrase</li>
<li>ใส่ค่า Pre-Shared Key: ที่ต้องการ เป็นรหัสที่ Wireless Client ต้องใส่ก่อนที่จะเชื่อมต่อกับ Access Point ได้</li>
</ul>
<p>กดปุ่ม [Apply Changes]</p>
<p>&nbsp;</p>
<p><span style="color: #0000ff;">หมายเหตุ ข้อเสียอย่างหนึ่งของ Access Point ยี่ห้อนี้คือ เปลี่ยนคอนฟิกไปแล้ว จะมีผลหลังจาก &#8220;Reboot&#8221; เท่านั้น เพราะฉะนั้น แนะนำให้เปลี่ยนคอนฟิกทุกอย่างให้เรียบร้อย แล้วค่อย reboot ครั้งเดียว</span></p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/12/a05.png"><img class="alignnone size-full wp-image-1589" title="a05" src="http://spalinux.com/wp-content/uploads/2011/12/a05.png" alt="" width="356" height="122" /></a></p>
<p>&nbsp;</p>
<p>หน้าเว็บ &#8220;Wireless Advanced Settings&#8221;</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/12/a06.png"><img class="alignnone size-full wp-image-1590" title="a06" src="http://spalinux.com/wp-content/uploads/2011/12/a06.png" alt="" width="660" height="608" /></a></p>
<p>&nbsp;</p>
<ul>
<li>แนะนำให้ปิดการ &#8220;Broadcast SSID:&#8221; โดยเปลี่ยนเป็น &#8220;Disabled&#8221;</li>
</ul>
<p>กดปุ่ม [Apply Changes]</p>
<p>&nbsp;</p>
<h4>คอนฟิก DHCP Server บน Access Point</h4>
<p>สำหรับการทดสอบนี้ จะคอนฟิกให้ Access Point แจก IP address ด้วย</p>
<p><span style="color: #ff0000;">คำเตือน ปิดการใช้งาน DHCP บน AP นี้ ก่อนจะเชื่อมต่อเข้ากับ network ที่มี DHCP Server อยู่แล้ว ยกเว้น คุณจะตั้งใจให้ AP ตัวนี้เป็น DHCP Server</span></p>
<p>คลิ้กแท็ป &#8220;TCP/IP&#8221; หน้าเว็บจะแสดง LAN Interface Setup</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/12/a07.png"><img class="alignnone size-full wp-image-1591" title="a07" src="http://spalinux.com/wp-content/uploads/2011/12/a07.png" alt="" width="734" height="676" /></a></p>
<p>&nbsp;</p>
<ul>
<li>บรรทัด DHCP: เลือกเป็น Server</li>
<li>บรรทัด DHCP Client Range: ใส่ IP address ที่ต้องการแจก</li>
</ul>
<p>&nbsp;</p>
<p>เบื้องต้นทดลองเปลี่ยนคอนฟิกแค่นี้ก่อน กดแท็ป &#8220;Reboot&#8221; แล้วกดปุ่ม [Reboot] เพื่อรีบู๊ตอุปกรณ์</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/12/a08.png"><img class="alignnone size-full wp-image-1592" title="a08" src="http://spalinux.com/wp-content/uploads/2011/12/a08.png" alt="" width="734" height="307" /></a></p>
<p>&nbsp;</p>
<p>กดปุ่ม [OK] เพื่อยีนยันการ reboot</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/12/a10.png"><img class="alignnone size-full wp-image-1594" title="a10" src="http://spalinux.com/wp-content/uploads/2011/12/a10.png" alt="" width="356" height="148" /></a></p>
<p>&nbsp;</p>
<p>หน้าเว็บแสดงกำลัง Reboot เท่าที่จับเวลา ประมาณ 100 วินาที ถึงจะกลับมาใช้ได้ ใกล้เคียงกับแถบสีแดงที่ขึ้นบนหน้าเว็บเต็มพอดี เพราะฉะนั้นเปิดหน้า Rebooting ทิ้งไว้ได้เลย แต่ยกเว้นมีการเปลี่ยน IP ของ Access Point</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/12/a09.png"><img class="alignnone size-full wp-image-1593" title="a09" src="http://spalinux.com/wp-content/uploads/2011/12/a09.png" alt="" width="732" height="300" /></a></p>
<p>&nbsp;</p>
<p>ลองเซ็ต Wireless Client ตั้งค่า SSID, Encryption และ key ที่คอนฟิกไว้ แล้วลองเชื่อมต่อดู</p>
<p>&nbsp;</p>
<p>หากต้องการดู Client ที่เชื่อมต่อ ให้คลิ้กแท็ป &#8220;Status&#8221; แล้วคลิ้กลิ้งค์ย่อย &#8220;Active Clients&#8221; ที่อยู่ข้างล่างแท็ป</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/12/a11.png"><img class="alignnone size-full wp-image-1595" title="a11" src="http://spalinux.com/wp-content/uploads/2011/12/a11.png" alt="" width="733" height="388" /></a></p>
<p>&nbsp;</p>
<p>ข้อมูลอ้างอิง</p>
<ul>
<li><a href="http://www.airlive.com/" target="_blank">www.airlive.com</a></li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2011/12/basic-test-airlive-wl-5460ap-v2-wireless-access-point/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>เก็บข้อมูลการใช้เว็บผ่าน Linux Router ด้วย Squid Transparent Proxy</title>
		<link>http://spalinux.com/2011/11/how-to-log-web-traffic-via-linux-router-using-squid-transparent-proxy</link>
		<comments>http://spalinux.com/2011/11/how-to-log-web-traffic-via-linux-router-using-squid-transparent-proxy#comments</comments>
		<pubDate>Fri, 25 Nov 2011 17:44:17 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[router]]></category>
		<category><![CDATA[Squid]]></category>
		<category><![CDATA[Transparent Proxy]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1519</guid>
		<description><![CDATA[ด้วยกฎหมาย พรบ. ที่เริ่มมีผลบังคับ ให้เก็บข้อมูลการใช้เว็บอินเตอร์เน็ต ว่าเป็นใครใช้ เข้าเว็บไหน เมื่อไร ถ้าเป็นเครื่องที่เราสามารถดูแลได้ วิธีหนึ่งที่ทำได้คือ คอนฟิก Proxy ใน ฺBrowser ของแต่ละเครื่องที่จะใช้อินเตอร์เน็ต ชี้ไปยัง Proxy Server ที่ทำหน้าที่เก็บข้อมูลการใช้งาน แต่ถ้าเราไม่สามารถควบคุมดูแลได้ หรือเครื่องที่ใช้งานมีการเปลี่ยนแปลงตลอดเวลา เช่นให้บริการอินเตอร์เน็ต สำหรับผู้มาติดต่องาน ถ้าเป็นแบบนี้ แนะนำให้คอนฟิก Transparent Proxy บน Linux Router เพื่อให้ทำหน้าที่เก็บข้อมูลการใช้เว็บโดยอัตโนมัติ ระบบทดสอบ Linux Router ติดตั้ง Squid มีพอร์ต LAN สองพอร์ต eth0, eth1 เครื่องผู้ใช้งานทั้งหมดต่อพอร์ต eth0 ของ Linux Router พอร์ต eth1 ของ Linux Router ต่อไปยังอินเตอร์เน็ต Redirect Web Traffic ให้เข้าไปใน Proxy [...]]]></description>
			<content:encoded><![CDATA[<p>ด้วยกฎหมาย พรบ. ที่เริ่มมีผลบังคับ ให้เก็บข้อมูลการใช้เว็บอินเตอร์เน็ต ว่าเป็นใครใช้ เข้าเว็บไหน เมื่อไร</p>
<p>ถ้าเป็นเครื่องที่เราสามารถดูแลได้ วิธีหนึ่งที่ทำได้คือ คอนฟิก Proxy ใน ฺBrowser ของแต่ละเครื่องที่จะใช้อินเตอร์เน็ต ชี้ไปยัง Proxy Server ที่ทำหน้าที่เก็บข้อมูลการใช้งาน</p>
<p>แต่ถ้าเราไม่สามารถควบคุมดูแลได้ หรือเครื่องที่ใช้งานมีการเปลี่ยนแปลงตลอดเวลา เช่นให้บริการอินเตอร์เน็ต สำหรับผู้มาติดต่องาน</p>
<p>ถ้าเป็นแบบนี้ แนะนำให้คอนฟิก Transparent Proxy บน Linux Router เพื่อให้ทำหน้าที่เก็บข้อมูลการใช้เว็บโดยอัตโนมัติ</p>
<p><span id="more-1519"></span></p>
<h4>ระบบทดสอบ</h4>
<ul>
<li>Linux Router ติดตั้ง Squid มีพอร์ต LAN สองพอร์ต eth0, eth1</li>
<li>เครื่องผู้ใช้งานทั้งหมดต่อพอร์ต eth0 ของ Linux Router</li>
<li>พอร์ต eth1 ของ Linux Router ต่อไปยังอินเตอร์เน็ต</li>
</ul>
<h4></h4>
<h4>Redirect Web Traffic ให้เข้าไปใน Proxy Server</h4>
<p>เริ่มแรกต้องบังคับให้การใช้เว็บอินเตอร์เน็ตทั้งหมดต้องผ่าน Linux Router เข้าพอร์ต eth0 แล้วออกอินเตอร์เน็ตทางพอร์ต eth1</p>
<p>ถ้าเราต้องการให้การใช้เว็บ (TCP Port 80) ทั้งหมด เข้าพอร์ต eth0 ต้องผ่านเข้าไปใน Proxy Server (TCP Port 3128) ก่อน เพื่อให้เก็บข้อมูลการใช้งาน สามารถใช้คำสั่ง iptables ตามตัวอย่าง</p>
<pre>
[root@router ~]# <b>iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128</b>
</pre>
<h4>คอนฟิก Squid ให้ทำหน้าที่เป็น Transparent Proxy</h4>
<p>อย่างที่สองคือต้องแก้ไขไฟล์คอนฟิก Squid ซึ่งอยู่ใน /etc/squid/squid.conf</p>
<p>การแก้ไขคอนฟิกขึ้นอยู่กับเวอร์ชั่นของ Squid ที่ติดตั้ง</p>
<p>คำแนะนำ : เพื่อคุณสมบัติและประสิทธิภาพที่ดีกว่า แนะนำให้ใช้เวอร์ชั่นใหม่ล่าสุดที่สามารถติดตั้งได้</p>
<p><span style="text-decoration: underline;"><strong>เวอร์ชั่นเก่ากว่า 2.6</strong></span></p>
<pre>
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
</pre>
<p><span style="text-decoration: underline;"><strong>เวอร์ชั่น 2.6 &#8211; 3.0</strong></span></p>
<pre>
http_port 3128 transparent
</pre>
<p><span style="text-decoration: underline;"><strong>ตั้งแต่เวอร์ชั่น 3.1</strong></span></p>
<pre>
http_port 3128 intercept
</pre>
<p>หรือ</p>
<pre>
http_port 3128 transparent
</pre>
<p>หลังการแก้ไขคอนฟิกไฟล์ของ squid ต้องรีสตาร์ตเซอร์วิส squid</p>
<pre>
[root@router ~]# <b>service squid restart</b>
</pre>
<p>สามารถดูข้อมูลการใช้งานเว็บได้ในไฟล์ /var/log/squid/access.log</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://spalinux.com/2008/05/configure_squid_proxy_server">คอนฟิก Squid Proxy Server</a></li>
<li><a href="http://www.squid-cache.org/" target="_blank">squid : Optimising Web Delivery</a></li>
<li><a href="http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch32_:_Controlling_Web_Access_with_Squid" target="_blank">Quick HOWTO : Ch32 : Controlling Web Access with Squid</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2011/11/how-to-log-web-traffic-via-linux-router-using-squid-transparent-proxy/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>คำสั่ง เพิ่ม ลบ แสดง route บน OS ต่างๆ</title>
		<link>http://spalinux.com/2011/06/howto_add_delete_show_route_on_different_os</link>
		<comments>http://spalinux.com/2011/06/howto_add_delete_show_route_on_different_os#comments</comments>
		<pubDate>Thu, 09 Jun 2011 10:26:54 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[netstat]]></category>
		<category><![CDATA[route]]></category>
		<category><![CDATA[routing table]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1362</guid>
		<description><![CDATA[ไม่มีไรมาก ในบทความนี้ ขอรวบรวม วิธีการ เพิ่ม ลบ และ แสดง routing table บน OS ต่างๆ เพื่อผู้สนใจ และอาจสับสนในบางครั้ง เมื่อต้องดูแลจัดการเครื่องหลายแบบ ตัวอย่างทั้งหมด แสดงการเพิ่ม และ ลบ route เพื่อไปยัง network &#8220;172.16.1.0/255.255.255.0&#8243; โดยผ่าน gateway &#8220;192.168.1.254&#8243; ส่วนการแสดง routing table นั้น จะแสดงผลลัพธ์เฉพาะส่วนที่เพิ่ม route เท่านั้น Linux [root@linux ~]# route add -net 172.16.1.0 netmask 255.255.255.0 gw 192.168.1.254 [root@linux ~]# netstat -rn Kernel IP routing table Destination     Gateway         Genmask         Flags   MSS [...]]]></description>
			<content:encoded><![CDATA[<p>ไม่มีไรมาก ในบทความนี้ ขอรวบรวม วิธีการ เพิ่ม ลบ และ แสดง routing table บน OS ต่างๆ เพื่อผู้สนใจ และอาจสับสนในบางครั้ง เมื่อต้องดูแลจัดการเครื่องหลายแบบ</p>
<p>ตัวอย่างทั้งหมด แสดงการเพิ่ม และ ลบ route เพื่อไปยัง network &#8220;172.16.1.0/255.255.255.0&#8243; โดยผ่าน gateway &#8220;192.168.1.254&#8243;</p>
<p>ส่วนการแสดง routing table นั้น จะแสดงผลลัพธ์เฉพาะส่วนที่เพิ่ม route เท่านั้น</p>
<h4><span id="more-1362"></span><br />
Linux</h4>
<pre>[root@linux ~]# <strong>route add -net 172.16.1.0 netmask 255.255.255.0 gw 192.168.1.254</strong></pre>
<pre>[root@linux ~]# <strong>netstat -rn
</strong>Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
172.16.1.0      192.168.1.254   255.255.255.0     UG      0 0          0 eth0</pre>
<pre>[root@linux ~]# <strong>route del -net 172.16.1.0 netmask 255.255.255.0 gw 192.168.1.254</strong></pre>
<pre> </pre>
<h4>MAC OS X</h4>
<pre>[root@osx ~]# <strong>route add -net 172.16.1.0 192.168.1.254 255.255.255.0
</strong>add net 172.16.1.0: gateway 192.168.1.254</pre>
<pre>[root@osx ~]# <strong>netstat -rn</strong>
Routing tables</pre>
<pre>Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
172.16.1/24        192.168.1.254      UGSc        0        0    en0</pre>
<pre>[root@osx ~]# <strong>route delete -net 172.16.1.0 192.168.1.254 255.255.255.0</strong>
delete net 172.16.1.0: gateway 192.168.1.254</pre>
<p> </p>
<h4>Solaris </h4>
<pre>[root@solaris /]# <strong>route add -net 172.16.1.0 -netmask 255.255.255.0 192.168.1.254
</strong>add net 172.16.1.0: gateway 192.168.1.254 </pre>
<pre>[root@solaris /]# <strong>netstat -rnv</strong></pre>
<pre>IRE Table: IPv4
  Destination             Mask           Gateway          Device Mxfrg Rtt   Ref Flg  Out  In/Fwd
-------------------- --------------- -------------------- ------ ----- ----- --- --- ----- ------
172.16.1.0           255.255.255.0   192.168.1.254               1500*    0    1 UG      0      0</pre>
<pre>[root@solaris /]# <strong>route delete -net 172.16.1.0 -netmask 255.255.255.0 192.168.1.254
</strong>delete net 172.16.1.0: gateway 192.168.1.254</pre>
<p> </p>
<h4>Windows</h4>
<pre>C:\&gt; <strong>route add 172.16.1.0 mask 255.255.255.0 192.168.1.254</strong></pre>
<pre>C:\&gt; <strong>netstat -rn</strong></pre>
<pre>Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
       172.16.1.0      255.255.255.0     192.168.1.254  192.168.1.       1</pre>
<pre>C:\&gt; <strong>route delete 172.16.1.0 mask 255.255.255.0 192.168.1.254</strong></pre>
<pre><strong></strong> </pre>
<pre><strong></strong> </pre>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2011/06/howto_add_delete_show_route_on_different_os/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ดักจับ Traffic ใน Network ด้วย tcpdump</title>
		<link>http://spalinux.com/2011/06/using_tcpdump_to_capture_traffic_on_network</link>
		<comments>http://spalinux.com/2011/06/using_tcpdump_to_capture_traffic_on_network#comments</comments>
		<pubDate>Fri, 03 Jun 2011 14:44:19 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Console]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Sniffer]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[tcpdump]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1351</guid>
		<description><![CDATA[tcpdump เป็นโปรแกรมประเภทเดียวกับ Sniffer, Wireshark คือใช้ในการดักจับ (capture) Traffic หรือ Packet ที่ รับ/ส่ง เข้า/ออก ระหว่างพอร์ตแลน (LAN) ของเซิรฟ์เวอร์เครื่องที่รันคำสั่ง และอุปกรณ์เครือข่าย (Router, Switch, HUB) มีประโยชน์อย่างมาก เพื่อใช้ในการวิเคราะห์ ตรวจสอบ หรือแก้ปัญหาเกี่ยวกับ Network ได้ tcpdump ต้องรันด้วย root หรือเทียบเท่า และรันแบบ command line ติดตั้งมาเป็นดีฟอลต์บนลีนุกซ์เกือบทุกตระกูล เวอร์ชั่น จึงใช้งานได้สะดวก ไม่ต้องติดตั้งเพิ่มเติมเหมือนโปรแกรมอื่นๆ ในที่นี้ขอแนะนำวิธีการใช้งานเบื้องต้นของ tcpdump รันคำสั่ง tcpdump ล็อกอินเป็น root แล้วพิมพ์คำสั่ง tcpdump หมายเหตุ พอร์ตที่ใช้ในดักจับ packet ไม่จำเป็นต้องใส่ IP Address หรือเป็น IP ในกลุ่มเดียวกับ IP อื่นๆ [...]]]></description>
			<content:encoded><![CDATA[<p>tcpdump เป็นโปรแกรมประเภทเดียวกับ Sniffer, Wireshark คือใช้ในการดักจับ (capture) Traffic หรือ Packet ที่ รับ/ส่ง เข้า/ออก ระหว่างพอร์ตแลน (LAN) ของเซิรฟ์เวอร์เครื่องที่รันคำสั่ง และอุปกรณ์เครือข่าย (Router, Switch, HUB)</p>
<p>มีประโยชน์อย่างมาก เพื่อใช้ในการวิเคราะห์ ตรวจสอบ หรือแก้ปัญหาเกี่ยวกับ Network ได้</p>
<p>tcpdump ต้องรันด้วย root หรือเทียบเท่า และรันแบบ command line ติดตั้งมาเป็นดีฟอลต์บนลีนุกซ์เกือบทุกตระกูล เวอร์ชั่น จึงใช้งานได้สะดวก ไม่ต้องติดตั้งเพิ่มเติมเหมือนโปรแกรมอื่นๆ</p>
<p>ในที่นี้ขอแนะนำวิธีการใช้งานเบื้องต้นของ tcpdump</p>
<h4><span id="more-1351"></span><br />
รันคำสั่ง tcpdump</h4>
<p>ล็อกอินเป็น root แล้วพิมพ์คำสั่ง tcpdump</p>
<p><strong>หมายเหตุ</strong> พอร์ตที่ใช้ในดักจับ packet ไม่จำเป็นต้องใส่ IP Address หรือเป็น IP ในกลุ่มเดียวกับ IP อื่นๆ ใน Network ที่ต้องการดักจับ ขอให้สถานะ Up พอ</p>
<p>หากไม่ระบุออปชั่นใดๆ เลย tcpdump จะเลือกดักจับ packet ที่เข้าออก พอร์ตแลนแรก โดยทั่วไปคือ eth0</p>
<p>ตัวอย่างการรันคำสั่งแบบไม่ระบุออปชั่น</p>
<pre>[root@server ~]# <strong>tcpdump
</strong>tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
09:15:53.948422 IP 192.168.1.102.jwalkserver &gt; server.example.com.ssh: Flags [.], ack 1108, win 64623, length 0
09:15:53.955117 IP server.example.com.ssh &gt; 192.168.1.102.jwalkserver: Flags [P.], seq 1108:1384, ack 1, win 8576, length 276
09:15:53.963948 IP server.example.com.ssh &gt; 192.168.1.102.jwalkserver: Flags [P.], seq 1384:1548, ack 1, win 8576, length 164
09:15:53.964191 IP 192.168.1.102.jwalkserver &gt; server.example.com.ssh: Flags [.], ack 1548, win 64183, length 0
09:15:53.972707 IP server.example.com.ssh &gt; 192.168.1.102.jwalkserver: Flags [P.], seq 1548:1824, ack 1, win 8576, length 276
<span style="color: #ff0000;"><strong>^C</strong></span></pre>
<pre>102 packets captured
102 packets received by filter
0 packets dropped by kernel</pre>
<p>กด [Ctrl-C] เพื่อออกจากคำสั่ง tcpdump ด้านล่างจะมีรายงานสรุปว่า ดักจับได้กี่ packet</p>
<p>ผลลัพธ์ที่แสดงจากคำสั่ง tcpdump จะแตกต่างกันไปขึ้นกับ Network Protocol ที่รับ/ส่ง เช่นถ้าเป็น IP Protocol (TCP, UDP) รูปแบบจะเป็น</p>
<ul>
<li>เวลา</li>
<li>IP</li>
<li>[Source IP Address].[Source Port]</li>
<li>[Destination Address].[Destination Port]</li>
<li>IP, TCP, UDP Headers</li>
</ul>
<p> </p>
<h4>เลือกพอร์ตที่ดักจับ</h4>
<p>ระบุออปชั่น &#8220;-i&#8221; แล้วตามด้วยชื่อพอร์ต เช่น ต้องการจับ packet ที่เข้าออก eth1</p>
<pre>[root@server ~]# <strong>tcpdump -i eth1
</strong>tcpdump: WARNING: eth1: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
<span style="color: #ff0000;"><strong>^C</strong></span></pre>
<p>ในที่นี้ พอร์ต eth1 ไม่มีการใส่ IP Address จึงขึ้นฟ้อง &#8220;WARNING: eth1: no IPv4 address assigned&#8221; แต่ก็ยังสามารถดักจับ Traffic ได้</p>
<h4>ไม่ต้องแปลง IP เป็นชื่อ hostname</h4>
<p>ผลลัพธ์ที่แสดงออกมา โปรแกรม tcpdump จะพยายามแปลง IP Address ทั้งต้นทาง ปลายทาง ของ packet ที่ดักจับได้ ให้เป็นชื่อ hostname โดยใช้ไฟล์ /etc/hosts หรือ บริการ DNS</p>
<p>ถ้าหาก traffic มีปริมาณมาก แนะนำให้ปิดคุณสมบัติการพยายามแปลง IP เป็น ชื่อ hostname ออกซะ ด้วยการระบุออปชั่น &#8220;-n&#8221; เพื่อลดโหลด DNS</p>
<pre>[root@server ~]# <strong>tcpdump -i eth0 -l -n
</strong>tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
09:31:10.322145 IP 192.168.1.1.ssh &gt; 192.168.1.102.jwalkserver: Flags [P.], seq 1901277915:1901278111, ack 2244887520, win 8576, length 196
09:31:10.322752 IP 192.168.1.102.jwalkserver &gt; 192.168.1.1.ssh: Flags [.], ack 196, win 65535, length 0
09:31:10.330843 IP 192.168.1.1.ssh &gt; 192.168.1.102.jwalkserver: Flags [P.], seq 196:472, ack 1, win 8576, length 276
09:31:10.332785 IP 192.168.1.1.ssh &gt; 192.168.1.102.jwalkserver: Flags [P.], seq 472:636, ack 1, win 8576, length 164
09:31:10.333209 IP 192.168.1.102.jwalkserver &gt; 192.168.1.1.ssh: Flags [.], ack 636, win 65095, length 0
<span style="color: #ff0000;">^C</span></pre>
<p> </p>
<h4>ไม่ต้องแปลง Port Number เป็นชื่อ Port Name</h4>
<p>หากต้องการแสดงชื่อพอร์ต (TCP, UDP ports) เป็นตัวเลข (ไฟล์ /etc/services)  ให้ระบุออปชั่น &#8220;-n&#8221; เพิ่มอีกหนึ่ง หรือระบุเป็น &#8220;-nn&#8221; เลย</p>
<pre>[root@server ~]# <strong>tcpdump -i eth0 -l -nn
</strong>tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
09:39:38.800430 IP 192.168.1.102.1289 &gt; 192.168.1.1.22: Flags [.], ack 196, win 65535, length 0
09:39:38.802793 IP 192.168.1.1.22 &gt; 192.168.1.102.1289: Flags [P.], seq 196:456, ack 1, win 8576, length 260
09:39:38.805709 IP 192.168.1.1.22 &gt; 192.168.1.102.1289: Flags [P.], seq 456:604, ack 1, win 8576, length 148
09:39:38.805963 IP 192.168.1.102.1289 &gt; 192.168.1.1.22: Flags [.], ack 604, win 65127, length 0
09:39:38.808655 IP 192.168.1.1.22 &gt; 192.168.1.102.1289: Flags [P.], seq 604:848, ack 1, win 8576, length 244
<span style="color: #ff0000;"><strong>^C</strong></span></pre>
<h4>ผลลัพธ์แบบสั้นๆ </h4>
<p>หากไม่สนใจ ข้อมูลใน IP, TCP, UDP Headers ต้องการรู้แค่ว่า IP อะไรคุยกัน ใช้พอร์ตอะไร แค่นั้นพอ ให้ระบุออปชั่น &#8220;-q&#8221;</p>
<pre>[root@server ~]# <strong>tcpdump -i eth0 -l -nn -q
</strong>tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
09:40:48.472427 IP 192.168.1.1.22 &gt; 192.168.1.102.1289: tcp 196
09:40:48.473006 IP 192.168.1.102.1289 &gt; 192.168.1.1.22: tcp 0
09:40:48.479252 IP 192.168.1.1.22 &gt; 192.168.1.102.1289: tcp 164
09:40:48.487003 IP 192.168.1.1.22 &gt; 192.168.1.102.1289: tcp 100
09:40:48.487311 IP 192.168.1.102.1289 &gt; 192.168.1.1.22: tcp 0
<span style="color: #ff0000;"><strong>^C</strong></span></pre>
<p> </p>
<h4>แสดงข้อมูล Layer 2 (MAC Address)</h4>
<p>ระบุออปชั่น &#8220;-e&#8221;  หากต้องการแสดงข้อมูล Layer 2 หรือแสดง Source, Destination MAC Address ด้วย</p>
<pre>[root@server ~]# <strong>tcpdump -i eth0 -l -nn -e -q
</strong>tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
09:44:05.644395 00:11:22:33:44:55 &gt; 00:55:66:77:88:99, IPv4, length 250: 192.168.1.1.22 &gt; 192.168.1.102.1289: tcp 196
09:44:05.644959 00:55:66:77:88:99 &gt; 00:11:22:33:44:55, IPv4, length 60: 192.168.1.102.1289 &gt; 192.168.1.1.22: tcp 0
09:44:05.652121 00:11:22:33:44:55 &gt; 00:55:66:77:88:99, IPv4, length 314: 192.168.1.1.22 &gt; 192.168.1.102.1289: tcp 260
09:44:05.660897 00:11:22:33:44:55 &gt; 00:55:66:77:88:99, IPv4, length 218: 192.168.1.1.22 &gt; 192.168.1.102.1289: tcp 164
09:44:05.661173 00:55:66:77:88:99 &gt; 00:11:22:33:44:55, IPv4, length 60: 192.168.1.102.1289 &gt; 192.168.1.1.22: tcp 0
<span style="color: #ff0000;"><strong>^C</strong></span></pre>
<h4> <br />
save ผลลัพธ์เก็บในไฟล์</h4>
<p>หากต้องการบันทึก (save) ผลลัพธ์ที่ดักจับได้ ให้เหมือนกับหน้าจอที่แสดงขึ้นมา ก็ใช้การ redirection</p>
<p>ตัวอย่าง การเก็บผลลัพธ์ลงไฟล์ ให้เหมือนกับที่แสดงขึ้นมา</p>
<pre>[root@server ~]# <strong>tcpdump -i eth0 -l -nn -q &gt; catpure-display.log
</strong>tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
<span style="color: #ff0000;"><strong>^C</strong></span>
7 packets captured
7 packets received by filter
0 packets dropped by kernel</pre>
<pre>หากต้องการหยุด ก็กดปุ่ม [Ctrl-C] เหมือนกัน</pre>
<p>ใช้คำสั่ง cat เพื่อดูเนื้อหาไฟล์ที่บันทึก</p>
<pre>[root@server ~]# <strong>cat capture-display.log
</strong>09:57:08.118314 IP 192.168.1.1.22 &gt; 192.168.1.102.1289: tcp 196
09:57:08.118515 IP 192.168.1.102.1289 &gt; 192.168.1.1.22: tcp 0
09:57:09.138258 IP 192.168.1.102.1289 &gt; 192.168.1.1.22: tcp 36
09:57:09.355761 IP 192.168.1.102.1289 &gt; 192.168.1.1.22: tcp 36
09:57:09.356025 IP 192.168.1.1.22 &gt; 192.168.1.102.1289: tcp 0
<span style="color: #ff0000;"><strong>^C</strong></span></pre>
<p> แต่ถ้าต้องการบันทึกแบบเต็มรูปแบบ ให้ใช้ออปชั่น &#8220;-w&#8221; แล้วตามด้วยชื่อไฟล์ โดยทั่วไปนิยมบันทึกเป็นไฟล์นามสกุล &#8220;.cap&#8221;</p>
<pre>[root@server ~]# <strong>tcpdump -i eth0 -w capture-raw.cap
</strong>tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
<strong><span style="color: #ff0000;">^C</span></strong>
24 packets captured
24 packets received by filter
0 packets dropped by kernel</pre>
<p>ไฟล์ที่บันทึกด้วยออปชั่น &#8220;-w&#8221; สามารถนำมาเปิดย้อนหลังด้วยคำสั่ง tcpdump ตามด้วยออปชั่น &#8220;-r&#8221;  นอกจากนี้ ยังสามารถนำไปเปิดกับโปรแกรม Wireshark ได้อีกด้วย</p>
<pre>[root@server ~]# <strong>tcpdump -r capture-raw.cap -l -nn
</strong>reading from file capture-raw.cap, link-type EN10MB (Ethernet)
10:00:14.959339 IP 192.168.1.102.1289 &gt; 192.168.1.1.22: Flags [P.], seq 105:157, ack 236, win 65431, length 52
10:00:14.972070 IP 192.168.1.1.22 &gt; 192.168.1.102.1289: Flags [P.], seq 236:288, ack 157, win 8576, length 52
10:00:15.137079 IP 192.168.1.102.1289 &gt; 192.168.1.1.22: Flags [.], ack 288, win 65379, length 0
10:00:15.221339 IP 192.168.1.102.1289 &gt; 192.168.1.1.22: Flags [P.], seq 157:209, ack 288, win 65379, length 52
10:00:15.227905 IP 192.168.1.1.22 &gt; 192.168.1.102.1289: Flags [P.], seq 288:340, ack 209, win 8576, length 52
<span style="color: #ff0000;"><strong>^C</strong></span></pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://spalinux.com/2008/09/verify_lan_network_interface_status_on_linux">ตรวจสอบสถานะของการ์ดเน็ตเวิร์กบนลีนุกซ์</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2011/06/using_tcpdump_to_capture_traffic_on_network/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ล็อกอินผิดมากเกิน แบนซะด้วย fail2ban</title>
		<link>http://spalinux.com/2011/05/ban_failed_login_attempts_using_fail2ban</link>
		<comments>http://spalinux.com/2011/05/ban_failed_login_attempts_using_fail2ban#comments</comments>
		<pubDate>Sat, 07 May 2011 09:01:08 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Authentication]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[fail2ban]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1316</guid>
		<description><![CDATA[หากเซิร์ฟเวอร์ของคุณตั้งอยู่บนอินเตอร์เน็ต เพื่อให้บริการเว็บไซต์หรืออื่นๆ และคุณจำเป็นต้องเปิด SSH เพื่อสามารถ login เข้าไปตรวจสอบสถานะของเครื่องได้ คุณต้องเคยเจอปัญหานี้แน่นอน คือมีการพยายามเจาะระบบด้วยการ ssh เข้ามา ด้วย user, password ต่างๆ ที่คาดว่าจะมีในเครื่อง ตัวอย่างไฟล์ /var/log/secure แสดงถึงการพยายาม ssh แต่ไม่สำเร็จ May  2 16:39:27 server sshd[8309]: Invalid user john from x.x.x.x May  2 16:39:27 server sshd[8310]: input_userauth_request: invalid user john May  2 16:39:27 server sshd[8309]: pam_unix(sshd:auth): check pass; user unknown May  2 16:39:27 server sshd[8309]: pam_unix(sshd:auth): [...]]]></description>
			<content:encoded><![CDATA[<p>หากเซิร์ฟเวอร์ของคุณตั้งอยู่บนอินเตอร์เน็ต เพื่อให้บริการเว็บไซต์หรืออื่นๆ และคุณจำเป็นต้องเปิด SSH เพื่อสามารถ login เข้าไปตรวจสอบสถานะของเครื่องได้</p>
<p>คุณต้องเคยเจอปัญหานี้แน่นอน คือมีการพยายามเจาะระบบด้วยการ ssh เข้ามา ด้วย user, password ต่างๆ ที่คาดว่าจะมีในเครื่อง</p>
<p><span id="more-1316"></span></p>
<p>ตัวอย่างไฟล์ /var/log/secure แสดงถึงการพยายาม ssh แต่ไม่สำเร็จ</p>
<pre>May  2 16:39:27 server sshd[8309]: Invalid user john from x.x.x.x
May  2 16:39:27 server sshd[8310]: input_userauth_request: invalid user john
May  2 16:39:27 server sshd[8309]: pam_unix(sshd:auth): check pass; user unknown
May  2 16:39:27 server sshd[8309]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=x.x.x.x
May  2 16:39:27 server sshd[8309]: pam_succeed_if(sshd:auth): error retrieving information about user john
May  2 16:39:29 server sshd[8309]: Failed password for invalid user john from x.x.x.x port 3291 ssh2
May  2 16:39:29 server sshd[8310]: Received disconnect from x.x.x.x: 11: Bye Bye</pre>
<pre> </pre>
<p>การป้องกัน หรือคำแนะนำอย่างแรก ที่พึงกระทำคือ ตั้ง user, password ให้ยากต่อการคาดเดา แต่เท่านั้นอาจไม่เพียงพอ</p>
<p>บทความนี้ขอเสนอวิธีการป้องกันด้วย fail2ban ซึ่งจะช่วยแบน ip ที่พยายาม login แต่ไม่สำเร็จได้</p>
<p>หลักการทำงานคร่าวๆ คือ โปรแกรม fail2ban จะคอยตรวจสอบไฟล์ที่ตั้งไว้ โดยค้นหาคำหรือประโยคที่เกิดขึ้นในไฟล์ เมื่อมีการ failed attempts เกิดขึ้นถึงจำนวนครั้งที่กำหนด fail2ban จะทำการบางอย่างที่ตั้งไว้ เช่น รันคำสั่ง iptables เพื่อ DROP packets ได้</p>
<h4>ติดตั้งไฟล์ rpm</h4>
<p>ในที่นี้ทดสอบบน Fedora 14 ต้องติดตั้งไฟล์ rpm เพิ่มเติมดังนี้</p>
<pre>[root@fc14-x64 ~]# <strong>rpm -ivh gamin-python-0.1.10-8.fc14.x86_64.rpm
</strong>[root@fc14-x64 ~]# <strong>rpm -ivh shorewall-4.4.11.1-1.fc14.noarch.rpm
</strong>[root@fc14-x64 ~]# <strong>rpm -ivh fail2ban-0.8.4-25.fc14.noarch.rpm</strong></pre>
<p>เพื่อความชัดเจนในการทดสอบ จะรันคำสั่ง service iptables stop เพื่อเคลียร์ rule ของ iptables ทั้งหมดออกก่อน</p>
<pre>[root@fc14-x64 ~]# <strong>service iptables stop
</strong>iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                               [  OK  ]</pre>
<p>ใช้คำสั่ง iptables เพื่อแสดง rule ที่ใช้งานอยู่</p>
<pre>[root@fc14-x64 ~]# <strong>iptables -L -v -n
</strong>Chain INPUT (policy ACCEPT 46 packets, 3176 bytes)
 pkts bytes target     prot opt in     out     source               destination</pre>
<pre>Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination</pre>
<pre>Chain OUTPUT (policy ACCEPT 40 packets, 5272 bytes)
 pkts bytes target     prot opt in     out     source               destination</pre>
<p>ใช้คำสั่ง service เพื่อสตาร์ต fail2ban</p>
<pre>[root@fc14-x64 ~]# <strong>service fail2ban start
</strong>Starting fail2ban:                                         [  OK  ]</pre>
<p>ใช้คำสั่ง ps เพื่อดูโปรเซสของ fail2ban</p>
<pre>[root@fc14-x64 ~]# <strong>ps -ef | grep fail2ban
</strong>root      1151     1  0 23:32 ?        00:00:00 /usr/bin/python /usr/bin/fail2ban-server -b -s /var/run/fail2ban/fail2ban.sock -x</pre>
<p>ดูในไฟล์ /var/log/messages แสดงการเริ่มต้นทำงานของ fail2ban</p>
<pre>[root@fc14-x64 ~]# <strong>tail /var/log/messages</strong></pre>
<pre>May  6 23:35:32 fc14-x64 fail2ban.server : INFO   Changed logging target to SYSLOG for Fail2ban v0.8.4
May  6 23:35:32 fc14-x64 fail2ban.jail   : INFO   Creating new jail 'ssh-iptables'
May  6 23:35:32 fc14-x64 fail2ban.jail   : INFO   Jail 'ssh-iptables' uses Gamin
May  6 23:35:32 fc14-x64 fail2ban.filter : INFO   Added logfile = /var/log/secure
May  6 23:35:32 fc14-x64 fail2ban.filter : INFO   Set maxRetry = 5
May  6 23:35:32 fc14-x64 fail2ban.filter : INFO   Set findtime = 600
May  6 23:35:32 fc14-x64 fail2ban.actions: INFO   Set banTime = 600
May  6 23:35:32 fc14-x64 fail2ban.jail   : INFO   Jail 'ssh-iptables' started</pre>
<p>ดีฟอลต์คอนฟิกไฟล์ rpm ที่ได้มาจาก Fedora 14 จะตรวจสอบเฉพาะการพยายาม SSH โดยดูในไฟล์ /var/log/secure</p>
<p>fail2ban จะสร้าง rule และ chain ใหม่ขึ้นมา ใน iptables</p>
<pre>[root@fc14-x64 ~]# <strong>iptables -L -v -n
</strong>Chain INPUT (policy ACCEPT 92 packets, 7885 bytes)
 pkts bytes target     prot opt in     out     source               destination
<span style="color: #0000ff;"><strong>   53  4052 fail2ban-SSH  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:22</strong></span></pre>
<pre>Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination</pre>
<pre>Chain OUTPUT (policy ACCEPT 84 packets, 8087 bytes)
 pkts bytes target     prot opt in     out     source               destination</pre>
<pre>Chain <strong><span style="color: #0000ff;">fail2ban-SSH</span> </strong>(1 references)
 pkts bytes target     prot opt in     out     source               destination
<span style="color: #0000ff;"><strong>   53  4052 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0</strong></span></pre>
<p> </p>
<h4>ไฟล์คอนฟิกของ fail2ban</h4>
<p>ไฟล์คอนฟิกของ fail2ban อยู่ใน /etc/fail2ban/</p>
<p>ไฟล์ /etc/fail2ban/jail.conf จะเป็นการกำหนดการทำงานของ fail2ban</p>
<p>คอนฟิกบางส่วนจากไฟล์ jail.conf</p>
<pre>[root@fc14-x64 ~]# <strong>cat /etc/fail2ban/jail.conf</strong>
...
[DEFAULT]
...
# "bantime" is the number of seconds that a host is banned.
<span style="color: #0000ff;">bantime  = 600</span></pre>
<pre># A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
<span style="color: #0000ff;">findtime  = 600
</span>...
[ssh-iptables]</pre>
<pre>enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=root, sender=fail2ban@mail.com]
logpath  = /var/log/secure
maxretry = 5</pre>
<p>คำอธิบายคร่าวๆ จากไฟล์ jail.conf คือ ให้ตรวจสอบ (filter) การ ssh โดยดูในไฟล์ (logpath) /var/log/secure ว่า ถ้ามีการ failed login เกิน (maxretry) ครั้ง ภายในเวลา (findtime) 600 วินาที ให้ทำการ (action) รัน iptables ด้วยออปชั่นในวงเล็บ</p>
<p>สามารถดูรายละเอียด filter ในไฟล์ /etc/fail2ban/filter.d/sshd.conf</p>
<pre>[root@fc14-x64 ~]# <strong>cat /etc/fail2ban/filter.d/sshd.conf
</strong>...
[Definition]</pre>
<pre>_daemon = sshd
...
failregex = ^%(__prefix_line)s(?:error: PAM: )?Authentication failure for .* from &lt;HOST&gt;\s*$
            ^%(__prefix_line)s(?:error: PAM: )?User not known to the underlying authentication module for .* from &lt;HOST&gt;\s*$
            ^%(__prefix_line)sFailed (?:password|publickey) for .* from &lt;HOST&gt;(?: port \d*)?(?: ssh\d*)?$
            ^%(__prefix_line)sROOT LOGIN REFUSED.* FROM &lt;HOST&gt;\s*$
            ^%(__prefix_line)s[iI](?:llegal|nvalid) user .* from &lt;HOST&gt;\s*$
            ^%(__prefix_line)sUser \S+ from &lt;HOST&gt; not allowed because not listed in AllowUsers$
            ^%(__prefix_line)sauthentication failure; logname=\S* uid=\S* euid=\S* tty=\S* ruser=\S* rhost=&lt;HOST&gt;(?:\s+user=.*)?\s*$
            ^%(__prefix_line)srefused connect from \S+ \(&lt;HOST&gt;\)\s*$
            ^%(__prefix_line)sAddress &lt;HOST&gt; .* POSSIBLE BREAK-IN ATTEMPT!*\s*$
            ^%(__prefix_line)sUser \S+ from &lt;HOST&gt; not allowed because none of user's groups are listed in AllowGroups$</pre>
<p>คำอธิบายจากไฟล์คอนฟิก filter คือ ให้ตรวจสอบหาคำหรือประโยคที่ระบุไว้ใน failregex (regular expression)</p>
<p>ส่วน action ที่ทำ หลังจาก maxretry ดูได้ในไฟล์  /etc/fail2ban/action.d/iptables.conf</p>
<pre>[root@fc14-x64 ~]# <strong>cat /etc/fail2ban/action.d/iptables.conf
</strong>...
actionban = iptables -I fail2ban-&lt;name&gt; 1 -s &lt;ip&gt; -j DROP
...
actionunban = iptables -D fail2ban-&lt;name&gt; -s &lt;ip&gt; -j DROP</pre>
<p>คำอธิบาย คือการรันคำสั่ง iptables เพื่อสร้าง rule เพื่อจะ ban &lt;ip&gt; ที่พยายามเข้ามา</p>
<p>และเมื่อเกินเวลา (bantime) 600 วินาที แล้ว ก็รันคำสั่ง iptables เพื่อลบ rule ที่สร้างขึ้น อนุญาตให้ &lt;ip&gt; สามารถเข้ามาได้อีกครั้ง</p>
<h4>ทดสอบการ login fail</h4>
<p><span style="color: #ff0000;"><strong>คำเตือน </strong>การทดลองใช้ fail2ban ให้ลองบนเครื่องที่สามารถ console ได้  เพราะการคอนฟิกหรือลอง login fail จะทำให้คุณไม่สามารถ ssh เข้าเครื่องนั้นได้ ช่วงเวลาหนึ่ง</span></p>
<p>สมมุติให้ลอง ssh login fail ด้วย root จาก 192.168.1.12</p>
<p>ดูไฟล์ /var/log/secure ที่เกิดขึ้นบน server</p>
<pre>[root@fc14-x64 ~]#<strong> tail -f /var/log/secure
</strong>May  6 23:43:47 fc14-x64 unix_chkpwd[1340]: password check failed for user (root)
May  6 23:43:47 fc14-x64 sshd[1338]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.12  user=root
May  6 23:43:49 fc14-x64 sshd[1338]: Failed password for root from 192.168.1.12 port 34811 ssh2</pre>
<pre>May  6 23:43:56 fc14-x64 unix_chkpwd[1342]: password check failed for user (root)
May  6 23:43:58 fc14-x64 sshd[1338]: Failed password for root from 192.168.1.12 port 34811 ssh2</pre>
<pre>May  6 23:44:00 fc14-x64 unix_chkpwd[1343]: password check failed for user (root)
May  6 23:44:01 fc14-x64 sshd[1338]: Failed password for root from 192.168.1.12 port 34811 ssh2
May  6 23:44:01 fc14-x64 sshd[1339]: Connection closed by 192.168.1.12
May  6 23:44:01 fc14-x64 sshd[1338]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.12  user=root</pre>
<pre>May  6 23:44:16 fc14-x64 unix_chkpwd[1348]: password check failed for user (root)
May  6 23:44:16 fc14-x64 sshd[1346]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.12  user=root
May  6 23:44:19 fc14-x64 sshd[1346]: Failed password for root from 192.168.1.12 port 34812 ssh2</pre>
<pre>May  6 23:44:22 fc14-x64 unix_chkpwd[1349]: password check failed for user (root)
May  6 23:44:25 fc14-x64 sshd[1346]: Failed password for root from 192.168.1.12 port 34812 ssh2
May  6 23:44:25 fc14-x64 sshd[1347]: Connection closed by 192.168.1.12
May  6 23:44:25 fc14-x64 sshd[1346]: PAM 1 more authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.12  user=root</pre>
<p>เมื่อ login fail เกินค่า maxretry ที่ตั้งไว้ ในที่นี้คือ 5 ครั้ง สังเกตในไฟล์ /var/log/messages  โปรแกรม fail2ban จะทำการ action ขึ้นมา เพื่อ ban 192.168.1.12</p>
<pre>[root@fc14-x64 ~]# <strong>tail /var/log/messages
</strong>May  6 23:44:27 fc14-x64 &lt;28&gt;<span style="color: #0000ff;">fail2ban.actions: WARNING [ssh-iptables] Ban 192.168.1.12</span></pre>
<p>ใช้คำสั่ง iptables เพื่อตรวจสอบ rule ที่เพิ่มขึ้น</p>
<pre>[root@fc14-x64 ~]# <strong>iptables -L -v -n
</strong>Chain INPUT (policy ACCEPT 61 packets, 10699 bytes)
 pkts bytes target     prot opt in     out     source               destination
  453 37587 fail2ban-SSH  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           <span style="color: #0000ff;"><strong>tcp dpt:22</strong></span></pre>
<pre>Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination</pre>
<pre>Chain OUTPUT (policy ACCEPT 60 packets, 7044 bytes)
 pkts bytes target     prot opt in     out     source               destination</pre>
<pre>Chain fail2ban-SSH (1 references)
 pkts bytes target     prot opt in     out     source               destination
<span style="color: #0000ff;"><strong>    2   120 DROP       all  --  *      *       192.168.1.12            0.0.0.0/0
</strong></span>  451 37467 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0</pre>
<p>สังเกตว่า rule ที่สร้างขึ้น จะ DROP เฉพาะการ ssh (tcp 22) เท่านั้น แปลว่า ip ที่ถูก ban ไป จะไม่สามารถ ssh เข้าเครื่อง server ได้อีก แต่ยังสามารถเปิด web (tcp 80) หรืออื่นๆ ได้ตามปกติ</p>
<p>คอนฟิกในไฟล์ jail.conf เมื่อมีการ ban เกิดขึ้น จะมีการส่ง mail หา root ด้วย</p>
<p>ตัวอย่าง mail ที่ส่งให้ root</p>
<pre>From fail2ban@mail.com  Fri May  6 23:44:28 2011
Return-Path: &lt;fail2ban@mail.com&gt;
Date: Fri, 6 May 2011 23:44:27 +0700
Subject: [Fail2Ban] SSH: banned 192.168.1.12
From: Fail2Ban &lt;fail2ban@mail.com&gt;
To: <a href="mailto:root@fc14-x64.example.com">root@fc14-x64.example.com</a>
Status: R</pre>
<pre>Hi,</pre>
<pre>The IP 192.168.1.12 has just been banned by Fail2Ban after 5 attempts against SSH.
...</pre>
<p>เมื่อเวลาผ่านไป เกินเวลา bantime ในที่นี้ 600 วินาที  โปรแกรม fail2ban ก็จะปลดการ ban ออก ดูได้จากไฟล์ /var/log/messsages</p>
<pre>[root@fc14-x64 ~]# <strong>tail /var/log/messages
</strong>May  6 23:44:27 fc14-x64 &lt;28&gt;fail2ban.actions: WARNING [ssh-iptables] Ban 192.168.1.12
May  6 23:54:28 fc14-x64 &lt;28&gt;<span style="color: #0000ff;">fail2ban.actions: WARNING [ssh-iptables] Unban 192.168.1.12</span></pre>
<p>ใช้คำสั่ง iptables เพื่อตรวจสอบ rule ที่ใช้งานอยู่ หลังจาก unban</p>
<pre>[root@fc14-x64 log]# <strong>iptables -L -v -n
</strong>Chain INPUT (policy ACCEPT 561 packets, 50572 bytes)
 pkts bytes target     prot opt in     out     source               destination
 1753  141K fail2ban-SSH  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:22</pre>
<pre>Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination</pre>
<pre>Chain OUTPUT (policy ACCEPT 501 packets, 50410 bytes)
 pkts bytes target     prot opt in     out     source               destination</pre>
<pre>Chain fail2ban-SSH (1 references)
 pkts bytes target     prot opt in     out     source               destination
 1751  141K RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0</pre>
<p> </p>
<p>ลองนำไปใช้ดูครับ เพิ่มความปลอดภัยให้เครื่องได้อีกระดับ</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://www.fail2ban.org/" target="_blank">Fail2ban</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2011/05/ban_failed_login_attempts_using_fail2ban/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

