Tuesday, July 17, 2012

Encryption EFW Log ฉบับ ก๊วยเตี๋ยวแห้ง

คุณผู้อ่าน... ท่านที่เคารพ

วันก่อนได้แนะนำให้ encryption log ของ EFW เพื่อให้มีความน่าเชื่อถือไปแล้ว วันนี้มาดูอีกวิธีหนึ่ง ซึ่งใกล้กับความเป็นจริงในการเก็บ log ของ EFW มากที่สุด

เหตุผลนั้นหรือ?

1. EFW ใช้ logrotae ในการเก็บ log แต่ละวัน
2. Log ถูกบีบอัดด้วย gzip ไว้ที่ /var/log/archives
3. Log ใน archives นี่แหละที่ถูกเรียกมาดูย้อนหลังใน GUI

ดังนั้นเราจะเก็บไฟล์ log.gz ต่าง ๆ ใน /var/log/archives นี่แหละเอาไปเข้ารหัส ทำการ hasing และจัดเก็บไว้ในที่ปลอดภัย

อย่างไร?
ศึกษาและทำความเข้าใจไฟล์เหล่านี้

1. ไฟล์ /etc/logrotate.conf เก็บ grobal option สำหรับ เรียกใช้จาก application ต่าง ๆ
โดยแต่ละ application จะมี option เฉพาะอีกใน /etc/logrotate.d/

2. คำสั่ง logrotate เพื่อใช้งานบางส่วน
- logrotate -d /etc/logrotate.conf
ไว้สำหรับดูรายละเอียดที่กำหนดเป็น option ไว้ใน appliction ต่าง ๆ
- logrotate -f /etc/logrotate.conf
เมื่อกำหนดค่าใหม่ ๆ ให้กับ logrotate ไม่ว่าจะเป็น global option หรือ application option สั่งให้ logrotate ทำงานใหม่

3. Option ที่ควรทำความรู้จักเอาไว้

rotate
daily,weekly,monthly
notifempty
compress
delaycompress
missingok
create
lastaction
endscrip

4. เข้ารหัสไฟล์ gz จะต้องใช้คำสั่ง

$TAR cvzf - $PROXYLOG | $OPENSSL des3 -salt -k keyfile$TODAYDATE | $DD of=$PROXYLOG-des

เมื่อ
$TAR = /bin/tar
$PROXYLOG = /var/log/archives/squid/access.log-$TODAYDATE.gz
$OPENSSL = /usr/bin/openssl
$TODAYDATE=`date +%Y%m%d`
$DD=/bin/dd

5. เขียน script encryption เหล่านี้ใน file squid /etc/logrotate.d/ ระหว่าง lastaction และ endscript
ทางที่ดีในบรรทัดสุดท้ายควรจะเขียนคำสั่งส่งเมล์แจ้ง admin เพื่อทราบด้วยจะดูดีทีเดียว



6. สร้างไดเรกทอรี /var/log90days/logencryption และ /var/log90days/loginfo โดย
- เก็บไฟล์ encryption ไว้ที่ logencryption ให้เก็บใส่ CD 1 แผ่น และ
- เก็บไฟล์ loginfo ไว้ที่ loginfo ให้เก็บใส่ CD 1 แผ่น
ใครได้แผ่นใดแผ่นหนึ่งไป ก็ใช้ไม่ได้ เพราะตอนถอดรหัส มันต้องใช้คุ่กัน ดูซับซ้อน ซ่อนเงื่อนดี (อิอิ)

7. การส่งเมล์ด้วยคำสั่ง mail command ใน EFW มี error บ้างในไฟล์ /var/log/maillog

warning: unable to look up public/puckup
ให้แก้ด้วยคำสั่งนี้ mkfifo /var/spool/postfix/public/pickup

8. ครั้นแล้วก็จะส่งเมล์ไม่ออกอีก ต้องกำหนดค่าให้กับ smart host ใน EFW ตาม mail ISP ที่คุณใช้ หรือจะเลี่ยงไปใช้ relay mail เจ้าอื่นแทนก็ได้


สรุปจากขั้นตอนเหล่านี้จะทำให้เราได้ log ที่น่าเชื่อถือมากที่สุด โดยให้ logrotate เป็นตัวจัดการให้พร้อมกับการจัดเก็บ log ของระบบไปด้วยกันเลย ทั้งยังได้รับ mail บอกสถานะการ backup ในแต่ละวันอีกด้วย
สุดท้ายแล้วจัดเก็บ Log เป็น 2 CD เพื่อใช้ถอดรหัสคู่กัน อีกด้วย ถึงขนาดนี้ถ้ายังมีข้อโต้แย้งอีก... ก็ต้องใช้ขั้นมารกันแล้ว

เป็นไงครับทานก๊วยเตี๊ยวแห้งๆไม่มีน้ำซุป ฝืดคอดีไหม.. เหมือนกับท่านอ่านบทความของผมวันนี้แหละ เอาแต่ "เนื้อ" ไปเลยไม่ต้องมีน้ำ...

คราวหน้าผมจะมาเติมน้ำซุป โดยใส่รายละเอียดวิธีแต่ละข้อให้อีกรอบ

คอยติดตามครับ....

เอวัง......

SMTP Proxy ใน EFW โดยใช้ Relay Hotmail

คุณผู้อ่าน... ท่านที่เคารพ

การส่งเมล์ออกโดยผ่าน EFW นั้นทำได้สองทางคือ ทางหนึ่งผ่าน isp mail ของท่านที่ต่อเชื่อมอยู่ อีกทางหนึ่งนั้นโดยผ่าน mail เจ้าอื่นที่ยอมให้ relay ได้ ซึ่งจะแสดงวิธี setup relay ผ่าน hotmail เป็นตัวอย่าง....

ให้ตรวจเช็คไฟล์ /var/log/maillog ในขณะ setup จะทำให้ได้อรรถรสในการชมมากขึ้น

1. เบื้องต้นเลย EFW จะมี warning : unable to look up public/pickup: No sush file or directory
ให้แก้ไขด้วยคำสั่ง mkfifo /var/spool/postfix/public/pickup

2. ไปที่ Proxy -> SMTP

Advanced : Activate smarthost for delivery
Smarthost address : smtp.live.comSmarthost port : 587
Smarthost authentication : email@hotmail.com
Smarthost password :xxxxxxx
Choose authentication method : PLAIN,LOGIN


3. กลับมา Enable SMTP Proxy
Green : active
RED : inactive




4. ทดสอบส่งเมล์ด้วยคำสั่ง เช่น

mail -s "this testing with Proxy SMTP" tawich.it3@gmail.com < textfile.txt

ไปเปิดเมล์ดูครับ.....

Sunday, July 15, 2012

Encryption Log ของ Endian Firewall เพื่อให้มีความน่าเชื่อถือในชั้นศาล

คุณผู้อ่าน... ท่านที่เคารพ

Log ของ EFW ที่เราเก็บตามพรบ.นั้นเป็น raw log ที่ยังเข้าถึงง่าย และแก้ไขได้ จะเป็นหลักฐานที่ไม่มีความน่าเชื่อถือในชั้นศาล เท่ากับเก็บ log ไม่ถูกต้องมาแต่แรก...

การเก็บ Log จึงควรสร้างความน่าเชื่อถือด้วยการเข้ารหัส (encryption) และตรวจสอบความถูกต้องว่า log นั้นไม่มีการแก้ไขใดๆเมื่อถึงมือศาล (hashing) ใน EFW เราใช้ openssl เข้ารหัสและทำการ hashing

โดยมี concept ดำเนินการดังนี้

1. generate random password เพื่อใช้ประกอบกับ openssl ในการเข้าและถอดรหัส
2. กำหนดตัวแปรวันที่เพื่อใช้เป็น label ให้กับไฟล์ที่จัดเก็บ
3. เข้ารหัสไฟล์ access.log , firewall ติด date label
4. สร้าง file.info ประกอบเพื่อบ่งชี้รหัส hashing กับ พาสเวิร์ดสำหรับการถอดรหัสไฟล์
5. จัดเก็บในสื่อที่เหมาะสม

ตัวอย่างคำสั่ง

กำหนดตัวแปรวันที่เพื่อใช้ประกอบไฟล์

TODAYDAT=`date +%Y-%m-%d-%H%M%S`

Gengerate Random Password

openssl ran -base64 6 -out keyfile$TODAYDAT

ทำการเข้ารหัสไฟล์ log

openssl des3 -in [access.log และ firewall] -out [New Log] -k  keyfile$TODAYDAT

Hasing Code

openssl sha1 $LOGTODAY >> $LOGINFO

เขียนสคิปต์ให้ทำงานทุกวัน
เก็บ log ที่เข้ารหัสแล้วไว้ 90 วันด้วย CD หรือ DVD
เป็นการปิดช่องโหว่ให้ EFW LOG สร้างความน่าเชื่อถือในชั้นศาล

อย่าให้เกิดช่องโหว่ในหลักฐานได้

รำไม่ดี อย่าโทษปี่ โทษเอนเดียน นะครับ

เอวัง....

link ที่น่าสนใจ

http://osxdaily.com/2012/01/30/encrypt-and-decrypt-files-with-openssl/
http://www.madboa.com/geek/openssl/

Tuesday, July 10, 2012

Endian Firewall ใช้ Dyndns ได้เยอะ ไม่ต้องง้อ Dyndns

คุณผู้อ่าน... ท่านที่เคารพ

เมื่อ dyndns.org ไม่ฟรีอีกต่อไป เราก็อย่าง้อมากนัก โดยเฉพาะ EFW มีทางเลือกให้ใช้ Dyndns ตั้งหลายเจ้า ไม่เชื่อลองดูที่ drop down menu หัวข้อ Service -> Dynamic DNS ดูซิครับ

วันนี้ผมจะแนะนำให้ใช้ freedns.afraid.org ด้วยขั้นตอนเสร็จสิ้นภายในถ้วยกาแฟเดียว ลองดูตามนี้

1. สมัคร freedns.afraid.org เสียก่อนโดยกรอกข้อมูลและ activate ผ่าน E-mail
2. สร้าง sub domain

เลือกหัวข้อ Subdomains ที่เมนูด้านซ้ายมือ For Member
คลิก Add เข้าไป

Type: A
Subdomain: <ตั้งชื่อ>
Domain: crabdance.com(public)
Destination : ก็จะเป็นหมายเลขไอพี ADSL ของคุณตอนนี้เอง

เสร็จแล้ว Save

3. เอาชื่อและ  พาสเวิร์ดของคุณมาตั้งใน EFW ตามปกติ

4. ทดสอบ script update

ที่เมนู Dynamic DNS ขวามืออันเดิม
คลิกเลือก Wget Script ที่ sub domain ของคุณ

หน้าตา script จะประมาณนี้เลยครับ

wget -q --read-timeout=0.0 --waitretry=5 --tries=400 --background https://freedns.afraid.org/dynamic/update.php?VC16QUg2MzFVMVVBQUVCbi00RUFBQUEzOjc5Mzc4MzA=

ทดสอบรันคำสั่งดู ถ้า EFW ยังไม่มี wget ก็ไปอ่านบทความย้อนหลังของผมดู มีเขียนไว้แล้ว

เมื่อทุกอย่าง Ok ก็เอา script นี้ไปเขียนเป็น crontab ซะ

อ้าว... กาแฟหมดถ้วยพอดี เลยยังไม่ได้แนะนำ crontab กันเลย

อิอิ





Allow Some Web and Block All Web with Endian Firewall 2.5

คุณผู้อ่าน... ท่านที่เคารพ

ด้วยแนวคิดให้ผู้ใช้บางกลุ่มใช้งานได้บางเว็บเท่านั้น และผู้ใช้บางกลุ่มใช้งานได้ทุกเว็บโดยไ่ม่มีข้อจำกัด สำหรับ EFW อาจจะมีหลายวิธี แต่... สำหรับผม นี่คือวิธีที่ได้ผล และทดสอบแล้ว

Block All WEB

1. สร้าง profile ใน contenfilter เลือก Custom black - and whitelists ใส่ ** (ดอกจันสองตัว) ในช่อง Block the following sites แล้วตั้งชื่อ profile เอาไว้
-- file ที่ถูก update คือ /etc/dansguardian/profiles/x/bannedsitelist_custom
-- เป็นการ block ด้วย profile ใน dansguardian rule

Allow Some WEB

2. สร้าง Access Policy กำหนดค่า

Source Type : Zone -> GREEN
Destination Type : Domain
Insert Domain : ตัวอย่าง (ต้องมี จุด นำหน้าด้วย)
.google.co.th
.google.com
.gmail.com
.gstatic.com
.yahoo.com
.live.com
.hotmail.com
Authention : user based / Group เลือก User หรือ Group
Access policy : Allow access
Filter profile : Default Profile
Policy status : Enable policy rule
Position : First position

-- file ที่ update คือ /etc/squid/acls/dst_rule0.acl และ dst_rule1.acl
-- อนุญาติผ่าน acl dstdomain ด้วย squid

3. สร้าง Access Policy ที่สอง กำหนดค่า

Source Type : Zone -> GREEN
Destination Type : ANY
Authention : user based / Group เลือก User หรือ Group
Access policy : Allow access
Filter profile : Profile ที่มีการกำหนดค่า ตามข้อ 1
Policy status : Enable policy rule
Position : Last

ทดสอบเอา profile ของ dansguardian ขึ้นเป็น First position ปรากฏว่า block หมดเลยกฏข้อที่สองไม่มีโอกาสได้ทำงานเอาเสียเลย

สำหรับผมวิธีนี้ใช้ได้ผล...
ส่วนท่านจะมีความเห็นอย่างไร... ก็จง Opensource เองเถิด...
เอวัง



Monday, July 9, 2012

VPN Site to Site ด้วย Endian Firewall 2.5.1

คุณผู้อ่าน... ท่านที่เคารพ

อันเนื่องมาจาก project ที่นี่ จึงขอบันทึกการ setup ด้วย Endian Firewall 2.5.1 เป็นตัวอย่างไว้




ข้อกำหนด คอมพิวเตอร์ทั้งสอง net ตัองสื่อสารถึงกันได้ในระดับ client

EFW : 192.168.0.15 เป็น VPN Server
EFW : 192.168.1.254 เป็น VPN Client GW2GW
ทั้งสองฝั่งใช้ internet แบบ Dynamic ไม่ fixed IP ใช้ dyndns เพื่ออ้างอิงชื่อ และ setup router ให้เป็น bridge mode

เมื่อเข้าใจ network diagram แล้ว กำหนดค่าต่าง ๆ ได้ดังนี้

ที่ EFW : 192.168.0.15

VPN -> OpenVPN server


OpenVPN server -> Tick

Dynamic IP pool start address: 192.168.0.110

Dynamic IP pool end address: 192.168.0.120

Note : จะต้องกำหนดให้ EFW ให้บริการ DHCP ด้วย


download CA certificate เพื่อเตรียมไป Import เข้าที่เครื่อง EFW : 192.168.1.254

----- > ตั้งชื่อไว้เพื่อการ authen ด้วย OpenVPN


OpenVPN -> Accounts




Username: servertoserver

Password : mrtconsult

Verify password :
Client routing

Direct all client traffic through the VPN server : Tick

Push only global options to this client -> Tick

Network behide client : 192.168.1.0/24


OpenVPN - Advanced



Port 1194

Protocol UDP

Block DHCP responses comming from tunnel -> Tick

Don't block traffic between clients  -> Tick

Allow multiple connections from one account -> No Tick

Global push options

Push these network -> Enable 192.168.0.0

Push these nameservers -> Enable 192.168.0.15

Push domain -> Enable mrt.local

Authentication type

PSK (username/password)


ที่ EFW 192.168.1.254

VPN -> OpenVPN client(Gw2Gw)

Add tunnel configuration

Connection name :
Connect to:
Upload certificate
Username : servertoserver
Password: xxxxx
Remark: User for Net to Net

Device type : TAP
Connection type: Routed
Block DHCP responses coming from tunnel: Tick
Use LZO compression: Tick
Protocol: UDP



OK ครับ ด้วย config แบบนี้ client ทั้้งสองฝั่ง ping หากันได้ browse ไฟล์เซิร์ฟเวอร์จาก 192.168.1.0 ไปที่ 192.168.0.100 ได้ พร้อมกับเรียกใช้ mail server ได้ด้วย

จบ project ... เก็บเงินได้แล้ว

Thursday, July 5, 2012

Tracking Email เมื่อ Request Read Receipt ไม่ได้ผล

คุณผู้อ่าน... ท่านที่เคารพ

การ tracking email ด้วย Option "Request Read Receipt" ใน ZD จะได้ผลก็ต่อเมื่อฝั่งผู้รับ "เปิดใจ" ที่จะเปิด option นี้ด้วยใน mail client ของตนเอง ซึ่งยากกกส์... มาก เพราะ

1. เมล์ปลายทางเป็น gmail , hotmail หรือ yahoo ซึ่งไม่ได้เปิด option เป็นค่าปกติ ผู้ใช้ต้องไปหาเปิดเอาเอง

2. ถึงจะใช้ outlook ผู้ใช้ก็ไม่ค่อยเปิด

3. เป็นสิทธิ์ส่วนตัวของผู้รับที่จะเปิดหรือปิด option นี้

ฯลฯ.... ทำให้การ tracking โดยวิธีปกติ ใน ZD ไม่ได้ผล

หากเป็นการใช้ email ภายในองค์กรเอง ผู้บริหารควรกำหนด policy การเปิดเมล์แบบนี้ไว้ด้วย เพื่อประโยชน์ในการสื่อสาร การตามงาน และการทำสัญญาต่าง ๆ เป็นต้น

เมื่อวิธีปกติไม่ได้ผล เราก็เลี่ยงไปใช้วิธีอื่น ซึ่งผมเคยแนะนำวิธีการฝั่ง code ไปกับ signatures โดยใช้ spypig ไปแล้วในบทความที่นี่ http://mailzimbra.blogspot.com/2011/04/zimbra-desktop-request-read-receipt.html   ยังไม่รับรองผลร้อยเปอร์เซ็นต์ ถ้าหากฝั่งผู้รับปิด option html หรือ ปิดการแสดงรูปภาพในเมล์ เจ้าหมูน้อย ก็ tracking ไม่ได้

วิธีที่ผมนิยมใช้คือบริการ tracking จาก www.whoreadme.com ครับ ให้ผลได้ดีทีเดียว

หลักการง่าย ๆ ก็คือเมล์จะถูกส่งไปยัง whoreadme ก่อนถูกส่งต่อไปยังผู้รับปลายทาง เจ้า whoreadme จะทำการ track เมื่อมีการเปิดอ่านเมล์แล้วส่ง email รายงานมาให้เราทราบ หรือเราจะเข้าไปดู report ในเว็บไซต์ของ whoreadme ก็ได้ หน้าตาเว็บและการออกแบบดูใช้งานง่าย และเรียบง่ายดีครับ

whoreadme เปิดให้ใช้ได้ฟรี แต่มีเงื่อนไขว่า จะ tracking อีเมล์ให้วันละ 20 ฉบับเท่านั้นและส่งรายงานให้ทราบ 500 ฉบับต่อวัน หากท่านบริจาค (donat) ก็จะเพิ่มจำนวนเมล์ให้วันละ 50,500 จนถึงไม่มีลิมิต

การสมัครก็ง่าย ๆ ครับ

1. เข้าไปที่เว็บไซต์ www.whoreadme.com
2. คลิกที่ Joind กรอกชื่อ พาสเวิร์ด อีเมล์ เลือก zone time และ secreat number
3. activate ผ่านอีเมล์ของท่าน
4. login ด้วยชื่อที่ท่านตั้ง

การใช้งาน

ในการส่งอีเมล์ ให้เติม .whoreadme.com ต่อท้ายอีเมล์ เช่น

to. tawichb@gmail.com ก็เป็น to. tawichb@gmail.com.whoreadme.com

หวังว่าคงเป็นประโยชน์สำหรับท่านพอสมควรนะครับ....
เอวัง.......


Twitter Delicious Facebook Digg Stumbleupon Favorites More