Archive for the ‘Linux’ Category

0059 | มา scan + กำจัดไวรัส iframe กัน

Wednesday, April 29th, 2009 Posted in Linux, PHP Coding, Web Server | 4 Comments »

ลูกค้าเกิดติดไวรัส ต้องแก้กระทันหัน เลยเขียน script แบบลวกๆ ขึ้นมาตัวนึงครับ

*** คำเตือน ก่อนการใช้งานขอให้ระวังว่า… สั่งพลาดไม่สามารถย้อนได้ ดังนั้น กรุณา backup ข้อมูลก่อนทำนะครับ

.

เครื่องมือที่ต้องการ:
– rpmforge repository [ สำหรับ redhat/centos โหลดได้ที่นี่ ]
– clam antivirus [ จะลงจาก rpmforge repository ครับ ]
– fixiframe.php (เดี๋ยวมี link ให้โหลดครับ)

สำหรับท่านที่ใช้ DA ไม่ต้องห่วงครับ ทดลองแล้วไม่มีปัญหา ไม่ตีกันแน่นอน

.

หลังจากลง rpmforge repository แล้ว สั่ง

yum -y install clamav
freshclam
wget -O /root/clamdb.tar.gz http://www.icez.net/files/clamdb.tar.gz
wget -O /usr/bin/fixiframe http://www.icez.net/files/fixiframe.txt
echo "/usr/bin/clamscan -v --stdout -i -d /var/clamav/ -r .|grep FOUND" > /usr/bin/scaniframe
chmod a+x /usr/bin/fixiframe /usr/bin/scaniframe
cd /var/clamav/
tar zxf /root/clamdb.tar.gz
chown clamav.clamav *

เตรียมการเรียบร้อยแล้ว ทีนี้… ก็สั่ง cd เข้าไปในเว็บที่มีปัญหาได้เลยครับ
วิธีใช้งาน…

หลังจากสั่ง cd เข้าไปที่ folder ที่เก็บเว็บที่มีปัญหา ให้สั่ง scaniframe
พอเจอแฟ้มที่มีปัญหา ลองเปิดแฟ้มดูว่า มี code อะไรแปลกปลอม
แล้วสั่ง fixiframe
มันจะถามว่าต้องการแก้อะไร (ขึ้นว่า SEARCH FOR:) ให้ก๊อป code ที่ต้องการลบ มาวางแล้วกด enter
เจอ+แก้แฟ้มไหนไปบ้างจะรายงานผลขึ้นมาให้เห็นเลยครับ

Tags: , ,

0053 | ของแถม reverse proxy ipfix.php

Tuesday, January 13th, 2009 Posted in Linux | 1 Comment »

เวลาใช้ reverse proxy จาก entry ที่แล้ว จะมีปัญหานิดหน่อย
คือ เว็บจะจับ ip ผิดพลาด .. ไปเป็นจับ ip server แทนซะงั้น

วิธีแก้ง่ายๆ ครับ เอา script ตัวนี้ไปลง แล้วแก้ option php นิดหน่อย

จะเอาไปลงที่ไหนให้ดู option ชื่อ open_basedir นะครับว่ามันมี folder ร่วมเป็น folder อะไรบ้าง
(อย่าง plesk ก็จะเป็น /tmp, DA ก็ /tmp เหมือนกัน) เพราะงั้น ก๊อปไปลงใน /tmp โลด
ตั้งชื่อว่า ipfix.php นะครับ
แล้วเปิด php.ini หา auto_prepend_file แล้วแก้เป็น
auto_prepend_file = /tmp/ipfix.php
เซฟแล้ว restart apache ครับ จบ

<?php
 
if (!empty($_SERVER["SERVER_ADDR"]) && !empty($_SERVER["REMOTE_ADDR"]) && $_SERVER["SERVER_ADDR"] == $_SERVER["REMOTE_ADDR"] && !empty($_SERVER["HTTP_X_FORWARDED_FOR"])) {
 
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
 
$refip = explode(",", $_SERVER["HTTP_X_FORWARDED_FOR"]);
 
$_SERVER["REMOTE_ADDR"] = trim($refip[count($refip) - 1]);
putenv("REMOTE_ADDR=".$_SERVER["REMOTE_ADDR"]);
if (!empty($HTTP_SERVER_VARS['REMOTE_ADDR']))
	$HTTP_SERVER_VARS['REMOTE_ADDR'] = $_SERVER["REMOTE_ADDR"];
if (function_exists('apache_setenv'))
        @apache_setenv("REMOTE_ADDR", $_SERVER["REMOTE_ADDR"]);
$_SERVER["HTTP_X_FORWARDED_FOR"] = "";
for ($i=0; $i<count($refip) - 1; $i++) {
$_SERVER["HTTP_X_FORWARDED_FOR"] .= ", ".trim($refip[$i]);
}
if (!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
$_SERVER["HTTP_X_FORWARDED_FOR"] = substr($_SERVER["HTTP_X_FORWARDED_FOR"], 2);
else
unset($_SERVER["HTTP_X_FORWARDED_FOR"]);
 
}
?>