อันที่จริง โปรแกรมนี้จะอยู่ที่ไหนก็ได้ แต่ผมเก็บไว้ที่นี่ เพราะห้องนี้ยังไม่เก็บอะไรเกี่ยงกับ mail ที่สำคัญ แต่สิ่งที่ต้องทำคือการ chmod 644 maillog แต่เดิมคุณสมบัติของแฟ้มเป็น 600 จะใช้ php ของ apache ไปอ่านมาไม่ได้
ตัวอย่างโปรแกรม /var/www/html/mail/database/index.php
<html><head><title>Username of /var/log/maillog</title></head>
<body bgcolor=gray topmargin=0 leftmargin=0><font face="fixedsys" size=0><?
$datefull = date("F d, Y");
if(date("j") < 10) {$d = date("M")." ".date("j");}else{$d = date("M j");}
echo "Today : <font color=yellow>".$datefull."</font><br>";
echo "Last login: <a href=index.php?act=total>total</a> ";
if ($_GET['act'] <> "view" && $_GET['act'] <> "total") {
echo ", <a href=index.php?act=view>today</a> ";
} else {
echo "<ol><font color=white>";
$ar = file("/var/log/maillog");
if ($_GET['act'] == "total") { $max = 0; } else { $max = count($ar) - 500; }
$j = 0;
for ($i=count($ar);$i>=$max;$i--) {
if (strpos($ar[$i],"Login user=") && _
(strpos($ar[$i],"$d") > -1 || $_GET['act'] == "total")) {
$user = stristr($ar[$i],"user=");
$uofar = substr($user,5,strpos($user," ")-5);
$found = "no";
for($k=0;$k<$j;$k++) {
if (strpos($ur[$k],"$uofar") > -1) { $found = "yes"; }
}
if ($found == "no") {
if (strpos($ar[$i],"host=yonok.ac.th") == false) {
$p="pop";
} else {
$p=" ";
}
$ur[$j] = $uofar." <font color=black>".substr($ar[$i],7,8)."</font> ".$p;
$ut[$j] = $uofar." <font color=black>".substr($ar[$i],0,6)."</font> ".$p;
$j = $j + 1;
}
}
}
for ($i=0;$i<$j;$i++) {
if ($_GET['act'] == "total") {
echo "<li>".$ut[$i];
} else {
echo "<li>".$ur[$i];
}
}
}
?>
</ol></body></html>
4.81 Upload ด้วย php: รับชื่อแฟ้มแล้วส่งเข้าไปในห้องที่ต้องการ โดยตรวจรหัสผ่านที่เก็บไว้ในห้องนั้น
upload.htm ส่วนนี้เป็น html สำหรับส่งค่าให้ upload.php
<body>
<form enctype="multipart/form-data" method=post action=upload.php>
<input type=hidden name="MAX_FILE_SIZE" value=200000>
User <input type=text name=guser><br>
Password <input type=password name=gpassword><br>
Select file <input type=file name=upload><br>
<input type=submit value=Upload>
</form>
<form enctype="multipart/form-data" method=post action=listfile.php>
User <input type=text name=guser><br>
Password <input type=password name=gpassword><br>
<input type=submit value=List>
</form>
</body>
upload.php ทำหน้าที่ส่งแฟ้มจากเครื่องท่านเข้าไปเก็บใน server
โปรแกรมนี้เขียนได้เพราะอ่านวิธี upload จากหนังสือ PHP ของสุพิน วรรณา เล่มสีส้ม มีรูปหน้าคนครึ่งหน้า หน้า 494
แต่ได้ปรับปรุงนิดหน่อย เพื่อให้ใช้งานใน isinthai.com ขณะที่ปิด telnet หรือ ftp (เดือนพฤษภาคม 2544)
<?
include("updateinclude.php");
setupinit();
if ($upload <> "none" and $upload_size < 200000) {
echo "User: $guser<br>";
echo "Local File: $upload<br>";
echo "Name: $upload_name<br>";
echo "Size: $upload_size<br>";
echo "Type: $upload_type<br>";
copy($upload,"$fpath/$upload_name");
chmod("$fpath/$upload_name",0700);
unlink($upload);
} else {
echo "Please select file";
}
?>
uploadinclude.php ใช้ในทุกโปรแกรม เพื่อตรวจสิทธิที่จะเข้า update
ใช้ตรวจ guser และ gpassword กับแฟ้ม password.pl เพื่อตรวจว่าเป็นผู้ใช้ที่ถูกต้องหรือไม่
ในการเขียนแบบนี้ทำให้ ระบบข้อมูลถูก hack ได้ง่ายมาก แต่ต้องใช้ php เข้าไป hack
<?
function setupinit() {
global $guser,$gpassword,$fpath;
$fpath="/home/burin/public_html/$guser";
if ($guser) {
$f = fopen("$fpath/password.pl","r");
if (!feof($f)) {
$d = fgets($f,14);
fclose($f);
}
if (strlen($d) <> 13){
$d = crypt(substr($d,0,strlen($d)),$guser);
if ($d == crypt($gpassword,$guser)) {
$f = fopen("$fpath/password.pl","w");
if ($f) {
fputs($f,$d);
fclose($f);
}
}
echo "Crypt password.pl : OK $d".crypt($gpassword,$guser)."<hr>";
}
}
if ($d == crypt($gpassword,$guser)) {
echo "Welcome.. <b>$guser</b> : OK<hr>";
} else {
echo "Password invalid of $guser";
exit;
}
}
?>
listfile.php ดูรายชื่อแฟ้ม
โดยใช้ include file สำหรับตรวจ guser และ gpassword ที่เหมาะสมกับแฟ้ม password.pl
<?
include("updateinclude.php");
setupinit();
$dir_handle = opendir($fpath);
echo "<pre><font size=4 face=fixed>";
while($list = readdir($dir_handle)) {
if (substr($list,0,1) <> "." and $list <> "mail" and $list <> "bash_profile" and
$list <> "pico.save" and $list <> "password.pl") {
echo $list." - ".filesize("$fpath/$list")." Byte<br>";
}
}
closedir($dir_handle);
?>
4.82 เพิ่มสมาชิกใหม่ผ่าน php ใน Linux: เพิ่มสมาชิกใหม่ด้วย shell_exec
5.1 การติดตั้ง Mysql: Mysql คือส่งบริการฐานข้อมูล เพื่อให้ใช้ภาษาต่าง ๆ เข้ามาดึงข้อมูลไปได้เช่น PHP, VB เป็นต้น
โปรแกรมจาก www.mysql.com mysql-3.22.32.tar.gz ขนาด 4,295,387
เว็บที่เกี่ยวข้อง www.apache.org, www.php3.net, www.mysql.com
ตรวจสอบ process mysql run อยู่หรือไม่ด้วยคำสั่ง ps aux|grep mysql
วิธี set password ของ root /usr/local/bin/mysqladmin -u root password helloisinthai คำว่า helloisinthai เป็นคำที่ท่านเปลี่ยนได้ ครั้งต่อไปที่จะเข้า mysql ในฐานะ root ก็จะต้องกรอก password
start Mysql ด้วยคำสั่ง
cd /usr/local/bin
./safe_mysqld &
ทดสอบ run Mysql
./mysql
mysql>status
mysql>exit
ขั้นตอนการติดตั้ง
su
cd /usr/local
tar xfvz /home/burin/mysql-3.22.32.tar.gz
ln -sf mysql-3.22.32 mysql
adduser mysql
chown -R mysql:root mysql-3.22.32 mysql
su mysql
เป็น su ก็ทำได้ พอเป็น mysql มีปัญหา ว่าไม่สามารถใช้ gcc ที่ถูก lock ตาม 9.52
cd mysql
./configure --with-charset=tis620
make
su
make install
./scripts/mysql_install_db
cd /usr/local
chown -R mysql:root var
cd /etc/rc.d/init.d
cp /usr/local/mysql/support-files/mysql.server mysql
chmod +x mysql
/sbin/chkconfig --del mysql
/sbin/chkconfig --add mysql
5.2 วิธีใช้งาน Mysql เบื้องต้น: เพื่อให้เห็นการทำงานอย่างง่าย ๆ ของ Mysql ก่อนนำไปใช้ในภาษาอื่น
ตัวอย่างข้างล่างนี้จะแสดงการสร้างตาราง แสดงข้อมูล เพิ่ม ลบ และแก้ไข
ตัวอย่างการใช้งาน Mysql
[thaiall@www thaiall]$ mysql -u username
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5 to server version: 3.22.32
Type 'help' for help.
mysql> status
mysql> show databases;
mysql> use test
mysql> show tables;
mysql> create table testf (
-> fld1 char(20),
-> fld2 char(20),
-> fld3 integer(3),
-> fld4 date );
mysql> select * from testf;
mysql> insert into testf (fld1, fld2, fld3)
-> values ('tom','dang',5 );
mysql> insert into testf (fld1, fld2, fld3) value ('siri','maru',19);
mysql> select * from testf;
+------+------+------+
| fld1 | fld2 | fld3 |
+------+------+------+
| tom | dang | 5 |
| siri | maru | 19 |
+------+------+------+
2 rows in set (0.00 sec)
mysql> exit
5.90 การเพิ่มผู้ใช้ใน Mysql: การเพิ่มผู้ใช้ จะทำให้ Databases ที่สร้างขึ้นมีความเป็นส่วนตัว
ในอันที่จริง ถ้าท่านเป็นเจ้าของระบบ และมี user เดียว หรือกำหนดสิทธิให้ทุกคนสามารถเข้าใช้ mysql ได้หมด ก็ไม่จำเป็นต้อง
สร้าง user ใน mysql เพราะท่านสามารถสร้าง table ใน test database และใช้งานได้เลย แต่ถ้าสร้าง user ขึ้นมา ทุกคนที่จะใช้ database
จะต้องมี user และ password ที่ถูกต้อง แต่ถ้าสร้างใน test ใคร ๆ ที่เข้าระบบได้ก็จะเข้าส่วนของ mysql ได้ .. ก็พิจารณาตามกรณีไป
สำหรับใน server นี้จะให้ทุกคนเข้าใช้ mysql ได้เต็มที่ .. และขอให้เป็นไปตามความเหมาะสม
หากไม่กำหนด user ก็สามารถใช้งานได้บางประการ แต่อาจไม่ทั้งหมด เมื่อกำหนด user ได้แล้ว ก็สามารถใช้งานตามขอบเขตของ database ที่กำหนดได้ แต่เรื่องที่สำคัญอีกประการหนึ่งก็คือ การกำหนดรหัสผ่านให้กับ root มิเช่นนั้น อาจมีคนเข้าไปกำหนด ซึ่งไม่เป็นการดีแน่ ซึ่งคำสั่งสำหรับกำหนดรหัสผ่านของ root ของ mysql คือ
/usr/bin/mysqladmin -u root password helloisinthai ควรทำเมื่อติดตั้ง Mysql เสร็จสิ้นตามขั้นตอน 5.1
ข้อมูลเกี่ยวกับการเพิ่มผู้ใช้
http://www.mysql.com/doc/A/d/Adding_users.html
MySQL root user, and the root user must have the insert privilege for the
mysql database and the reload administrative privilege. Also, if you have
changed the root user password, you must specify it for the mysql commands
below.
You can add new users by issuing GRANT statements:
shell> mysql --user=root -phelloisinthai
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost
IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%"
IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
mysql> GRANT USAGE ON *.* TO dummy@localhost;
These GRANT statements set up three new users:
monty
A full superuser who can connect to the server from anywhere, but who must
use a password 'some_pass' to do so. Note that we must issue GRANT
statements for both monty@localhost and monty@"%". If we don't add the
entry with localhost, the anonymous user entry for localhost that is
created by mysql_install_db will take precedence when we connect from the
local host, because it has a more specific Host field value and thus comes
earlier in the user table sort order.
admin
A user who can connect from localhost without a password and who is
granted the reload and process administrative privileges. This allows the
user to execute the mysqladmin reload, mysqladmin refresh, and mysqladmin
flush-* commands, as well as mysqladmin processlist . No database-related
privileges are granted. (They can be granted later by issuing additional
GRANT statements.)
dummy
A user who can connect without a password, but only from the local
host. The global privileges are all set to 'N' -- the USAGE privilege type
allows you to create a user with no privileges. It is assumed that you
will grant database-specific privileges later.
6.1 slowaris.labs.pulltheplug.com: Server ที่แข็ง และมี user:guest password:guest ให้เข้าไปลอง telnet ได้
ระบบนี้เป็น Solaris 5.8 ของ Sun ลองเข้าไปแล้วใช้อะไรได้หลายอย่าง ผมว่า ว่าง ๆ hacker ลองเข้าไปดูก็ได้นะครับ เป็น server ที่แนะนำโดย Mr.RobiUz Miora (robiuz@yahoo.com)
จดหมายด้านล่างนี้เขาแนะนำผมหลายอย่างเช่น ให้ใช้ OpenBSD ดีกว่า .. อ่านแล้วก็ได้ข้อคิดหลายอย่าง
Date: Wed, 13 Jun 2001 06:10:30 -0700 (PDT)
From: Mr RobiUz Miora [robiuz@yahoo.com]
Dear Webmaster.
- As I see www.isinthai.com.. I know you install SSH in your server and restrict user behavior.In my opinion, you miss in 2 point....First as in my previous e-mail, restrict shell isn't good idea.You want to make "Open host" not "Restrict host", Right. But now I see your host like a seller machine,choose the drink and get it. Not doing anything much more. If you don't want any user or hacker I suggest you to disable and Close it.And second , SSH is good for every host but it's duty is ENCRYPT , AUTHENTICATION and AUTHORIZATION... it's not protect your system directly.
- If you go to hacking website that provice Exploit Code you'll see very very hole in REDHAT , Slackware and others software. I know it's difficult to patch all.... So..LET'S TRY TO CHANGE OS TO SAFER ONE... As I know OpenBSD has less bug than REDHAT or Slackware...You can Change to..
- It's my opinion.Decider is YOU....
FYI.
RobiUz
- คุณ robiuz mail มาอีกครั้ง และแนะนำว่าสามารถเปลี่ยน shell ของตนเองด้วยคำสั่ง chsh ผมลองแล้วก็เป็นตามนั้นจริง แต่การใช้คำสั่งนี้ ก็ต้องออกไปที่ shell ปกติ ซึ่งผมก็ยังหาจุดออกไปไม่เจอ เพราะปัจจุบันจำกัด account ด้วย Restrict shell
Date: Thu, 26 Jul 2001 01:26:07 -0700 (PDT)
From: Mr RobiUz Miora
To: webmaster@isinthai.com
Subject: change shell
Dear webmaster,
- All users can change his/her shell by chsh command so demo user change his shell himself.Don't worry he doesn't gain root.
regard,
RobiUz
คนแบบนี้สิครับ ที่โลกต้องการ
6.2 academic.cmri.ac.th: Server ที่แข็งมากอีกตัว เป็นของคนไทย ได้รับการแนะนำจาก apples@chek.com
ที่นี่เขียนบทความการลง Server ไว้น่าอ่าน และละเอียดดีครับ และคุณ apples@chek.com ยังให้คำแนะนำผมมากมาย เช่นเรื่องของ restricted shell ที่หาอ่านที่ไหนก็ไม่รู้เรื่อง มาได้ code และวิธีของท่านนี่หละครับ จึงสำเร็จเรื่อง restrict ได้ด้วยดี
ผมรู้จักคุณ apples@chek.com เพราะเขาเป็นผู้คอยให้คำแนะนำ และช่วยเหลือ ผู้คนใน wwwboard ของหลายที่ เช่น linux.thai.net เป็นต้น
http://academic.cmri.ac.th/downloads.php/howto/
http://academic.cmri.ac.th/downloads.php/howto/Apache%20Module.txt
ภาพนี้จากจอที่ telnet login ของ academic.cmri.ac.th (ผมเองก็ไม่มี account)
Welcome to Academic Services Machine
,
, ;:._.-`''.
;.;'.;` _ `.
',;` ( \ ,`-.
`:.`, (_/ ;\ `-.
';: / `. `-._
`;.;' `-,/ . `-.
';;' _ `^` `.
';; ,'-' `--._ ;
': `;; ,; `. ':`,,.__,,_ /
`;`:;`;:` ,; '. ;, ';';':';;`
.,; ' '-._ `':.;
.:; ` '._ `';;,
;:` ` :'`' ',__.)
`;:;:.,...;'`'
';. '`'::'`'' .'`'
,' `';;:,..::;`'`'
, .;` `'::''`
,`;`.
academic login:
6.71 จดหมายแจ้งปรับปรุงระบบ ของ se-ed.net: มีรายละเอียดหลายอย่างเขียนได้ดีมาก น่าอ่านเป็นกรณีศึกษา
Date: 2 สิงหาคม 2544
From: webmaster@se-ed.com (Sanyapong Kridakarn)
เรียนสมาชิกทุกท่าน
หลังจากที่ทางซีเอ็ดให้บริการฟรีอีเมล์ และฟรีโฮมเพจมา 1 ปี ขณะนี้ก็ถึงเวลาที่ทางทีมงานขอแจ้งให้ทราบว่า จะมีการปรับปรุงเปลี่ยนแปลง
เซิร์ฟเวอร์เพื่อให้สามารถให้บริการทุกท่านได้มากขึ้น และเพิ่มเติมความสามารถให้รองรับการใช้งานของทุกท่านได้มากกว่าเดิมในทุกๆ ด้าน
ทุกท่านคงพอจะทราบว่า ช่วงสองเดือนที่ผ่านมา เซิร์ฟเวอร์เกิดปัญหาหลายครั้ง โดยเกิดขึ้นจากหลายสาเหตุ เช่น
- พื้นที่ฮาร์ดดิสก์ 60 GB ของเซิร์ฟเวอร์เหลืออยู่ประมาณ 2 GB เท่านั้น
- การถูกถล่มด้วยเมล์จำนวนมาก (mail bomb) จากสมาชิก SE-ED.net ของเราท่านหนึ่ง
- ข้อจำกัดของ Linux ที่โฟลเดอร์หนึ่งจะมีไฟล์และโฟลเดอร์ได้เพียงประมาณ 32,000 โฟลเดอร์เท่านั้น ทำให้ไม่สามารถรองรับสมาชิกเพิ่มเติมได้
- ข้อจำกัดเว็บเซิร์ฟเวอร์ Apache ที่รองรับผู้ใช้พร้อมกันได้เพียง 256 ราย และทำให้เซิร์ฟเวอร์ทำงานช้ามากสำหรับผู้ใช้รายที่ 257 ขึ้นไป เมื่อคอมไพล์โปรแกรม
Apache ใหม่เพื่อให้รองรับผู้ใช้ได้มากขึ้นจนกระทั่งเกิด Error โดยไม่คาดหมาย ทำให้ไม่สามารถอ่านเมล์ผ่านเว็บและเปิดเว็บเพจของสมาชิกได้ประมาณ 2 วัน
- การระบาดของไวรัส Sircam
- ล่าสุด ระบบไฟล์บนฮาร์ดดิสก์ของลินุกซ์เกิดขัดข้อง จนเซิร์ฟเวอร์หยุดทำงาน ต้องไปแก้ไขเครื่องถึงอินเทอร์เน็ตประเทศไทย ระบบทุกอย่างหยุดทำงาน~ 24 ชั่วโมง
ต้องขออภัยทุกท่านที่เกิดปัญหาและข้อติดขัดเหล่านี้ ทีมงานจะทุ่มเทอย่างเต็มที่เพื่อให้เกิดเหตุการณ์เหล่านี้น้อยที่สุด และในกรณีที่เกิดเหตุสุดวิสัย
ก็จะรีบแก้ไขให้บริการทุกอย่างกลับมาเป็นปกติอีกครั้งในเวลารวดเร็วที่สุดเท่าที่จะทำได้
ขณะนี้ทางทีมงานกำลังอัปเกรดเครื่องใหม่ และเปลี่ยนแปลงระบบปฏิบัติการที่ใช้ดังนี้
ตารางเปรียบเทียบเซิร์ฟเวอร์ใหม่และเก่า
| New Server | Current Server |
| CPU | Dual Pentium III 933 MHz | Pentium III 650 MHz |
| Motherboard | Intel Server Board STL2 | Intel Server Board L440GX |
| Memory | 1 GB | 512 MB |
| Harddisk | 300 GB | 60 GB |
| OS | Windows 2000 Advanced Server | Redhat Linux 6.2 |
| Web server | Apache 1.3.20 for Windows | Apache 1.3.20 |
นอกจากนี้จะยังมีระบบไฟร์วอลล์เพื่อป้องกันระบบให้ปลอดภัยจากการโจมตีและการแฮกได้มากขึ้น
เนื่องจากเราต้องเปลี่ยนระบบปฏิบัติการ ทำให้ต้องเปลี่ยนระบบรับส่งอีเมล์ใหม่ทั้งหมด
* ท่านที่ใช้ Outlook หรือ Eudora ไม่ต้องปรับเปลี่ยนใดๆ ทั้งสิ้น เนื่องจากเมล์เดิมจะได้รับการจัดเก็บไว้ในเครื่องของสมาชิกอยู่แล้ว
* ท่านที่ใช้การอ่านเมล์ผ่านเว็บเบราเซอร์ จะไม่สามารถอ่านเมล์เดิมได้ เพราะระบบใหม่จะเสมือนการสร้างตู้จดหมายขึ้นมาใหม่ทั้งหมด
(ทีมงานจะจัดระบบให้สามารถตรวจสอบเมล์ในระบบเดิมได้ โดยจะเก็บเมล์เหล่านี้อีกระยะหนึ่ง เพื่อให้ท่านสามารถ Forward เมล์เหล่านั้นไป
เก็บไว้ในระบบใหม่ได้) สำหรับวันเวลาที่จะดำเนินการเปลี่ยนแปลงระบบจริงๆ นั้น จะแจ้งให้ทุกท่านทราบในโอกาสต่อไป (คาดว่าจะอยู่ในช่วงสัปดาห์นี้)
ในช่วงที่ดำเนินการเปลี่ยนระบบจริงนั้น อาจเกิดข้อขัดข้องอยู่บ้าง ทีมงานจึงขออภัยล่วงหน้าถ้าเกิดกรณีดังกล่าวขึ้น และหวังว่าทั้งหมดนี้
เพื่อให้บริการที่ดีที่สุดสำหรับสมาชิกทุกท่าน
6.72 thcity.com (เปลี่ยน Linux เป็น Windows): Free hosting ที่ถือได้ว่าเร็วที่สุดแห่งหนึ่งของเมืองไทย ผมเองก็ใช้บริการ เพราะประทับใจในความเร็ว และ datatransfer ปีละ 900 บาท
ข้อมูลจากเว็บหน้าแรกของ thcity.com เมื่อ 1 ตุลาคม 2545
- ศูนย์ พิษณุโลก.com เราได้เปิด Free Hosting ขึ้นมาครั้งแรกในปี 2542 ความตั้งใจคือหวังแค่เพียงว่า ให้นักเรียนนักศึกษา ในจังหวัดพิษณุโลกเราได้มีที่ฝึกฝนฝีมือในการทำโฮมเพจเพื่อพัฒนาบุคลากรภายในจังหวัด ให้เที่ยบเท่ากับเมืองใหญ่ๆ จากที่เราเป็นเพียงศูนย์เล็กๆ การดูแล Server และข้อมูลจึงยังไม่ดีเท่าที่ควร จึงทำ ให้ข้อมูล ศูนย์หายไปบ้าง ปิดไปบ้าง แต่ วันหนึ่งเราจะโตเที่ยบเท่ากับ Hosting ทั่วๆ ไป (ความหวังสูงสุด)
- หลังจากได้เปิด Thcity ขึ้นมาเป็น Free Hosting แล้ว ก็มีสมาชิกทั่วประเทศเข้ามาขอกันเป็นจำนวนมาก User ของเราเคยมากถึง 20,000 กว่า ในต้นปี 2544 แต่ ข้อมูลได้ศูนย์หายหมดเนื่องจาก เปิดเครื่องขึ้นมา ติดที่ Scan Disk เราปล่อยให้ Scan ไป 3 วัน ก็ได้แค่ 21 %เราจึงจัดสินใจทำใหม่ แต่การทำใหม่ในครั้งนั้น ไม่สมบูรณ์ เหมือน ครั้งแรก เนื่องจาก ทีมงานเรามีงานมากกว่าเดิม จึงมิได้ให้ความสำคัญกับ Free Hosting เท่าที่ควร จนมาถึง กลางปี 2545 ที่ผ่านมา เริ่มทำขึ้นมาใหม่เป็น Server Linux เราตั้งความหวังไว้ว่าจะทำ ให้ดีเหมือนเดิม เปิดได้เพียง 6 เดือน เท่านั้นก็ต้องปิดไปเนื่องจาก ทีมงานเราไปเก่ง Linux เท่าที่ควร ทำให้ Security ไม่ดีพอ
- เปิดใหม่ครั้งนี้ ด้วยความสามารถของ NTFS และ IIS 5 ทำให้ทีมงานพิษณุโลก.com เรามั่นใจเท่าที่ควร ที่เราจะบริการ Free Hosting ให้ดีกว่าครั้งที่ผ่านมา ขอประกาศเปิด Free Hosting ครั้งใหม่ ณ วันที่ 1 ตุลาคม 2545 อย่างเป็นทางการ ถึงแม้ว่าระบบจะยังไม่สมบูรณ์ เท่าที่ควร แต่เราจะพัฒนาจน เต็มความสามารถ เลยทีเดียว (ข้อมูลเก่าท่านยังอยู่ครบ แต่อยู่ใน Linux อยู่ จะเปิดให้เข้ามา Load กลับคืนไป เร็วๆ นี้ )
7.1 วิธีใช้โปรแกรม FTP ส่งแฟ้มเข้าเครื่อง isinthai.com: file transfer protocal สำหรับนำแฟ้มใน Pc ส่งเข้าเครื่อง server isinthai.com ซึ่ง server ตั้งอยู่ที่วิทยาลัยโยนก เมื่อส่งเข้าแล้ว จะทำให้คนทั่วโลกสามารถเปิดข้อมูลที่ท่านส่งเข้ามาได้ แต่ถ้าไม่ส่ง ท่านจะเป็นผู้เดียวที่เห็นข้อมูลของท่าน และวิธีที่ผมใช้เป็นวิธีพื้นฐานที่ windows ทุกเครื่องทำได้ แต่ถ้าเป็นมืออาชีพ เขาจะไปใช้ ws_ftp หรือ cute_ftp เพราะทำงานแบบ graphic ซึ่งผมไม่แนะนำสำหรับมือสมัครเล่น เพราะจะต้องไป download โปรแกรมมายุ่งยาก วิธีที่ผมจะเสนอ ปกติใช้ได้กับทุกเครื่อง ท่านสามารถพิมพ์ตามนี้ได้เลย
การใช้คำสั่ง ftp -i www.hypermart.net จะทำให้ใช้ mput หรือ mget โดยไม่ขึ้น prompt ถามแต่ละแฟ้ม ทำให้ upload หรือ download รวดเดียวได้แฟ้มทั้งหมด
รูปแบบคำสั่งของ FTP ใน DOS
FTP [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-w:windowsize] [-A] [host]
-v Suppresses display of remote server responses.
-n Suppresses auto-login upon initial connection.
-i Turns off interactive prompting during multiple file transfers.
-d Enables debugging.
-g Disables filename globbing (see GLOB command).
-s:filename Specifies a text file containing FTP commands
-a Use any local interface when binding data connection.
-A login as anonymous.
-w:buffersize Overrides the default transfer buffer size of 4096.
host Specifies the host name or IP address of the remote host to connect to.
สิ่งที่ต้องเตรียมการก่อนปฏิบัติ
- มี host name ที่อนุญาต และไปสมัครไว้แล้ว ทราบชื่อ host ที่ยอมให้ upload เช่น www.isinthai.com
- มี username ในตัวอย่างนี้ใช้ demo
- มี password ในตัวอย่างนี้ใช้ istest
- มีแฟ้มข้อมูลที่เป็น text เช่น index.html, friend.htm
- มีแฟ้มข้อมูลที่ไม่เป็น text เช่น face.jpg, hello.gif, wow.doc
- มีข้อมูลทั้งหมดเตรียมไว้ในแผ่น diskette เช่น drive A
- ถ้างง ไปอ่านเพิ่มที่ http://www.thaiall.com/learn/useftp.htm
เปิด msdos และ cd c:\windows (ถ้ามีแฟ้มใน server ต้องการ copy ออกมาก็ให้ใช้ get)
C:\WINDOWS>ftp.exe
ftp> open www.isinthai.com
Connected to www.isinthai.com.
220 www.isinthai.com FTP server (Version wu-2.6.0(1) Fri Jun 23 09:17:44 EDT 2000
0) ready.
User (www.isinthai.com:(none)): demo
331 Password required for demo.
Password:
230 User demo logged in.
ftp> lcd c:\isinthai
Local directory now C:\isinthai
ftp> ascii
200 Type set to A.
ftp> hash
Hash mark printing On (2048 bytes/hash mark).
ftp> put index.html
200 PORT command successful.
150 Opening ASCII mode data connection for index.html.
########################################
226 Transfer complete.
162886 bytes sent in 0.39 seconds (417.66 Kbytes/sec)
ftp> lcd a:\
ftp> ascii
ftp> put index.html
ftp> put friend.htm
ftp> bin
ftp> put face.jpg
ftp> put hello.gif
ftp> put wow.doc
ftp> bye
221-You have transferred 1601416xx bytes in 6 files.
221-Total traffic for this session was 160563xx bytes in 6 transfers.
|
7.2 การติดตั้งโปรแกรม .rpm ใน Redhat เพิ่มเติม: เมื่อมีโปรแกรมใหม่ ๆ ที่ต้องการติดตั้งเพิ่ม และเป็นโปรแกรมสกุล rpm
7. ให้ใช้ chmod 755 rblcheckx จึงจะทำให้แฟ้มนี้สามารถทำงานได้
8. ทดสอบด้วย #rblcheckx 202.28.18.65 และแสดงผลดังข้างล่าง ว่า ip นี้ไม่อยู่ใน black list
202.28.18.65 not RBL filtered by orbs.dorkslayers.com
202.28.18.65 not RBL filtered by dev.null.dk
202.28.18.65 not RBL filtered by bl.spamcop.net
202.28.18.65 not RBL filtered by relays.osirusoft.com
202.28.18.65 not RBL filtered by relays.visi.com
202.28.18.65 not RBL filtered by list.dsbl.org
202.28.18.65 not RBL filtered by relays.ordb.org
พบในเอกสาร http://www.redhat.com/support/resources/faqs/RH-sendmail-FAQ/book1.html หัวข้อ 3.13 ว่าบางเว็บที่ถูก blocked โดย RBL หากต้องการยกเลิกการ blocked เฉพาะบางเว็บ ให้เพิ่มบรรทัดที่เขียนว่า yourwebsitename OK เพิ่มเข้าไปในแฟ้ม /etc/mail/access แล้วปรับ config ใหม่ตามหัวข้อ 9.78
บริการตรวจสอบว่า server ถูก blacklist หรือไม่
1. http://openrbl.org
2. http://www.moensted.dk/spam/
3. http://www.spamhaus.org/sbl/index.lasso (Spam black listing)
4. http://member.se-ed.net/modules.php?op=modload&name=News&file=article&sid=9&mode=thread&order=0&thold=0 (มีรายละเอียด blacklist)
8.1 การกำหนดค่าในแฟ้มต่าง ๆ: เนื่องจาก linux ทำงานแบบ text mode ถึงจะมี graphic ช่วย แต่พื้นฐานก็ยังเป็น text mode
ท่านสามารถใช้โปรแกรม vi หรือ pico ในการแก้ไขตามที่ต้องการได้ ซึ่งในแต่ละแฟ้มจะมีการกำหนดไม่เหมือนกัน และรูปแบบแต่ละแฟ้มก็ต่างกันด้วย สำหรับทีมงานของเราไม่ใช้ผู้ชำนาญ ในหัวข้อนี้จึงนำข้อมูลที่ทดสอบ แล้วใช้งานได้ แต่อาจผิดในทาง Theory ซึ่งอาจก่อผลที่ผิดพลาดในอีกมุมมองหนึ่ง ที่ใด ทราบว่าเรากำหนดอะไรผิดไป ขอได้ชี้แนะด้วย
8.1.1 :: /etc/login.defs
- ใช้กำหนดว่าเครื่องจะมี account สูงสุดได้เท่าใด
- เพราะเลขที่กำหนดประจำตัวผู้ใช้ เริ่มต้นที่ 500
UID_MIN 500
UID_MAX 60000
8.1.2 :: /etc/security/limits.conf
# ใช้จำกัดสิทธิของผู้ใช้
# คำสั่งจริงมี 2 บรรทัดล่างสุด
# ส่วนที่มี # เป็นคำอธิบายทั้งสิ้น
#<domain> <type> <item> <value>
#
#Where:
#<domain> can be:
# - an user name
# - a group name, with @group syntax
# - the wildcard *, for default entry
#
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
#
#<item> can be one of the following:
# - core - limits the core file size (KB)
# - data - max data size (KB)
# - fsize - maximum filesize (KB)
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open files
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of processes
# - as - address space limit
# - maxlogins - max number of logins for this user
#
#<domain> <type> <item> <value>
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
#
# ผู้ใช้ในกลุ่ม users มีเนื้อที่ใน home directory ได้เพียง 1 Mb
@users hard rss 1000
* soft core 0
8.1.3 :: /etc/lilo.conf
# คู่แข่งของ /etc/grub.conf
# เมื่อแก้แฟ้มนี้แล้ว ให้สั่งประมวลผล /sbin/lilo
# เพื่อให้การ update แฟ้มข้างล่างนี้เป็นผล สำหรับการ boot ครั้งใหม่
# และครั้งต่อไปที่บูตเครื่องจะ default ไปที่ linux
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
default=linux
image=/boot/vmlinuz-2.2.14-5.0
label=linux
read-only
root=/dev/hda5
other=/dev/hda1
label=window
8.1.5 :: /etc/crontab
- ตารางเวลาการสั่งประมวลผลโปรแกรม
- หากต้องการสั่งงานต้องสร้างแฟ้มในห้อง /etc/cron.daily
- แฟ้มที่สร้างให้ใส่คำสั่งได้เลยเช่น /home/radius/runacct
- อย่าลืมกำหนด 755 ให้แฟ้มนั้นเช่น chmod 755 runradius
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
# minute (0-59),
# hour (0-23),
# day of the month (1-31),
# month of the year (1-12),
# day of the week (0-6 with 0=Sunday)
8.1.6 :: /etc/default/useradd
- ในบางเครื่องอาจกำหนดเป็นดังข้างล่างนี้จะสะดวก
- และสิทธิของห้องเป็น 700 จึงต้องใช้ script _crt กำหนดสิทธิเป็น 705
- อีกครั้งหนึ่ง จึงจะทำให้เปิดห้องผ่าน www ได้ปลอดภัย
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
#SHELL=/bin/bash
SHELL=/rbin/menu
SKEL=/etc/skel
8.1.7 :: /etc/inittab
- ทำให้ Boot ไม่เข้า xwindows โดยแก้บรรทัดหนึ่ง
- ที่อยู่ในแฟ้ม inittab เท่านั้นเอง
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#id:5:initdefault:
id:3:initdefault:
8.2 แฟ้มต่าง ๆ ที่ควรรู้จัก: แฟ้มต่าง ๆ ในระบบมีมากมาย ขอนำมา list ให้เฉพาะที่ทีมงานรู้จัก ท่านสามารถเรียนรู้ได้มากกว่านี้อีกมาก .. ขอเอาใจช่วยครับ
Group 1: ควร config ได้
/etc/rc.d/rc.local :: คล้าย autoexec.bat สำหรับผม จะเพิ่มคำสั่ง ifconfig เพิ่ม ip (9.10)
/etc/named.conf :: กำหนดเงื่อนไขเพิ่มเติมเรื่อง named
/etc/rndc.conf :: กำหนดเงื่อนไขเพิ่มเติมเรื่อง NS control utility
/etc/resolv.conf :: กำหนดว่า nameserver ตัวใดที่จะตีความ ip หรือ domain name ให้
/etc/httpd/conf/httpd.conf :: กำหนดค่าเกี่ยวกับการบริการ http เช่นกัน
/etc/sysconfig/network-scripts/ifcfg-eth0 :: กำหนดค่าประกอบ card LAN
/etc/security/limits.conf :: กำหนดข้อจำกัดให้กับผู้ใช้ ถ้าไม่แก้ ก็ไม่จำกัด
/etc/php.ini :: กำหนดเกี่ยวกับภาษา PHP เช่น เดิม post_max_size = 8M พอไหมครับ
/var/run/named :: ใน RH9 ผมต้องเปลี่ยนสิทธิห้องนี้เป็น 777 จึงจะ start named สำเร็จ
/etc/procmailrc :: กำหนดเงื่อนไขการกรอง e-mail เป็นด่านแรก
Group 2 : ควรรู้จักไว้
/etc/crontab :: กำหนดโปรแกรมให้ประมวลผลตามช่วงเวลา แฟ้มนี้เก็บ config หลักของ crontab
/etc/inittab :: กำหนดการเริ่มต้น ที่จะเข้าสู่ text mode หรือ graphic mode เป็นต้น
/etc/rc.d/init.d :: ภายในห้องนี้เก็บ shell script ที่ใช้สั่ง ให้มีการทำงานเมื่อเปิดเครื่องไว้มาก
/etc/named.custom :: ระบุว่า directory ที่เก็บแฟ้มเกี่ยวกับ named เก็บไว้ที่ใด
/etc/login.defs :: กำหนดจำนวนเลข uid สูงสุด หรือค่าเริ่มต้นของผู้ใช้อีกหลายเรื่อง
/etc/default/useradd :: กำหนดค่าเกี่ยวกับสมาชิกใหม่เมื่อใช้คำสั่ง useradd
/etc/syslog.conf :: เก็บข้อกำหนดของบริการ syslog เพื่อใช้ตรวจร่องรอยของบริการต่าง ๆ แต่ใน ntsysv ต้องเปิดบริการ syslog ไว้
/etc/services :: แสดงเลข socket ทั้งหมดที่เปิดให้บริการ เลขใดมี # หมายถึงปิดบริการ
/etc/protocols :: แสดงเลข protocol ทั้งหมดที่เปิดให้บริการได้
/etc/login.defs :: กำหนดหมายเลขสูงสุด และต่ำสุด สำหรับการ assign acccount ใหม่ให้กับ user
/etc/skel/.bash_profile :: แฟ้มนี้ถูกคัดลอกไปให้ผู้ใช้ เพื่อเป็นค่าเริ่มต้นในการทำงาน
/etc/sysconfig/hwconf :: เก็บรายละเอียด และข้อกำหนดเกี่ยวกับ hardware มักถูก update โดย kudzu
/var/log :: เก็บ log ต่าง ๆ
Group 3 : ไม่พบในเครื่องที่ผมลง
/etc/inetd.conf :: ใช้กำหนดการเปิดปิดบริการเช่น finger หรือ telnet เป็นต้น
/etc/httpd/conf/srm.conf :: กำหนดค่าเกี่ยวกับการบริการ http เช่นกัน
/etc/httpd/conf/access.conf :: กำหนดค่าเกี่ยวกับการบริการ http เช่นกัน
/usr/X11R6/bin/startx :: สั่ง start x windows จาก text mode
8.98 การติดตั้ง Linux Redhat: การติดตั้ง Linux Redhat 2 วิธี คือติดตั้งทั้ง Windows และ Linux หรือติดตั้ง Linux อย่างเดียว เป็นกรณีศึกษาจาก Redhat Linux 7.1
เรียบเรียงโดย :: สุวิทย์ สมสุภาพรุ่งยศ(suwit@yonok.ac.th) ประเสริฐ ประสารยา(prasert@cat.net.th) พงศ์สนิท เดชะบุญ(namagnitman@hotmail.com) สุพจน์ ทูลมาก(supot.toon@chaiyo.com)
การติดตั้ง Redhat Linux สามารถติดตั้งได้ 2 กรณี
1. กรณีที่ต้องการติดตั้งทั้ง Windows และ Linux ในเครื่องเดียวกัน
2. กรณีที่ต้องการติดตั้ง Linux อย่างเดียว
1. ข้อควรทราบก่อนการติดตั้ง Redhat Linux ในกรณีที่ต้องการใช้ระบบปฏิบัติการ 2 ระบบในเครื่องเดียว
- ในตัวอย่างต่อไปนี้จะเป็น Harddisk ที่ค่าความจุ อยู่ที่ 40 GB ผมแบ่งเป็น 4 Partition สำหรับใช้ใน Windows จำนวน 2 Partition ( คือ C:,D:) กำหนด FAT 32 และสำหรับติดตั้ง Linux จำนวน 2 Partition (ตอนที่ยังไม่ติดตั้ง Linux อาจจะมองเห็นเป็น Drive E:,F:)
- วิธีการแบ่ง Partition ผมใช้วิธี Fdisk จาก Dos (จะใช้วิธีการแบ่ง Partition วิธีไหนก็ได้ตามสะดวก ชนิดของ Partition กำหนดให้เป็น FAT 32 ก่อนก็ได้ แล้วค่อยไปเปลี่ยนชนิดที่จะใช้สำหรับ Linux ในตอนที่เราติดตั้ง)
- หลังจากที่ทำการแบ่ง Partition ได้ตามความต้องการแล้วทำการ Format Drive C:,D: ตามลำดับ ส่วน Drive E:,F: สำหรับติดตั้ง Linux ยังไม่ต้อง Format เมื่อทำการ Format เสร็จแล้วก็ให้ทำการติดตั้ง Windows ตามวิธีการติดตั้งจนแล้วเสร็จ
- กรณีที่ได้ทำการติดตั้ง Windows ไปแล้ว ก่อนอื่นต้องทำการตรวจสอบว่าเมื่อทำการติดตั้ง Windows ไปแล้วนั้นใช้งานได้ปกติดีไม่มีปัญหาในด้านต่างๆ เช่น การใช้งานในระบบเครือข่าย ค่าสีต่างๆ ของจอภาพ หลังจากนั้นดูว่าใน Harddisk ได้ทำการแบ่ง Partition เป็นกี่ Drive (กรณีที่ไม่ได้แบ่ง Partition ไว้รองรับการติดตั้ง Linux "อาจจะใช้โปรแกรม PartitionMagic จัดการกับการแบ่ง Partition " !!! Windows ต้องการแค่ Partition หรือที่เรียกว่า Drive เพียง Drive เดียว(คือ C: ) แต่ถ้าต้องการเป็น drive สำรองเราอาจแบ่งเพิ่มอีก 1 Partition (คือ D:) ส่วน" Linux" ต้องการ 2 Partition คือ Drive ที่เป็น Linux native และ Linux swap) อันนี้ขึ้นอยู่กับความต้องการของผู้ใช้เอง และความจุของ Harddisk ว่ามีมากน้อยเพียงใด !!!ทางที่ดี ควรแบ่ง Partition ก่อนการติดตั้ง Windows เพราะว่ามันง่ายกว่าการที่จะมาแบ่ง Partition หลังจากที่เราทำการติดตั้ง Windows แล้ว
- หน่วยความจำ (RAM)ควรจะมีขนาด สูงกว่า 16 MB ขึ้นไป
2. การสร้างแผ่น Boot สำหรับติดตั้ง Redhat Linux
- ใส่แผ่นซีดีรอมโปรแกรมติดตั้งในไดรฟ์ขณะใช้ระบบปฏิบัติการ DOS แล้วเปลี่ยนไดรฟ์ไปยังไดรฟ์ซีดีรอม เช่น C:\> d:
- เรียกใช้โปรแกรม Rawrite สำหรับสร้างแผ่นติดตั้งใน Floppy disk พิมพ์ดังนี้ D:\>dosuntils\rawrite
- โปรแกรมจะให้ป้อนชื่อแฟ้มที่ต้องการเขียนลงแผ่น ให้ป้อนดังนี้ D:\Images\boot.img
- ใส่แผ่นฟลอบบี้ที่ฟอร์แมตแล้วใส่ในไดรฟ์ A: แล้วกด ENTER
- ถ้าเครื่องที่จะทำการติดตั้ง Redhat Linux สามารถทำการบูตจากแผ่นซีดีรอมได้ยิ่งง่ายเลย เพราะปกติผม ติดตั้ง Redhat 7.3 หรือ Redhat 6.0 ก็ตาม ผมจะใช้วิธีการบูตจากแผ่นซีดีรอมซึ่งสะดวกกว่าการบูตโดยการใช้แผ่นฟลอปบี้ดิสก์ (เรื่องการสั่งให้ BOOT จาก CD-ROM เป็น Option ของ CMOS )
3. การติดตั้ง Redhat Linux (การติดตั้งแบบ None Graphic สำหรับเครื่องที่มีความเร็วต่ำกว่า 400 MHz) เมื่อทำการสร้างแผ่นบูตและทำการบูตแล้ว หรือจะให้บูตจากแผ่นซีดีรอม จะเข้าสู่การกระบวนการติดตั้ง ให้ดำเนินต่อไปดังนี้
- เมื่อโปรแกรมติดตั้งทำงาน จะแสดงหน้าจอให้เลือกภาษาที่จะใช้ในการติดตั้งให้เลือก English
- เลือกภาษาสำหรับคีย์บอร์ด ให้เลือก US
- กรอบแสดงการยินดีต้อนรับ ให้ยืนยันการติดตั้งเลือก OK
- เลือกชนิดของการติดตั้งให้เลือก Custom System ซึ่งคุณสามารถกำหนดได้เองว่าจะมี Partitionใดบ้างรวมถึงการเลือกโปรแกรม
- ต่อไปเป็นขั้นตอนของการแบ่งPartition สำหรับเครื่องที่ได้ทำการแบ่ง Partition มาดีแล้วแต่ยังไม่ได้กำหนดชนิดของ Partition ก็ให้เลือก fdisk แล้วเลือก Edit เพื่อเข้าไปกำหนดชนิดของPartition ถึงตรงนี้จะเป็นคำสั่งที่ใช้ในการทำงาน ดังตัวอย่าง
a :: ถ้าเราพิมพ์ m จะเป็น Menu ให้เราเลือกทำงาน
b :: ผมจะเลือก p เพราะผมรู้ว่า p คือการแสดงรายละเอียดPartitionต่าง ๆที่มีอยู่ จะเห็นว่า
dev/hda1 คือ Partition ที่ 1 ที่เราแบ่งไว้สำหรับติดตั้ง Windows ค่าของ System=FAT32
dev/hda2 คือ Partition ที่เป็น Extended ภายในก็จะมี Partition Logic ดังนี้
dev/hda5 คือ Partition ที่ 2 ที่เราแบ่งไว้สำหรับติดตั้ง Windows ค่าของ System=FAT32
dev/hda6 คือ Partition ที่ 3 ที่เราแบ่งไว้สำหรับติดตั้ง Linux ค่าของ System=FAT32
dev/hda7 คือ Partition ที่ 4 ที่เราแบ่งไว้สำหรับติดตั้ง Linux ค่าของ System=FAT32
ส่วนที่เราต้องเข้าไปแก้ไขก็คือ hda6,hda7 จะเป็นการเปลี่ยนชนิดของ system ให้เป็น linux system
c :: ถ้าไม่รู้ว่าคำสั่งที่ใช้ในการทำงานให้ กด m เพื่อดูรายละเอียด
d :: ผมจะเลือก t เพื่อเปลี่ยนชนิดของ System จากนั้นเป็นการเลือก Partition number เราจะเปลี่ยน hda6 จาก FAT32 ให้เป็น Linux native ผมเลือก 6 แล้วกด Enter
e :: เลือก Hex code ถ้าไม่รู้ให้กด l เพื่อดูรายละเอียด ผมกด 83 เพื่อทำการเปลี่ยน System
f :: ลองกด p เพื่อดูรายละเอียดของ System เปลี่ยนหรือยัง จะเห็นว่า System เปลี่ยนจาก FAT 32 เป็น Linux
g :: ทำการเปลี่ยน System ของ hda7 ให้เป็น linux swap โดยกด t เลือก Hex code เป็น 82
h :: ทำการ Save โดยการ กด W
- หน้าจอขึ้น Disk setup จะมี Menu ให้เลือก Done
- เลือก Mount Point เพื่อกำหนด Root directory สำหรับการติดตั้ง ให้เลือก hda 6 แล้วกด Enter ในช่องหลัง Mount Point ให้พิมพ์ " / " แล้วเลือก ok
- เมื่อทำการเลือกแล้วจะกลับมาที่หน้า Current Disk Partition อีกรอบหนึ่ง เพื่อให้เรายืนยันการกำหนด Mount point อีกครั้งหนึ่ง เลือก Ok
- ขั้นตอนต่อไปเป็นการ Format partition ที่กำหนดให้ Mount เป็น Root partition หรือ Root filesystem จะมี Option หนึ่งที่น่าสนใจคือ Check for bad blocks during format นั่นคือการตรวจหา Bad Block ด้วย โดยการ Tab มาที่หน้า Option และกด Space bar แล้วเลือก Ok เพื่อดำเนินการต่อไป
- เลือก LILO Configuration ที่ hda1 แล้ว OK ยืนยันอีกรอบหนึ่ง
- กำหนดชื่อ HostName เช่น suwit.yonok.ac.th หรือ thaiall.yonok.ac.th เป็นต้น
- กำหนด Firewall configuration ใน Security level เป็น Medium ต่อไปสามารถกำหนดใหม่ได้
- ใน Option customize เป็นการเลือกใช้ Firewall กับตัวให้บริการ
- เลือกชนิดของ Mouse
- เลือกภาษาในการ Install
- เลือก Time Zone ที่ Asia/Bangkok
- กำหนด Root password (อย่างน้อย 6 ตัวอักษร)
- Add User สำหรับผู้ใช้บริการ
- หน้า Authentication Configuration ให้เลื่อน Tab ไปที่ OK เลยแล้วกด Enter
- เลือก Packet ตามต้องการ (ถ้ามีเนื้อที่ Harddisk มากพอให้เลือกหมดเลย)
- เลือก Video Card
- เข้าสู่กระบวนการเริ่ม Install โดยการ Format
- การตั้งค่า Configuration ต่างดูในรายละเอียดต่อไป ใน http://www.isinthai.com
4. การติดตั้ง Redhat Linux (การติดตั้งแบบ Graphic เหมาะกับเครื่องที่มีความเร็วสูงกว่า 400 MHz ขึ้นไป) เมื่อทำการสร้างแผ่นบูตและทำการบูตแล้ว หรือจะให้บูตจากแผ่นซีดีรอม จะเข้าสู่การกระบวนการติดตั้ง ให้ดำเนินการดังนี้
- เมื่อโปรแกรมติดตั้งทำงานจะแสดงหน้าจอให้เลือกภาษาที่จะใช้ในการติดตั้งให้เลือก English
- เลือกภาษา Mouse และเลือกภาษาสำหรับคีย์บอร์ด ให้เลือก US
- กรอบแสดงการยินดีต้อนรับ ให้ยืนยันการติดตั้งเลือก Next
- เลือกชนิดของการติดตั้งให้เลือก Custom System ซึ่งคุณสามารถกำหนดได้เองว่าจะมี Partitionใดบ้างรวมถึงการเลือกโปรแกรม
- ต่อไปเป็นขั้นตอนของการแบ่ง Partition สำหรับเครื่องที่ได้ทำการแบ่ง Partition มาดีแล้วแต่ยังไม่ได้กำหนดชนิดของ Partition ก็ให้เลือก Manually partition with fdisk (export only) แล้วเลือก hda เพื่อเข้าไปกำหนดชนิดของ Partition จะเป็นคำสั่งที่ใช้ในการทำงานดังตัวอย่าง
a :: ถ้าเราพิมพ์ m จะเป็น Menu ให้เราเลือกทำงาน
b :: ผมจะเลือก p เพราะผมรู้ว่า p คือการแสดงรายละเอียดPartitionต่าง ๆที่มีอยู่ จะเห็นว่า
dev/hda1 คือ Partition ที่ 1 ที่เราแบ่งไว้สำหรับติดตั้ง Windows ค่าของ System=FAT32
dev/hda2 คือ Partition ที่เป็น Extended ภายในก็จะมี Partition Logic ดังนี้
dev/hda5 คือ Partition ที่ 2 ที่เราแบ่งไว้สำหรับติดตั้ง Windows ค่าของ System=FAT32
dev/hda6 คือ Partition ที่ 3 ที่เราแบ่งไว้สำหรับติดตั้ง Linux ค่าของ System=FAT32
dev/hda7 คือ Partition ที่ 4 ที่เราแบ่งไว้สำหรับติดตั้ง Linux ค่าของ System=FAT32
ส่วนที่เราต้องเข้าไปแก้ไขก็คือ hda6,hda7 จะเป็นการเปลี่ยนชนิดของ system ให้เป็น linux system มีวิธีการดังนี้คือ
c :: ถ้าไม่รู้ว่าคำสั่งที่ใช้ในการทำงานให้ กด m เพื่อดูรายละเอียด
d :: ผมจะเลือก t เพื่อเปลี่ยนชนิดของ System จากนั้นเป็นการเลือก Partition number เราจะเปลี่ยน hda6 จาก FAT32 ให้เป็น Linux native ผมเลือก 6 แล้วกด Enter
e :: เลือก Hex code ถ้าไม่รู้ให้กด l เพื่อดูรายละเอียด ผมกด 83 เพื่อทำการเปลี่ยน System
f :: ลองกด p เพื่อดูรายละเอียดของ System เปลี่ยนหรือยัง จะเห็นว่า System เปลี่ยนจาก FAT 32 เป็น Linux
g :: ทำการเปลี่ยน System ของ hda7 ให้เป็น linux Swap โดยการ t เลือก Hex code เป็น 82
h :: ทำการ Save โดยการ กด W
- หน้าจอขึ้น Using fdisk อีกรอบ ให้เลือก Next
- เลือก Mount point เพื่อกำหนด Root directory สำหรับการติดตั้ง ให้ดับเบิ๊ลคลิกเลือก hda 6 แล้วในช่องหลัง Mount point ให้เลือก " / " แล้วเลือก OK
- เมื่อทำการเลือกแล้วจะกลับมาที่หน้า Partition อีกรอบหนึ่ง เพื่อให้เรายืนยันการกำหนด Mount point อีกครั้งหนึ่ง เลือก Next
- ขั้นตอนต่อไปเป็นการ Format partition ที่กำหนดให้ Mount เป็น Root partition หรือ Root filesystem ตรงนี้จะมี Option หนึ่งที่น่าสนใจคือ Check for bad blocks during format นั่นคือการตรวจหา Bad Block ด้วย โดยการคลิกที่หน้า Option แล้วเลือก Next เพื่อดำเนินการต่อไป
- เลือก LILO Configuration ให้เลือก Install LILO boot record on dev/had Master Boot record เลือก Default Boot Image ไปที่ Dos
- กำหนด IP Address ตั้งชื่อ HostName เช่น suwit.yonok.ac.th หรือ mis.yonok.ac.th
- กำหนด Firewall Configuration ใน Security Level เป็น Medium ใน Option Customize เป็นการเลือกใช้ Firewall กับตัวให้บริการ
- เลือกภาษาในการ Install
- เลือก Time Zone ที่ Asia/Bangkok
- กำหนด Root Password (อย่างน้อย 6 ตัวอักษร)
- Add User สำหรับผู้ใช้บริการ
- หน้า Authentication Configuration ให้ Next
- เลือก Packet ตามต้องการ (ถ้ามีเนื้อที่ Harddisk มากพอให้เลือกหมดเลย)
- เลือก Video Card /Monitor/color pepht/Screen Resolution/Default Desktop/Login Type
- เข้าสู่กระบวนการเริ่ม Install โดยการ Format
- การตั้งค่า Configuration ต่าง ๆ ดูรายละเอียดต่อไปใน http://www.isinthai.com
8.99 การติดตั้ง Linux Redhat เมื่อแผ่น 2 ใช้ไม่ได้: นี่คือวิธีหนีปัญหา เพราะจะแก้ปัญหาก็คือหาแผ่น CD ที่ใช้ได้มาให้ได้
- วันหนึ่ง ผมตั้งใจลง Redhat 8.0 ทับไปใน 7.2 โดยไม่สนใจข้อมูลในส่วน Redhat เดิม ส่วนข้อมูล Windows ทั้งหมดต้องการใช้งานอยู่ ก็ลงไปตามปกติ เลือก Package ต่าง ๆ แบบสมบูรณ์ใช้เนื้อที่ประมาณ 1500 Mb เริ่มติดตั้งจากการ boot Redhat 8.0 เมื่อติดตั้งจนจบแผ่นที่ 1 เสร็จ ก็ถามหาแผ่นที่ 2 ปรากฏว่าเครื่องไม่รับแผ่นที่ 2 วิธีแก้ตอนนั้นมีทางเดียวคือปิดเครื่องด้วยการกดปุ่ม power ... หลังจากเปิดใหม่พบว่าเครื่องบูตไม่ได้ตามปกติ แล้วเครื่องผมก็ไม่มีช่องใส่ Drive A ด้วย ขณะนั้นก็ไม่มี CD Windows ที่เป็น Bootable ด้วย .. เสร็จล่ะสิงานนี้
- ถ้าท่านพบเหตุการแบบผม ก็แก้ไขด้วยการ ลง Redhat 8.0 เข้าไปใหม่ แต่ลงแบบไม่ต้องเลือก Package อะไรเข้าไปเลย ระบบจะติดตั้งได้ตามปกติ โดยใช้เนื้อที่ใน Harddisk ประมาณไม่ถึง 500 Mb เพียงเท่านี้ก็เข้าสู่ Text mode ของ linux ได้ตามปกติ
คำสั่งที่ท่านอาจต้องการทราบเมื่อต้องทำงานใน Text mode กับ CDROM
mount /dev/cdrom (ใช้หลังจากใส่แผ่น CD เข้าไปในเครื่องแล้ว)
cd /mnt/cdrom (ใช้เข้าไปใน CD และใช้คำสั่งอื่น ๆ ได้ เช่น ls เป็นต้น)
cd /mnt/cdrom/RedHat/RPMS (เป็นห้องที่เก็บโปรแกรมต่าง ๆ ใน CD-ROM)
rpm -i xxx.2.2.1.rpm (ใช้สำหรับติดตั้ง package หรือ โปรแกรมที่ต้องการ)
ปกติท่านจะดึง CD ออกจากเครื่องไม่ได้ถ้าไม่ใช้คำสั่ง umount
cd / (เพื่อย้ายตัวเองออกจาก cd จึงจะใช้คำสั่ง umount ได้ มิเช่นนั้นจะบอกว่า busy อยู่)
umount /dev/cdrom (ใช้เมื่อต้องการดึงแผ่น CD ออก แต่ท่านต้องใช้คำสั่ง)
ข้อควรทราบเพิ่มเติม (/mnt/cdrom/RedHat/RPMS)
ติดตั้ง httpd ก่อนจึงจะติดตั้ง php ได้
ติดตั้ง pine จะทำให้ใช้คำสั่ง pico ได้ (CD#3)
ติดตั้ง lynx(CD#3) ต้องติดตั้ง indexhtml และ perl-cgi(CD#2)
9.1 กำหนด IP address และ host name: เพื่อกำหนด ip ให้กับ eth0 (Ethernet card เบอร์แรกคือเบอร์ 0)
ขั้นตอนการแก้ไข IP และ Host name
/etc/hosts
127.0.0.1 localhost.localdomain localhost
202.29.78.1 www.isinthai.com isinthai.com www
/etc/sysconfig/network
NETWORKING = yes
HOSTNAME = yn1
GATEWAY = 202.29.78.254
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
BROADCAST=202.29.78.255
IPADDR=202.29.78.12
NETMASK=255.255.255.0
NETWORK=202.29.78.0
ONBOOT=yes
TYPE=Ethernet
/etc/resolv.conf
สามารถใช้คำสั่ง setup แล้วเลือก Network Configuration เป็นอีกวิธีหนึ่ง เพื่อเข้าแก้ IP Address ซึ่งจะแก้ไขแฟ้มต่าง ๆ ให้อัตโนมัติ จากนั้นก็สั่ง #/etc/init.d/network restart
9.5 โปรแกรมเพิ่มผู้ใช้ /usr/bin/_crt: โปรแกรมนี้เป็น shell script สำหรับเพิ่มผู้ใช้อย่างง่าย สร้างด้วย pico และกำหนดให้ประมวลผลด้วย chmod
โปรแกรมนี้ชื่อ _crt ถูกเก็บไว้ในห้อง /usr/bin โดยกำหนดให้ chmod 700 เพื่อให้สั่งประมวลผล shell script ตัวนี้ได้
และการจะใช้โปรแกรมนี้ได้จะต้องกำหนด PATH ไว้ที่ห้อง /usr/bin และ /usr/sbin จึงต้องกำหนด PATH เพิ่มเติม
จากเดิม PATH=$PATH:$HOME/bin (ถ้า admin ไม่แก้ไขให้ก่อนนะครับ)
เป็นใหม่ PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin
ตรวจสอบตัวแปร PATH ด้วยคำสั่ง echo $PATH
ปัญหานี้จะไม่เกิดขึ้น ถ้ากำหนดไว้ในแฟ้ม .bash_profile ในห้อง /etc/skel เพราะเป็นห้องที่เก็บค่าเริ่มต้น
Version 1: ตัวอย่างโปรแกรมที่ใช้งานอยู่
#!/bin/bash
echo Username
read un
echo Realname
read cm
finger $un
echo ===============================
read sure
RESULT="Error - Try other username again .. "
EXIST=0
id $un >/dev/null 2>/dev/null && EXIST=1
if [ $EXIST = 0 ]; then
useradd -g users -d /home/httpd/cgi-bin/$un -c "$cm" $un
chown $un:users /home/httpd/cgi-bin/$un
chmod 705 /home/httpd/cgi-bin/$un
usermod -d /home/httpd/cgi-bin/$un $un
ln -s /home/httpd/cgi-bin/$un /home/httpd/html/$un
passwd $un
RESULT="Complete"
fi
echo "Add new user : $RESULT"
Version 2: โปรแกรมข้างล่างนี้ใช้กับเครื่องที่ใช้งาน ssi ได้
#!/bin/bash
clear
echo _CRT version 2.June42001
echo User name
read un
echo Real Name
read cm
finger $un
echo ===============================
echo Are you ok?
RESULT="Error - Try other username again .. "
EXIST=0
id $un >/dev/null 2>/dev/null && EXIST=1
if [ $EXIST = 0 ]; then
read sure
useradd -g users -d /home/httpd/html/$un -c "$cm" $un
chmod 705 /home/httpd/html/$un
passwd $un
RESULT="Complete"
fi
echo "Add new user : $RESULT"
Version 3: โปรแกรมข้างล่างนี้ใช้กับ isinthai.com ในช่วงปิด telnet เพื่อให้ upload ผ่านเว็บ
เหตุที่ใช้แฟ้มชื่อ password.pl เพราะป้องกันการแอบเปิดดูรหัสผ่าน แล้วแฟ้มนี้ใช้สำหรับบริการ upload (ซึ่งไม่ได้เข้ารหัสไว้)
#!/bin/bash
echo Username
read un
echo Real name
read cm
echo Password
read password
finger $un
echo ===============================
echo Are you ok?
RESULT="Error - Try other username again .. "
EXIST=0
id $un >/dev/null 2>/dev/null && EXIST=1
if [ $EXIST = 0 ]; then
read sure
useradd -g users -d /home/httpd/html/$un -c "$cm" $un
chmod 777 /home/httpd/html/$un
echo $password>/home/httpd/html/$un/password.pl
chown nobody:nobody /home/httpd/html/$un/password.pl
chmod 700 /home/httpd/html/$un/password.pl
passwd $un
RESULT="Complete"
fi
echo "Add new user : $RESULT"
เจอปัญหาใช้ useradd ไม่ได้เพราะ lock
มีเรื่องแปลกเกิดขึ้นครับ ทำให้ไม่สามารถเพิ่ม user ได้
useradd: error locking shadow group file หรืออะไรทำนองนี้
ไม่แน่ใจว่าเกิดขึ้นเพราะเหตุใด แต่แก้ไขด้วยการลบแฟ้มที่ ls -al *.lock
หรือที่มีนามสกุลเป็น .lock ในห้อง /etc เช่น passwd.lock group.lock เป็นต้น
และทุกแฟ้มก็มีค่าเป็น 741 เหมือนกันหมด สันนิฐฐานว่าเป็นเลข ps ที่ทำการ lock ไว้
9.6 โปรแกรมลบผู้ใช้ /usr/bin/_del: โปรแกรมนี้เป็น shell script สำหรับลบผู้ใช้อย่างง่าย สร้างด้วย pico และกำหนดให้ประมวลผลด้วย chmod
รายละเอียดอ้างอิงจากการเพิ่มผู้ใช้ได้เลย
โปรแกรมนี้ชื่อ _del ถูกเก็บไว้ในห้อง /usr/bin โดยกำหนดให้ chmod 700 เพื่อให้สั่งประมวลผล shell script ตัวนี้ได้
ตัวอย่างโปรแกรมที่ใช้งานอยู่
echo Username
read un
finger $un
echo =============================================
echo If already exist, you can delete this account.
echo If you are not sure, Please Ctrl-C
read sure
echo Ask you again and last time? Ctrl-C if you are not sure.
read sure
userdel -r $un
rm -r /home/httpd/html/$un
echo complete
9.9 แก้ไข aliases ของ user account: ช่วยกระจาย e-mail ของผู้ใช้ 1 คนไปหลายคน เช่น มีคนส่ง mail ถึง webmaster จะกระจายไปให้สมาชิกได้หลาย ๆ คน
สร้าง account ชื่อ webmaster แล้วแก้ไข /etc/aliases ด้วย pico สำหรับส่ง mail forward ไปยังบุคคลที่เป็น webmaster@isinthai.com หลังแก้ไขแล้วให้ใช้คำสั่ง newaliases เพื่อให้ผลการ update มีผล
หลังใช้ newaliases เมื่อมีคนส่ง mail ถึง webmaster@isinthai.com จะ forward mail ไปให้บุคคล 3 คน พร้อม ๆ กัน ถ้าหากเพิ่มก็เข้าไปแก้ไขแฟ้ม /etc/aliases ใหม่ ก็สามารถกระทำได้
ขั้นตอน
#pico /etc/aliases
webmaster:suwit@yonok.ac.th,prasert@cat.net.th,phimine@yonok.ac.th,burin@yonok.ac.th,atichart@yonok.ac.th
news: webmaster@yonok.ac.th
pattama: pattamageng@hotmail.com
chalermchai: chal@yonok.ac.th
#newaliases
/etc/aliases: 76 aliases, longest 40 bytes, 801 bytes total
9.10 เพิ่ม IP ใน server ตัวเดียวด้วย IFCONFIG: เพื่อให้ server 1 ตัวมี ip ได้หลาย ๆ ตัว
เดิมที ไม่ทราบความสามารถนี้ และไม่เคยคิดจะใช้ แต่เมื่อวันที่ 11 เมษายน 2544 เครื่อง Web server และ Radius server เครื่องเดียวกัน เกิดหยุดทำงานในระดับ Media error แถมเป็นเครื่อง sun ที่ผมไม่มี software สำหรับลงใหม่ จึงต้องใช้เครื่อง Redhat 7.2 อีกเครื่องหนึ่งมากู้สถานการณ์
โดยสมมติว่าเครื่องที่ล่มไป มี ip เป็น 202.29.78.2 ผมเพียงกำหนด ip ในเครื่อง Redhat ให้เพิ่ม ip สำหรับเครื่องขึ้นอีก 1 หมายเลข คำสั่งข้างล่างนี้จะทำให้มีผลทันที แต่เมื่อเปิดเครื่องใหม่จะไม่คงอยู่ จึงต้องแก้แฟ้ม /etc/rc.d/rc.local หรือ /etc/rc.d/rc.localโดยเพิ่มบรรทัดข้างล่างนี้เข้าไป ก็เป็นอันเรียบร้อย
สำหรับ Web server ผมต้อง copy ข้อมูลทั้งหมดมาใส่ในเครื่องใหม่จึงจะใช้งานได้ ส่ง radius server ก็ต้อง copy config มาทับ ซึ่งมี 2 แฟ้มคือ users และ clients เพียงเท่านี้ ตัว Modem ก็สามารถติดต่อกับ Radius server ตัวใหม่ได้อย่างไม่มีปัญหา
/sbin/ifconfig eth0:1 192.168.3.1 เพิ่ม IP ปลอม ก็ทำได้ เพื่อใช้เป็น DHCP server
/sbin/ifconfig eth0:2 202.29.78.15
/sbin/ifconfig eth0:3 202.29.78.1
+ หลังเปลี่ยนชื่อ hosts และ ip ใน /etc/hosts /etd/sysconfig/network และ /etc/sysconfig/network-scripts/ifcfg-eth0 แล้ว
+ ไม่ต้อง reboot เครื่องก็ได้ แต่ใช้คำสั่ง #/etc/init.d/named restart ได้นะครับ
9.11 เพิ่ม Virtual hosts: เพื่อให้ server 1 ตัว มีหลายเว็บไซต์
การทำ Virtual hosts มี 2 วิธี
- Name-based virtual hosts (ผมเลือกใช้ตัวนี้ เพราะในเครือข่ายมีจำนวน ip จำกัด)
- IP-based virtual hosts (แบบนี้ในสำนักงานแห่งหนึ่งใช้ เพราะมี ip ใช้ไม่จำกัด)
1. Name-based virtual hosts
- เทคนิคนี้ ผู้บริหาร host หลายแห่งใช้ เพราะทำให้ได้ชื่อมากมายตามที่ต้องการในเครื่องบริการเพียงเครื่องเดียว ในวิทยาลัยโยนก ใช้วิธีนี้ เพราะมีผู้ดูแลเพียงไม่กี่คน และมี IP จำนวนจำกัด จึงใช้ server เครื่องเดียว และ IP เบอร์เดียว เช่น 202.29.78.12 เป็นต้น เว็บไซต์ที่ใช้หลักการนี้คือ thaiall.com ที่สมัครใช้บริการของ hypermart.net เมื่อทดสอบ ping www.thaiall.com จะพบเลข ip แต่เมื่อเปิดเว็บตาม ip จะไม่พบเว็บของ thaiall.com เพราะ thaiall.com มิใช่เจ้าของ ip เพียงคนเดียว
- การเพิ่ม Virtual hosts แบบนี้ต้องทำคู่กับการแก้ไขระบบ named ในห้อง /var/named เพื่อสร้าง ip หรือ host name สำหรับเว็บไซต์ใหม่ภายใน server ตัวเดียวกัน เพิ่มในแฟ้ม /etc/httpd/conf/httpd.conf มีรายละเอียดเพิ่มเติมเรื่อง virtual hosts ที่ http://httpd.apache.org/docs-2.0/vhosts/ ตัวอย่างข้างล่างนี้คือการเพิ่มชื่อ http://science.yonok.ac.th เข้าไปใน server ที่บริการ http://www.yonok.ac.th
มีขั้นตอนดังนี้
- แก้ไขแฟ้ม /var/named/db.yonok.ac.th กำหนดให้เครื่องเดียวมีหลายชื่อ
www IN A 202.29.78.12
science IN A 202.29.78.12
แก้ไขแฟ้ม /etc/httpd/conf/httpd.conf กำหนดห้องเก็บเว็บ ให้กับชื่อโฮส
NameVirtualHost 202.29.78.12
<VirtualHost 202.29.78.12>
ServerAdmin webmaster@yonok.ac.th
DocumentRoot /var/www/html
ServerName star.yonok.ac.th
</VirtualHost>
<VirtualHost 202.29.78.12>
ServerAdmin phimine@yonok.ac.th
DocumentRoot /var/www/html/science
ServerName science.yonok.ac.th
</VirtualHost>
<VirtualHost 202.29.78.12>
ServerAdmin burin@yonok.ac.th
DocumentRoot /var/www/html/e-learning
ServerName e-learning.yonok.ac.th
<Directory /var/www/html/e-learning>
Options All
AddType text/html .shtml .htm .html
AddHandler server-parsed .shtml .htm .html
</Directory>
</VirtualHost>
#/etc/init.d/named restart
#/etc/init.d/httpd restart
2. IP-based virtual hosts
- การเพิ่ม Virtual hosts มักทำงานคู่กับ ifconfig และแฟ้มในห้อง /var/named เพื่อสร้าง ip หรือชื่อ host สำหรับเว็บไซต์ขึ้นใหม่ การสร้างเว็บไซต์ใหม่ สำหรับ server ตัวเดียวกัน เพิ่มในแฟ้ม /etc/httpd/conf/httpd.conf มีรายละเอียดเพิ่มเติมเรื่อง virtual host ที่ http://httpd.apache.org/docs-2.0/vhosts/ ตัวอย่างบริการนี้จะพบตาม web hosting ต่าง ๆ ที่ระบุว่า เมื่อใช้บริการ เจ้าของ domain name จะได้ ip ส่วนตัว เป็นต้น
- เทคนิคนี้ ทำให้ประหยัดเครื่องบริการ ในบริษัทที่ผมเป็นที่ปรึกษามี local ip จึงใช้ ip แยก directory ต่าง ๆ ออกจากกัน แต่ใช้ server เพียงเครื่องเดียว เช่น 192.168.16.1 หมายถึงเครื่องสมาชิก 192.168.16.2 หมายถึงเครื่องพนักงาน แต่ทั้งบริษัทมีเครื่อง server เพียงเครื่องเดียว ก็สามารถมี ip สำหรับสมาชิกแต่ละคนได้ ผู้ให้บริการ hosting หลายแห่งก็ใช้วิธีนี้ เมื่อกำหนด virtual host แล้ว ผู้ใช้สามารถเปิดเว็บด้วยตัวเลข หรือตัวอักษรก็ได้ เพราะกำหนดห้องปลายทางที่ต้องการ เช่น http://www.isinthai.com หรือ http://202.29.78.1 เป็นต้น
มีขั้นตอนดังนี้
- แก้ไขแฟ้ม /etc/rc.d/rc.local โดยเพิ่ม /sbin/ifconfig eth0:1 202.29.78.1 อีก 1 บรรทัด
- แก้ไขแฟ้ม /var/named/db.202.29.78 โดยเพิ่ม 1 IN PTR www.isinthai.com.
- แก้ไขแฟ้ม /etc/httpd/conf/httpd.conf กำหนดห้องเก็บเว็บ ให้กับชื่อโฮส
<VirtualHost 202.29.78.12>
ServerAdmin webmaster@yonok.ac.th
DocumentRoot /var/www/html
ServerName star.yonok.ac.th
</VirtualHost>
<VirtualHost 202.29.78.1>
ServerAdmin burin@yonok.ac.th
DocumentRoot /var/www/html/isinthai
ServerName www.isinthai.com
</VirtualHost>
<VirtualHost yoso.yonok.ac.th>
ServerAdmin webmaster@yonok.ac.th
DocumentRoot c:\appserv\www\yoso
ServerName yoso.yonok.ac.th
<Directory c:\appserv\www\yoso>
Options All
AddType text/html .shtml .htm .html
AddHandler server-parsed .shtml .htm .html
</Directory>
</VirtualHost>
#/etc/init.d/named restart
#/etc/init.d/httpd restart
หมายเหตุ : index.php เป็นแฟ้มที่ใช้แยกห้องตามชื่อที่ส่งเข้ามา เป็นความต้องการพิเศษของโยนก
เมื่อพิมพ์ว่า http://www.yonok.ac.th และ http://www.isinthai.com จะเรียกจุดเดียวกัน แต่ใช้ php แยกห้องให้
<?
if($_SERVER["SERVER_NAME"]=="www.isinthai.com" || $_SERVER["SERVER_NAME"]=="202.29.78.1"){
header("Location: http://".$_SERVER["SERVER_NAME"]."/isinthai/");
} else {
header("Location: http://".$_SERVER["SERVER_NAME"]."/main/");
}
exit;
?>
9.12 ตัวอย่าง router configuration และการ block port: config ของ router ทำโดยผู้ดูแลเท่านั้น และมักทำไม่บ่อย บางคน config ครั้งเดียวจบครับ
- เคยมีอาจารย์บางโรงเรียนที่เปิดบริการอินเทอร์เน็ต แล้วยอมให้นักเรียนเล็ก ๆ ของพวกเขาเล่นเกม online ได้
แต่ firewall ปิดการเล่นเกม online ไว้ ทำให้เล่นกันไม่ได้เลย ผมก็เลยหาจากเว็บว่า ragnarok ใช้ port อะไร จะได้เปิดให้นักเรียนได้เล่น
เรื่องห้าม ไม่ห้ามเล่น block หรือ ไม่ block ragnarok หรือเกมอื่น ๆ กำลังเป็นที่ถกเถียงกัน
เพียงแต่ port ที่ ragnarok เข้าใช้คือ 5000 และ 6900 ซึ่งอ่านได้จาก http://www.ragnarok.in.th/faq_n.html
# show ip interface brief ใช้แสดงสถานะ FastEthernet ซึ่งเป็นฝั่ง LAN และ Serial0/0 ซึ่งเป็นฝั่ง WAN
ตัวอย่างการ config router
c:\telnet router.yonok.ac.th
username : superman
password : supergirl
yonok-router>help
yonok-router>enable
Password:
yonok-router#?
yonok-router#config terminal
yonok-router(config)#
. . . . . . .
yonok-router(config)#interface Serial0/0
yonok-router(config)#ip access-group 101 out
yonok-router(config)#access-list 101 deny tcp host 202.29.78.9 any eq 5000
yonok-router(config)#access-list 101 deny tcp host 202.29.78.9 any eq 6900
yonok-router(config)#access-list 101 permit ip any any
. . . . . . .
type command by your self
type no in the front of the command if you want to delete
webguide: http://www.cisco.com/en/US/products/hw/switches/ps718/products_command_reference_chapter09186a00800ed9dc.html
. . . . . . .
. . . . . . .
yonok-router(config)#
yonok-router(config)#exit
yonok-router#write
yonok-router#reload
yonok-router#show run
Building configuration...
Current configuration : 1905 bytes
!
version 12.2
service timestamps debug uptime
service timestamps log uptime
service password-encryption
service udp-small-servers
service tcp-small-servers
!
hostname yonok-router
!
aaa new-model
!
aaa session-id common
enable secret 5 aaaaQT$u.xb5Wxpxk5aaaaaaa
enable password 7 aaaa3080aaa
!
username superman password 7 aaaa81F1C354aaa
ip subnet-zero
!
interface FastEthernet0/0
ip address 202.29.78.254 255.255.255.0
speed auto
full-duplex
no cdp enable
!
interface Serial0/0
ip address 202.28.202.74 255.255.255.252
ip access-group 102 in
ip access-group 101 out
no cdp enable
!
router igrp 1
redistribute connected
network 202.28.29.0
network 202.29.78.0
!
ip classless
ip route 0.0.0.0 0.0.0.0 Serial0/0
ip route 0.0.0.0 0.0.0.0 202.28.29.41
no ip http server
ip pim bidir-enable
!
access-list 101 deny tcp host 202.29.78.13 any eq ftp
access-list 101 deny tcp host 202.29.78.13 any gt 6000
access-list 101 permit ip any any
access-list 102 deny tcp any 202.29.78.0 0.0.0.255 eq 135
access-list 102 deny udp any 202.29.78.0 0.0.0.255 eq 135
access-list 102 permit ip any any
access-list 103 deny tcp host 202.29.78.18 any eq ftp
access-list 103 deny tcp host 202.29.78.18 any gt 2000
access-list 103 permit ip any any
dialer-list 1 protocol ip permit
dialer-list 1 protocol ipx permit
no cdp run
snmp-server community public RO
banner login ^CC
**********************************************************************
* www.yonok.ac.th *
**********************************************************************
^C
!
line con 0
line aux 0
line vty 0 4
password 7 aaa385F5A0aaa
!
end
yonok-router#
แสดงสถานะการเชื่อมต่อกับอุปกรณ์นอกสถาบันว่า Serial กับ Protocol ปกติหรือไม่
ถ้า Protocol ไม่ up ก็จะ ping ไม่ได้ แต่ถ้า Serial ขึ้น แสดงว่าเชื่อมต่อกับ TOT ได้
yonok-router#show ip interface brief
yonok-router#show interface serial0/0
Serial0/0 is up, line protocol is up
Hardware is PowerQUICC Serial
Internet address is 202.28.202.74/30
MTU 1500 bytes, BW 1544 Kbit, DLY 20000 usec,
reliability 255/255, txload 33/255, rxload 37/255
Encapsulation HDLC, loopback not set
Keepalive set (10 sec)
Last input 00:00:01, output 00:00:00, output hang never
Last clearing of "show interface" counters never
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
Queueing strategy: weighted fair
Output queue: 0/1000/64/0 (size/max total/threshold/drops)
Conversations 0/12/256 (active/max active/max total)
Reserved Conversations 0/0 (allocated/max allocated)
Available Bandwidth 1158 kilobits/sec
5 minute input rate 227000 bits/sec, 46 packets/sec
5 minute output rate 203000 bits/sec, 67 packets/sec
25507 packets input, 15405951 bytes, 0 no buffer
Received 136 broadcasts, 0 runts, 6 giants, 0 throttles
158 input errors, 40 CRC, 102 frame, 0 overrun, 0 ignored, 16 abort
41777 packets output, 13772824 bytes, 0 underruns
0 output errors, 0 collisions, 21 interface resets
0 output buffer failures, 0 output buffers swapped out
2 carrier transitions
DCD=up DSR=up DTR=up RTS=up CTS=up
yonok-router#
9.50 ความผิดพลาด: ถ้าไม่ทำอะไร ก็คงไม่ผิดพลาด ผมทำอะไรหลายอย่างจนพบว่า ความผิดพลาดนั้นเป็นเรื่องปกติ ซึ่งสามารถนำมาเล่าสู่กันฟังได้ดังนี้
- linux vga=791 เป็นวิธีเข้า linux แบบ graphic mode เพราะเครื่องผมเป็น notebook ECS 29,900 บาท เมื่อ Boot ด้วย CD ของ Redhat9.0 หน้าจอจะเป็นสีฟ้า ไม่ว่าจะเข้าแบบใด และการเข้าไม่ว่าแบบใด เมื่อเติม vga=791 ก็จะทำให้เข้าสู่ Redhat ได้ไม่มีปัญหาด้านการแสดงผล
- imap-2000 เป็นโปรแกรมสำหรับ upgrade imap ตัวเดิม ผมไม่สามารถให้บริการ imap ผ่าน pop จึงต้องใช้ตัวเก่า แต่ก็ไม่รู้วิธีลบออก ผมหาวิธีลบตั้งนาน แต่พอใช้ rpm -e imap โดยไม่ต้องตามด้วย version ก็ลบได้ แล้วลงตัวเก่า ปรากฏว่าให้บริการ ได้ตามปกติ แต่ต้องไม่ปิด hosts.deny นะครับ ผมพยายามเลือกเปิดแล้วไม่สำเร็จ จึงต้องเปิดหมด .. ปัญหาที่ค้างอยู่คือต้องเปิดหมด ไม่รู้จะเลือกเปิดตัวไหน จึงจะให้บริการ pop3 ได้
- การคัดลอก passwd, shadow, group จากเครื่องหนึ่งมาใส่อีกเครื่องหนึ่ง พร้อม copy mail และ folder ทั้งหมดมา ปัญหาที่ผมมองข้ามไปคือ account บาง account ในเครื่องเดิมมี uid แบบหนึ่ง หากนำ passwd มาทับ หากไม่ mathch กันกับ user เดิมจะเกิดปัญหา ต้องดูว่ามี account เดิมอะไรที่เคย install โปรแกรม เข้าไป ก็ต้องแก้ไขให้ตรงกันก่อน ในเครื่องเก่า แล้วค่อยย้ายมา
- การ upgrade apache ไม่แน่ใจว่าทำไม โปรแกรมจึงไปเรียก /usr/sbin/httpd(เก่า) แทน /home/httpd/bin/httpd(ใหม่) ซึ่งตอนลงครั้งแรกไม่มีปัญหา แต่พอนำโปรแกรม upgrade apache หลังจากลง version ของ apache ใหม่ ก็เกิดปัญหา ผมแก้ไขด้วยการ copy โปรแกรมใหม่ มาทับโปรแกรมเดิม ก็แก้ปัญหาที่ปลายเหตุ ได้ผล
- จุดบกพร่องของระบบคือ software มีรอยรั่ว ต้อง upgrade software โปรแกรมมากมายที่ นำมา upgrade อาจใช้ไม่ได้ เพราะมีเงื่อนไข ในการ upgrade โปรแกรมแต่ละตัว โปรแกรมหนึ่งที่ทำให้ผมเสียเวลาไป 2 วันคือ kernel ซึ่งเป็นโปรแกรมสำคัญ มี 2 (i386 และ i686) ตัวที่ผมได้ทดสอบ upgrade แต่ทั้ง 2 ตัวทำให้เครื่องไม่รู้จัก eth0 ผมอาจแก้ปัญหาไม่ตรงจุดก็ได้ ใช้ route หรือ reboot ก็แล้ว ไม่ work สรุปว่า upgrade kernel ด้วยโปรแกรมจากเว็บของ redhat ไม่ได้ครับ แต่โปรแกรมผมอื่น ก็พยายาม upgrade เข้าไป .. น่าจะป้องกันปัญหา hacker ได้ระดับหนึ่ง
- Named อยู่ ๆ ก็หยุดทำงานไปเฉย ๆ ผมต้อง stop และ start ใหม่ ตอนนี้ไปได้ bind มา upgrade ไม่แน่ใจว่าสำเร็จหรือไม่ ก็ต้องรอดูกันต่อไป
- เคยสั่ง 700 /tmp ซึ่งไม่เกิดปัญหา แต่มาพบว่า การใช้ห้ามใช้ห้อง /tmp จะทำให้ pop ใช้งานไม่ได้ และใช้ pine เปิด mail box ก็จะฟ้องว่าเป็น read only ผมจึงไม่สามารถปิด
- ลง apache ใหม่ ใช้เวลาตั้งนานหาวิธีแก้ไข สุดท้ายก็ไม่ได้ เพราะจำไม่ได้ว่าแก้ไขอะไร /etc/httpd/conf/httpd.conf ก็ไม่ได้ backup ไว้แต่แรก สุดท้ายต้อง upgrade ใหม่ด้วยคำสั่ง rpm -U --fource apache-1.3.14..... แต่ก็ไม่ได้ต้องเข้าไปลบแฟ้ม httpd.conf ออกก่อน จึงจะทำการสร้างใหม่ได้
- เปิดเว็บโดยใช้ default index.html แล้วมีปัญหา ปัญหานี้แก้ได้ แต่ไม่แน่ใจว่าแก้ถูกวิธีหรือไม่ เพราะเดิม ไม่ว่าส่ง หรือรับ จาก telnet ต้องอ้างถึง host name แต่ผมพอแก้แฟ้ม hosts และ sendmail.cf เพื่อทำให้เป็น default แบบไม่มี host name กลับไปมีผลต่อระบบ web ที่เป็น httpd ถ้าไม่แก้ host จะเข้าเว็บเช่น http://www.yonok.ac.th/mba ได้ พอแก้ hosts โดยนำชื่อออกเช่น 202.29.78.12 yonok.ac.th star จากเดิม 202.29.78.12 star.yonok.ac.th star เป็นต้น ดังนั้นเพื่อให้ได้ทั้งระบบตัด host name และ default ของทุก directory เป็น index.html จึงต้องแยก web server กับ mail server ออกจากกัน พบว่าปัญหามาจากการตัด host เวลาเข้าเว็บจะเหลือเพียง http://yonok.ac.th/mba ทั้งที่พิมพ์ว่า http://www.yonok.ac.th/mba ซึ่ง error message บอกว่า page not found
9.51 ประสบการณ์การถูกโจมตี (Hacked Recording): ผลของการถูก hack มีลักษณะตามอาการที่ hacker ต้องการ ไม่ซ้ำแบบกัน
40. 2549-07-03 อ.อิทธิพล ทดสอบ sniffer ในเครือข่าย ทำให้รู้ว่าเราใช้ Hub และ Mail Server ของเราไม่ป้องกันเหมือนกัน scb.co.th ที่เปิดโอกาสให้โปรแกรม sniffer จับรหัสผ่านที่เชื่อมต่อกับ Server ปัญหาอยู่ที่ Server ปลายทางเช่น Web-based mail ที่ไม่มีบริการ SSL ในการเข้ารหัส จึงเริ่มต้นที่การใส่ SSL เข้าไปใน yn1 และ www ซึ่งเขียนไว้ใน 9.79
39. 2549-03-27 windows2003 ถูก Hack โดยส่งแฟ้ม index.html เข้ามาแทนหน้าแรก
- แต่ไม่สามารถทับแฟ้มเดิมได้ แฟ้มที่ส่งเข้ามาเป็นมีเจ้าของเป็น IUSER พอกำหนดให้ IUSER เขียนไม่ได้ ก็น่าจะแก้ปัญหาการเข้ามาสร้างแฟ้มได้ในระดับหนึ่ง แต่ที่สำคัญต้องหาว่า เขาส่งแฟ้ม index.html เข้ามาได้อย่างไร เพราะระบบใช้แฟ้ม index.php แต่ IIS กำหนดให้ index.html มี Priority มากกว่า เราสงสัยว่า script ของ moodle.org อาจมีจุดบกพร่องก็ได้
38. 2548-03-19 windows2003 ถูก hack และ Redhat 9.0 ก็ล่ม
- ประมาณ 11 เมษายน ที่ผ่านมา พบว่า Windows 2003 ถูก hack ผมกับอ.วิเชพ พบว่า server ของเรายิงชาวบ้านไป port 445 ด้วยการใช้ netstat -an และ ftp ของเราก็ถูกปิด และเปลี่ยน
เข้าใจว่าเขา remote control เข้ามาลงโปรแกรมต่าง ๆ ไว้ สุดท้ายต้องเลือก basic firewall ของ OS แล้วเปิด service เฉพาะที่ต้องการ ทำให้ไม่ยอมรับการถูก ping และทดสอบใช้โปรแกรม hack เข้าไป ผ่านจุดบกพร่องที่เคยมี ก็เข้าไม่ได้
- Windows2003 ที่มีหลายตัว เป็นทั้ง DHCP และ Web พึ่งติดตั้งใหม่เสร็จไม่ถึงสัปดาห์ แผนการ backup mail server หลัก ก็ไม่ทันได้ใช้ harddisk ที่เคยใช้ backup ก็ถูกนำไปใช้กับงานอื่นหมด
เพราะ server เสีย จนบูธไม่ขึ้น จึงตัดสินใจลงใหม่ และพิมพ์ user name ใหม่หมด .. และเป็นโอกาสที่ได้ update หลาย ๆ เรื่องในเว็บเพจหน้านี้อีกครั้ง
37. 2547-11-15 เครื่อง class.yonok.ac.th เปิดจากภายนอกไม่ได้
- ปัญหานี้ไม่น่าเกิดขึ้น แต่ผมปล่อยเรื้อรังมานาน ประเด็นของปัญหาคือ เปิดเว็บของ server ตัวนี้ผ่าน proxy ไม่ได้ เช่นผู้ใช้จาก 1222 หรือในโรงเรียนต่าง ๆ ที่มี proxy ขวางอยู่ เพราะการเข้าผ่าน proxy จะส่งคำขอเป็น random port เข้า web server เพราะเป็น server ที่เปิดในองค์กรได้ แต่เปิดจากข้างนอก บางองค์กรไม่ได้ จากการตรวจสอบอย่างจริงจัง ก็พบว่า router มีความสามาร block port ที่มากกว่า 3000 แล้ว ทีมงานเคยกำหนดข้อจำกัดนี้กับ ip ของเครื่อง class.yonok.ac.th เมื่อเอาออก ปัญหานี้ก็หมดไป
36. 2547-10-19 ส่ง e-mail จากโยนก เข้า ISP รายหนึ่งไม่ได้
- ทดสอบใช้ #telnet post.xxx.co.th 25 แล้ว server ของ ISP รายนั้นไม่ตอบกลับมา หลังจากพยายามติดต่อทีมงานของเขาเกือบครึ่งเดือน จึงทราบว่าขนาด banner ที่ตอบกลับมาก ถูก block ระหว่างทาง พอเขาเปลี่ยนขนาด banner ก็สามารถส่ง e-mail ไปถึง SMTP server ของเขาได้ ทางคุณยอด ซึ่งเป็นทีมงานได้ให้ข้อมูลกับผมว่า สิงคโปร์เทเลคอม เคย block package ขนาดนี้
ผลการใช้ traceroute post.xxx.co.th พบ router ที่ต้องผ่านไปหลายตัว จึงต้องไปหาว่า router ตัวไหนของใคร เป็นคนจำกัด package ขนาดเท่านี้บ้าง .. และผมก็ไม่มีความสามารถมากพอที่จะอธิบาย ผู้ดูแล router แต่ละตัว ทาง ISP จึงอาสาจะไป clear ให้
#traceroute post.loxinfo.co.th
traceroute to post.loxinfo.co.th (203.146.237.154), 30 hops max, 38 byte packets
1 door.yonok.ac.th (202.29.78.254) 0.682 ms 0.674 ms 0.717 ms
2 202.28.29.41 (202.28.29.41) 6.826 ms 4.458 ms 3.469 ms
3 atm-0-0-0.700.R01.MUA.uni.net.th (202.28.28.129) 18.444 ms 13.924 ms 14.145 ms
4 202.28.28.18 (202.28.28.18) 15.069 ms 19.641 ms 16.107 ms
5 202.129.63.82 (202.129.63.82) 14.641 ms 14.266 ms 15.081 ms
6 cor36-G-cor22.csloxinfo.net (210.1.46.35) 14.843 ms 15.029 ms 14.958 ms
7 cor35-G-cor22.csloxinfo.net (210.1.46.34) 15.403 ms 16.626 ms 14.658 ms
8 post.loxinfo.co.th (203.146.237.154) 15.064 ms 15.687 ms 14.859 ms
35. 2546-12-22 Uni.net.th ล่มในส่วนของขาอออกต่างประเทศ เพราะสาย fiber ขาดในทะเลอีกแล้ว
- uni.net.th แจ้งว่าถ้าสถาบันใดเปิด net ในประเทศไม่ได้ ให้แก้ไขแฟ้ม /etc/named.conf ส่วนขาออกต่างประเทศ ถ้ารอบริษัทที่ LA แก้อาจใช้เวลา 5-7 วัน
ขณะนี้กำลังขอทาง กสท. เพื่อใช้ขอเชื่อมต่อขาออกนอกประเทศชั่วคราว ถ้าได้ก็จะให้บริการใน spedd ที่ต่ำในระยะสั้นนี้ก่อน สำหรับแฟ้ม /etc/named.conf ที่มีตัวอย่างให้แก้ไข สำหรับสถาบันที่มีปัญหาการเปิดเว็บในประเทศไม่ได้ เป็นดังนี้
zone "th" in {
type forward;
forward first;
forwarders {
202.28.0.1; };
};
34. 2546-12-17 Server ล่มเพราะ Harddisk มีปัญหา ใช้ fsck ก็ไม่ได้ จึงต้องลง HD ตัวใหม่
- HD ที่ backup ไว้ก็ใช้ไม่ได้ จึงต้องลง RH9.0 แล้ว copy ห้องต่าง ๆ เข้า HD ใหม่ จากนั้นก็ใช้ dd backup เข้า HD อีกตัวหนึ่ง ปัญหาที่พบใหญ่มี 2 ปัญหาคือ ระบบบริการ free webhosting โดยฐานข้อมูล user เดิมใช้ไม่ได้ พอติดตั้งใหม่ ก็ได้ แสดงว่าโปรแกรมของ cyberscript.net ไม่เหมาะกับการ copy ข้าม HD อีกปัญหาหนึ่งคือรับ mail จาก server ภายนอกไม่ได้ พอตรวจสอบก็พบว่า sendmail.mc กำหนดเรื่อง procmail แต่ใน HD ใหม่ไม่ได้ใช้ procmail จึงรับฉบับที่มาจากต่างเครือข่ายไม่ได้
33. 2546-11-10 เข้า Linux server แบบ Single mode จาก Grub menu
- ครั้งนี้ไม่ได้ถูกใคร hack เพราะติดตั้ง 9.0 แล้วปัญหาต่าง ๆ น้อยลงมาก แต่สิ่งที่อยากเล่าให้ฟังคือ การ hack ตนเอง เพราะครั้งหนึ่งทีมงานได้ติดตั้ง RH9.0 โดยเลือก Grub เป็นตัวเริ่มต้นเข้าระบบ
ปัญหาคือลืมรหัสผ่านของ root วิธีแก้ใน Redhat รุ่นเก่าคือ การกดปุ่ม ALT-X และพิมพ์ linux single ก็เข้าเป็น root ได้แล้ว แต่สำหรับ Grub จะต้องกดปุ่ม e
- เมื่อพบ kernel (hd0,0)/vmlinuz root=/dev/hda8 devfs=mount hdb=ide-scsi
- ให้เปลี่ยนเป็น kernel (hd0,0)/vmlinuz root=/dev/hda8 devfs=mount hdb=ide-scsi single แล้วกด g ก็จะเข้า single mode ในฐานะ root ได้
32. 2545-11-31 DNS server 6.2 ถูก hack ผ่าน ftp
- เนื่องจากมีแผนเปลี่ยน upgrade DNS server จึงเปิด ftp เพื่อดึง mail ทั้งหมดลง server ตัวใหม่ แต่ปรากฏว่า hacker เข้ามาตอนตี 1 และเปลี่ยนรหัสผ่านของ root พร้องกับปิด ssh ทำให้ผมไม่สามารถปล่อย server ตัวนี้ต่อไปได้ ต้อง upgrade โดยด่วน
เมื่อตรวจสอบแล้วผมสิ่งผิดปกติบางส่วนดังต่อไปนี้
- แฟ้ม /etc/rc.d/init.d/network ถูกแก้ไขโดยเพิ่มโปรแกรม /usr/bin/ssh2d -q
- แฟ้ม network ดังกล่าว เป็น text file แต่ไม่สามารถลบ chmod ได้ แม้จะเป็น root
- ห้อง /lib/security/.config ถูกสร้างขึ้น และเก็บโปรแกรมร่าง ๆ ที่น่าสงสัยเช่น login และ network เป็นต้น
- ประวัติการใช้งานในฐานะ root ไม่มีใน .bash_history เพราะถูกลบและเปลี่ยนด้วยคำสั่ง #ln -s /dev/null /root/.bash_history
- ftp ftpd6246 211.206.199.98 Fri Dec 27 00:08 - crash (07:34)
- ftp ftpd5616 211.96.24.84 Thu Dec 26 18:54 - crash (12:48)
31. 2545-10-31 เครื่อง isinthai.com จากความผิดพลาด มิใช่ถูก hack
- หลังจากติดตั้งโปรแกรม RedHat 8.0 เรียบร้อยแล้ว ก็จะ backup โดยใช้ ghost แต่แทนที่จะเป็นการ backup กลับเป็นการ restore เพราะสลับกันระหว่างตัวแม่กับตัวลูก ทำให้ข้อมูลทั้งหมดหาย .. จึงเป็นประสบการณ์ว่า การ backup ในครั้งต่อไปต้องระวังให้ดี
30. 2545-10-21 ได้รับแจ้งว่า server ของผมส่ง worm ออกไป จาก noc-auto@skyrr.is
- จึงต้องเข้าไปตรวจสอบ ปิดบริการต่าง ๆ และเปลี่ยน OS เป็น RH8.0 โดยขณะนี้เปิดเฉพาะ network และ httpd เท่านั้น จากส่วน setup, system services พร้อมเข้าไปศึกษาวิธีลบ worm ตัวนี้จาก http://www.f-secure.com/v-descs/slapper.shtml
- จดหมายอีกฉบับหนึ่งที่มีข้อความคล้ายกัน มาจาก Newyork university โดยเครื่องที่ส่งการโจมตีออกไปเป็นเพื่อเครื่อง Windows 98 ของธุรการในหน่วยงานหนึ่งเท่านั้น แก้ไขโดย format ใหม่ก็ไม่มีอะไรเกิดขึ้นอีก
Date: Sun, 20 Oct 2002 16:39:06 GMT
From: Network Operation Center Skyrr <noc-auto@skyrr.is>
Subject: Portscan from 202.29.78.1
Possible slapper worm infected host on your network. My timezone is GMT 0.
More info about slapper worm and how to remove it on
http://www.f-secure.com/slapper/
This is an automated message please reply to noc@skyrr.is for more info
Snip from log:
Oct 20 06:12:53 pix2 %PIX-2-106006: Deny inbound UDP
from 202.29.78.1/2002 to 212.30.215.186/2002 on interface ytra
Oct 20 06:54:27 pix2 %PIX-2-106006: Deny inbound UDP
from 202.29.78.1/2002 to 212.30.215.186/2002 on interface ytra
Oct 20 13:11:11 pix2 %PIX-2-106006: Deny inbound UDP
from 202.29.78.1/2002 to 212.30.215.186/2002 on interface ytra
=================
To remove this virus
Delete :
- /tmp/.uubugtraq
- /tmp/.buqtraq.c
- /tmp/.bugtraq
- And upgrade OpenSSL to be 0.9.6e or above
Date: Tue, 12 Nov 2002 16:49:02 -0500 (EST)
From: Stephen Tihor <scan-alerts@nyu.edu>
Subject: Scan from 202.29.78.51
On Tuesday, November 12, from 12:58 AM until 12:58 AM EST (GMT -0500) we
detected a scan coming from 202.29.78.51, which does not have a reverse mapping
in the DNS but which you administer. This IP Address scanned the netbios-ns
ports of New York University's network (128.122.0.0/16). Sample router net
flow data showing the event is attached.
This is consistent with well-known security exploits, so we have contacted you
in hopes you can look into this, find out who was doing the scanning and why,
and take steps to prevent it in the future. Please let us know what you find
out. The APNIC WhoIs database lists burin@yonok.ac.th as the primary contact
for this system. If you are not the appropriate person to handle this matter,
please pass this message along to the correct network contact. (It may also be
useful to go to http://www.fr1.cyberabuse.org/whois/?page=change and update the
prefered contact.)
Thank you for your assistance.
Stephen Tihor
Senior Network Security Analyst
Network and System Security Team
New York University
security@nyu.edu
Flow Termination Time - Source Addr Dest Addr Prot S-Port D-Port
Tue Nov 12 00:58:16 2002 - 202.29.78.51 128.122.168.0 UDP 1027 netbios-ns
Tue Nov 12 00:58:16 2002 - 202.29.78.51 128.122.168.1 UDP 1027 netbios-ns
29. 2545-09-30 ผมได้รับ mail จากผู้ศึกษา Linux เชิงลึกท่านหนึ่ง
- mail ให้ข้อมูลผมเกี่ยวกับระบบของ isinthai.com ว่ามีจุดบกพร่องอะไร และต้องแก้ไขอย่างไร ทำให้ผมต้องแผน upgrade จาก RH7.2 เป็น RH7.3 อีกครั้ง โดยข้อความในจดหมายของนักพัฒนาท่านนี้มีดังนี้
- สวัสดี ครับ ผมชื่อ ธนดล รามสงฆ์ หรือ นก นะครับ พอดี ได้อ่าน บทความที่
http://www.isinthai.com ซึ่งชอบมากเลย คงเป็นตัวอย่างที่ดี กับเพื่อนๆ
คนอื่น ส่วนที่ชื่อชอบคือ การแนะนำ คำสั่งเบื้องต้น อ่ะครับ
และพอดี ได้อ่าน เรื่องราวของ server ตัวนี้ โดน hack ถึง 28 ครั้ง
ทำให้ผมสนใจ ว่าเพราะอะไร ทำไมถึงโดนเยอะ ขนาดนั้น
- ส่วนที่ผม E-mail มานี้ เพื่อมาแจ้ง ความบกพร่อง ของ openssl ของ
www.isinthai.com ของทีมงานคุณครับ ที่ได้ มีจุดอ่อน อยู่ที่ openssl ครับผม
ซึ่งจะทำให้ คนที่เจาะเข้ามา สามารถ เป็น user apache ได้ และสามารถจะกลาย
มาเป็น root ภายหลังได้ด้วยการ ใช้ local exploit อีกครั้งหนึ่ง ซึ่ง
ตามที่ผมได้ทดลองในเวลา 20.25 วันที่ 29 กันยายน 2545 แล้ว ผม ก็ สามารถ
มาเป็น user apache ได้ครับ และสามารถใช้คำสั่งต่างๆ ได้ทั่วไป และ
ขึ้นมาเป็น root ในภายหลังได้ แต่ผมไม่ได้ทำ backdoor อะไรไว้หรอกครับ
เพราะไม่อยากเสียแบบดีๆ เช่นนี้ไป เลย แจ้ง กลับมาเพื่อทราบครับผม
ปล. ผมคาดว่า น่าจะมีคนอื่นเข้าได้ก่อนผม ครับ เพราะ เห็นว่ามี process bnc
รันอยู่ ที่ /var/tmp ครับ แต่ผมไม่ได้ลบออกครับ เพราะต้องการให้ทางทีมงาน
ตรวจสอบ จุดบกพร่อมด้านอื่น ด้วยครับ
- สำหรับ การแก้ไข คือ update apache version ที่ใหม่กว่านี้ และ ติดตั้ง
openssl ที่ตัวใหม่กว่า 0.96 ครับ ซึ่งจริงๆ ผมอยากแนะนำว่า ให้ติดตั้ง
apche แบบแยกต่างหากครับ ไม่ควรติดตั้ง จาก rpm ที่ มากับแผ่น ครับ
เพราะจะสามารถ ควบคุมอะไรได้ง่ายกว่านี้ครับผม อีกทั้ง ( จากความรู้สึกผมเอง
) เพียงแต่ว่า การ config ครั้งแรก อาจจะลำบากนิดนึง ครับผม
สำหรับ url ที่เกี่ยวข้อง ได้แนบ มาให้ข้างใต้แล้วครับ
http://www.cert.org/advisories/CA-2002-27.html
http://online.securityfocus.com/bid/5362
http://online.securityfocus.com/bid/5364
- ปล สุดท้าย ถ้าให้ดี ควร update openssh ด้วยครับ เพราะตัวนี้
ก็มีจุดบกพร่อง สามารถให้คน มา brute หา key สำหรับ root ได้เช่นกันครับผม
และ ถ้าเป็นไปได้ ควรใช้ os ตัวอื่น เช่น mandrake หรือ slackware
ดีกว่าครับ เพราะใน config พื้นฐานของ os สองตัวนี้จะจำกัด สิทธิ ของ file
ไว้เข้มงวด มากครับ ถึงแม้ mandrake จะ ปรับมาจาก redhat ก็ตาม
- และสุดท้ายนี้ ขอเอาใจช่วย ทีมงาน เพื่อเปิดให้ ผู้อื่นมาใช้งาน เวบฟรี
ของไทยเพื่อเกิดประโยชน์ต่อไปอีกครับ
ธนดล รามสงฆ์
Tanadon Rarmasong
http://www.linux-cdr.com
28. 2545-05-25 หลังจากผมลง Redhat 7.2 ในเครื่อง yn3 ให้เป็น web server
- ในวันศุกร์ที่ 24 Hacker ก็เข้ามาในวันเสาร์หลังจาก หายหน้าไปนานมาก
เขา hack ระบบได้จริง ๆ เพราะสามารถเพิ่ม user ใน /etc/passwd และในเครื่องนี้ผมปิดบริการเกือบทั้งหมดแล้ว เหลือที่เปิดอยู่ก็คือ xinetd จึงได้ปิดไป
- ผมทราบว่าระบบผมถูก hack เพราะทาง neways.com.my แจ้งให้ทราบว่าเขาถูกโจมตี ผมแค่เปิด xinetd เพียง 3 วันก็มีคนมาใช้เครื่องไป hack คนอื่นได้แล้ว ผมตรวจเครื่องอื่นในระบบ ยังปกติ ไม่มีอาการของการถูก hack แต่ประการใด
Date: Sat, 25 May 2002 21:37:16 -0800 (GMT+8)
From: James Loh [jamesloh@neways.com.my]
To: webmaster@yonok.ac.th
Subject: Hack attempts
- I am the system administrator of 202.187.249.50 and www.neways.com.my You have an IP address 202.29.78.14 (yn3.yonok.ac.th) which is attempting to hack my servers.The log below is in Malaysian time (GMT +0800). Pls investigate.
202.187.249.50
Attempt from 202.29.78.14 (yn3.yonok.ac.th) to in.ftpd at Sat May 25
14:30:47 MYT 2002Attempt from 202.29.78.14 (yn3.yonok.ac.th) to in.ftpd at Sat May 25
14:30:48 MYT 2002Attempt from 202.29.78.14 (yn3.yonok.ac.th) to in.ftpd at Sat May 25
14:30:49 MYT 2002Attempt from 202.29.78.14 (yn3.yonok.ac.th) to in.ftpd at Sat May 25
14:30:49 MYT 2002
www.neways.com.my
May 25 14:12:54 mail xinetd[17589]: refused connect from 202.29.78.14
May 25 14:12:54 mail xinetd[17589]: refused connect from 202.29.78.14
May 25 14:12:54 mail xinetd[17589]: FAIL: ftp libwrap from=202.29.78.14
27. 2545-03-26 loxinfo แจ้งให้เราทราบว่า server ของเราสร้าง spam
- แนะนำให้ทำ relay ตรวจสอบแล้วพบว่าในเว็บมีหน้าเว็บที่ Hacker เข้ามาสร้างจึง save screen ไว้ดู [หน้าเว็บที่ถูกกล่าวใน spam] ส่วนอีกปัญหาไม่แน่ใจว่าเกิดจากอะไร คือ login เข้าไปไม่ได้ จึงไป copy login ที่มีการ backup ไว้มาแทน /bin/login ก็ใช้งานได้ตามปกติ และได้ปิด /etc/hosts.deny เป็น all:all
26. 2544-09-17 ทีมงานของ isinthai.com ไปอ่านบอร์ดของ http://www.kapook.com/hilight/2207.html
- ว่าเว็บของ http://www.malaysiaevents.com ถูก Water overflow เปลี่ยนหน้าเว็บเป็น หน้าใหม่ ซึ่งเดิมเขาเคย hack isinthai.com และอีกหลายเว็บในไทย
- การเป็น hacker นั้น ควร hack เข้าไปแล้ว บอกว่าระบบมีจุดผิดพลาดอย่างไร และออกมาโดยไม่ทำความเสียหาย แต่ water overflow ทำเป็นการกระทำเหมือนการก่อการร้าย เพราะเข้าไปแล้วเอา ธงชาติของประเทศไปเกี่ยวข้อง
- การ hack ก็คือการแสดงออกว่าตนเองมีความรู้ ผมว่ามีวิธีมากมาย ที่จะแสดงออก ในทางที่สร้างสรรค์ การแสดงออกในความรู้ของตนเองแบบนี้ เป็นความคิดที่ผิด และดูไม่มีค่าอะไร เพราะเมื่อรู้ว่าระบบปฏิบัติการตัวหนึ่งมีจุดด้อย และก็ใช้ความรู้เดิม ๆ นี้ไป hack เครื่องอื่น ที่มีจุดผิดพลาดเหมือนเดิม เป็นการใช้ความรู้เพื่อทำลายอย่างเดียวจริง ๆ เพราะถ้าเป็นผม จะ hack เข้าไปแล้ว mail ไปบอก webmaster ถึงข้อบกพร่อง ที่เว็บนั้นมีอยู่ พร้อมบอกวิธีการแก้ไข .. น่าจะเป็น hacker ที่สร้างสรรค์กว่า ที่ทำอยู่นี้มาก
25. 2544-09-15 Mr RobiUz Miora [robiuz@yahoo.com] mail มาแจ้งให้ผมทราบว่า การออกจาก Restrict shell ไปเป็น shell ธรรมดาทำอย่างไร
- ทำให้ผมสามารถปิดการออกไปยัง shell ปกติได้อีกครั้ง เดิมเขาจะเข้าไปที่ ncftp แล้วก็พิมพ์ว่า !/bin/sh เพียงเท่านี้ก็ออก shell ได้แล้ว ถ้าต้องการเปลี่ยน shell ของตนถาวรก็พิมพ์ว่า chsh เท่านั้นเอง .. ขณะนี้ผมปิด ncftp แล้วเพราะลองไปเปลี่ยน 700 ให้ bash ก็ไม่ได้ จะทำให้เข้า Restrict shell ไม่ได้
24. 2544-09-13 ผมได้รับจดหมายจากหนังสือพิมพ์ฉบับหนึ่ง(มต.) สงสัยว่า บุคลากรใน isinthai.com เป็น hacker
- โดยแจ้งว่าเว็บของเขาถูก Hack และฝากชื่อ Water overflow ไว้ เมื่อเข้ามาเปิดเว็บของ isinthai.com แล้วเห็นชื่อนี้อยู่ จึงเข้าใจว่าเป็นเจ้าหน้าที่คนหนึ่ง ที่ทำเว็บ isinthai.com ซึ่งจริง ๆ แล้วผมเองก็ไม่ทราบว่า Hacker ผู้นี้คือใคร แต่ถ้าได้อ่านในหัวข้อ 9.51 หัวข้อย่อยที่ 7 ก็จะทราบว่า Water overflow คือใคร
- Water overflow คือ Hacker ที่เข้ามาเจาะระบบ Server ของพวกเรา ที่เคยใช้ Sun SparcV และ Linux6.2 ทุกตัวของเรา เมื่อช่วงมีนาคม 2544 ซึ่งเป็นช่วงปิดภาคเรียน และพอมีเวลาศึกษา Linux อย่างจริงจัง หลังจากศึกษา และปรับปรุงระบบอยู่พักหนึ่ง ก็ไม่แน่ใจว่า ผม upgrade ระบบดีขึ้น หรือเขาเบื่อที่จะ hack แล้ว จึงหันไปเจาะที่อื่นบ้าง ผมทราบจากผู้ถูก hack อีกท่านหนึ่ง ซึ่งดูแลเครื่อง NT อยู่ในคณะ ของสถาบันแห่งหนึ่งในพิษณุโลก จึงรู้ว่า hacker ผู้นี้ hack ได้ทั้ง SunOS, Linux และ NT
- น่าตกใจที่ Server ทุกตัวในปัจจุบัน ที่ไม่ได้จ้าง Sysadministrator มานั่งเฝ้าเครื่องเพียงอย่างเดียวตลอดเวลา และมี OS ที่ไม่ upgrade จะมีช่องให้ hacker เจาะได้ ผมอ่านจาก securityfocus.com ว่าเกือบทุกเดือน จะมีคนพบจุดบกพร่องของระบบปฏิบัติการ ซึ่งเป็นช่องทางที่ hacker เข้าไปได้ ขนาด NT เองก็ยังมีจุดบกพร่อง เพราะสิงหาคม 2544 ก็พึ่งพบว่า code red สามารถเข้าไปในจุดบกพร่องของ NT ได้ .. จึงมั่นใจไม่ได้เลยว่า ระบบที่แข็งแกร่งที่สุดในปัจจุบัน จะแข็งแกร่งตลอดไป
23. 2544-07-26 ผมได้รับ mail จาก Pattara Kiatisevi [ott@thailinux.gits.net.th] เข้าใจว่าเป็นผู้ดูแล linux.thai.net
- เขาเข้าใจว่าผมพยายาม hack เข้าไปที่ server ของเขา ผมเองเป็น root แต่ไม่ได้ทำ เข้าใจว่ามี hacker เข้ามาในระบบของผมได้สำเร็จ
แล้วก็ telnet เข้าไปในระบบของเขา โดยใช้ account pawee เข้าไปใน linux.thai.net .. ท่านสามารถ hack เข้ามาเป็น root ได้ กรุณาบอกผมด้วยว่าจะปิดได้อย่างไร ขอเป็นวิทยาทานนะครับ
Date: Thu, 19 Jul 2001 17:55:44 +0700 (ICT)
From: Pattara Kiatisevi [ott@thailinux.gits.net.th]
To: webmaster@www.isinthai.com
Subject: Don't try to hack again.
To Administrator
- About 15 July later, I found intruder attempt to connect my server (linux.thai.net) from your host but I don't care about it because intruder can't login.
- In 18 july, my important files is diappeared and there are many file named ".root" leave back. When I run it as root, it's display protected method. thank you about .root .
- Please don't hack me again.
- if you try to hack again, I 'll ban all of your domain 202.29.78.*
Pattara Kiatisevi
Thai linux working group
mailto : ott@linux.thai.net
cat /var/log/secure
Jul 15 00:32:14 linux in.ftpd[16466]: refused connect from root@202.29.78.1
Jul 15 00:32:15 linux in.ftpd[16466]: refused connect from root@202.29.78.1
Jul 15 00:32:15 linux in.ftpd[16466]: refused connect from root@202.29.78.1
Jul 15 00:32:16 linux in.ftpd[16466]: refused connect from root@202.29.78.1
last
pawee pts/0 www.isinthai.com Wed Jul 18 23:45 - 23:49 (00:04)
pawee pts/0 www.isinthai.com Wed Jul 18 23:45 - 23:59 (00:13)
ott pts/0 gw-41.wh.uni-stu Wed Jul 18 20:49 - 23:51 (04:02)
ott pts/0 gw-41.wh.uni-stu Wed Jul 18 19:37 - 19:53 (00:16)
22. 2544-07-20 : นักศึกษาของผมคนหนึ่ง มาบอกว่ามีคนส่งโปรแกรมมาให้
- เขาลองเอาโปรแกรมนั้นเปลี่ยนรหัสผ่าน ในระบบ RH6.2 ก็สามารถทำได้ แต่เขาไม่ใช่คนที่สามารถเปลี่ยน Shell ของ demo เพราะผมเชื่อว่าการเปลี่ยน Shell ของ demo จะต้องใช้ความสามารถของ Root ซึ่ง Hacker แสดงผมให้ผมเห็นว่าเขาเปลี่ยนได้แล้วจริง ๆ จึงทำให้ผมต้องหันไปหา Redhat Linux 7.2 เพราะน่าจะเป็นระบบที่ปลอดภัยกว่าเดิม
21. 2544-07-19 : Hacker เข้ามาอีกแล้วครับ
- แต่ผมไม่แน่ใจว่าเข้าเจาะมาเป็น Root ได้ไหม เพราะอาการที่เกิดในครั้งนี้คือการเปลี่ยน Title ของเว็บ ซึ่งใช้ user demo เข้าไปเปลี่ยนในจุดที่เหมาะสมก็ทำได้ และอีกอาการหนึ่งคือการเปลี่ยนรหัสผ่านของ demo ซึ่งผมได้ทำการปิดบริการ passwd แล้ว แต่เขาก็ยังเปลี่ยนรหัสผ่านได้อีก .. จึงตัดสินใจเปิด perl และ php เพราะต้องการทดสอบบริการ mail และต้องการทดสอบดูว่า หลัง patch ใหม่แล้ว hacker จะสามารถ hacker เข้ามาเป็น root ได้หรือไม่ เพราะผลการ hack ในครั้งนี้อาจไม่จำเป็นต้องเป็น root ก็ทำได้
20. 2544-07-12 : มีข้อความขึ้นที่ host ตัวหนึ่ง ทั้งที่ได้ upgrade Redhat 7.2 จนหมดแล้ว
- อาจเป็นเพราะเปิดบริการมากไป จึงตัดสินใจปิด named และ hosts.deny เป็น all:all เปิดเฉพาะ ftp เท่านั้น ส่วน host อีกตัวหนึ่งที่ไม่ได้เป็น web service ผมก็ได้ปิด httpd ไปด้วย ntsysv ข้อความที่ผมเห็นที่หน้าจอ console แต่ไม่ทราบว่าถูก hack หรือไม่ ทั้ง ๆ ที่ใช้ chkrootkit.com เช็คแล้วก็ไม่พบ worm, sniff หรือ vulnerable เลย สำหรับ message ที่พบ คือ
eth0 : Transmit timeout, status 0d 2000 media 08
eth0 : Tx queue start entry 10831 dirty entry 10827
19. 2544-07-08 : วันนี้ผมไม่แน่ใจว่า hacker hack ระบบได้หรือไม่
- เพราะผมได้ปิดบริการ perl และ php พร้อมการปิด shell ทำให้โปรแกรม .sniff ที่เขาส่งเข้ามา อาจไม่สามารถประมวลผลขึ้นได้ เพราะหาอาการของการถูก hack สำเร็จไม่พบ และที่เครื่องดับไปอาจไม่ใช่ฝีมือของ hacker เพราะเครื่องที่ใช้เป็นแบบไฟกระชากแล้วหลับไป ต้องปลุกด้วยมือครับ
18. 2544-07-03 : Server ถูก hack ได้มาหลายวันแล้ว
- เขาเปลี่ยน named และ aliases แบบไม่ให้ผมรู้ เพราะเปลี่ยนแล้ว restart จากนั้นก็เปลี่ยนกลับเหมือนเดิม ผมไปตรวจสอบก็ไม่พบอะไรผิดปกติ ต้อง restart อีกทีหนึ่งจึงปกติ และเป็นช่วงที่ผมพยายายม upgrade Redhat6.2 ก็ทำเอาเหนื่อย เพราะ upgrade แล้วเครื่องใช้งานไม่ได้ หาวิธีอยู่หลายวัน จนวันนี้ตัดสอนใจปิดบริการต่าง ๆ ดูว่า เขาจะเข้าได้ไหม เช่น perl และ php เพราะอย่าง se-ed.net ยังไม่ได้ให้บริการแบบเต็มที่ ผมทดสอบด้วยคำสั่งเรียก unix command หลายที่ปิดครับ แสดงว่ามีการ config ให้ปลอดภัยผมยังไม่ทราบ config สำหรับปิดบริการบางอย่างใน perl จึงปิดไปก่อนเลย
17. 2544-06-28 : พักนี้ Server จะล่มบ่อย เพราะมีอาการเหมือนถูกยิง
- ด้วยคำว่า eth0: Something Wicked happened! 2008. ซึ่งแต่ก่อนจะขึ้นเพียง 3 ถึง 5 บรรทัด แต่พักนี้ มาติดต่อกันจนติดต่อ server ไม่ได้ บางทีข้อความหยุดแล้วถึงติดต่อได้ก็มี และบ่อยครั้งที่มาประปรายคือ 2 ถึง 5 บรรทัด แล้วก็ไม่มีปัญหาอะไร เข้าไป /var/log/messages จะพบ
บรรทัดนี้สงสัยถูก hack เพราะใช้ kernel เก่า
Jun 27 09:11:30 star kernel: eth0: Oversized Ethernet frame spanned multiple buffers, entry 0x1e$
Jun 27 09:11:30 star kernel: eth0: Oversized Ethernet frame c1ee4ce0 vs c1ee4ce0.
Jun 27 09:11:30 star kernel: eth0: Oversized Ethernet frame spanned multiple buffers, entry 0x1e$
Jun 27 09:11:30 star kernel: eth0: Oversized Ethernet frame c1ee4cf0 vs c1ee4cf0.
Jun 27 09:11:30 star kernel: eth0: Oversized Ethernet frame spanned multiple buffers, entry 0x1e$
ที่จอ console จะขึ้น eth0: Something Wicked happened! 2008. เต็มจอเลยครับ
Jun 27 13:23:20 star last message repeated 2 times
Jun 27 13:23:23 star PAM_pwdb[3875]: (login) session closed for user oir
Jun 27 13:23:23 star inetd[365]: pid 3874: exit status 1
Jun 27 13:23:45 star kernel: eth0: Something Wicked happened! 2008.
Jun 27 13:23:52 star last message repeated 2 times
Jun 27 13:23:52 star PAM_pwdb[3882]: (login) session opened for user cooper by (uid=0)
16. 2544-06-25 : Hacker เข้ามาอีกแล้วครับ
- เข้า server หลาย ๆ ตัวของเรา โดยเฉพาะ DNS เห็นว่าเข้ามาลบ log ทั้งหมด และที่แน่ ๆ ผมพึ่งทราบว่าทำไมจึงขึ้นคำว่า eth0: Promiscuous mode enabled เพราะเขาใช้คำสั่ง #ifconfig eth0 -promisc ซึ่งเป็นการเปิดบริการ port ทั้งหมด ผมลองใช้คำสั่งนี้ในฐานะ user ธรรมดาก็ไม่ได้ (permission deny) และที่แปลกใจคือ ผมปิด shell ของทุกคน เหลือไว้แต่ restriced shell แล้วเขาจะใช้คำสั่งนี้ได้อย่างไร นอกจากรู้รหัสผ่านของ su และเข้ามาทาง ssh ซึ่งก็ไม่น่าเป็นไปได้อีก
15. 2544-06-22 : วันอาทิตย์ที่ 17 ผมทราบว่าเกิดเหตุผิดปกติ
- เพราะใช้จากที่บ้านแล้วเข้า server ไม่ได้ และอ.ถนอมก็อยู่ที่โยนก ช่วยผมเรื่องย้าย server แต่ก็ไม่สำเร็จ พอเช้าวันจันทร์ จึงทราบแน่ว่า เครือข่าย leased line มีปัญหา พอดูดี ๆ อยู่พักหนึ่ง จึงรู้ว่าไฟเลี้ยงระบบเครือข่ายตก พอเปลี่ยนปลั๊ก ก็ติดต่อทั่วโลกได้เหมือนเดิม แต่ตัว DNS ยังล่ม เพราะเข้าไปดูแล้วเป็นฝีมือของ hacker แน่นอน เขาเข้ามาปิดระบบ DNS ของเครื่องราคาแพง ซึ่งเป็นหนามยอกอกผมมานาน การปิดระบบเขาเปิด telnet ทำให้ขึ้น error ว่า /bin/xlogin ซึ่งผมไม่มีเวลามาแก้ เดิมเครื่องนี้ถูก hacker เข้ามาป่วนหลายครั้ง แต่ผมไม่เคยทำอะไรได้ เพราะไม่มี software ในการติดตั้งใหม่ และถือเป็นรอยรั่วที่ใหญ่ที่สุด ที่ผมไม่สามารถอุดได้มานาน (เหมือนขโมยปีนเข้ามาทางหน้าต่าง แต่เขาไม่ทำลายหน้าต่าง ผมก็ปล่อยไปก่อน แต่ครั้งนี้เขาทำลาย ผมจึงถือโอกาสโบกปูนทับซะเลย .. เปรียบเทียบน่ะครับ) จากความเสียหายครั้งนี้ ถือโอกาสเปลี่ยนเป็น Redhat 7.2 ทั้งระบบ เพราะก่อนเขาจะทำลาย DNS เขาเข้ามา เจาะ isinthai.com ประจำ แต่ไม่แน่ใจว่าทำไมเขาเบนเข็มมา DNS ที่เขาก็รู้ว่าผมรู้ว่าเขาเข้ามาได้ ในเช้าวันจันทร์ ขณะที่กำลังติดตั้งระบบใหม่ Hacker ก็ช่างขยันเหลือเกิน เขามาต่อหน้าผมนั่นหละ ด้วย account bin ที่เขาแอบสร้างไว้ เพราะผมนำ server ตัวหนึ่งมาปรับ config ใหม่ ทำให้ผมมีประสบการณ์มากขึ้นมาการ setup server และนำมาปรับหน้าเว็บนี้ ให้ได้อ่านทั่วกัน
14. 2544-06-11 : เสาร์บ่ายที่ 9 hacker เข้ามาแล้ว
- แต่เป็นวันที่ไม่มีผู้ช่วยจึงต้องปล่อยให้ถึงวันจันทร์ และเครือข่ายทั้งหมดก็หายไป เพราะอุปกรณ์ leased line ขององค์การโทรศัพท์เสีย เช้าวันจันทร์ พบว่าผมไม่สามารถใช้ ftp เข้าเครื่องได้ แม้จะปิด lock แล้ว และที่สำคัญไม่สามารถแก้ไขอะไรแฟ้ม index.html ไม่ว่าจะ chown chmod pico หรือ rm ทั้งที่ใช้ su แล้ว จึงได้ทำการแก้ไขระบบใหม่ตามหัวข้อ 9.52 อีกครั้ง เช่น upgrade เพิ่ม และปิด /tmp เพราะที่ f2s.com เขาก็ปิด
13. 2544-06-08 : เมื่อวานผมมั่นใจมากว่าเครื่องจะไม่ถูก hack
- เพราะปิดอะไรไว้มากมาย แต่ hacker ก็ทำได้โดยเข้ามาลบ /etc/passwd* /etc/shadow* /etc/hosts.* ทำให้ผมไม่สามารถเข้าระบบตามปกติได้ ต้องเข้าแบบ linux single แต่ผมก็ไม่ทำเพราะคิดว่า เริ่มจาก 0 ใหม่ ดีกว่าเริ่มจาก 10 แล้วไม่แน่ใจว่ามีอะไรรั่วบ้าง วันนี้ผมจึงทำหลาย ๆ อย่างให้ดีขึ้น ซึ่งเขียนรายละเอียดไว้ในหัวข้อ 9.52
ข้อความที่เห็นที่หน้าจอของ console
Transmit timeout, status 0D 0000 media 08
eth0: tx queue start entry 44052 ..
พบ ip 195.223.23.99 ซึ่งน่าจะเป็น fake ip ที่ส่งเข้ามาจาก italy
12. 2544-06-07 : ล้างเครื่องใหม่ได้ 2 วัน โดยปิดหมดด้วย tcpwrapper
- แต่ทำให้ใช้ pop ไม่ได้จึงต้องปิดเฉพาะ in.telnetd แต่ปัญหาพบว่า มี hacker เข้ามาส่งแฟ้มเข้าไปใน root ของ web directory ได้ และบางครั้งมีข้อความ ขึ้นที่ console ว่า
June 6 17:33:42 www Kernel: eth0: Something Wicked happened! 2008.
- อ่านแล้วก็ไม่เข้าใจจึงตัดสินใจ upgrade package เพิ่ม และทำการปิด ftp โดยลบทุกโปรแกรมออกจากห้อง /home/ftp/bin และ /home/ftp/lib ซึ่งก็ไม่พบปัญหาการให้บริการ ftp แต่อย่างใด และ ip ที่เข้ามาในระบบ ซึ่งเป็นข้อความที่อ่านไม่ออก น่าจะเกิดจากการทำ overflow โดย 202.44.9.117 และคาดว่าครั้งนี้จะปิดได้ดีขึ้น เพราะได้ upgrade โปรแกรมแก้ปัญหาช่องโหว่หลาย ๆ จุดแล้ว
11. 2544-05-29 : ได้รับ mail จาก water_overflow แจ้งให้ผมทราบว่าเขา hack โดยการปลอม IP เข้ามา
- และส่งโปรแกรมภาษา C เข้ามาไว้ที่ห้อง /tmp เขา compile เครื่องผมไม่ได้เพราะปิด gcc ไว้ เมื่อ run program จะได้สถานะเป็น root
ส่วนอีกโปรแกรมที่คิดว่าเขาไม่ได้บอกผมคือโปรแกรมชื่อ last.cgi ซึ่งอยู่ในห้อง /cgi-bin เป็นโปรแกรมที่เปิดผ่านเว็บ ไม่ได้ใช้วิธีเปิดด้วย telnet ที่ต้องตกใช้เพราะโปรแกรม last.cgi สามารถใช้คำสั่งของ shell ผ่าน browser ได้เลย และสามารถลบแฟ้มที่มีสถานะเป็น 700 ของ root ได้ ก็หมายความว่ากระทำการใด ๆ ได้หมด
แต่ตอนนี้ผมยังหาวิธีแก้ปัญหากับแฟ้มนี้ไม่ได้ ที่จะทำให้โปรแกรมนี้หมดความสามารถของ root ผ่าน browser ไป ยกเว้นว่าจะปิดบริการ cgi ซึ่งไม่ต้องการทำอย่างนั้น (แม้จะทำตามขั้นตอนในข้อ 9.52 หรือปิด mount แต่โปรแกรมนี้ก็ยังมีฤทธิ์)
10. 2544-05-28 : เมื่อวาน hacker เข้ามาจัดการ hack server ตัวนี้ได้
- โดยเปลี่ยนหน้าแรก ซึ่งเขาได้แนะนำว่าควรหา patch มา update และได้ฝากหน้าเว็บไว้ให้อ่าน หลังจากงถูก hack แล้ว ได้เข้าไปตรวจด้วย last ไม่พบอะไร ดูใน /etc/log/secure ก็พบแต่ที่เข้ามาไม่ได้ แต่พอเข้าไปที่ /etc/log/message พบสิ่งที่ hacker ฝากสิ่งดี ๆ ไว้ เรียกว่า ถ้าผมไม่ใช้ more /etc/log/messages ก็ไม่เห็น ซึ่งมีข้อความดังนี้
May 27 10.05.11 login Water Overflow
To : Admin
Subject : upgrade your glibc now. your glibc have bug..
HOW TO HACK :
The hacker can make buffer overflow in glibc/locale. if you don't believe, go to /tmp
and see my own program named Xwater. When you run Xwater program.. after overflow you 'll get root
shell.
HOW TO PROTECT :
If you don't use /bin/mount ..please change permission to can't execute for protect hacker
using this hole in glibc(chmod 4700 /bin/mount). but if you upgrade glibc,you can change permission to
execute again.
nice a day.
Water Overflow
- ในส่วนที่ hacker แนะนำให้ patch ซึ่งน่าจะหา download ได้จาก http://www.redhat.com/support/errata/index.html นั้น ผมพบนับได้เกือบ 100 โปรแกรม และในนั้นมีเรื่อง
glibc ที่ ได้รับการแนะนำที่ http://www.redhat.com/support/errata/RHSA-2001-002.html ส่วนวิธี hack ที่ได้รับการแนะนำ ผมได้ลอง run โปรแกรมนี้ในห้อง /tmp ด้วย user ธรรมดา
ปรากฎว่า overflow จนเป็น root จริงครับ เขาแนะนำว่าถ้าไม่ใช้ mount ก็ให้ใช้ chmod 4700 /bin/mount หรือไม่ก็ upgrade ซึ่งผมเลือกทั้ง 2 วิธีที่เขาแนะนำมาคือ
1. upgrade glibc จาก http://www.redhat.com/support/errata/RHSA-2001-002.html จะได้แฟ้มมาหลายแล้วแล้วใช้ rpm -Fvh [filename]
2. chmod 4700 /bin/mount
9. 2544-05-25 : เย็นนี้ได้รับ mail จาก กลุ่มน้ำล้น ว่าจะเข้ามา hack วันพรุ่งนี้ ให้ป้องกันระบบให้ดี เป็นลักษณะจดหมายเตือน แต่ผมก็ป้องกันไปแล้วเต็มที่ คือการใช้ tcpwrapper ปิด ip ทั้งหมด แต่ไม่ได้เข้าไปปิด service ใน /etc/services พอเย็นวันเสาร์ผมเข้าใช้ isinthai.com ไม่ได้ ก็คิดว่า hacker เข้าไปแล้วเป็นแน่ จึงเข้าไปดูที่เครื่อง ปรากฤว่ามีคนปิดไฟ พอเปิดไฟก็ใช้ได้ จึงแน่ใจว่าที่ระบบหายไปในวันเสาร์ ไม่ใช่ฝีมือของ hacker เป็นแน่ จึงไปถาม รปภ. และทราบว่า ผมได้ย้าย server ทำให้หน้าจอตรงกับหน้าประตู เมื่อ รปภ. เดินไปเห็นว่าไฟเครื่องเปิด จึงใช้กุญแจไขเข้าไป ช่วยปิดให้ .. สรุปว่าผมได้ clear กับ รปภ. แล้วว่า ต่อไปห้ามยุ่งกับเครื่องเหล่านั้นอีก .. ก็เรียบร้อย
Please prevent www.isinthai.com now.. coz there're many hackers would
like to drill your system..
On 26 May at 10.00 am. if we can invade your system. we'll deface
your web.. Don't worry. we don't destroy your system.... and if we found
the hole .. we 'll reveal to you and how to protect.
I have a few time for drill your web ,because I can entrance and begin to
study engineering in university recently. So maybe I have no time for drilling
any more.
water overflow.
8. 2544-05-24 : พบว่าใช้ useradd นึกว่าโดย hack อีกแล้ว
- แต่คิดว่าไม่ใช่ เพียงแต่เกิดแฟ้ม group.lock ในห้อง /etc จึงทำให้ใช้คำสั่ง useradd ไม่ได้ เมื่อลบ group.lock ก็ใช้ได้ตามปกติ จึงถือโอกาสเข้าไปดูแล้ว /var/log/messages ซึ่งมีข้อมูลเยอะมาก จึงเลือกดูที่มีคำว่า portmap พบว่ามี log ที่แสดง ip ขึ้นมา โดยใช้คำสั่ง cat /var/log/message|grep portmap อ่านดูก็ไม่ได้คิดว่าต้องเป็น hacker อาจเป็นเพียงผู้ใช้ที่เคยได้บริการ telnet และเข้ามาใช้บริการอีกเท่านั้น
May 20 11:58:27 www portmap[13213]: connect from 211.223.208.103 to dump(): request from unauthorized host
May 20 17:33:42 www portmap[13318]: connect from 203.155.103.249 to dump(): request from unauthorized host
May 22 14:38:05 www portmap[816]: connect from 211.182.75.2 to getport(status): request from unauthorized host
May 22 16:28:57 www portmap[852]: connect from 211.182.75.2 to getport(status): request from unauthorized host
May 22 18:03:12 www portmap[885]: connect from 211.182.75.2 to getport(status): request from unauthorized host
7. 2544-05-18 : วันนี้ hacker กลุ่มน้ำล้น ได้เข้ามาสำแดงความสามารถว่าเขาทำได้
- ด้วยการเปลี่ยนหน้าแรกของเว็บ และยังตั้งระเบิดเวลา เมื่อปิดเครื่องแล้วจะไม่สามารถ boot ระบบ ทำให้ Server 2 ตัวที่เป็น Redhat 7.2 ที่ผมมั่นใจว่าไม่น่ามีใครทำอะไรได้
- เนื่องจาก server ตัวหนึ่ง แม้แต่ผมยังไม่สามารถเข้าเป็น Superuser และบริการหลายอย่างล่มไป จึงเข้าใจว่า hacker ไม่น่าทำอะไรได้อีก ส่วน Server อีกตัวหนึ่งได้ติดตั้งใหม่ ปิด gcc และ tcpwrapper แล้ว แต่ก็ยังถูก hack ได้ชั่วข้ามคืน และเขายังบอกว่าเป็น Hacker กลุ่มน้ำล้น และเป็นคนไทย ที่ผมเคยเข้าใจว่าเป็นฝรั่ง แต่นี่ก็คือประสบการณ์ที่ทำให้รู้ว่าระบบของผมยังมีรอยรั่ว แต่ Hacker กลุ่มน้ำล้น (Water overflow) ได้แนะนำว่าผมน่าจะหา Patch มาปิดรอยรั่วต่าง ๆ ทำให้ผมเริ่มหันไปสนใจเรื่องนี้มากขึ้น หลังจากที่เคยเข้าไปเห็น Patch กว่า 300 Patch ที่ Redhat ออกมาแก้ปัญหาระบบใน Redhat 7.2 สำหรับวันที่ hacker เจาะเข้ามาได้ ผมยังไม่ทันได้เห็นหน้าแรก เพราะก่อนผมเข้าที่ทำงาน ไฟฟ้าเกิดดับไปซะก่อน
6. 2544-05-15 : isinthai.com เองถูก hack จนผมไม่สามารถเข้าเป็น superuser ได้
- ต้องไปเข้าที่ตัว Server จึงจะได้เพราะใช้ su ไม่ได้นั่นเอง แต่วันนี้ Server ตัวหลักตัวหนึ่งถูก hack ซึ่งมีอาการที่ยอมรับไม่ได้คือ ใช้ pico ไม่ได้ Telnet ออกไป server ตัวอื่นไม่ได้ โดย Server ตัวนั้นมีการปิด Telnet ด้วย hosts.deny แล้ว ผมตรวจด้วย Last จึงทราบว่า เขา Hack เข้ามาด้วย Ftpd ซึ่งเข้าใจว่าเป็นการทำ Overflow ซึ่งผมยังไม่ทราบว่าทำอย่างไร ในแฟ้ม passwd เขาก็เพิ่ม user 0:0 เข้าไปได้ จึงจะลงระบบในเครื่องนี้ใหม่ทั้งหมด แต่จะปิดระบบให้หมด เหลือให้ใช้ได้เฉพาะในโยนกเท่านั้น ก็ต้องดูต่อไปว่าผมการปิดของผม ครั้งใหม่ จะสำเร็จหรือไม่ และที่แค้นใจคือ ผมพยายามใช้ Ghost copy HD ตัวนี้เพื่อ backup แต่ประเสริฐ พยายามา 2 วันก็ไม่สำเร็จไม่ในใจว่า Harddisk ตัวใดเสีย จึงทำให้ต้องมานั่งลงระบบใหม่ทั้งหมด นี่ถ้า Backup ไว้คงไม่ต้องลงระบบใหม่อย่างนี้ แต่ก็ถือเป็นประสบการณ์ เหล็กกำลังร้อนตีง่าย ซึ่ง Server ดังกล่างก็มีปัญหาหนึ่งที่ยังแก้ไม่ได้ คือเมื่อไฟตกแล้วจะดับไป ไม่ฟื้นขึ้นมาเอง แต่ถ้าเป็นเครื่อง Acer 133 จะพื้นเองได้ จึงตัดสินใจเปลี่ยนเครื่องด้วยเลย
5. 2544-05-03 : วันนี้ผมเข้า Root โดยใช้ Su ไม่ได้
- เมื่อเข้าแล้วกรอกรหัสผ่านแล้วจะขึ้นคำว่า su: cannot set groups: Operation not permitted พอไปตรวจใน /etc/passwd ก็พบว่า hacker เข้ามาเปลี่ยน adm ให้เป็น :3:0: จึงเปลี่ยนกลับไป จากนั้นก็เขาเป็น root โดยใช้ linux single แล้วไปสร้าง account ขึ้นมาอีก 1 account ให้เป็นประตูหลัง จึงจะเข้าไปเป็น root ได้ ขณะนี้คงปิดระบบให้ปลอดภัยไม่ได้แล้ว เพราะเป็นระบบเปิด ผมวางแผนว่าอีกสักพักจะ ลงระบบใหม่ แล้วเริ่มปิด gcc ตั้งแต่ต้น hacker อาจเข้ามาไม่ได้ก็ได้ .. ขณะนี้จะเป็น root ที ต้องไปนั่งหน้า server จึงจะใช้ได้
4. 2544-03-26 : ผมได้รับแจ้งจากคุณสุวิทย์ว่า last หาไปและมีข้อความว่า operator เป็นผู้ลบ
- แต่ผมจำได้ว่าเคยเปลี่ยนรหัสผ่านของ operator ไปแล้ว แต่ก็หาไม่พบว่า operator เข้ามาทำอะไรอีกนอกจากลบ last ไป ซึ่งผู้ที่เคยใช้ user นี้เข้ามาก็คือ hacker คนแรกที่มาจาก romania นั่นเอง
3. 2544-03-20 : วันนี้ hacker จาก UK เข้ามา
- แต่ผมหาไม่พบว่าเข้าเขามาทำอะไร นอกจากเพิ่ม user เข้าระบบ และยังพบคุณ nat (tanma2k@hotmail.com http://www.nat.f2s.com/phpnuke/index.php) ซึ่งแนะนำผมให้ chmod 700 /usr/bin/gcc เป็นการป้องกัน hacker นำ shell script มาแปลงตนเองเป็น root ทำให้ผมรู้ว่า แค่มีโปรแกรม shell ตัวหนึ่ง มา run ใน server ถ้า server ยอมให้ใช้ gcc ซึ่งเป็น C compiler ก็จะทำให้เกิด overflow จนเปลี่ยนสถานภาพปกติ กลายเป็น root ทันที และคุณ nat ยังแนะนำเว็บ www.rootshell.com และ www.technotronic.com เพื่อให้ผมมีความรู้ไว้ ปรับปรุงระบบ ซึ่งคุณ oak จาก loxinfo.co.th ก็เคยเล่าให้ผมฟังถึงวิธีการนี้ เพียงแต่ตอนนี้ ผมยังไม่ได้ shell script ตัวนั้นมาทดลอง
และก่อนนี้ไม่กี่วัน AusCERT Probe Reporter [auscert@auscert.org.au] และ Phil Crooker [pcrooker@orix.com.au] ก็แจ้งมาว่า มี hacker พยายามเจาะระบบเขาจาก ip ของเรา
Apr 8 10:53:16 denied tcp 202.29.78.1(3744) -> 203.23.109.14(53), 1 packet
Apr 8 10:53:17 denied tcp 202.29.78.1(3793) -> 203.23.109.63(53), 1 packet
Apr 8 10:53:18 denied tcp 202.29.78.1(3806) -> 203.23.109.76(53), 1 packet
จริง ๆ ไม่ใช่ 202.29.78.1 นะครับ แต่จาก server อีกตัวที่ปิดมิดชิด เพราะถ้าเป็น เบอร์ 1 คือ isinthai.com จะไม่แปลกใจเพราะเปิดให้เข้ามาใช้แต่นี่เป็น server อีกตัวครับ แล้วเข้าก็แนะนำว่าเข้าเว็บต่อไปนี้ เพื่อศึกษาวิธีการปิดระบบ
- http://www.linuxnewbie.org/nhf/intel/security/armorlin.html
- http://securityfocus.com
- http://bastille-linux.sourceforge.net/
- http://www.auscert.org.au/Information/Auscert_info/papers.html
- http://packetstorm.securify.com
2. 2544-03-29 : เมื่อแก้รหัสผ่านจาก hacker ในครั้งแรกได้
เข้าใจว่า hacker คนเดิม รู้ว่าผมรู้จักเขาได้อย่างไร เพราะผมใช้ hosts.deny ปิดเขา ตามหัวข้อ 9.54 ครั้งนี้ จึงเข้ามาก่อกวน รุ่นแรงกว่าเดิม เพราะครั้งแรกแค่ยึด super user ไป ครั้งนี้จึงปิดระบบ network ของเรา โดยเข้าไปแก้ไขแฟ้มต่าง ๆ เช่น resolv.conf hosts named.conf network static-routes ifcfg-eth0 เป็นต้น ซึ่ง hacker คนนี้ได้ทิ้งข้อความไว้หลายจุดว่า SnaK3.Is.The.Best.H4k3r.org 212.62.7.9 และเว็บที่เขาทิ้งไว้คือ www.snak3.co.uk เป็นเว็บ free email โดย another.com ซึ่งอาจไม่เกี่ยวข้อง โดยตรงกับ hacker ผู้นี้ก็ได้ ในครั้งนี้ ก็เกือบต้อง format หรือ reinstall เพื่อลง linux ใหม่ ดังนั้นก่อนเปิดระบบ จึงต้องใช้ NortonGhost เพื่อ clone HD ในระดับ partition ให้ได้ก่อน เพราะมีลูกศิษย์ที่ชื่อ วิรุฬห์ ยวงเอี่ยมใย แนะนำมา
1. 2544-03-26 : เปิดระบบทดลอง install โปรแกรมต่าง ๆ ตั้งแต่ต้นเดือน
วันนี้ถูก hacker เข้ามาเปลี่ยนรหัสของ root นั่งหาวิธีอยู่ 3 วันจึงรู้วิธีแก้ไขรหัสผ่าน ตามหัวข้อ 9.61 ซึ่งเลข ip 193.231.178.98 ที่เข้ามาโดยใช้คำสั่ง last พบว่ามาจาก Romania
9.52 ปรับระบบให้แข็งแรง: ได้รับคำแนะนำดี ๆ จากผู้รู้ จึงนำมาเขียนไว้ที่นี่
apples@chek.com ซึ่งดูแลระบบของ http://academic.cmri.ac.th แนะนำมาหลายเรื่อง เช่นน่าจะใช้ slackware หรือ Mandrake เพราะระบบแข็งมาก สำหรับการป้องกันในเบื้องต้นมีดังนี้
water_overflow@hackermail.com ซึ่ง hack ระบบของเรา และแนะนำทีมงานมาดังนี้
webmaster@isinthai.com ส่วนนี้ผมไปอ่านมาจาก thailinux.com
4 มิถุนายน 2544 : ตัดสินใจปิด telnet แต่เปิดบริการทั้งหมด โดย upgrade โปรแกรมจาก redhat.com
คำสั่งที่ใช้ update เช่น $rpm -Fvh glibc-2.1.3-22.i386.rpm
- ftp://updates.redhat.com/6.2/en/os/i386/glibc-2.1.3-22.i386.rpm
- ftp://updates.redhat.com/6.2/en/os/i386/inetd-0.16-7.i386.rpm
และอีกมากมาย
ลบทุกโปรแกรมในห้อง /home/ftp/bin และ /home/ftp/lib ซึ่งยังไม่พบปัญหาจากการลบ
และ อ.dav แนะนำให้ผมใช้ ssh ติดต่อกับ server แทนการเข้า console ก็ต้องลองดูครับ
ส่วน tcpwrapper ตามหัวข้อ 9.54 ได้แก้จากการ deny all:all เป็นการปิดเฉพาะ telnet เพราะถ้าปิดหมด
จะไม่สามารถให้บริการ pop ได้ จึงต้องปิดเฉพาะ in.telnetd
8 มิถุนายน 2544 : ล้างระบบแฟ้มน ftp ทั้ง /home/ftp/bin /home/ftp/etc /home/ftp/lib
เรียกโปรแกรม ntsysv เพื่อจัดการกับโปรแกรมที่มีปัญหา
ลบ apmd atd crond gpm kudzu lpd netfs nfslock pcmcia portmap xfs
เหลือ httpd inetd inet linuxconf mysql named network sendmail เท่านั้น
แก้ inetd.conf โดยปิด shell login talk ntalk finger
แก้ chown ของ /home/httpd/html เป็น root:root
แก้ chmod ของ /home/httpd/cgi-bin เป็น 755
แก้ /etc/rc.d/rc.local เพิ่ม /sbin/ipchains -A input -s 0/0 -i eth0 --proto tcp --destination-port 143 -j REJECT
11 มิถุนายน 2544 : ปิด /tmp ด้วย chmod 400 เดิมเป็น 1777
แก้ /etc/inetd.conf ยกเลิก login, shell และ telnet
แก้ linuxconfig, control service activity ยกเลิก sendmail
Upgrade rpm จาก http://www.redhat.com
สำหรับการ ลงโปรแกรม ถ้า upgrade ด้วย rpm -Fvh .. ไม่ได้ ให้ใช้ลงใหม่ด้วย rpm -i ..
ต้องจัดลงโปรแกรม db3... ก่อน มิเช่นนั้นโปรแกรมอื่นจะลงไม่ได้
- ftp://updates.redhat.com/6.2/en/os/i386/db3-3.1.17-4.6x.i386.rpm
- ftp://updates.redhat.com/6.2/en/os/i386/dump-0.4b19-5.6x.i386.rpm
และอีกมากมาย
12 มิถุนายน 2544 : upgrade โปรแกรมอีกเพียบจาก redhat.com
- ftp://updates.redhat.com/6.2/en/os/i386/apache-1.3.14-2.6.2.i386.rpm
- ftp://updates.redhat.com/6.2/en/os/i386/kernel-doc-2.2.19-6.2.1.i386.rpm
และอีกมากมาย
แล้วเปิดบริการ SSH พร้อม restricted shell ตามข้อ 9.53
9.53 การทำ restricted shell: การจำกัดผู้ใช้ให้ใช้งานในเมนูที่เตรียมไว้
apples@chek.com ซึ่งดูแลระบบของ http://academic.cmri.ac.th แนะนำเรื่องนี้จนผมทำได้ โดยเฉาะ code ของ menu copy มาทั้งแท่งเลยครับ เมื่อนำมาให้บริการพร้อมกับ ssh (Secure Shell) จะเป็นการให้บริการที่สมบูรณ์ และปลอดภัยมาก (ในปัจจุบัน)
วิธีการทำ restricted shell
- สร้างห้อง /rbin (ผมสร้างเพื่อแยกออกมาจากระบบเดิม .. อาจไม่จำเป็น)
- ln -s /usr/bin/bash /rbin/rbash (คำสั่งนี้ผมยังไม่เห็นประโยชน์แต่ก็ทำไว้ก่อน)
- สร้างแฟ้ม menu ด้วย pico ตาม code ด้านล่างนี้เป็น shell script ธรรมดา
- chmod 755 menu เพื่อให้ shell script ประมวลผลได้
- แก้แฟ้ม /etc/shells ด้วย pico โดยเพิ่ม /rbin/menu เข้าไปต่อบรรทัดสุดท้าย
- แก้ shell ทุกคนในแฟ้ม /etc/passwd เป็น /rbin/menu หรือให้ usermod -s /rbin/menu [username]
- เพียงเท่านี้ user ที่เปิดเข้ามาจะต้องเข้ามาที่เมนู /rbin/menu ใช้บริการที่เตรียมไว้
- ถ้าไม่ใช้ script สร้าง user จะต้องแก้แฟ้ม /etc/default/useradd ให้เป็น shell /rbin/menu
- ถ้าใช้ script _crt จะต้องแก้บรรทัด useradd โดยเพิ่ม -s /rbin/menu หรือจะเพิ่มคำสั่ง usermod ไปอีกบรรทัดก็ได้
#!/bin/sh
# Powered By apples@chek.com>
# case from http://academic.cmri.ac.th
case $USER in
usernamewasblock ) exit 1;;
esac
while [ 1 ]; do
clear
echo
echo
echo " SSH service at http://www.isinthai.com"
echo " Any suggestion send mail to webmaster@isinthai.com "
echo
echo " 1 ) Pine - Email/News Client"
echo " 2 ) Lynx - Text Base Web Browser"
echo " 3 ) Pico - Text Editor"
echo " 4 ) File Manager - Delete, Modify, Change file attribute"
echo " 5 ) ncftp - FTP Program"
echo " 6 ) Telnet - Remote Login"
echo " 7 ) Change password"
echo
echo " q ) Log out"
echo " ================= "
echo " Restrict shell suggest by apples@chek.com"
echo " Strong server at http://academic.cmri.ac.th"
echo
echo -n " Select->"
read OPT
case $OPT in
q | Q ) echo;echo "Bye"; echo; echo; exit 1;;
2 ) lynx http://www.isinthai.com;;
1 ) pine;;
3 ) pico;;
4 ) lynx -editor=pico $HOME;;
5 ) ncftp;;
6 ) telnet;;
7 ) passwd;;
esac
done
exit 1
9.54 ติดตั้ง TCPWrapper เพื่อตรวจสอบ IP เครื่องต้นทาง: โปรแกรมเล็ก ๆ ที่ใช้ปฏิเสธ IP จากบริการของ xinetd
เรื่องนี้อ่านมาจาก
- http://www.thailinux.com/1999/07/11/topic2.html
- http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/ref-guide/s1-tcpwrappers-accesscontrol.html
หมายเหตุ :
บริการนี้มีปัญหานิดหน่อย เพราะใน RH7.2 สามารถให้บริการได้ตามปกติตามด้านล่าง แต่ใน RH8.0 ไม่สามารถปิดบริการหลายอย่างได้ อาจเป็นเพราะมีโปรแกรม xinetd เปิดบริการเหล่านี้อยู่ ผู้ดูแลอาจดูได้ว่ามีบริการอะไรเปิดอยู่บ้างด้วยคำสั่ง #xinetd -d
โปรแกรม tcpwrapper จะมีมากับเครื่องอยู่แล้ว เพียงแต่กำหนด config ในการป้องกัน ระบบป้องกันก็จะทำงานทันที หากต้องการทราบว่าจะปิดบริการอะไรได้บ้าง สามารถเข้าไปดูที่ห้อง /etc/xinetd.d/ ส่วนเลข port ที่เปิดบริการดูได้จาก /etc/services โดยทดสอบว่า #telnet localhost 80 แต่ถ้า port นั้นปิดอยู่ก็จะไม่สามารถติดต่อได้
หากสงสัยว่า tcpwrapper ทำงานหรือไม่ ให้กำหนดใน /etc/hosts.deny แล้วพิมพ์คำว่า all:all เพื่อปิดทั้งหมด แล้วทดสอบติดต่อเข้าไป เมื่อ save แฟ้ม hosts.deny ระบบของ tcpwrapper ก็จะทำงานทันที .. เคยทดสอบกับ ssh ที่เดิมติดต่อได้ เมื่อสั่ง all:all จะใช้บริการ ssh ไม่ได้ หรือตรวจสอบ log ได้ที่ /var/log/secure
เพื่อไม่ให้ใคร telnet
CASE 1
ในแฟ้ม /etc/hosts.allow
ALL:localhost
in.telnetd:host1.isp.net
in.fingerd:ALL
ในแฟ้ม /etc/hosts.deny
All:All
หมายถึง ยอมให้ใน localhost ทำทุกอย่างได้
หมายถึง ยอมให้ telnet จากเครื่อง host1.isp.net ได้ และใช้ finger จากเครื่องใดก็ได้
หมายถึง ถ้าไม่อนุญาตตาม hosts.allow ก็ให้ปฏิเสธหมด
CASE ของ isinthai.com
ในแฟ้ม /etc/hosts.allow
in.ftpd in.ipop3d in.ipop2d in.imapd:All
ในแฟ้ม /etc/hosts.deny
in.telnetd in.rshd in.rlogind:ALL
# ตอนแรกผมปิด all:all ทำให้ไม่สามารถบริการ pop3 หรือ imap ได้
# จึงต้องเลือกปิด เฉพาะ daemon ที่น่ากลัว
CASE ของ Host ที่ต้องการปิด คือไม่บริการภายนอก
ในแฟ้ม /etc/hosts.allow
All: 202.29.78. EXCEPT 202.29.78.1
ในแฟ้ม /etc/hosts.deny
All:ALL
in.telnetd:All
คำอธิบายเพิ่มเติม
ในแฟ้ม /etc/hosts.deny
in.fingerd:ALL EXCEPT .domain.com หมายถึง ยอมให้ finger หมดยกเว้น จาก domain.com
in.telnetd in.rlogind:host1.x.com .domain.com หมายถึง ไม่ให้ telnet หรือ login จาก host1.x.com และ domain.com
หลังจากแก้ไขแฟ้ม hosts.allow หรือ hosts.deny จะมีผลต่อการอนุญาต หรือปฏิเสธในทันที .. ลองแล้วครับ
9.55 Network Security: http://www.redhat.com/support/manuals/RHL-7.1-Manual/ref-guide/s1-security-network.html
- If you use your Red Hat Linux system on a network (such as a local area network, wide area network, or the Internet), you must be aware that your system is at a greater degree of risk than if you were not connected to that network. Beyond brute attacks on password files and users having inappropriate access, the presence of your system on a larger network widens the opportunity for a security problem and the possible form it may appear.
- A number of network security measures have been built into Red Hat Linux, and many open source security tools are also included with the primary distribution. However, despite your preparedness, network security problems may occur, due in part to your network topology or a dozen other factors. To help you determine the source and method of a network security problem, consider the the most likely ways such a problem can occur:
- 1. Sniffing for authentication data. Many default authentication methods in Linux and other operating systems depend on sending your authentication information "in the clear," where your username and password is sent over the network in plain text or unencrypted. Tools are widely available for those with access to your network (or the Internet, if you are accessing your system using it) to "sniff" or detect your password by recording all data transferred over the network and sifting through it to find common login statements. This method can be used to find any information you send unencrypted, even your root password. It is imperative that you implement and utilize tools like Kerberos 5 and OpenSSH to prevent passwords and other sensitive data form being sent without encryption. If, for whatever reason, these tools cannot be used with your system, then definitely never log in as root unless you are at the console.
- 2. Frontal attack Denial of Service (DoS) attacks and the like can cripple even a secure system by flooding it with improper or malformed requests that overwhelm it or create processes that put your system and its data, as well as other systems that communicate with it, at risk. A number of different protections are available to help stop the attack and minimize the damage, such as packet-filtering firewalls. However, frontal attacks are best handled with a comprehensive look at ways in which untrusted systems communicate with your trusted systems, putting protective barriers between the two, and developing a way to quickly respond to any event so that the disruption and possible damage is limited.
- 3. Exploiting a security bug or loophole Occasionally, bugs are found in software that, if exploited, could do grievous damage to an unprotected system. For that reason, run as few processes as root as possible. Also, use the various tools available to you, such as the Red Hat Network for package updates and security alerts, to fix security problems as soon as they are discovered. Also, make sure that your system has no unnecessary programs starting up at boot time. The fewer programs you have started, the fewer possible security bugs can affect you.
9.56 Procmail เพื่อกรอง spam mail และ junk mail: ใช้ keyword หยุด e-mail โดยตรวจสอบจาก from และ subject
- การหยุด spam mail และ junk mail ให้กับสมาชิกทั้งหมด มิใช้บางคน ทำได้โดยสร้างแฟ้มชื่อ procmailrc ในห้อง etc เวลาสร้างก็พิมพ์ว่า #pico /etc/procmailrc แล้วกำหนดสิ่งที่ต้องการหยุด เช่น e-mail from หรือข้อความใน subject ที่มีปัญหา แต่ถ้าสมาชิกบางคนต้องการหยุด หรือสร้างระบบป้องกันของตนเอง ก็สามารถสร้างแฟ้ม .procmailrc ใน home directory ของตนได้
- ทราบว่า procmail สามารถกรอง e-mail ที่มีปัญหาโดยตรวจสอบจาก from และ subject ได้ ผมจึงตรวจสอบว่าในเครื่องมีโปรแกรมนี้ไหมด้วยการพิมพ์ rpm -q procmail ก็พบว่ามีแล้วโดยแสดงคำว่า procmail-3.22-7 ให้เห็น จากนั้นก็หาข้อมูลจากเอกสารต่าง ๆ
- https://nontri.ku.ac.th/tools/procmail/ (ภาษาไทยอ่านง่าย ละเอียด จาก ม.เกษตรศาสตร์)
- http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/ref-guide/s1-email-procmail.html
- http://www.uwasa.fi/~ts/info/proctips.html
- http://piology.org/.procmailrc.html
- http://www.procmail.org
- http://www.linuxbrit.co.uk/downloads/dot.procmailrc
- http://www.iegrec.org/procmailrc.html
- ถ้าต้องการมี .procmailrc ของตนเอง ให้สร้าง .procmailrc ด้วย notepad ในเครื่องตนเอง แล้วส่งเข้าไปใน home directory ของท่านด้วย ftp yn1.yonok.ac.th แต่ถ้าไม่ใช้ก็ไม่เป็นไร เพราะผมกำหนด /etc/procmailrc เพื่อใช้กรองให้กับทุกคนโดยอัตโนมัตแล้ว
ข้อมูลในแฟ้ม procmailrc หรือ .procmailrc
# ตัวอย่าง procmailrc.txt
:0
# block From on email
* 1^0 From:.*abc@def.com
* 1^0 From:.*@def.com
* 1^0 From:.*abc@
* 1^0 From:.*abc@def.com
/var/mail/junk
# block "Britney spear", "FUKADARAKA HELLO"
# no block "afukadara", "love britney"
:0
* ^Subject: (britney|fukada|adv:)
/dev/null
# block "love britney spear", "Hot of britney", "kyoko fukada"
:0
* ^Subject:.*(britney|fukada)
/dev/null
# block "hi", "TEST"
:0
* 1^0 ^Subject: hi$
* 1^0 ^Subject: test$
* 1^0 ^Subject: hello$
/dev/null
# block message on body
:0B:
* (YONOK college xxx|The message cannot be represented in 7-bit ASCII)
/dev/null
# block message on attached extension
:0
*^Content-type: (multipart/mixed|application/octet-stream)
{
:0 HB
*^Content-Disposition: attachment;
*filename=".*\.(vbs|vbe|com|bat|pif|scr)"
/dev/null
}
9.58 โปรแกรมภาษา c เพื่อสร้าง crypt ให้ shadow: เนื่องจากผมต้องการสร้าง user แบบ online จึงหาวิธีสร้าง useradd ผ่านเว็บ
วันที่ 8 มิถุนายน 2544 ได้คุยกับอ.dav จนท่านช่วยผมเขียนโปรแกรมภาษา c ตัวหนึ่ง ซึ่งใช้เข้ารหัส ผลการเข้ารหัส สามารถนำไปใช้ในคำสั่ง useradd เช่น useradd -p xdfiWsoOsdg0M tom จะทำให้สร้าง user ใหม่ชื่อ tom ได้โดยรหัสจะต้องได้มาจากโปรแกรมที่อ.dav เขียนไว้ด้านล่างนี้
คุยกับ อ.dav เรื่องการสร้าง useradd อัตโนมัติ
ซึ่งผมมีปัญหาเรื่องของรหัสผ่านที่เก็บใน shadow
ท่านก็ช่วยผมสร้างโปรแกรมรหัสผ่านขึ้นมาอย่างง่าย ๆ ดังข้างล่างนี้
แค่นำค่าที่ได้ไปแทนค่า xxx ของ userhello ก็จะได้รหัสผู้ใช้ ผ่านคำสั่งเดียว
เช่น useradd -p xxx userhello
ผมไม่เคยเขียน c บน linux โปรแกรมนี้คงเป็นตัวแรกของผมหละครับ
// program to encrypt passwords for the shadow file.
// compile with gcc pwcrypt.c -opwcrypt -lcrypt
// Dav ...
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main( int argc, char **argv ) {
int i;
char *pwd;
if( argc != 3 ) {
fprintf( stderr, "Usage: pwencode username password\n" );
exit( -1 );
}
//encripting the password for insertion into shadow
pwd = crypt( argv[ 2 ], argv[ 1 ] );
printf( "%s %s\n", argv[ 2 ], pwd );
return 0;
}
9.59 ลีนุกซ์บนวินโดวส์ ด้วย CYGWIN (Unix Simulator)cygwin.com : ชุดโปรแกรมสร้างสภาพแวดล้อมลินุกซ์บนวินโดวส์ ประกอบด้วย cygwin1.dll เพื่อจำลองสภาพแวดล้อมให้เหมือนลีนุกซ์ และรวมเรื่องมือที่จำเป็นให้เหมือนบนลีนุกซ์
โปรแกรมนี้จำเป็นต่อการ compile โปรแกรมมากมาย ที่ถูกพัฒนาให้ compile บน linux ทำให้นักพัฒนาสร้างโปรแกรมที่ถูกแปลบน linux แต่นำมาแปลบน windows ได้ในภายหลัง
เครื่องมือที่มีมาให้ เช่น ash coreutils cvs diffutils findutils gawk grep libiconv make patchutils perl sed unzip zip
หลังประมวลผล setup.exe ผมเลือก download จนสำเร็จ แต่ที่สำคัญต้องเลือกลง gcc, nasm, binutils, libtool, zip, unzip, make, flex, bison, cvs, cmake, autoconf, automake, ed เพิ่ม มิเช่นนั้นไม่มานะครับ หลัง download จะสร้างห้อง c:\cygwin อัตโนมัติ แล้วประมวลผล setup.exe อีกรอบเพื่อติดตั้งจาก Local Directory หลังติดตั้งสำเร็จจะเข้า Linux โดยจำลองห้อง c:\cygwin เป็น root directory สำหรับคำสั่งที่ใช้งานได้อยู่ในห้อง bin
- Download : setup.exe (cygwin.com 297 KB)
- Download : setup.exe (mirror.in.th)
- Download : setup.exe (kmitl.ac.th)
- Download : setup.exe (opensce.org)
- Download : .iso (uwinnipeg.ca 702MB)
- Download : .iso (berkeley.edu 1355MB)
- Download : .iso (linuxcenter.ru 3000MB)
9.61 ลืมรหัสผ่านของ root: วิธีนี้ใช้ได้ใน Redhat version 6.2 แน่นอน แต่รุ่นอื่นก็มีวิธีต่างกันไปบ้างเล็กน้อย
ผมทราบวิธีนี้เพราะเข้าไปดูที่ redhat.com ในส่วนของ FAQ และที่ต้องเข้าไปดูก็เพราะมี hacker จาก 193.231.178.98 เข้ามาด้วย operator account แล้วเปลี่ยนรหัสผ่านของ root ไป ทำให้ผมไม่สามารถเข้าไปสร้างผู้ใช้ใหม่ได้ ถามหลาย ๆ ท่านก็บอกให้ใช้แผ่นบูต แบบ linux rescue ผมก็เข้าไป จะ mount จะอะไรก็ไม่ได้ อาจเป็นเพราะยังไม่ชำนาญ แต่วิธีการเรียกรหัสผ่านของ root คืนในแบบที่ผมได้มานี้ ง่ายกว่าวิธีใด ๆ แน่นอน แต่ต้องทำที่ Console
ขั้นตอนสำหรับ LILO
- เมื่อ Restart เครื่อง ก่อนเข้าระบบ ให้กด Alt-X ขณะที่อยู่ที่ LILO prompt แล้วพิมพ์ว่า linux single
- เมื่อเข้าไปจะได้สถานะเป็น root ทันที ก็เพียงแต่ใช้คำสั่ง passwd root แล้ว reboot ก็เรียบร้อยแล้ว
ขั้นตอนสำหรับ GRUB
- เมื่อ Restart เครื่อง ก่อนเข้าระบบขณะที่อยู่ที่ GRUB prompt ให้กด e
- พบ Fedora กด e แล้วพบ Kernel กด e แล้วพิมพ์ single ต่อท้ายคำสั่งที่ใช้ boot ระบบ
- ออกมาแล้วกด b เพื่อ boot ตามคำสั่งที่แก้ไขนั้น ก็จะเข้า #
- เมื่อเข้าไปจะได้สถานะเป็น root ทันที ก็เพียงแต่ใช้คำสั่ง passwd root เพื่อเปลี่ยนรหัสผ่าน แล้ว reboot ก็เรียบร้อยแล้ว
สำหรับเครื่อง Sun
- ซึ่งเป็น Unix server ที่ดี จะใช้การ Reboot และกดปุ่ม stop a แล้วใช้คำสั่ง boot -s
9.62 แก้ไข httpd.conf เพื่อแก้ปัญหาของ Web Server: แฟ้มนี้คุมบริการต่าง ๆ ซึ่งสำคัญต่อต้องการ web server ในองค์กร
แก้ไขแฟ้ม /etc/httpd/conf/httpd.conf :
- ปัญหาภาษาไทย ใน RH8.0 เมื่อติดตั้งบริการเว็บเสร็จแล้ว ปัญหาคือ ผู้เปิดเว็บใดก็ตามในระบบ ทุกครั้งจะต้องไปแก้ไข encoding แล้วเลือก Thai(Windows) เพื่อแสดงภาษาไทย จึงต้องแก้ไขให้กำหนด default ที่ถูกต้อง ตามที่กำหนดในเว็บเพจ (แก้ในเว็บเพจเป็น meta 874 ก็ไม่ได้)
เดิม :: AddDefaultCharset ISO-8859-1
ใหม่ :: AddDefaultCharset WINDOWS-874
เพิ่ม :: AddCharset WINDOWS-874 .cp-874 .win-874
- ทำให้ผู้มี linux account สามารถมีเว็บของตนเอง (อ่านรายละเอียดเพิ่มเติมในหัวข้อ 9.62)
เดิม :: UserDir Disable
ใหม่ :: UserDir public_html
- แต่ละ user ต้อง chmod 711 ให้กับ home directory ของตนเอง
- แล้ว chmod 755 ให้กับ public_html ของตนเองหลัง
- เปิดเว็บ http://www.isinthai.com/~username
สำหรับ Fedora Core 4
อ่านเพิ่มจาก http://feeds.feedburner.com/LinuxStuffIMightForget
#cd /home/burin
#chcon -R -t httpd_user_content_t public_html
- ทำให้ใช้ .cgi และ .pl ได้
เดิม :: #AddHandler cgi-script .cgi
ใหม่ :: AddHandler cgi-script .cgi .pl
เดิม
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
ใหม่ :: Options ExecCGI
เดิม
<Directory "/var/www/html">
Options Indexes FollowSymLinks
ใหม่ :: Options All
- ทำให้ใช้ <? แทนการใช้เฉพาะ <?php ในการเขียนโปรแกรมด้วยภาษา php โดยแก้แฟ้ม /etc/php.ini
เดิม :: short_open_tag = Off
ใหม่ :: short_open_tag = On
9.63 เปิดบริการ FTP server ด้วย vsftpd: บริการ ftp server เพื่อให้สมาชิกส่งแฟ้มผ่าน ftp เข้ามาใน server ได้สะดวกกว่าการใช้ file manager
http://www.linuxquestions.org/questions/history/344083 (Problem on FC4 and selinux)
#getsebool -a
#setsebool ftpd_disable_trans=1 (เปลี่ยนเป็น active แบบ ชั่วคราว)
เพิ่มใน /etc/selinux/targeted/booleans.local เพื่อให้ถาวร
#setsebool -P ftpd_disable_trans=1 (เปลี่ยนแบบถาวร เพื่อให้ put หรือ upload ได้)
เปิดบริการ ftp ด้วยคำสั่ง setup, system services แล้วเลือกเปิด vsftpd แล้วเข้าไปในห้อง /etc/xinetd.d
แล้วใช้ pico vsftpd แล้วเปลี่ยนจาก disable=yes เป็น disable=no แล้วสั่ง /etc/rc.d/inetd/xinetd restart
เพิ่มใน /etc/vsftpd/vsftpd.conf
จาก http://www.aconus.com/~oyaji/suse/vsftpd_ssl_suse.htm
จาก http://www.brennan.id.au/14-FTP_Server.html
จาก http://fedorasrv.com/vsftpd.shtml
anonymous_enable=NO
ssl_enable=YES
ssl_tlsv1=YES
# allow_anon_ssl=NO
force_local_logins_ssl=YES
force_local_data_ssl=NO
rsa_cert_file=/etc/httpd/conf/vsftpd.pem
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
#cd /etc/httpd/conf
#make vsftpd.pem
#openssl req -x509 -nodes -days 730 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem
#chmod 600 vsftpd.pem
เพิ่ม user fedora ใน ftpusers และ user_list
#/etc/init.d/vsftpd restart
9.64 วิธีเปิดบริการ homepage ให้ ~username ใน linux: เปิดบริการ homepage โดยใช้ account ของระบบ linux
อ่านรายละเอียดเพิ่มเติมได้จาก http://httpd.apache.org/docs/misc/FAQ.html
การเปิดบริการ free homepage ของ Web server อีกแบบหนึ่ง ในการเปิดบริการแบบใหม่จะใช้โปรแกรม เช่น http://www.cyberscript.net/products/easyhost_free/ ที่ไม่ต้องสร้าง linux account แต่อย่างใด และมีความปลอดภัยในการบำรุงรักษาสูง
การเปิดบริการ free homepage แบบใช้ linux account เช่น http://www.isinthai.com/~username สามารถเปิดบริการได้ด้วยการแก้ไขแฟ้ม /etc/httpd/conf/httpd.conf แก้บรรทัดที่เขียนว่า UserDir Disable เป็น UserDir public_html แล้วต้อง chmod 711 ให้กับ home directory ของตนเอง แล้ว chmod 755 ให้กับ public_html ของตนเองหลังจากใช้คำสั่ง mkdir public_html ไว้ใน home directory แล้ว
9.65 วิธีเปิดบริการ samba: เปิดบริการให้ระบบ windows มองเห็นระบบแฟ้มใน linux
ทดสอบ samba ของ RH8.0 แก้ไขดังข้างล่างแล้วไม่พบปัญหาใดเลย .. ง่ายมากครับ
เปิดบริการ samba ด้วยคำสั่ง setup, system services แล้วเลือกเปิด smb แล้วเข้าไปในห้อง /etc/samba แล้วใช้ pico smb.conf จากนั้น restart ด้วย /etc/rc.d/init.d/smb restart และให้พิมพ์ chkconfig smb on จะทำให้ samba start ทุกครั้งที่เปิดเครื่อง
คำสั่งที่ใช้สร้าง user คือ smbpasswd -a [username] [userpassword]
::::::: เดิม :::::::
; hosts allow = 192.168.1. 192.168.2. 127.
security = user
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
create mode = 0664
directory mode = 0775
;[tmp]
; comment = Temporary file space
; path = /tmp
; read only = no
; public = yes
;[public]
; comment = Public Stuff
; path = /home/samba
; public = yes
; writable = yes
; printable = no
; write list = @staff
| ::::::: ใหม่ :::::::
hosts allow = 192.168.1. 192.168.2. 127. 202.29.78
security = share
[homes]
comment = Home Directories
browseable = yes
writable = yes
create mode = 0664
directory mode = 0775
[tmp]
comment = Temporary file space
path = /tmp
read only = no
public = yes
[public]
comment = Public Stuff
path = /home/samba
public = yes
writable = yes
printable = no
write list = @staff
|
9.66 เปิดบริการ DNS server: บริการ Domain Name service เพื่อให้ทุกเครื่องสามารถเรียกเว็บ หรือบริการด้วยชื่อได้
เปิดบริการ DNS server เพื่อทำให้ระบบเครือข่ายเรียกชื่อเว็บ เป็นตัวอักษรได้ และเป็นชุดที่ใช้กำหนดชื่อเครื่องในระบบทั้งหมด ถ้าในระบบเครือข่ายของท่าน มีเครื่องที่ต้องการตั้งชื่อหลายเครื่อง แต่ถ้าท่านเป็นเครื่องใช้พิมพ์งานธรรมดาก็ไม่จำเป็นต้องมีชื่อให้ใครเรียกเข้ามา ปกติเครื่องที่จะมีชื่อมักเป็น web server หรือ ftp server
การเปิดบริการนี้ต้องเปิดด้วยการสั่ง #setup แล้วเข้าไปในส่วน system services แล้วเลือก named เมื่อจะสั่งให้ named ทำงานต้องสั่ง #/etc/init.d/named restart ตรวจสอบได้ว่า named ทำงานหรือไม่โดยพิมพ์ #ps aux|grep named
ทดสอบเปิดบริการ named แบบ foreground ด้วย #named -g -p 53 ถ้าเลิกก็กด CTRL-C
พบ error เรื่อง permission ของห้อง /var/run/named เดิมเป็น 755 ไม่สามารถ start named ผมต้องเปลี่ยนเป็น 777 จึง ok
ใช้คำสั่ง #nmap localhost ดูได้ว่า port 53 ถูกเปิดหรือไม่ ถ้าไม่เปิด ก็แสดงว่าเครื่องยังไม่เป็น DNS หรือ Domain server (หัวข้อ 2.29)
9.66.1 :: /etc/named.conf
# ใน DNS server (star.yonok.ac.th)
# เพิ่มเพียง 4 บรรทัดนี้เข้าไป
# ใน unix พบแฟ้มนี้ใน /export/local/etc
zone "yonok.ac.th" in {
type master;
file "db.yonok.ac.th";
allow-query {any;};
allow-transfer {202.28.18.65;};
};
zone "isinthai.com" in {
type master;
file "db.isinthai.com";
};
zone "78.29.202.in-addr.arpa" in {
type master;
file "db.202.29.78";
};
9.66.2 :: /var/named/db.isinthai.com
# ใน DNS server (star.yonok.ac.th)
# ถ้าเครื่องไม่เป็น ns ก็ไม่จำเป็นต้องมี
; isinthai.com
@ IN SOA www.isinthai.com. postmaster.www.isinthai.com. (
2001022605 43200 7200 1209600 172800 )
IN NS star.yonok.ac.th. ; ตรงกับ checkdomain.com
IN MX 5 www.isinthai.com.
www IN A 202.29.78.1
mail IN CNAME www.isinthai.com.
wichep IN CNAME yn2.yonok.ac.th.
9.66.3 :: /var/named/db.yonok.ac.th
; yonok.ac.th
@ IN SOA star.yonok.ac.th. postmaster.star.yonok.ac.th. (
2003011001 43200 7200 1209600 172800 )
IN NS star.yonok.ac.th.
IN NS mars.uni.net.th.
IN MX 5 star.yonok.ac.th.
star IN A 202.29.78.12
door IN A 202.29.78.254
email IN A 216.200.145.34
IN MX 6 sitemail.everyone.net.
mail IN CNAME star.yonok.ac.th.
;email IN CNAME siteurl.everyone.net.
9.66.4 :: /var/named/db.202.29.78
- ใน DNS server (star.yonok.ac.th)
- ถ้าเครื่องไม่เป็น ns ก็ไม่จำเป็นต้องมี
; Yonok.ac.th
$ORIGIN 78.29.202.IN-ADDR.ARPA.
@ IN SOA star.yonok.ac.th. postmaster.star.yonok.ac.th. (
2001022601 ;serial
43200 ;Refresh 12 hours
7200 ;Retry 2 hours
1209600 ;Expire 2 weeks
172800) ;TTL
IN NS star.yonok.ac.th.
1 IN PTR www.isinthai.com.
2 IN PTR isinthai.yonok.ac.th.
12 IN PTR star.yonok.ac.th.
9.67 ติดตั้ง Free hosting ด้วย easyhost_free.zip- : ช่วยให้ server สามารถบริการ free hosting ได้โดยง่ายผ่าน file manager
- - Download CGI script นี้จาก http://cyberscript.net/products/easyhost_free/download.html
- - รายละเอียดการติดตั้งอ่านได้จาก http://cyberscript.net/support/docs/
- - copy แฟ้มทั้งหมดในห้อง cgi-bin ไป /var/www/cgi-bin ด้วยคำสั่ง #mv * /var/www/cgi-bin
- - copy ห้อง data และ images ไป /var/www/html ด้วยคำสั่ง #mv images /var/www/html
- - ใช้คำสั่ง #chmod 755 /var/www/cgi-bin/*.*
- - ใช้คำสั่ง #chmod 777 /var/www/cgi-bin/config.ini
- - ใช้คำสั่ง #chmod 777 /var/www/html/data
- - ใช้คำสั่ง #chmod 777 /var/www/html
- - เปิดเว็บ http://www.isinthai.com/cgi-bin/admin.cgi
- - ถ้าเปิด admin.cgi แล้ว error โดยหาสาเหตุไม่ได้แสดงว่าไม่ได้ upload แบบ ascii ให้ใช้ pico เพิ่มบรรทัดว่างล่างสุดแล้ว save ทับ
- - ถ้า CGI ยังไม่ทำงาน ให้ไปแก้แฟ้ม /etc/httpd/conf/httpd.conf เพื่อเปิดบริการต่าง ๆ ของ apache web server
- - สมาชิกใหม่จะมีห้อง images และแฟ้ม index.html ที่คัดลอกมาจากห้อง /var/www/html/data/default เข้าไปแก้ไขห้องนี้ได้
ข้อมูลในแฟ้ม /var/www/cgi-bin/config.ini
space_limit=55000
reserved_names=cgi-bin,data,images,mail
title_min=3
root_url=http://www.isinthai.com
password_max=20
site_password=asaRYYyl3HBzW
description_required=on
title_max=50
name_min=3
banned_extensions=.cgi,.pl,.php,.php3,.exe,.mp3,.dat,.mpg,.mpv,.zip,.rar,.ace,.class
distinct_email=1
use_validation=off
site_email=webmaster@yonok.ac.th
description_max=150
root_dir=/var/www/html
data_dir=/var/www/html/data
password_min=2
site_title=isinthai.com :: Case study of free hosting with 55 Mb
name_max=20
script_url=http://www.isinthai.com/cgi-bin
วิธีงดบริการสร้างสมาชิกใหม่ โดยบุคคลทั่วไป
- เนื่องจากปิดบริการ free webhosting ของ isinthai.com แต่ยังเปิดให้สมาชิกในองค์กร หรือเจ้าหน้าที่ หรือ webmaster สร้างสมาชิกใหม่ด้วยโปรแกรม /var/www/cgi-bin/create_user.cgi โปรแกรมจะรอรับข้อมูลเมื่อทราบ keyword เท่านั้น โดยเติม 5 บรรทัดข้างล่างนี้เข้าไปที่ส่วนต้นของโปรแกรม
// http://www.isinthai.com/cgi-bin/create_user.cgi?officer
if ($ENV{QUERY_STRING} ne 'officer') {
print "Content-type: text/html\n\n";
print "Stop service";
exit;
}
9.68 ติดตั้ง Web-based mail ด้วย uebimiau-2.7.2-any.zip- : ช่วยให้ server สามารถอ่าน mail จาก POP3 และส่งด้วย SMTP ผ่านระบบ Web-based mail
- - Download จาก http://uebimiau.sourceforge.net (PHP script)
- - เคยแนะนำการเปิดบริการ pop3 ใน win2003 กับโรงเรียนเขลางค์
- อ่านจาก http://www.windowsnetworking.com/articles_tutorials/Windows_POP3_Service.html
- - copy ห้องทั้งหมดภายใต้ห้อง uebimiau-2.7.2 หลังคลาย zip ไปไว้ใต้ห้อง /var/www/html/mail
- - แก้แฟ้ม /var/www/html/mail/inc/config.php กำหนด pop และ smtp ให้เป็นตามต้องการ
- - ใช้คำสั่ง #chmod 777 /var/www/html/mail/database
- - แก้แฟ้ม /var/www/html/mail/langs/th.txt เพื่อให้มีภาษาไทยตามที่เราต้องการ
- - แก้แฟ้ม /var/www/html/mail/themes/default/login.htm เพื่อปรับหน้าจอของหน้าแรก