29 March 2012

Concept NetScreen Firewall


 การตัดสินใจของ NetScreen FireWall 
                เป็นพื้นฐานที่สำคัญเป็นอย่างมากสำหรับผู้ดูแลไฟร์วอลที่จะต้องเข้าใจในการจัดการ Firewall Netscreen นั้นมีกระบวนการดังภาพ

                           



ผมจะอธิบายรายละเอียดจากภาพข้างบน ดังนี้
             เมื่อมี Packet เข้ามาจะทำการตรวจสอบว่า Packet นั้นๆ เป็น Packet ที่เคยเข้ามาหรือเปล่าโดยไปตรวจสอบที่ Session Table ถ้ามี (Yes) ให้ทำการอนุญาตให้ Packet นี้ผ่านได้ แต่ถ้าไม่ (No)จะต้องมีการตรวจสอบปลายทาง (Destination) ของ Packet ว่าอนุญาตให้เข้าถึงได้หรือไม่ ถ้าไม่ (No) ก็จะทำการ Drop Packet นั้นไป แต่ใช่ (Yes) ก็มีกระบวนตรวจสอบต่อว่า Packet ที่เข้ามาจะต้องส่งข้ามโซนหรือบล็อคโซนภายในหรือไม่ ถ้าไม่ข้าม (No) ก็ให้ทำการ Forward Packet และทำการบันทึกข้อมูลไปที่ Session Table แต่ถ้าใช่ (Yes) คือมีการข้ามโซน ต้องตรวจสอบ Policy ว่ามี กฎ (Rule) ใดๆ ที่มีอยู่เพื่ออนุญาตให้ Packet ผ่านได้หรือไม่ ถ้าไม่ (No) ให้ทำการ Drop Packet นั้นไป แต่ถ้าใช่ (Yes) ก็ให้ทำการ Forward Packet และทำการบันทึกข้อมูลไปที่ Session Table เมื่อมี Packet ที่เคยเข้ามาแล้วก็จะสามารถผ่านได้โดยไม่ต้องตรวจสอบอีกครั้ง

Concept Basic Firewall

Knowledge Firewall is Basic

มารู้จักกับ "Firewall" กัน!!

ถ้าพูดถึงความปลอดภัย เรามักจะนึกถึงไฟล์วอลเป็นอันดับแรกๆ ด้วยชื่อเสียงที่ดังทั่วยุทธจักร ก็เลยทำให้มักจะคิดว่าไฟล์วอลเป็นเครื่องมือสำหรับปราบแฮกเกอร์และการบุกรุกทั้งหลายที่มาจากอินเตอร์เน็ตได้อย่างสิ้นเชิง ด้วยความเข้าใจและความคาดหวังเกิดความเป็นจริงทำให้ไฟล์วอลถูกนำไปใช้งานโดยไม่เหมาะสม การบำรุงรักษาและการปรับปรุงกฎต่างๆของไฟล์วอลถูกละเลย ส่งผลให้ความสามารถในการป้องกันของไฟล์วอล ทำให้ไฟล์วอลไม่ได้ช่วยในการรักษาความปลอดภัยเลย มีหรือไม่ก็มีค่าเท่ากัน นั้นเอง

"แฮกเกอร์เข้ามาได้อย่างไร ก็เราติดตั้งไฟล์วอลไว้แล้วนี่"  อันนี้อาจมีคนเคยได้ยินมาบ้าง กับประโยคอย่างนี้


     ความเข้าใจง่ายๆที่สุด ของ ไฟล์วอล (Firewall) คือเครื่องมือที่ใช้ป้องกันเน็คเวิร์คจากการสื่อสารทั่วไปที่ไม่ได้รับอนุญาต ปัญหาพื้นฐานที่สุดในเรื่องความปลอดภัยบนเน็ตเวิร์คก็คือ การเข้าระบบหรือข้อมูลภายในผ่านทางเน็ตเวิร์กหรือที่เรียกว่า ลอจิคัลแอคเซส (Logical Access)  
             การที่เรานำโฮสต์ใดๆ ก็ตามมาต่อเข้ากับเน็ตเวิร์กนั้นหมายถึงว่า โฮสต์ของเราสามารถถูกแอดเซสได้จากทุกๆ ที่ตราบเท่าที่เน็ตเวิร์กนั้นจะครอบคลุมไปถึง  อย่างไรก็ตามที่จะมีการแอคเซสจะต้องเกิดขึ้นได้เมื่อโฮสต์จะต้องสามารถสร้าง "การเชื่อมต่อ" หรือ ลอจิคัลคอนเนคชั่น (Logical Connection) กับโฮสต์เป้าหมาย ในการสร้างการเชื่อมต่อจะขึ้นกับโปโตคอลที่ใช้เป็นสำคัญ บางโปโตคอลสามารถเชื่อมต่อได้เฉพาะเซกเมนต์เดียวกัน แต่บางโปรโตคอลสามารถสร้างการเชื่อมข้ามเซกเมนต์ได้ แต่โปรโตคอลที่สำคัญที่สุดที่ต้องดูแลอย่างระมัดระวังก็คือ TCP/IP  ซึ่งสามารถสร้างการเชื่อมต่อได้โดยไม่มีขีดจำกัดในเรื่องของระยะทาง 
คุณสมบัติทั่วไปของไฟล์วอล
                ไฟล์วอลเป็นเครื่องมือรักษาความปลอดภัยที่ทำงานในเชิงป้องกัน (Protect) ซึ่งจะทำหน้าที่ควบคุมการเข้าถึงเน็ตเวิร์ก (Access control ) โดยอาศัยกฎเป็นพื้นฐาน (Rule Base) สำหรับคุณสมบัติแต่ละอย่างของไฟล์วอลนั้นมีรายละเอียดดังนี้
1.             Protect ไฟล์วอลเป็นเครื่องในลักษณะการป้องกัน โดยแพ็ตเก็ตที่สามารถผ่านเข้าหรือออกได้เน็ตเวิร์กได้นั้น จะต้องเป็นแพ็ตเก็ตที่ไฟล์วอลเห็นว่ามีความปลอดภัย  ถ้าเห็นว่าไม่ปลอดภัยก็จะทำการดร็อป(Drop) การที่ไฟล์วอลจะเห็นแพ็ตเก็ตที่ปลอดภัยหรือไม่ปลอดภัยนั้นจะขึ้นกับพื้นฐานของกฎที่ผู้ดูแลเป็นคนกำหนดไว้ล่วงหน้าแล้ว กฎต่างๆเหล่านี้เองจะทำให้ไฟล์วอลสามารถที่จะป้องกันแพ็ตเก็ตที่ไม่ปลอดภัยให้ไม่สามารถเข้าถึงเน็ตเวิร์กได้นั้นเอง
2.             Access Control : “แอคเซส” หมายถึง การที่โฮสต์หนึ่งสามารถเชื่อมต่อสื่อสารข้อมูลที่ต้องไปยังโฮสต์ปลายทางได้สำเร็จ ในการเชื่อมต่อนั้นแต่ละระดับจะมีความแตกต่างกันออกไปซึ่งส่งผลให้การควบคุมมีระดับแตกต่างเช่นกัน ทำให้ไฟล์วอลมีการทำงานในหลายลักษณะ
3.             Rule Base : ไฟล์วอลจะควบคุมการแอคเซสโดยอาศัยการเปรียบเทียบคุณสมบัติของแพ็ตเก็ตที่จะผ่านไฟล์วอลกับกฎของการแอคเซสที่ได้กำหนดไว้ หากไม่พบกฎที่ห้ามไว้ก็จะอนุญาตให้แพ็ตเก็ตนั้นผ่านไปได้ แล้วถ้ามีก็จะสกัดกั้นใว้ด้วยวิธีใดวิธีหนึ่ง
                ดังนั้นการที่แพ็ตเก็ตใดๆ สามารถผ่านเข้าออกไฟล์วอลได้หรือไม่นั้นจึงอยู่ที่กฎเป็นสำคัญสำหรับไฟล์วอล โดยตัวเองแล้วนั้นจะไม่มีทางรู้ได้เลยว่าแพ็ตเก็ตใดเป็นแพ็ตเก็ตที่ปลอดภัยหรือไม่ปลอดภัย (ยกเว้นแพ็ตเก็ตที่เป็นอันตรายโดยตัวมันเองอยู่แล้ว อย่างเช่น แพ็ตเก็ตแปลกประหลาด (Anomalous Packet) ที่ใช้สำหรับการโจมตีโดยเฉพาะไฟล์วอลจะรู้จักเฉพาะแพ็ตเก็ตที่ได้รับอนุญาตและไม่ได้รับอนุญาตเท่านั้น ตามกฎที่ได้ระบุไว้ ซึ่งนั้นหมายความว่า แพ็ตเก็ตที่ใช้เพื่อจุดประสงค์ร้ายหากมีลักษณะไม่เข้าข่ายหรือผิดกฎที่ตั้งไว้ก็อาจจะได้รับอนุญาตให้ผ่านเข้ามาได้โดยไฟล์วอลไม่สามารถทราบได้ ดังนั้นไม่จะเป็นเสมอว่าการบุกรุกทั้งหลายสามารถป้องกันได้ด้วยไฟล์วอล

26 March 2012

How to install Mod-Security2 on WebServer Ubuntu 11.10



ModeSecurity คือ Software Open Source ตัวหนึ่งที่ทำหน้าที่ ในการ Detection และ Prevention Engine สำหรับ เว็บไซต์ของเราที่อยู่ฝั่ง Server ที่มีประสิทธิภาพในการป้องกันการโจมตี ซึ่งเป็นส่วนหนึ่งของโมดูล Apache
1.  Packet ที่ระบบต้องการ ก่อนทำการติดตั้งนะครับ
           #apt-get install libxml2-dev liblua5.1-0 lua5.1 apache2-dev build-essential
2. ในทำการ Download โปรแกรมมาเก็บไว้ใน /tmp ก่อน
          #cd /tmp
          # wget http://www.modsecurity.org/download/modsecurity-apache_2.5.11.tar.gz



3. ให้ Extract ไฟล์ที่ Download มาในครับ
          # tar xvfz modsecurity-apache_2.5.11.tar.gz
4. เข้าไปที่ Directory mod-security
          #cd modsecurity-apache_2.5.11/apache2/
5. ให้ทำการ Build ตัว Mod-security ซะ
          #./configure && make && make install
6. ทำการสร้างไฟล์ Mod-Security.load ใน apache
          #vi /etc/apache2/mods-available/mod-security2.load
     แล้วทำการ พิมพ์หรือ Copy ข้อความข้างล่างลงไปนะครับ
             
LoadFile /usr/lib/libxml2.so
LoadFile /usr/lib/i386-linux-gnu/liblua5.1.so.0
LoadModule security2_module /usr/lib/apache2/modules/mod_security2.so

จากนั้นทำการ Save ไฟล์ โดยพิมพ์ :wq
หมายเหตุ : ตำแหน่ง (Path) ไฟล์แต่ละเครื่องอาจไม่เหมือนกัน ต้องลอง #Find / -name ตามด้วยชื่อไฟล์ที่ต้องการหา ดูนะครับ
7.  ให้ Enable โมดูล mod-security2 และ unique_id

#a2enmod mod-security2
#a2enmod unique_id


8. ทำการเรียกค่า config เข้ามาที่ไฟล์โมดูล ดังนี้

#vi /etc/apache2/conf.d/mod-security2.conf
แล้วพิมพ์เข้าไป


Include /etc/modsecurity2/*.conf

9. ทำการสร้าง Directory เพื่อเก็บไฟล์ต่างๆ ที่จำเป็น

#mkdir /etc/modsecurity2
#mkdir /etc/modsecurity2/logs
#touch /etc/modsecurity2/logs/modsec_audit.log
#touch /etc/modsecurity2/logs/modsec_debug.log

10. ทำการ Copy core rule ไปไว้ใน mod-security โฟเดอร์
#cp /tmp/modsecurity-apache_2.5.11/rules/*.conf /etc/modsecurity2

11. ทำการแก้ไขที่ Path ไฟล์ของ Log ให้ตรงตามที่เราได้สร้างเอาไว้
#vi /etc/modsecurity2/modsecurity_crs_10_config.conf

โดย :
           ค้นหา  SecDebugLog logs/modsec_debug.log
           แทนที่ด้วย SecDebugLog /etc/modsecurity2/logs/modsec_debug.log

           ค้นหา SecAuditLog logs/modsec_audit.log
           แทนที่ด้วย  SecAuditLog /etc/modsecurity2/logs/modsec_audit.log
จากนั้นก็ Save ไฟล์ แล้วออก

12. ทำการตรวจสอบค่า Config ของ apache ซึ่งถ้าไม่มีปัญหาอะไร จะคืนมาเป็น Syntax OK
       #apache2ctl configtest

13. ทำการ Restart Apache
       #/etc/init.d/apache2 restart

14. การตรวจสอบการทำงานของ mode-security2 ทำได้โดย
      #cat /var/log/apache2/error.log | grep ModSecurity

25 March 2012

JQuery JSON send to PHP

คนที่เขียน JQuery คงหนีไม่พ้น การเขียนส่ง Data  ของ Form ที่รับจาก User มาประมวลผลต่างๆนะครับ

จาก page html นะครับ

function send_data() 
{
var encode_data=""; // variable string json pattern
var dataArray = $(":input").serializeArray(); //jquery get data object
//jquery each data object to variable string
jQuery.each(dataArray, function(i, field){
encode_data ='{"productId":"'+field.name +'","quantity":'+field.value+'}';
});

$.post( 'php/confirm.php', "data="+encode_data, function(r){}, "json" );

}



ทางฝั่ง PHP นะครับ

session_start();
include("../funct.inc.php");
$UID = $_SESSION['use_id'];
my_connect();

function parse_json($str){
return str_replace("\\","",$str);

}

$res = $_POST['data'];
$new= parse_json($res);
$recode= json_decode($new,true);

foreach($recode as $p)
{

$sqlupdate = " UPDATE order_swap SET quantity = '$p[quantity] ' WHERE ID_Order = '$p[productId] ' and UID = '$UID';";
mysql_query($sqlupdate)or die(mysql_error());

}

exit();


จาก Code ด้านบน ก็ไม่ Copy จากใครมานะครับ แต่ยังอ่อน เรื่องการเขียนโปรแกรมอยู่มากครับ ไม่ดียังไงก็บอกด้วยนะครับ

14 March 2012

กำหนด FOREIGN KEY in Mysql

ก่อนที่คุณจะตั้งค่าความสัมพันธ์ได้นั้น Storage Engine: ต้องเป็น InnoDB ด้วยนะครับ ถึงจะใช้ได้ นะครับ
ALTER TABLE `ตารางที่ต้องการกำหนด`  ADD CONSTRAINT `ชื่อของการเชื่อมต่อ` FOREIGN KEY ( `ชื่อของ attribute ของตารางที่จะกำหนด `) REFERENCES `ชื่อตารางเป้าหมาย` ( `ชื่อของ attribute ของตารางเป้าหมาย` ) ON DELETE CASCADE ON UPDATE CASCADE;


ON DELETE CASCADE ON UPDATE CASCADE
เป็นการกำหนดว่า เมื่อ แก้ไข หรือ ลบ แถวใน Primary KEY จะทำให้มีส่วนเปลี่ยนแปลง ที่ตาราง Foreign KEY ด้วย

แต่ถ้าไม่กำหนด คำสั่งข้างต้น จะทำให้ ไม่มีผลดังข้างบน แต่กลับจะมีผลว่า เมื่อคุณต้องการที่จะลบข้อมูลใน Foreign KEY คุณจะต้อง ลบที่ Primary KEY ก่อนเสมอ ไม่อย่างนั้นจะทำไม่ได้ นะครับ

ผิดพลาดยังไง แสดงความคิดเห็นได้ครับ