2005/Jul/08

บันทึกการติดตั้ง FreeBSD 5.4
วิธีการติดตั้ง FreeBSD นั้น อ้างอิงจาก FreeBSD Handbook เลยนะครับ ส่วนวิธีการปรับแต่งระบบนั้น จะหาจากหลายแหล่งข้อมูล แล้วนำมาประกอบกัน ซึ่งแหล่งอ้างอิงทั้งหมดนั้น อยู่ในตอนท้ายของบันทึกฉบับนี้ครับ

ปรับแต่งระบบ
1. Setting up Firewall

หลังจากติดตั้งเสร็จก็ควรจะติดตั้ง firewall เลย เพื่อป้องกันการบุกรุกจากผู้ไม่ประสงค์ดี ทั้งหลาย โดย firewall ที่ทาง FreeBSD แนะนำนั้น ก็จะมีด้วยกัน 3 โปรแกรมด้วยกัน คือ IPFW , IPF , PF ครับ โดย IPFW นั้นทาง FreeBSD เป็นสปอนเซอร์ครับ ส่วน PF นั้นจะเป็น firewall โดยปริยายของ OpenBSD ที่เน้นด้าน Security เป็นหลัก และตัวสุดท้าย IPF ซึ่งในบันทึกฉบับนี้ ผมจะใช้ IPF ครับ สำหรับเหตุผลที่เลือกนั้น เพราะว่า IPF นั้น สามารถทำงานได้หลายระบบปฏิบัติการครับ เช่น FreeBSD, NetBSD, OpenBSD, SunOS™, HP/UX, and Solaris™ ครับ ซึ่งจะทำให้ไม่ต้องเสียเวลาศึกษาใหม่ทุกอย่าง ส่วนขั้นตอนการทำนั้น ดังนี้ครับ
1.1 แก้ไขไฟล์ /etc/rc.conf โดยเพิ่มข้อมูล ลงไปดังนี้

ipfilter_enable="YES"
ipfilter_rules="/etc/ipf.rules"
ipmon_flags="-Ds"

1.2 เพิ่ม ipfilter รวมกับเคอร์เนล ดังนี้

#cd /usr/src/sys/i386/conf
#cp GENERIC CHATPONG-SECURE

โดยผมได้ทำการทำสำเนาเคอร์เนลดั้งเดิมคือ GENERIC เป็น CHATPONG-SECURE ครับ และทำการแก้ไขข้อมูล ดังนี้

#vi CHATPONG-SECURE

ซึ่งเนื้อหาข้างในเพิ่มเติมบรรทัดข้างล่างนี้เข้าไปครับ

options IPFILTER
options IPFILTER_LOG
options IPFILTER_DEFAULT_BLOCK

จากนั้นทำการบันทึก และใช้คำสั่ง

#/usr/sbin/config CHATPONG-SECURE

ทำการคอมไฟล์เคอร์เนล โดย

#cd ../compile/CHATPONG-SECURE
#make depend && make && make install

เปิดพอร์ตพื้นฐานก่อนล่ะกันครับ ssh , dns , http ,ftp

ssh
- ทั้ง incomming , outgoing ผ่านพอร์ต 22
dns
- outgoing พอร์ต 53/udp,tcp
http
- ทั้ง incomming, outgoing ผ่านพอร์ต 80
ftp
- outgoing อย่างเดียวครับ

วิธีการทำดังนี้ครับ
ทำการสร้างไฟล์ /etc/ipf.rules ขึ้นมา

#vi /etc/ipf.rules

ข้อมูลข้างในมีดังนี้ครับ

#หมายเหตุ
#lo0 คือ loop back
#rl0 คือ ชื่อเรียกของการ์ดแลน ซึ่งเครื่องผมมีไอพีเป็น 192.168.0.1 และมี dns เป็น 192.168.0.2 ครับ
# group 100 คือ incomming group 150 คือ outgoing

pass in log quick on lo0 all
pass out log quick on lo0 all
block in log body on rl0 all head 100
block out log body on rl0 all head 150

block in log quick from any to 127.0.0.1/8 group 100

pass in log quick proto tcp/udp from any to 192.168.0.1 keep state group 100

block return-icmp(net-unr) in proto udp from any to any group 100

block return-rst in log proto tcp from any to any group 100

# Allow SSH
pass in log quick proto tcp from any to
192.168.0.1 port = 22 keep state group 100
pass out log quick proto tcp from
192.168.0.1 to any port = 22 keep state group 150

#Allow FTP
pass out log quick proto tcp from 192.168.0.1 to any port 21 keep state group 150

# Allow DNS
pass out log quick proto tcp/udp from any to
192.168.0.2 port = 53 keep state group 150
# Allow Http
pass in log quick proto tcp from any to any port = 80 flags S/SA keep state keep frags group 100
pass out log quick proto tcp from any to any port = 80 flags S/SA keep state keep frags group 150
#Allow out CVSUP
pass out log quick on rl0 proto tcp from any to any port = 5999 flags S keep state group 150

pass out log quick proto icmp from any to any keep state keep frags group 150

จากนั้นก็สั่งให้ทำงานโดยใช้คำสั่ง

#/sbin/ipf -Fa -f /etc/ipf.rules

2. Ports Upgrading
ติดตั้ง cvsup โดยไปที่ /usr/ports/net/cvsup-without-gui และทำการติดตั้งได้เลยครับ

#cd /usr/local/cvsup-without-gui
#make install clean

จากนั้นก็ทำการ synchronize ports index กับเซิร์ฟเวอร์ที่เป็น cvsup server โดยผมเลือก cvsup.jp.freebsd.org เพราะทำการ ping ดูแล้ว ได้เวลาเร็วสุด เมื่อเทียบกับเซิร์ฟเวอร์อื่นๆครับ โดยใช้คำสั่ง

#/usr/local/bin/cvsup -g -L 2 -h cvsup.jp.freebsd.org /usr/share/examples/cvsup/ports-supfile

จากนั้นก็ทำการติดตั้ง portupgrade ครับ

#cd /usr/ports/sysutils/portupgrade
#make install clean

ทำการอัพเดต ports database

#/usr/local/sbin/portsdb -Uu

ทำการค้นหาโปรแกรมที่เคยติดตั้งไปแล้ว แต่ยังไม่ใหม่ล่าสุด เพื่อทำการอัพเดตครับ

#/usr/local/sbin/portversion -l "<"

ทำการอัพเดตโปรแกรมที่เคยติดตั้งแล้ว ให้ใหม่ล่าสุดครับ

#/usr/local/sbin/portupgrade -arR

ถ้าไม่เกิดปัญหาระหว่างการอัพเดต ก็ใช้คำสั่งถัดไปได้เลยครับ

#/usr/local/sbin/pkgdb -F

แต่ถ้าเกิดปัญหาขึ้นมา แบบนี้

campus# /usr/local/sbin/portsdb -Uu
Updating the ports index ... Generating INDEX.tmp - please wait..make: don't know how to make describe. Stop
===> textproc/p5-Sort-PolySort failed
*** Error code 1
1 error


ก็ใช้คำสั่ง

#/usr/local/sbin/pkgdb -fu

แต่ถ้ายังเกิดปัญหาลักษณะแบบนี้ ซึ่งเกิดจากการที่เราเคยติดตั้ง และใช้งาน FreeBSD มานานแล้ว จนเวอร์ชันของ portupgrade นั้นเปลี่ยน ซึ่งลักษณะของ error เป็นดังนี้ครับ

campus# /usr/local/sbin/portsdb -Uu
Updating the ports index ... Generating INDEX.tmp - please wait..make: don't know how to make describe. Stop
===> ftp/lukemftpd failed
*** Error code 1
1 error

********************************************
Before reporting this error, verify that you are running a supported
version of FreeBSD (see http://www.FreeBSD.org/ports/) and that you
have a complete and up-to-date ports collection. (INDEX builds are
not supported with partial or out-of-date ports collections -- in
particular, if you are using cvsup, you must cvsup the "ports-all"
collection, and have no "refuse" files.) If that is the case, then
report the failure to ports@FreeBSD.org together with relevant
details of your ports configuration (including FreeBSD version,
your architecture, your environment, and your /etc/make.conf
settings, especially compiler flags and WITH/WITHOUT settings).

Note: the latest pre-generated version of INDEX may be fetched
automatically with "make fetchindex".
********************************************

*** Error code 1

Stop in /usr/ports.
*** Error code 1

Stop in /usr/ports.
failed to generate INDEX!
portsdb: index generation error


วิธีการแก้ปัญหาก็คือ ให้เอาโปรแกรม portupgrade ออกก่อน แล้วก็ทำการ ติดตั้ง portupgrade ใหม่ครับ

#cd /usr/ports/sysutils/portupgrade
#make deinstall
#make install clean

3. ติดตั้ง Apache Web Server
โดยผมจะติดตั้ง Apache2 นะครับ เราสามารถดูออพชันต่างๆ ได้ โดยใช้คำสั่ง

#make show-options

จากนั้นทำการค้นหา mirror ที่ใกล้กับเครือข่ายเราที่สุด โดยใช้คำสั่ง

#make print-closest-mirrors >> /etc/make.conf

เมื่อได้ดังนี้แล้ว ก็ทำการติดตั้งได้เลยครับ

#cd /usr/ports/www/apache2
#make install

เมื่อติดตั้งเสร็จแล้ว ก็ทำการรันโดยใช้คำสั่ง

#/usr/local/etc/rc.d/apache2.sh start

แล้วก็ลองเปิดเว็บบราวเซอร์ และเรียกไปที่เครื่องเซิร์ฟเวอร์ดูครับ จากนั้นแก้ไขที่ไฟล์ /etc/rc.conf โดยเพิ่มบรรทัด

apache2_enable="YES"

เข้าไปครับ เพื่อที่จะให้ Apache ทำงานทุกครั้งเมื่อมีการบูตเครื่องใหม่
เพิ่มเติมให้ apache2 ใช้งานภาษาไทยโดยปริยายนะครับ ทำการแก้ไขที่ไฟล์

/usr/local/etc/apache2/httpd.conf

จากนั้นทำการเพิ่มข้อความดังนี้

AddDefaultCharset TIS-620

จากนั้นก็ทำการรีสตาร์ท apache ใหม่ ก็จะสามารถใช้งานภาษาไทยได้โดยปริยายครับ

4. ติดตั้ง PHP5
ในปัจจุบัน เว็บเซิร์ฟเวอร์ส่วนใหญ่ จะรองรับภาษา PHP เป็นลำดับแรกๆ เลยก็ว่าได้นะครับ ส่วนวิธีการติดตั้งบนระบบ FreeBSD นั้นก็ทำได้ไม่ยากครับ

#cd /usr/ports/www/mod_php5
#make install WITH_APACHE2=1

จากนั้นจะมีหน้าต่างให้เลือกออฟชันเพิ่มเติมครับ ผมก็เลือก Zend Optimize แล้วก็เลือก OK ครับ
เมื่อติดตั้งเสร็จแล้ว ก็ทำการเพิ่มคอนฟิกให้กับ apache ครับ โดยผมจะสร้างไฟล์คอนฟิกของ php ต่างหากเลย ก็คือ สร้างไว้ที่ /usr/local/etc/apache2/Includes ชื่อไฟล์ว่า php5.conf ครับ

#vi /usr/local/etc/apache2/Includes/php5.conf

แล้วเพิ่มข้อมูลเข้าไปดังนี้

DirectoryIndex index.php
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

จากนั้นก็ทำการรีสตาร์ท apache ครับ ด้วยคำสั่ง

#/usr/local/etc/rc.d/apache2.sh restart

ทดสอบภาษา php โดยการสร้างไฟล์ info.php ขึ้นมา โดยเก็บไว้ที่ /usr/local/www/data/

#vi /usr/local/www/data/info.php

โดยมีข้อมูลดังนี้

<?php
phpinfo();
?>

จากนั้นก็ทำการเปิดเว็บบราวเซอร์เรียกไปที่ http://server/info.php โดย server เป็นหมายเลขไอพี หรือชื่อของเซิร์ฟเวอร์ของเราครับ
ต่อมา ทำการติดตั้ง extensions ของ php5 ครับ ดังนี้

#cd /usr/ports/lang/php5-extensions
#make install

จากนั้นจะมีหน้าต่างให้เลือก extension ต่างๆครับ ซึ่งก็แล้วแต่ใครจะชอบนะครับ ส่วนผมเลือกดังนี้

CALENDAR , CTYPE , DOM , FTP , GD , GMP , IMAGIC , ICONV , IMAP , MSSQL , MYSQL , MYSQLI , OPENSSL , PDF , PGSQL , SNMP , SOAP , SQLITE , XML , XMLRPC , ZLIB

ส่วนอันอื่นๆ ที่เป็นค่าปริยาย ผมก็คงไว้ครับ ไม่ได้เอาออก



5. ติดตั้ง MySQL Database Server

ในที่นี้ผมจะติดตั้ง MySQL เวอร์ชัน 4.1 นะครับ วิธีการดังนี้ครับ

#cd /usr/ports/databases/mysql41-server

#make install WITH_CHARSET=tis620 WITH_COLLATION=tis620_thai_ci WITH_OPENSSL=yes

จากนั้นก็ทำการเพิ่มข้อมูลในไฟล์ /etc/rc.conf เพื่อให้ mysql ทำงานทุกครั้งที่บูตเครื่องใหม่ครับ

mysql_enable="YES"

ปกติ mysql จะมีไฟล์คอนฟิกที่ชื่อ my.cnf (ใน MS Windows เป็น my.ini) โดยพาธจะอยู่ที่ /etc/my.cnf ครับ แต่เราต้องทำสำเนาไฟล์จาก /usr/local/share/mysql ซึ่งจะมีไฟล์ตัวอย่างอยู่ 4 ไฟล์ด้วยกัน ดังนี้

  • my-small.cnf เหมาะสำหรับ เครื่องที่มีหน่วยความจำ น้อยกว่า 64 MB

  • my-medium.cnf เหมาะสำหรับ เครื่องที่มีหน่วยความจำ 32-64 MB

  • my-large.cnf เหมาะสำหรับ เครื่องที่มีหน่วยความจำ 512 MB

  • my-huge.cnf เหมาะสำหรับ เครื่องที่มีหน่วยความจำ 1-2 GB

เครื่องที่ผมใช้งานอยู่ มีหน่วยความจำ 512 MB ดังนั้น ผมก็ทำสำเนาไฟล์นี้ ดังนี้ครับ

#cp /usr/local/share/mysql/my-large.cnf /etc/my.cnf

จากนั้นก็ทำการสั่งให้ mysql server เริ่มทำงานครับ

#/usr/local/etc/rc.d/mysql.server start

แล้วมันก็จะให้เพิ่มผู้ใช้งานที่ชื่อว่า root เข้าไปนะ

#mysqladmin -u root password '********';

แก้ไขไฟล์ /etc/rc.conf

#vi /etc/rc.conf

เพิ่มข้อมูลข้างล่างเข้าไปครับ

mysql_enable="YES"

อย่าลืมปรับแต่งไฟร์วอลด้วยนะ เปิดพอร์ต 3306 ให้ใช้เฉพาะ localhost ก็ได้ เพิ่มเข้าไปในไฟล์ /etc/ipf.rules

pass in log quick proto tcp from 127.0.0.1 to 127.0.0.1 port = 3306 keep state keep frags group 100

 
แหล่งข้อมูลที่ใช้ในการศึกษาเพิ่มเติมครับ
http://www.redantigua.com/portupgrade.html
http://www.freebsd.org/handbook
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls-ipf.html
http://www.phildev.net/ipf/IPFfreebsd.html
http://www.tek-tips.com/viewthread.cfm?qid=1028522&page=1
http://freebsd.peon.net/tutorials/21/
http://www.tcbug.org/ipf.html

http://lantech.geekvenue.net/chucktips/jason/chuck/1029973470/index_html
http://www.muine.org/~hoang/freenat.html
http://kerneltrap.org/node/2844
http://www.bsdguides.org/guides/freebsd/networking/ipfilter.php
http://www.bsdguides.org/guides/freebsd/networking/ipfilter.php
http://www.unixguide.net/freebsd/fbsd_installguide/
http://www.free-x.ch/pub/ipf-conf-en.html
http://www.cnfug.org/journal/11/04.html
https://neon1.net/misc/firewall.html
http://www.phpconcept.com/index.php?option=content&task=view&id=21&Itemid=28

Comment

Comment:

Tweet


B2c2l1 <a href="http://dcorjnzrnpvo.com/">dcorjnzrnpvo</a>, twhfebehxoat, [link=http://hzviijrfqwgm.com/]hzviijrfqwgm[/link], http://lypaylrvwdzs.com/
#62 by zcbBJkReKvQNkY (103.7.57.18|188.0.64.143) At 2013-03-26 22:08,
B2c2l1 <a href="http://dcorjnzrnpvo.com/">dcorjnzrnpvo</a>, twhfebehxoat, [link=http://hzviijrfqwgm.com/]hzviijrfqwgm[/link], http://lypaylrvwdzs.com/
#61 by zcbBJkReKvQNkY (103.7.57.18|41.234.176.228) At 2013-03-26 22:08,
That could be interesting to write the <a href="http://www.exclusivepapers.com/online-essays.php">online essays</a> but that requires a lot of hard work at any rate. Therefore studenst, which do not have time, <a href="http://www.exclusivepapers.com/order-custom-essay.php">order custom essays</a>. In such way, they reach an academic success. Therefore what for should you spoil your time?
#60 by McclainELBA27 (193.105.210.41) At 2011-11-06 23:08,
zP5uH3 <a href="http://piiuhalukxmn.com/">piiuhalukxmn</a>, [url=http://liqnhfqnuiex.com/]liqnhfqnuiex[/url], [link=http://jucpoeghljcp.com/]jucpoeghljcp[/link], http://efgisuulqsnj.com/
#59 by TfRTfvoO (95.220.128.38) At 2010-07-24 01:33,
q7Q3ZD <a href="http://rhhilpholrvl.com/">rhhilpholrvl</a>, [url=http://eaoruagonqbt.com/]eaoruagonqbt[/url], [link=http://amqsnisayibl.com/]amqsnisayibl[/link], http://egdxrsitzztz.com/
#58 by zlNlIUBgFIoXuHWfVV (125.89.161.189) At 2010-07-12 11:22,
<a href="http://wutszraioqbwhdh.com">wrttjjitfnlkuiy</a> http://rnexwrqpqoiktge.com [url=http://pfirdmidkivohno.com]hnzikcgudqjjxri[/url]
#57 by jusmpxpfzv (94.102.52.87) At 2010-06-14 02:32,
Very nice site!
#56 by ruwuwyur (120.136.16.13) At 2009-10-07 04:34,