Monday, December 16, 2013

ขั้นตอนการ Backup ไฟล์ Configuration ของ Juniper Firewall (ISG Series) และ Fortigate Firewall รวมถึงการทำ Compare Configuration. Part1/2



    ถ้าหากว่า เราเป็น Admin ของ Firewall ซักตัวนึง เราเคยมีคำถามไหมว่า ทำอย่างไร เราถึงจะเก็บ config ของ Firewall เอาไว้ที่ใดซักที่นึง ทุกๆ วัน เผื่อว่า วันใด Firewall ที่เราดูแล เกิดอาการแฮงก์ โดยไม่ทราบสาเหตุ เราก็จะสามารถเอา Config ที่เราเก็บไว้ล่าสุดมา Restore ได้

    หากคุณเป็น Admin ที่มีความขยันและมีวินัยเป็นเลิศ คุณอาจจะบอกว่า ไม่ยากเลยจอร์จ เราก็แค่  Login เข้าไปที่  Firewall สิ จากนั้นก็เข้าไปที่หน้า Maintenance แล้ว Backup config ออกมา
 
    นั่นสินะ แต่ถ้าวันไหน Admin ป่วยล่ะ หรือลาพักร้อนล่ะ ใครจะทำหน้าที่นี้ ? จะให้คนอื่นเข้ามาทำแทนหรือ? จะยุ่งยากไปมั้ย หากไฟร์วอลล์นี้ ใคร ๆ ก็เข้าไป admin ได้

    อย่ากระนั้นเลย เรามาเป็น admin ที่ใช้ Server และ Script ทำงานแทนเราทุก ๆ วันดีกว่า

    เริ่มต้นด้วย เราจะต้องมี Server มาทำหน้าที่เก็บ Config ของอุปกรณ์ ซึ่งก็คงจะหนีไม่พ้น ต้องทำเป็น Linux server (เพราะอะไรหรือ ? ก็เพราะว่า เราไม่อยากจะเสียค่า License ไง)

    สำหรับขั้นตอนการติดตั้ง Linux ให้ลองไปหาดูโพสท์เก่า ๆ นะครับ

   สมมติว่า เรามีไฟร์วอลล์อยู่ 2 ตัว  คือ Fortigate กับ Netscreen (รุ่นเก่าก่อน SRX นะ) ซึ่งมี IP Address ดังต่อไปนี้

Fortigate Firewall IP Address 1.1.1.1
Netscreen Firewall IP Address 2.2.2.2

   สำหรับ Linux server เราก็กำหนด IP Address ดังนี้
Backup config Server IP Address 3.3.3.3

    ขั้นตอนการติดตั้งบริการ TFTP  ให้เลือกติดตั้ง Package ตามนี้นะครับ

    1. atftp
    2. xinetd
    3. postfix เอาไว้ใช้ส่งเมล์หาเราทุกวัน
    4. expect พระเอกของงานเลย ห้ามลืมติดตั้งเด็ดขาด 

สิ่งที่ห้ามลืม
จะต้องมี User ที่สามารถเข้าถึงบริการ SSH ของ Firewall ทั้งสองตัว 
ในที่นี้ ผมใช้ user ชื่อว่า monica และ password ชื่อว่า john@123 ครับ 

จากนั้น ก็เขียน Script ตามด้านล่างเลยครับ

fortigate.sh - เอาไว้เก็บ Config ของ Fortigate


#!/usr/bin/expect -f
#-----------------------------------------------------------------------
spawn ssh -o stricthostkeychecking=no monica@1.1.1.1
expect {
"password:" {send "john@123\r"}
}
expect {
"#" {send "execute backup config tftp fortigate 3.3.3.3\r"}
}
expect {
"#" {send "exit\r"}
}
close
#-----------------------------------------------------------------------


juniper.sh - เอาไว้เก็บ Config ของ Juniper

#!/usr/bin/expect -f
#-----------------------------------------------------------------------
spawn ssh -o stricthostkeychecking=no monica@2.2.2.2
expect {
"password:" {send "john@123\r"}
}
expect {
";" {send "get config all > tftp 3.3.3.3 juniper\r"}
}
expect {
"#" {send "exit\r"}
}
close
#-----------------------------------------------------------------------

เมื่อทำเสร็จแล้ว ลองรัน script ดูนะครับ ว่า ใช้งานได้หรือเปล่า
วิธีดูง่าย ๆ ว่าใช้งานได้หรือไม่ ก็คือ เมื่อรันไปแล้ว ไม่เกิด error
และเมื่อเราไปดูที่ TFTP server ที่พาธ /tftpboot ก็จะเห็นไฟล์  config ของไฟร์วอลล์ ปรากฏอยู่ครับ


สำหรับ Part แรก เอาไว้แค่นี้ก่อนครับ

Tuesday, December 21, 2010

Linux Desktop Start Here

Reminder.

SAT - 20 Nov 2010

เป็นวันแรกที่ลง Ununtu Desktop Version 10.10

รายละเอียดอื่น ๆ จะลงตามมาอีกที

Thursday, July 8, 2010

การ เขียน Shell script ใช้งาน nmap เพื่อ scan หา IP #3

ต่ออีกครั้งนึง น่าจะจบแล้วล่ะ

มีวิธีการเขียน Script มากมาย ที่จะให้ได้ผลลัพท์แบบ Auto โดยที่ หลาย ๆ วิธีอาจจะดีกว่าวิธีนี้แบบหน้ามือเป็นหลังมือ
แต่ผมถนัดแบบนี้นี่นา เขียนก็ไม่เก่ง แต่พอใช้ได้ครับ

Script ที่ใช้จะเป็น Shell Script ธรรมดาครับ โดยมีหน้าตาดังนี้

1. อันดับแรก ประกาศให้โลกรู้ว่า Script ที่เราเขียนน่ะ เป็น BASH script (Born Again Shell script) นะ อย่าเข้าใจเป็นอย่างอื่น

#!/bin/bash


2. กำหนดตัวแปรตัวแรกก่อนเลย ชื่อ network24 แล้วก็ใส่ค่าให้ตัวแปรด้วย ก็เอา network IP ที่เราจะ scan ใส่ลงไปนั่นแหละ


network24="
192.168.0.0
192.168.1.0
"


3. กำหนดค่า Directory ต่าง ๆ ว่า เราจะเก็บไฟล์ที่สร้างเสร็จแล้ว ไว้ที่ไหน โดยให้สร้างตามวันที่ แล้วให้สร้าง Directory เปล่า ๆ ขึ้นมารอเอาไว้เลย


TODAY=`date +%d-%b-%y`
BASEDIR="/rogueIP/"`date +%d-%b-%y`
REPORT=${BASEDIR}"/report.log"
mkdir -p ${BASEDIR}


4. เริ่มกันเลยดีกว่า
4.1 สั่งวนลูป ให้อ่านค่าของตัวแปร network24 ทีละบรรทัด แล้วเอาไปเก็บไว้ที่ตัวแปรชื่อ ip
4.2 พิมพ์ชื่อของ network ให้เป็น header ลงบนไฟล์ report.log
4.3 ใช้คำสั่ง nmap เพื่อทำ Port scan เสร็จแล้ว ให้เก็บผลลัพท์ที่ออกมาไว้ในไฟล์ temp_ชื่อตัวแปร ip
4.4 เนื่องจากในผลลัพท์ที่ออกมานั้น มีรายละเอียดมากมาย แต่เราต้องการเพียง IP ที่มีการใช้งานเท่านั้น ดังนั้น เราจึงต้องทำการกรองเอาเฉพาะ ส่วนที่เราต้องการคือ Host ที่ Up อยู่เท่านั้น ที่เหลือให้ตัดออกไป จากนั้น เอาผลที่ได้ไปใส่ใว้ใน report.log
4.5 กรองเอาผลลัพท์ที่สรุป ว่า มี Host ที่ Up อยู่เท่าไหร่ ใส่ใว้ใน report.log เป็น Footer
4.6 เอาผลที่ได้จากข้อ 4.3 ไปเก็บไว้ใน Directory ที่เราเตรียมไว้ ส่วน File Temp ต่าง ๆ ลบทิ้งไป
4.7 วนลูปไปเรื่อย ๆ จนครบทุกๆ network ที่เราต้องการ


for network in ${network24}
do
ip=`echo ${network} | cut -f 1`
echo "-----------------------------------------------------------------" >> ${REPORT}
echo "Network " ${ip} "/24" >> ${REPORT}
nmap -v ${ip}/24 > ${ip}
cat ${ip} | grep "Nmap scan report for" > temp_${ip}
cat temp_${ip} | grep -v "host down" >> ${REPORT}
cat ${ip} | grep "Nmap done" >> ${REPORT}
echo "-----------------------------------------------------------------" >> ${REPORT}
rm -f temp*
mv ${ip} ${BASEDIR}
done


5. เมื่อทำเสร็จแล้ว ก็ให้เราส่งเมล์ผลที่ได้ ไปยังเมล์ที่เราต้องการ แต่ก่อนที่เราจะส่งเมล์ได้ ก็ต้องมี mail server ในเครื่องเราก่อน นะ
จริง ๆ แล้ว ถ้าเราไม่คิดว่าจะส่งเมล์ ก็ตัดขั้นตอนนี้ทิ้งไปได้เลย แต่ส่งเมล์จะดีกว่า คือ ไม่ต้องเข้ามาดูที่ server ทุก ๆ วัน อ่านเอาจากเมล์ก็ได้แล้ว


SUBJECT="IP usage report"
EMAIL="taveesak@gmail.com"
EMAILMESSAGE=${REPORT}
mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE



จบแล้วครับ

การ เขียน Shell script ใช้งาน nmap เพื่อ scan หา IP #2

ต่อจากครั้งที่แล้ว

เมื่อเราอยู่ในสภาวะแวดล้อมที่เหมาะสมสำหรับการทำ Port scan แล้ว สิ่งต่อไปก็คือ เราต้องหาเครื่องมือที่มาทำการ Scan
ปัจจุบัน มีเครื่องมือที่ทำหน้าที่นี้อยู่มากมายให้เราได้เลือกใช้กันอย่างจุใจ บางอย่างก็ฟรี บางอย่างก็ต้องมี License และเนื่องจากเราอยู่บนพื้นฐานของ การทำอย่างไรก็ได้ให้เสียเงินน้อยที่สุด หรือพูดง่าย ๆ คือ ของฟรีและถูกกฏหมายนั่นแหละ และเพิ่มอีกอย่างนึง เอาแบบง่าย ๆ ด้วย ดังนั้น มี Tools อยู่ตัวนึงที่น่าจะเอาเข้ามาใช้งาน นั่นคือ

Nmap

วิธีการลง nmap ก็ง่ายแสนง่าย แค่ไป Download nmap version ล่าสุดที่ http://nmap.org/
แล้วมาติดตั้งในเครื่องก็ใช้งานได้แล้ว

วิธีการติดตั้ง nmap

หลังจากที่เรา Download nmap มาจาก Official website มาลงที่เครื่องเราแล้ว ก็ทำการส่งต่อไฟล์นี้เข้าไปที่เครื่อง Scan Server ของเรา เพื่อทำการติดตั้ง ซึ่งอาจจะทำผ่าน โปรแกรม winscp ก็ได้

เมื่อนำไฟล์ไปวางไว้ใน Scan server แล้ว ให้ทำตามขั้นตอนดังนี้เลย


1. แตกไฟล์ออกมาโดยใช้คำสั่ง tar ตามด้านล่าง

tar xvf nmap-5.21.tar.bz2

2. เข้าไปใน Folder ที่เราแตกไฟล์มาแล้ว

cd nmap-5.21

3. พิมพ์คำสั่งด้านล่างตามลำดับ

./configure

make

make install

เพียงเท่านี้ ก็จะติดตั้ง nmap อย่างสมบูรณ์


หลังจากติดตั้งเรียบร้อยก็ถึงเวลาใช้งาน เพียงเราพิมพ์คำสั่ง

nmap –v network address/24

ก็สามารถ scan port เพื่อหา Alive host ได้แล้ว

ทีนี้ จะทำทั้งที ก็ขอให้มัน Auto นึดนึง สมมติว่า เรามี Network หลาย ๆ network คงต้องมาพิมพ์กันเมื่อยแน่ ๆ ยิ่งจะเอารายงานทุก ๆ วันอีก รับรอง แค่มานั่นพิมพ์เองก็ไม่ทันแล้วล่ะ

อย่ากระนั้นเลย เรามาเขียนให้มันเป็น script เป็นชิ้นเป็นอันไปจะดีกว่า



เอาไว้ต่อครั้งหน้านะ

Wednesday, July 7, 2010

การเขียน Shell script ใช้งาน nmap เพื่อ scan หา IP #1

วันนี้ได้การบ้านมา ให้หาว่า ในระบบ network ที่เราใช้งานอยู่นั้น มี IP อะไรใช้งานอยู่เป็นประจำบ้าง
ก่อนอื่น เราต้องรู้ว่า จะรู้ได้อย่างไร ว่า มีเครื่องนั้นออนไลน์อยู่ในระบบหรือเปล่า
ซึ่งมีข้อมูลเพิ่มเติมว่า Network นี้ เป็น Server farm ซึ่งคงจะไม่มีใครมานั่งปิด ๆ เปิด ๆ เครื่องบ่อย ๆ อยู่แล้ว
เมื่อมีข้อมูลนี้ เราก็มาดูว่า เราจะติดต่อเครื่องเหล่านี้ได้จากทางไหนบ้าง

1. ping - เราสามารถรู้ได้เลยว่า Server ออนไลน์อยู่หรือเปล่า ถ้า..... Server นั้น ไม่ไดฺ้ Block ping แต่ถ้า Block เราก็หาไม่เจออยู่ดี

2. Traceroute - ให้ผลเหมือนกับข้อ 1

3. portscan - เป็นตัวเลือกที่ดี เนื่องจากว่า คนที่ทำ server จะต้องเปิด port ใดซัก port หนึ่งอย่างแน่นอน มิฉะนั้น เขาจะทำ Server ไปทำไม (จริงมั้ย) ถ้าเรา scan เราก็ต้องเจอแน่นอน ว่า มี IP ไหนบ้าง

จริง ๆ แล้ว การทำ portscan ให้ได้ผลที่สุดคือ

1. หากเราอยู่ที่ network อื่น ๆ ที่คนละวงกับ network ที่เราต้องการ scan เราก็ต้องไปคุยกับ Firewall admin ให้เปิดให้เครื่อง scan ของเรา สามารถเข้าไปที่ network ทีเราต้องการแบบ any port

2. เอาเครื่อง scan ของเรา เข้าไปอยู่ใน network ที่เราต้องการ scan เลย

เอาไว้ต่อคราวหน้าครับ

Friday, June 25, 2010

Install Nessus server in Debian - part 2

หลังจากที่เราสร้าง Nessus server ด้วย nessus เวอร์ชั่นใหม่ ๆ ไปแล้ว เรามาลองใช้เวอร์ชั่นเก่า ๆ ดูบ้างไหม




สำหรับคนที่ติดกับการใช้ nessus client เหมือนผม คงจะยอมรับไม่ได้แน่ ๆ หากจะต้องไปทำงานผ่าน web browser เนื่องจากข้อดีของการใช้ nessus client ที่ผมนึกออกคือ

1. สามารถ export report ของ nessus ออกมาในรูปแบบของ .nessus file เพื่อเก็บไว้ และสามารถ import เข้าไปเพื่อดูผ่านโปรแกรม nessus client ได้


2. สามารถเลือกรูปแบบการออก report ได้ ว่า จะให้ report ออกมาในรูปแบบไหน



ในเวอร์ชั่นใหม่ หากเราจะทำให้ได้แบบนี้ คงต้องเสียเงินซื้อ License1 แบบ professional feed ล่ะครับ

เมื่อเราเห็นข้อดีเหล่านี้แล้ว ลองมาติดตั้งกันดูเลยครับ โดยจะมีขั้นตอนการติดตั้ง nessus ดังนี้

Login ด้วยสิทธิ์ของ root หรือจะใช้ sudo ก็ได้

ไป download เวอร์ชั่นของ nessus ที่เป็นเวอร์ชั่นต่ำกว่า 4.0.2 (ของผมใช้เวอร์ชั่น 4.0.1)

เริ่ม ติดตั้ง โดยใช้คำสั่ง dpkg -i Nessus-4.0.1-debian5_i386.deb

หลังจากติดตั้งเรียบร้อย ก็เปิดใช้งาน โดยใช้คำสั่ง /etc/init.d/nessusd start

ไปขอรหัสลงทะเบียนใช้งาน nessus ที่ http://www.nessus.org/plugins/index.php?view=register
เมื่อ เข้าไประบบจะให้กรอก e-mail แล้วทาง nessus จะส่ง e-mail รหัสในการลงทะเบียนมาให้

เมื่อได้รหัสมาแล้ว ซึ่งรหัสจะเป็นชุดตัวอักษรผสมตัวเลข อยู่ 5 ชุด ให้เรา พิมพ์คำสั่งนี้ลงไป

/opt/nessus/bin/nessus-fetch --register xxxx-xxxx-xxxx-xxxx-xxxx

ระบบจะขึ้นข้อความว่า

Your activation code has been registered properly - thank you.
Now fetching the newest plugin set from plugins.nessus.org...
Your Nessus installation is now up-to-date.
If auto_update is set to 'yes' in nessusd.conf, Nessus will
update the plugins by itself.


ซึ่งเมื่อเราเข้าไปดูที่ /opt/nessus/etc/nessus/nessusd.conf จะเห็นว่า auto_update เป็น yes อยู่แล้ว แสดงว่าระบบจะ Update ให้เราอัตโนมัติอยู่แล้ว ไม่ต้องไปแก้ไขอะไร

เพื่อเป็นการป้องกันไม่ ให้ใครเข้ามาใช้ Nessus นี้ เราต้องระบุ user ที่เข้าใช้งาน โดยใช้คำสั่ง

/opt/nessus/sbin/nessus-adduser

Login : user1
Login password : ********
Login password (again) : ********
Do you want this user to be a Nessus 'admin' user ? (can upload plugins, etc...) (y/n) [n]: กด n

User rules
----------
nessusd has a rules system which allows you to restrict the hosts
that user1 has the right to test. For instance, you may want
him to be able to scan his own host only.
Please see the nessus-adduser manual for the rules syntax
Enter the rules for this user, and enter a BLANK LINE once you are done :
(the user can have an empty rules set)
กด Enter

Login : user1
Password : ***********
Rules :

Is that ok ? (y/n) [y] กด y
User added

จากนั้นให้เรา Update Plugins ล่าสุด โดยใช้คำสั่ง

/opt/nessus/sbin/nessusd -R

รอจนกระทั่ง Update เรียบร้อย ให้ restart เครื่อง

หลังจาก restart แล้ว ให้เริ่มใช้งานโดยใช้คำสั่ง

/etc/init.d/nessusd start


วิธี ตรวจสอบว่า service ยังทำงานอยู่หรือเปล่า ให้เราใช้คำสั่ง netstat -anp | grep nessus

จะขึ้น รายละเอียดมาประมาณนี้

scan:~# netstat -anp | grep nessus
tcp 0 0 0.0.0.0:1241 0.0.0.0:* LISTEN 2333/nessusd
tcp6 0 0 :::1241 :::* LISTEN 2333/nessusd
unix 2 [ ACC ] STREAM LISTENING 5573 2333/nessusd /opt/nessus//var/nessus/nessusd.sock

เท่านี้ ก็สามารถใช้งานได้แล้วครับ

PS สำหรับใครที่อ่านบทความนี้แล้ว อยากลองทำดูบ้าง แต่ไปหา Download version ของ nessus 4.0.1 ไม่ได้ ส่งเมล์มาหาผมเลย จะจัดส่งให้ครับ

ที่มา : www.nessus.org

Monday, June 21, 2010

Google รองรับการค้นหาแบบเข้ารหัสแล้ว




Google ได้เพิ่มความสามารถในการ search ให้มีความปลอดภัยมากขึ้น โดยใช้การเข้ารหัสแบบ SSL ในการค้นหาข้อมูลผ่าน google ซึ่งปัจจุบัน ยังอยู่ในช่วงทดลองให้เข้าใช้งาน โดยผู้ที่ต้องการใช้งานการค้นหาข้อมูลแบบเข้ารหัสนี้ สามารถเข้าไปใช้งานได้ที่ https://www.google.com/

การค้นหาข้อมูลแบบเข้ารหัสดีอย่างไร

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