Posts tagged security
SSH Public Key Authen พอกันทีกับการพิมพ์รหัสเข้า SSH
Aug 18th
ใครสงสัยว่ามันคืออะไร ลองไปอ่านที่นี่ดูนะครับ ถ้าให้เล่าแบบย่อๆก็เป็นการทำให้เรา ssh เข้าไปได้โดยไม่ต้องใส่รหัส จริงๆมันมีเรื่องความปลอดภัยด้วย ตามไปอ่านดูในลิ้งค์ที่ให้ไว้ละกัน มาพูดถึงวิธีสร้างคีย์แล้วเอาไปใส่ server กันดีกว่า
เอาบน Windows ก่อนนะครับ บน Linux ทำง่าย เดี๋ยวค่อยว่ากัน
เริ่มจาก ลง PuTTYgen ถ้าติดตั้ง PuTTY ไว้แล้วก็เรียกได้จาก Start > All Programs > PuTTY > PuTTYgen จะเห็นหน้าตาแบบนี้
ไม่ต้องคิดมาก กระแทกปุ่ม Generate ทันที แล้วเอาเมาส์วนๆในหน้าต่างสักพัก มันจะ random key มาให้ ใส่ comment ตามใจชอบแล้วกด Save private key ซะ อย่าลืมก้อปจดตัวอักษรยึกยือๆในช่อง Public key for pasting… ไว้ด้วยนะครับ
เปิดโปรแกรม PuTTY ไปที่ Connection > Data ใส่ Auto-login username เป็น username ที่เราจะใช้เข้า
ไปที่ Connection > SSH > Auth แล้วเลือก Private key ที่เราเซฟไว้เมื่อกี้
กลับไปหน้าแรก กรอก IP/Port สำหรับต่อให้เรียบร้อย เสร็จแล้วตั้งชื่อที่เราอยากตั้งในช่อง Saved Sessions แล้วกด Save
กด Open ก็จะเป็นการเข้า SSH ตามปกติ ตอนนี้ยังต้องใส่รหัสอยู่นะ
เสร็จแล้วสร้างโฟลเดอร์ .ssh (mkdir .ssh) แล้วเข้าไปสร้าง(หรือแก้)ไฟล์ .ssh/authorized_keys เสร็จแล้วเอา Public key for pasting … ที่ก้อปไว้ตอนแรกมาแปะลงไป บางทีอาจมีไฟล์นี้อยู่แล้วก็ช่างมัน ใส่ไปในบรรทัดต่อไปเลย
ออกมาแล้วลองเปิด PuTTY แล้วดับเบิลคลิกไอ้อันที่เราเซฟไว้เมื่อกี้ มันจะไม่ถามรหัสเราอีกแล้ว สังเกตจากบรรทัดที่ 2 จะมีบอกว่ากำลังใช้ Public key authen อยู่
ถ้าอยากให้ปลอดภัยกว่านี้หน่อย ก็ใช้ PuTTYgen ตั้งรหัส Private key ของเราซะ เวลา Login มันก็จะถามรหัสของ Key เวลาเปลี่ยนรหัสก็เปลี่ยนแค่ที่ Key ไม่ต้องมานั่งเปลี่ยน server ทุกเครื่อง
สำหรับวิธีบน Linux อันนี้ง่าย อธิบายได้ด้วยรูปเดียว
เคสนี้เราต้องการต่อจากเครื่อง Enceladus ไปยังเครื่อง Opteron (158.108.34.34) ลองดูรูปแล้วอ่านตามนะครับ
เริ่มจากเครื่องเรา สั่ง ssh-keygen กด enter รัวๆ แล้วสั่ง ssh-copy-id username@destination username กับ destination แก้ให้ถูกต้องด้วย มันจะถามรหัสทีนึง แค่นี้ก็เรียบร้อย
เสร็จแล้วลองทดสอบด้วยการต่อไปที่เครื่องนั้น มันก็จะไม่ถามรหัสเราอีกแล้ว
ป.ล. จริงๆมีอีกทางคือใช้ Pageant ที่อยู่ในชุดของ PuTTY ถ้าบน Linux ก็ใช้ ssh-agent ถ้าใครสนใจลองไปหาอ่านดูละกันครับ
Pidgin ต่อ Google Talk แล้ว Read Error
Aug 11th
ปกติถ้าไม่ปรับอะไรเลย หลังจาก add Google Talk เข้าไปใน Pidgin Accounts แล้ว เวลา connect มันจะต่อไปที่ port 5222 ครับ
แต่บางที่มัน block (เช่น MaxNet หรือเน็ตตามบริษัทที่ให้เข้าได้แต่พอร์ท 80, 443) จนทำให้มันขึ้น Read Error
แอบไป netstat ดู Google Talk Client ก็งงว่าทำไมมันต่อผ่านพอร์ท 443 ได้ เลยลองมั่วๆ จนเจอวิธีตั้งให้ Pidgin หลบไปใช้พอร์ท 443 (https) แทน ง่ายจนคาดไม่ถึง โดยเข้าไป Accounts > Modify
- Require SSL/TLS เอาออก
- Force old (port 5223) SSL ติ๊ก
- Allow plaintext auth over unencrypted streams เอาออก
- Connect port: 443
- Connect server: talk.google.com

พอทำได้แล้วก็ลองไปค้นๆดู ปรากฏมีคนทำได้เต็มไปหมดแล้ว นี่เราล้าหลังชาวบ้านเค้าไปเยอะนี่หว่า
รายชื่อ NTP Server ในไทย
Jan 30th
เห็น @icez เล่นอยู่ใน twitter เลยลองไปหาดูบ้าง
อันนี้เป็นรายชื่อจาก th.pool.ntp.org ทั้งหมด
ทำให้รู้ว่าเกษตรมี NTP Server อยู่ใน Pool ของไทยเกินครึ่ง
Name: ntp.ku.ac.th
Address: 158.108.212.149Name: fw.eng.ku.ac.th
Address: 158.108.32.17Name: ilm.live.rmutt.ac.th
Address: 203.158.118.3Name: time.uni.net.th
Address: 202.28.18.72Name: itoml.live.rmutt.ac.th
Address: 203.158.111.32Address: 158.108.7.157
Address: 158.108.2.100
อันนี้เป็นรายชื่อ Server ที่รู้จัก แต่ไม่ได้อยู่ใน Pool
Name: delta.cpe.ku.ac.th
Address: 158.108.32.3Name: time.navy.mi.th
Address: 118.175.67.83Name: clock.nectec.or.th
Address: 202.44.204.114Name: time1.nimt.or.th
Address: 203.185.69.60Name: time2.nimt.or.th
Address: 203.185.69.59Name: time3.nimt.or.th
Address: 203.185.69.56
ป.ล. @icez เตือนมาว่า time3.nimt.or.th เวลามั่วมาก ถ้าคิดจะใช้ลองดูดีๆก่อน
ปรับ Apache ให้ซ่อนรายละเอียด Server
Dec 6th
สิ่งที่ผมจะพูดต่อไปนี้อ้างอิงกับ Debian เท่านั้นนะครับ อาจดูเป็นเรื่องง่ายๆ แต่ผมไม่เคยเอะใจสักนิด
ปัญหาก็คือผมต้องการซ่อนรายละเอียดของ Server ที่รันเว็บอยู่ ซึ่งปกติมันจะบอกข้อมูลมาแบบนี้
Apache/2.2.9 (Debian) DAV/2 SVN/1.5.1 mod_python/3.3.1 Python/2.5.2 mod_ssl/2.2.9 OpenSSL/0.9.8g mod_wsgi/2.3 Phusion_Passenger/2.0.4 Server at <hidden> Port 80
วิธีซ่อนก็ไม่ยาก แค่ไปแก้สองคำสั่งใน apache2.conf ตามนี้ รายละเอียดพวกนี้ก็จะถูกซ่อนไป
ServerSignature Off
ServerTokens Prod
แต่เมื่อแก้เสร็จแล้ว Apache ก็ยังคายรายละเอียดของ Server ออกมาเยอะเหมือนเดิมอยู่ ซึ่งตามปกติถ้าเราปรับอย่างนั้นแล้ว มันไม่ควรจะคายอะไรออกมาเลย
ก็เลยลองไล่ดูคำสั่งในโฟลเดอร์ config ของ Apache ไปเรื่อยๆ จนเจอว่ามีอีกไฟล์ที่มีสองคำสั่งนั้นเช่นกัน คือ /etc/apache2/conf.d/security เลยตามเข้าไปแก้ในไฟล์นั้น และแล้วมันก็ซ่อนตามที่เราต้องการ
สาเหตุที่ปรับใน /etc/apache2/apache2.conf แล้วไม่ได้ผล นั่นเพราะ 2 คำสั่งข้างบนนั้น มันมาก่อนคำสั่ง
Include /etc/apache2/conf.d/
ซึ่งคำสั่งนี้ทำให้ Apache ดึงทุกไฟล์ในโฟลเดอร์ conf.d เข้ามาประมวลผล เนื่องจาก Apache ใช้หลักการ "มาทีหลังดังกว่า" ก็คือถ้ามีคำสั่งซ้ำกัน มันจะยึดตามอันที่มาหลังสุดเป็นหลัก ด้วยเหตุนี้ มันเลยอ่านคำสั่งในไฟล์ conf.d/security มาทับคำสั่งเดิมใน apache2.conf แทน
บทเรียนวันนี้: คิดจะแก้อะไร ลอง <code>grep -R</code> ดูก่อนทุกครั้ง – -"
ใช้ Gmail อย่างปลอดภัยผ่าน HTTPS
Sep 7th
วันนี้เข้าไปดู Gmail Settings เล่นๆ ถึงได้รู้ว่ามี Option ใหม่ออกมา (ที่จริงออกมานานแล้ว พึ่งรู้) นั่นก็คือ Always use https
Always use https จะช่วยบังคับให้ Gmail เข้าผ่าน HTTPS ตลอดเวลา โดยปกติแล้วถ้าเราเข้า Gmail โดยไม่ได้ระบุ HTTPS มันจะเข้าเป็น HTTP ธรรมดา การตั้งค่านี้จะทำให้ Browser ทำการ Redirect ไปยัง HTTP โดยอัตโนมัติ ทำให้เราสามารถใช้งาน Gmail ได้อย่างปลอดภัยโดยไม่ต้องพิมพ์ https:// เอง
วิธีเปิดการใช้งาน: เข้า Gmail แล้วกด Settings ตรงด้านบนขวาของจอ เสร็จแล้วเลื่อนลงมาล่างสุดจะเจอการตั้งค่า Browser connection ให้เลือก Always use https (ตามรูป) เสร็จแล้วก็กด Save Changes

คำเตือน การตั้งค่านี้อาจทำให้ใช้ Gmail จากมือถือไม่ได้
ข้อมูลเพิ่มเติม







