FreeBSD/Linux – DevExperience https://www.unzeen.com :// Sun, 17 Nov 2019 03:10:35 +0000 en-US hourly 1 การติดตั้ง Let’s Encrypt Free HTTPS บน Debian https://www.unzeen.com/article/3300/ https://www.unzeen.com/article/3300/#respond Fri, 04 Dec 2015 17:27:51 +0000 https://www.unzeen.com/?p=3300 ปกติแล้วถ้าเราจะทำให้เว็บของเราเข้าผ่าน HTTPS ได้เนีย เราก็ต้องเสียเงินซื้อ Certificate ซึ่งก็มีราคาตั้งแต่หลักพันถึงหลักหมื่น แต่เท่าที่ผมลองมาก็มีของ http://rapidssl.com/ ที่ราคาถูกหน่อยประมาณ 500 กว่าบาทต่อปี แต่ถ้าไม่อยากจ่ายเงินเลยตอนนี้ก็มี Let’s Encrypt https://letsencrypt.org/ ที่มาช่วยเราประหยัดค่าใช้จ่ายตรงนี้ได้ ซึ่งก็มีวิธีติดตั้งง่ายมากๆ ง่ายกว่าแบบเสียเงินซะอีก แต่ว่า certificate ที่ได้มาจะมีอายุแค่ 90 วัน พอหมดอายุแล้วเราก็ต้องกลับไปต่อใหม่ ซึ่งผมก็คิดว่าไม่น่าใช่ปัญหา ลองติดตั้งกันเลยดีกว่า ใช้แค่ 3 ขั้นตอนก็เสร็จ เริ่มเลย..

ขั้นแรกทำการติดตั้ง Git ซะก่อน

# apt-get install git

ทำการ clone letsencrypt จาก github

# git clone https://github.com/letsencrypt/letsencrypt

สั่งรัน ./letsencrypt-auto เพื่อสร้างคีย์

# cd letsencrypt
# ./letsencrypt-auto

หลังจากสั่ง ./letsencrypt-auto ระบบจะแสดงหน้าจอขึ้นมาให้เราเลือกเว็บที่ต้องการจะทำเป็น HTTPS (ตรงนี้สำคัญ แนะนำให้เลือกทำทีละเว็บนะครับ ผมลองเลือกที่ละหลายเว็บพร้อมกันแล้วระบบมันสร้างคีย์ขึ้นมาให้ตัวเดียวแล้วใช้ด้วยกัน แต่ถ้าเราสร้างคนละทีมันจะแยกคีย์ให้)
ssl-letsencrypt

เลือก Easy แล้วก็กด OK ข้ามไปครับ
ssl-letsencrypt

เสร็จเรียบร้อย ดีใจด้วยคุณได้เว็บที่มี https นำหน้าแล้ว แต่ว่า certificate ที่ได้มาจะมีอายุ 90 วัน พอครบแล้วเราต้องมาขอใหม่นะครับ ซึ่งก็ไม่น่าใช่ปัญหา
ssl-letsencrypt

ทดสอบเปิดเว็บขึ้นมาดูหน่อยว่าขึ้นสีเขียวไหม ถ้าไม่ได้ก็ตัวใครตัวมันครับ ฝันดี…
ssl-letsencrypt

# เพิ่มเติมให้อีกหน่อย หากต้องการสร้าง Certificate Key แค่อย่างเดียวก็ให้ใช้คำสั่งต่อไปนี้ แต่ก่อนสั่งต้อง stop apache ก่อนนะครับ และเมื่อสร้างเสร็จแล้ว เราต้องเป็นคนแก้ config ของ apache ให้ใช้ Certificate ตัวใหม่นี้เองด้วย โดย certificate ที่ได้จะถูกเก็บไว้ที่ /etc/letsencrypt/live/

# ./letsencrypt-auto certonly --standalone -d www.lookhin.com -d lookhin.com

เมื่อได้ Certificate มาแล้วเราต้องเข้าไปแก้ไขคอนฟิกไฟล์ของ apache ในส่วนของ VirtualHost ให้เรียกใช้ Certificate Key ตัวใหม่เหมือนในตัวอย่างนี้



    ServerAdmin [email protected]
    ServerName lookhin.com
    ServerAlias www.lookhin.com
    DocumentRoot /var/www/lookhin.com

    CustomLog ${APACHE_LOG_DIR}/lookhin.com.access.log combined
    ErrorLog ${APACHE_LOG_DIR}/lookhin.com.error.log

    SSLCertificateFile /etc/letsencrypt/live/www.lookhin.com-0001/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.lookhin.com-0001/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf



# เราจะเห็นว่าทุกครั้งที่เราสั่งสร้าง certificate มันจะมี dialog box ขึ้นมาถามตลอดว่าทำนู้นไหมนี้ไหม ซึ่งถ้าเราไม่อยากให้มันถามอะไร เราก็ใส่คำสั่งไปทีเดียวได้ว่าจะให้มันทำอะไรบ้าง (และเดียวเราจะเอาคำสั่งตรงนี้หละไปใส่ใน crontab เพื่อให้มันต่ออายุอัตโนมัติ)

# ./letsencrypt-auto certonly --webroot -w /var/www/lookhin.com --email [email protected] --text --no-redirect --renew-by-default --agree-tos -d www.lookhin.com -d lookhin.com

# การต่ออายุ certificate อัตโนมัติ ในคู่มือของทาง letsencrypt เองก็บอกว่าเราสามารถทำได้โดยตั้งเวลาต่ออายุใหม่ไว้ใน crontab เลยก็ได้ โดยให้ต่ออายุใหม่ก่อนที่มันจะครบ 90 วัน แต่ว่า crontab มันเลือกไม่ได้นี้ว่าให้นับ 90 วันแล้วทำงาน มันเลือกได้แค่วันเวลา งั้นวิธีที่ง่ายที่สุดผมจะสั่งมันต่ออายุ certificate ใหม่ทุกๆ วันที่ 1 ของเดือน 2, 4, 6, 8, 10, 12 ซึ่งแต่ละรอบก็ประมาณ 60 วัน หรือหากกว่าใครมีวิธีดีกว่านี้แนะนำผมได้นะ ตอนนี้คิดออกเท่านี้

0 0 1 2,4,6,8,10,12 * /root/letsencrypt/letsencrypt-auto certonly --webroot -w /var/www/lookhin.com --email [email protected] --text --no-redirect --renew-by-default --agree-tos -d www.lookhin.com -d lookhin.com && /usr/sbin/service apache2 reload

# หรือถ้าหากว่าเราใช้โฮสที่เป็น share host ที่เขามี control panel ให้สามารถใส่ ssl certificate เองได้ แต่ไม่สามารถ shell เข้าใช้งานได้ เราสามารถที่จะใช้เครื่องอื่นที่สามารถใช้ letsencrypt ในการสร้าง certificate ขึ้นมาแล้วเอา certificate ที่ได้มาใช้กับโฮสนั้นก็ได้ โดยให้เราสั่งรัน ./letsencrypt-auto certonly –manual ซึ่งระบบจะให้เราไปสร้าง text file อันหนึ่งไว้ในเว็บของเราเพื่อเป็นการยืนยันว่าเราเป็นเจ้าของจริงๆ เช่น http://www.lookhin.com/.well-known/acme-challenge/..d_Sd6yI………vNCi3-uEb…Y เมื่อสร้างเสร็จแล้วเราจะได้ไฟล์ certificate และ key อยู่ในโฟสเดอร์ /etc/letsencrypt/archive/www.lookhin.com/ ให้ใช้ไฟล์ทั้งหมดในนี้ไปใช้งาน

# ./letsencrypt-auto certonly --manual
]]>
https://www.unzeen.com/article/3300/feed/ 0
การติดตั้ง Cacti monitoring tool บน Debian 8 https://www.unzeen.com/article/3264/ https://www.unzeen.com/article/3264/#respond Sun, 15 Nov 2015 03:38:43 +0000 https://www.unzeen.com/?p=3264 ก่อนหน้านี้เวลาจะดู Network Traffic หรือ stats ต่างๆ ของระบบผมก็ใช้แต่ MRTG เป็นหลัก ใช้มาหลายปีไม่เคยลองใช้ตัวอื่นดูเลย เห็นใครๆ ก็ว่าเจ้า Cacti นี้มันเจ๋งก็อยากลองบ้าง ส่วนตัวเป็นคนขี้ลืมมาก เวลาทำอะไรเสร็จก็ต้องเขียนไว้หน่อยเผื่อต้องทำอีกวันหลังจะได้ไม่ต้องหาอีก ในการติดตั้ง Cacti เราต้องมี Apache และ MySQL ซึ่งหากยังไม่ได้ทำการติดตั้งให้ทำการติดตั้งตามบทความก่อนหน้านี้ก่อนนะครับ https://www.unzeen.com/article/3208/ ถ้ามี Apache กับ MySQL พร้อมแล้วก็เริ่มการติดตั้ง Cacti network monitoring กันเลยครับ

ทำการติดตั้ง RRDTool และ SNMPT (Simple Network Management Protocol)

# apt-get update
# apt-get install rrdtool snmp snmpd

cacti-network-monitoring

แก้ไขคอนฟิกของ snmpd โดยให้เอา # หน้าบรรทัด rocommunity public localhost ออก

# nano /etc/snmp/snmpd.conf

cacti-network-monitoring

จากนั้นสั่ง restart snmpd

# service snmpd restart

ต่อไปทำการติดตั้ง Cacti

# apt-get install cacti cacti-spine

cacti-network-monitoring

กด OK

cacti-network-monitoring

เลือก web server ในทีนี้ของเราคือ Apache

cacti-network-monitoring

กด OK

cacti-network-monitoring

กด Yes

cacti-network-monitoring

ทำการใส่ password root ของ MySQL เพราะว่าระบบติดตั้งต้องการสิทธิของ root เพื่อสร้าง user ของ cacti อีกทีหนึ่ง

cacti-network-monitoring

ใส่ password สำหรับ user cacti ของ MySQL (จะใส่หรือไม่ใส่ก็ได้ ถ้าไม่ใส่ระบบจะสุ่มขึ้นมาให้เอง)

cacti-network-monitoring

ยืนยัน password อีกรอบ

cacti-network-monitoring

เมื่อทำการติดตั้งเรียบร้อย ให้เริ่มทำการคอนฟิกโดยเข้าไปที่ url http://xxx.xxx.xxx.xxx/cacti

กด Next เพื่อเข้าขั้นตอนต่อไป

cacti-network-monitoring

เลือก New Install แล้วคลิก Next

cacti-network-monitoring

กด Finish
cacti-network-monitoring

จากนั้นระบบจะแสดงหน้าให้ Login โดยให้เราใส่ User: admin และ Password: admin หลังจาก login เข้าไปแล้วระบบจะบังคับให้เปลี่ยน password ใหม่

cacti-network-monitoring

เมื่อเข้ามาแล้วเราจะได้หน้าจอดังรูป ซึ่งเราต้องเข้าไปเลือกรูปแบบของกราฟที่ต้องการแสดงดังขั้นตอนถัดไป

cacti-network-monitoring

ทีนี้ถ้าเราคลิกเข้าไปที่เมนู Graphs จะเห็นว่ามีข้อมูลบางส่วนของระบบถูกแสดงขึ้นมาแล้ว แต่ยังไม่มีข้อมูลของ Network Traffic (ในตัวอย่างให้คลิกที่เมนู Graphs และไปเลือกที่ Preview View ทางขวามือบน เพื่อให้แสดงเป็นกราฟเล็กๆ ถ้าต้องการดูรายละเอียดให้คลิกที่กราฟแต่ละรูปนะครับ)

cacti-network-monitoring

ต่อไปทำการคอนฟิกให้แสดง Network Traffic โดยคลิกที่เมนู Console -> Devices และคลิกที่ Localhost

cacti-network-monitoring

ในส่วนของ SNMP Version ให้เลือกเป็น Version 2 และกดปุ่ม Save ซึ่งอยู่ล่างสุด

ในหน้าจอเดียวกันในส่วนของ Associated Data Queries ให้เพิ่ม SNMP – Get Mounted Partitions และ SNMP – Interface Statistics โดยเราสามารถเลือกข้อมูลอื่นๆ ที่สนใจเพิ่มเข้าไปได้ อันนี้ลองดูเองนะครับว่ามีข้อมูลอะไรอีกบ้าง เมื่อเลือกได้แล้วให้กด Save

cacti-network-monitoring

จากนั้นให้เลือนขึ้นไปด้านบนแล้วคลิก Create Graphs for this Host

cacti-network-monitoring

หน้าถัดมาจะเป็นหน้าให้เลือกข้อมูลที่ต้องการแสดง ให้เราติ๊กที่ช่อง eth0 (และเลือก Select a graph type ให้เลือก In/Out Bits (64-bit Counters)) ส่วนของ Get Mounted Partitions ให้ติ๊กเลือก Partition ที่ต้องการแสดง เมื่อเลือกเสร็จแล้วกด Create

cacti-network-monitoring

หลังจากนั้นรอสักครู่ แล้วคลิกกลับไปที่เมนู Graphs เราจะได้กราฟที่เราเลือกไว้ถูกนำขึ้นมาแสดงแล้ว

cacti-network-monitoring

]]>
https://www.unzeen.com/article/3264/feed/ 0
เพิ่มความปลอดภัยในการล็อกอินเข้าเซิฟเวอร์ด้วยการใช้ SSH key และปิดการล็อกอินเข้าระบบโดยใช้ Username และ Password https://www.unzeen.com/article/3241/ https://www.unzeen.com/article/3241/#respond Wed, 12 Aug 2015 00:57:54 +0000 https://www.unzeen.com/?p=3241 ปกติแล้วเวลาที่เราจะทำการ remote login เข้าระบบที่เป็น Linux Server เราก็จะใช้ Username และ Password ในการ SSH เข้าไป แต่การใช้ username password ก็อาจจะไม่ปลอดภัยเพราะแฮกเกอร์อาจจะโจมตีแบบ Brute Force เพื่อเดารหัสผ่านเข้ามาได้ ถึงแม้เราจะใช้ fail2ban เพื่อป้องกันการโจมตีลักษณะนี้ได้ แต่ถ้ารหัสผ่านไม่แข็งแกรงพอก็มีความเป็นไปได้ที่แฮกเกอร์จะใช้พรอกซีและแฮกเข้ามาได้ หรือในกรณีที่แย่ที่สุดที่ผมเคยเจอคือผู้ดูแลระบบตั้งรหัสผ่านของอีเมล,ดาตาเบส,ssh เป็นรหัสเดียวกัน และเราหาช่องโหว่เพื่อแฮกไปอ่านค่าคอนฟิกของเว็บนั้นได้ว่าใช้รหัสผ่านดาตาเบสอะไรเราก็มีโอกาสที่จะ ssh เข้าไปควบคุมเซิฟเวอร์ได้ทั้งเครื่อง ส่วน SSH Key จะใช้การจับคู่กันระหว่าง private key และ public key ซึ่งยาว 2048 หรือ 4096 bit ทำให้เป็นไปได้ยากที่แฮกเกอร์จะรู้คีย์นี้ (ยกเว้นว่าเครื่องเราจะโดนขโมย) โดยในตัวอย่างนี้ผมจะใช้ putty ในการสร้างคีย์ และเมื่อเราล็อกอินด้วย SSH key ได้แล้วเราจะทำการปิดการล็อกอินด้วยรหัสผ่านไปเลย

เริ่มจากการสร้างคีย์โดยใช้โปรแกรม PuTTYgen ถ้าลง putty ไว้มันก็อยู่ที่เดียวกันกับ putty นั้นหละครับ หรือถ้ายังไม่มีหรือหาไม่เจอก็ไปเอามาจากเว็บหลักเขาได้เลย http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

เมื่อเปิด PuTTYgen ขึ้นมาแล้วก็กด Generate และเอาเมาส์เลือนไปเลือนมาในช่อง Key จนกว่าจะขึ้นครบ 100%

ssh-key

เมื่อเสร็จแล้วให้ทำการบันทึกคีย์ที่ได้โดยกด Save private key และให้ทำการ copy ค่าในช่อง Public key for pasting into OpenSSH authorized_keys file เอาไว้ก่อน (ส่วน Save public key ไม่ต้องบันทึกก็ได้เพราะเป็นค่าเดียวกับในช่อง Public key for pasting into OpenSSH authorized_keys file นั้นหละ แต่ putty กับ OpenSSH ใช้ฟอร์แมตต่างกันเฉยๆ)

ssh-key

หลังจากนั้นทำการล็อกอินเข้าเซิฟเวอร์ด้วย username และ password ตามปกติก่อน เสร็จแล้วให้เอาค่า Public key ที่ก๊อปปี้ไว้ตะกี่มาใส่ในไฟล์ ~/.ssh/authorized_keys เมื่อเสร็จแล้วก็ทำการล็อกเอาท์ออกจากระบบ

mkdir ~/.ssh
chmod 0700 ~/.ssh
nano ~/.ssh/authorized_keys
chmod 0644 ~/.ssh/authorized_keys

ssh-key

ต่อไปทำการคอนฟิก putty ให้ใช้ private key แทนการใช้ username และ password โดยทำการเลือกที่แท๊บ data และใส่ Auto-login username เป็นยูเซอร์ที่เราจะใช้ในการล็อกอิน

ssh-key

จากนั้นมาที่แท๊บ Connection -> SSH -> Auth ให้เลือก private key ที่เราบันทึกเอาไว้

ssh-key

กลับมาที่แท๊บ Session ให้ใส่ IP, Port กด Save และ Open เพื่อเริ่มใช้งาน จะเห็นว่าสามารถล็อกอินเข้าระบบได้โดยไม่ต้องใส่ username และ password แล้ว

ssh-key

ขั้นตอนถัดไปทำการ disable การล็อกอินด้วย username และ password โดยให้ทำการแก้ไขไฟล์ /etc/ssh/sshd_config (อันนี้ต้องใช้สิทธิ์รูทให้การแก้นะครับ)

sudo nano /etc/ssh/sshd_config

จากนั้นหาบรรทัด PasswordAuthentication กับ UsePAM และแก้ไขเป็นดังนี้

PasswordAuthentication no
UsePAM no

หลังจากแก้ไขเสร็จแล้วให้ทำการ restart ssh และทำการล็อกเอาท์ออกจากระบบ จากนั้นทดสอบทำการล็อกอินด้วย username และ password จะเห็นว่าไม่สามารถล็อกอินได้แล้ว ตอนนี้ทั้งระบบก็จะสามารถใช้งานได้ผ่านทาง SSH Key ได้เพียงอย่างเดียว

systemctl restart ssh

ถ้าหากคิดว่าการล็อกอินอัตโนมัตโดยใช้ SSH Key แบบนี้อาจจะไม่ปลอดภัยถ้าหากเครื่องโดนขโมย เราสามารถตั้งรหัสผ่านของ SSH Key ได้ในขั้นตอนการสร้างคีย์ โดยให้เรากำหนดรหัสผ่านที่ต้องการลงไปในช่อง Key passphrase ซึ่งทุกครั้งที่มีการใช้ SSH Key นี้ระบบก็จะให้เราใส่รหัสผ่านชุดนี้ทุกครั้ง

อ้างอิง : https://www.digitalocean.com/community/tutorials/how-to-create-ssh-keys-with-putty-to-connect-to-a-vps

]]>
https://www.unzeen.com/article/3241/feed/ 0
การสร้าง Debian Droplet บน DigitalOcean และติดตั้ง Apache, PHP, MySQL, ProFTPD, Firewall https://www.unzeen.com/article/3208/ https://www.unzeen.com/article/3208/#respond Sat, 04 Jul 2015 08:45:51 +0000 http://www.unzeen.com/?p=3208 วันนี้มาลองสร้าง Droplet บน DigitalOcean กันครับ หลังจากสร้างแล้วเราจะติดต้ัง Apache, PHP, MySQL, ProFTPD, Firewall เพื่อใช้งานเป็น Web Server ด้วย, เจ้า Droplet ที่ว่ามันก็คือ Virtual Servers นี่หละครับ บน DigitalOcean เขาเรียก Droplet ซึ่งในบทความนี้ผมจะเลือกใช้ Image ที่เป็น Debian 8.1 x64 นะครับ ส่วนโปรแกรมอื่นๆที่เราจะใช้เดียวเราจะลงเองภายหลัง

อย่างแรกเราต้องมี Account ของ DigitalOcean ก่อนครับ ถ้ายังไม่มีก็สมัครก่อนครับ https://www.digitalocean.com/?refcode=29f4a5ac06ae (ถ้าคุณสมัครผ่านลิงค์นี้และเริ่มใช้งาน ผมก็ได้เครติดการใช้งานด้วย ^^) เมื่อสมัครเรียบร้อยแล้ว ก็ทำการล็อกอินเข้าระบบและเลือก Create Droplet โดยกำหนดค่าต่างๆ ดังนี้

Droplet Hostname : ชื่อของเว็บหรือชื่อที่เราจะใช้เรียก droplet อันนี้ ตั้งว่าอะไรก็ได้แต่ห้ามมีช่องว่าง
Select Size : เลือกไซต์เล็กสุด 5 USD ต่อเดือน (ประมาณเดือนละ 169 บาท ถูกมากๆ)
Select Region : เลือกเป็น Singapore ใกล้บ้านเราหน่อยจะได้เร็วๆ
Select Image : อันนี้เลือกเป็น Debian 8.1 x64 หรือถ้าใครอยากใช้แบบที่มีโปรแกรมต่างๆอยู่แล้วก็เลือกไปที่แท็บ Application และเลือก Image ที่มีโปรแกรมต่างๆ ในแบบที่ตัวเองต้องการได้เลยครับ

digitalocean-debian-01

เมื่อเลือก ขนาด, ที่ตั้ง, และอิมเมจได้แล้วก็คลิก Create Droplet ด้านล่างสุดได้เลยครับ รอไม่กี่อึดใจก็จะมีอีเมล์มาแจ้งเราว่า IP Address และ root password ของอิมเมจของเราคืออะไร ขั้นต่อไปก็ทำการรีโมทเข้าไปทำการติดตั้งโปรแกรมต่างๆ

เมื่อได้รับอีเมลแจ้ง IP Address และ root password ของอิมเมจที่เราสร้างแล้วก็ให้ทำการรีโมทเข้าไปติดตั้ง Apache, PHP, MySQL, ProFTPD ตามขั้นตอนต่างๆ ดังนี้

1. ทำการเพิ่มยูสเซอร์และคอนฟิก ssh ไม่ให้รีโมทล๊อกอินด้วย root

# apt-get update
# apt-get upgrade

# adduser demouser
# apt-get install sudo
# usermod -a -G sudo demouser

แก้ไขไฟล์ /etc/ssh/sshd_config

# nano /etc/ssh/sshd_config

ในไฟล์ /etc/ssh/sshd_config ให้หาคำว่า PermitRootLogin และทำการแก้ไขจาก PermitRootLogin yes เป็น PermitRootLogin no เพื่อไม่ให้รีโมทล๊อกอินด้วย root ได้

PermitRootLogin no

รีสตาร์ท ssh และลองล๊อกอินเข้าระบบด้วยยูเซอร์ใหม่

# systemctl restart ssh

2. ทำการติดตั้ง Apache, PHP, MySQL

# apt-get install apache2
# a2enmod ssl
# a2enmod rewrite

# apt-get install mysql-server
# mysql_secure_installation

# apt-cache search php5

# apt-get install php5 php5-cli php5-common php5-curl php5-gd php5-imap php5-ldap php5-mcrypt php5-mysql php5-sqlite php5-mongo php5-json
# service apache2 restart

ทำการแก้ไขไฟล์คอนฟิกของ apache เพื่อไม่ให้แสดงรายชื่อไฟล์ถ้าไม่มีอินเด็กและอนุญาตให้ใช้ .htaccess ได้

# nano /etc/apache2/apache2.conf

ในไฟล์ /etc/apache2/apache2.conf ให้หาคำว่า Directory /var/www/ และแก้ไข Options และ AllowOverride ดังนี้


        Options -Indexes -Includes -ExecCGI
        AllowOverride All
        Require all granted

แก้ไขไฟล์ security.conf ไม่ให้แสดงเวอร์ชั่นของ apache

# nano /etc/apache2/conf-available/security.conf

ในไฟล์ /etc/apache2/conf-available/security.conf ให้หาบรรทัด ServerTokens และ ServerSignature โดยแก้ไขดังนี้

ServerTokens Prod
ServerSignature Off

รีสตาร์ท apache อีกรอบ

# service apache2 restart

3. ติดตั้ง ProFTPD Server

# apt-get install proftpd

ทำการแก้ไขไฟล์ /etc/proftpd/proftpd.conf เพื่อให้ยูเซอร์แต่ละคนเห็นเฉพาะ directory ของตัวเองเท่านั้น

# nano /etc/proftpd/proftpd.conf

โดยแก้ไขไฟล์ /etc/proftpd/proftpd.conf ในหัวข้อ DefaultRoot และ RequireValidShell ดังนี้

DefaultRoot                     ~
RequireValidShell               on

จากนั้นทำการแก้ไขไฟล์ /etc/shells โดยเพิ่มบรรทัด /bin/false เข้าไปท้ายไฟล์

# nano /etc/shells

เพิ่มยูเซอร์ที่จะให้ FTP เข้ามาได้ แต่เราจะไม่ให้ยูเซอร์นี้ ssh เข้ามา โดยเพิ่มออปชั่น –shell /bin/false

# adduser demoftp --home /var/www/demoftp --shell /bin/false

จากนั้นรีสตาร์ท ProFTPD และทดสอบใช้ยูเซอร์ที่สร้าง FTP เข้ามาในระบบ จะเห็นว่ายูเซอร์นี้สามารถใช้งาน FTP ได้อย่างเดียวและจะเห็นข้อมูลแค่เฉพาะในไดเร็กทอรีของตัวเองเท่านั้น

# service proftpd restart

4. ติดตั้ง UFW Firewall

# apt-get install ufw

ทำการคอนฟิก Firewall โดยอนุญาตให้ใช้งานได้แค่ port 22,80,21,443

# ufw default deny incoming
# ufw default allow outgoing

# ufw allow 22/tcp
# ufw allow 80/tcp
# ufw allow 21/tcp
# ufw allow 443/tcp

# ufw disable
# ufw enable

ตรวจสอบสถานะของไฟล์วอด้วยคำสั่ง

# ufw status

เพียงเท่านี้เราก็มีเซิฟเวอร์พร้อมให้บริการแล้วครับ

]]>
https://www.unzeen.com/article/3208/feed/ 0
ติดตั้งและใช้งาน Tor + Vidalia บน Linux Mint https://www.unzeen.com/article/3112/ https://www.unzeen.com/article/3112/#respond Sun, 14 Dec 2014 09:42:24 +0000 http://www.unzeen.com/?p=3112 ผมเคยเขียนวิธีติดตั้งและใช้งาน Tor บน windows ไปแล้ว วันนี้มาดูการติดตั้งและใช้งาน Tor บน Linux กันบ้างครับ และเหมือนเดิมในตัวอย่างผมจะใช้ Linux Mint โดยเราจะติดตั้ง Vidalia ซึ่งจะทำให้เราจัดการกับ Tor ได้ง่ายขึ้น ผ่านโปรแกรมที่เป็นกราฟฟิก ไม่ต้องไปแก้ไขไฟล์คอนฟิกอะไรให้ยุ่งยาก

เนื่องจากเคยเขียนไปแล้วรอบหนึ่ง ฉะนั้นรอบนี้ก็มาเริ่มติดตั้งกันเลย ไม่ต้องพูดอะไรกันยาว ถ้าอยากอ่านยาวๆ ไปอ่านได้จากบทความเก่านะครับ https://www.unzeen.com/article/2629/

ทำการติดตั้ง Tor และ Vidalia

sudo apt-get install tor vidalia

เมื่อติดตั้งเสร็จแล้วให้ทำการเปิดโปรแกรม Vidalia ขึ้นมา แล้วคลิกเข้าไปที่ Setting
tor-vidalia-linux

คลิกเลือกที่ Sharing และเลือก Run as a client only
tor-vidalia-linux

จากนั้นคลิกที่ Advanced ในช่อง Tor Control ให้เลือกเป็น Use Unix domain socket (ControlSocket) คลิก OK เพื่อบันทึกข้อมูล

ถ้าหากในขั้นตอนนี้คลิก OK เพื่อบันทึกข้อมูลไม่ได้ แสดงว่า Tor Service ยังไม่ถูก start ขึ้นมา ให้เราทำการ start service ของ tor ด้วยคำสั่งต่อไปนี้ก่อนครับ

$ sudo service tor start

tor-vidalia-linux

จากนั้นคลิก Start Tor
tor-vidalia-linux

ขั้นตอนถัดไปให้ทำการคอนฟิกบราวเซอร์ให้เรียกใช้งาน Tor ในตัวอย่างผมจะใช้ Firefox นะครับ ให้เข้าไปที่ Preferences -> Advanced -> Network และทำการคลิกที่ Settings ในส่วนของ Connection
tor-vidalia-linux

ในหน้า Connection Settings ให้เลือกมาที่ Manual proxy configuration และใส่ค่าในช่อง SOCKS Host เป็น 127.0.0.1 และ port 9050
tor-vidalia-linux

เรียบร้อยแล้วครับ ให้ทดสอบเปิด URL https://check.torproject.org/ เพื่อทดสอบว่าเราใช้งานระบบของ Tor แล้วหรือยัง

]]>
https://www.unzeen.com/article/3112/feed/ 0
การติดตั้ง Burg Boot Loader บน Linux Mint https://www.unzeen.com/article/3095/ https://www.unzeen.com/article/3095/#respond Sun, 14 Dec 2014 08:28:40 +0000 http://www.unzeen.com/?p=3095 จากครั้งที่แล้วที่เราได้ทำการแก้ไขหน้า GRUB Boot Loader จะเห็นว่าแก้ไขอะไรได้ไม่มาก วันนี้เราจะมาลองใช้โปรแกรมอีกตัวหนึ่งคือ Burg Boot Loader ซึ่งจะช่วยให้หน้าจอ Boot Loader ที่ใช้ในการเลือกเข้า OS ต่างๆ ในเครื่องของเราดูดีขึ้นกว่าแต่ก่อน โดยในตัวอย่างนี้ผมจะทำการติดตั้งบน Linux Mint 17.1 คิดว่าถ้าเป็น Debian หรือ Ubuntu ก็น่าจะติดตั้งแบบเดียวกันทั้งหมด

ขั้นตอนไม่ยุ่งยากครับ เริ่มจากการเพิ่ม repo เข้าไป จากนั้นก็ทำการติดตั้งได้เลย

$ sudo add-apt-repository ppa:n-muench/burg
$ sudo apt-get update
$ sudo apt-get install burg burg-themes

ในระหว่างติดตั้งจะมีหน้าจอขึ้นมาถามเกียวกับค่าคอนฟิกต่างๆในระบบนะครับ เราไม่ต้องแก้ไขค่าอะไรให้เรากด OK ไปให้หมดเลยครับ จนถึงหน้าจอสุดท้ายที่จะให้เราเลือก Harddisk ที่เราจะติดตั้ง MBR โดยเราสามารถเลือก Harddisk ที่ต้องการได้โดยการกด Space Bar ให้ช่องด้านหน้ากลายเป็นเครื่องหมายดอกจัน จากนั้นกด OK เป็นอันเสร็จเรียบร้อยครับ (ปกติของคนอื่นจะติดตั้งไปที่ /dev/sda แต่ของผมติดตั้งลงใน Harddisk ตัวที่ 2 เลยได้เป็น /dev/sdb นะครับ)

ถ้าหากในขั้นตอนการติดตั้ง ระบบไม่ได้ถามให้เราเลือกติดตั้ง Burg ไปที่ MBR ของ Harddisk ตัวไหน ให้เราทำการติดตั้งเองโดยใช้คำสั่งต่อไปนี้

$ sudo burg-install /dev/sdb

ขั้นตอนถัดไป ต้องทำการเลือก Theme และปรับความละเอียดของหน้าจอกันอีกเล็กน้อย

$ sudo burg-emu

เมื่อเข้าไปแล้วจะเจอหน้าจอเหมือนในรูปนะครับ ให้ทำการกด F2 เพื่อเลือก Theme
burg boot loader

หลังจากเลือก Theme เสร็จเรียบร้อยแล้ว เดียวเรามาปรับความละเอียดของหน้าจอกันต่อครับ โดยให้เข้าไปแก้ไขที่ไฟล์ /etc/default/burg ซึ่งเราจะแก้กัน 2 จุด คือ

1. เอา # หน้า GRUB_DISABLE_LINUX_RECOVERY=”true” เพื่อไม่ให้แสดงตัวเลือก Recovery
2. ทำการแก้ไขความละเอียดของหน้าจอ โดยแก้ GRUB_GFXMODE=saved เป็น GRUB_GFXMODE=1366×768 (ความละเอียดของจอตัวเองเท่าไรก็ใส่ตามนั้นนะครับ ตรงนี้แนะนำให้พิมพ์ลงไปเองนะครับ ถ้าก๊อปปี้ไปอาจจะติดอักขระพิเศษไปด้วย อาจจะทำให้ผิดพลาดได้)

$ sudo nano /etc/default/burg

burg boot loader

ส่วนรูปโลโกของ OS ต่างๆ ถ้าเราไม่ชอบอันที่เขาให้มา เราสามารถเข้าไปเปลี่ยนได้เองที่ /boot/burg/themes/icons นะครับ

หลังจากแก้ไขไฟล์เสร็จแล้วให้สั่ง

$ sudo update-burg

เพียงเท่านี้เราก็จะได้หน้าจอ Boot Loader ที่ดูดีขึ้นมาทันที อย่างของผมเลือก Theme refit และเปลี่ยนโลโกจาก Linux Mint เป็นรูปเพนกวินก็จะได้หน้าจอประมาณนี้ครับ
burg boot loader

หากต้องการกลับไปใช้ GRUB ใหม่อีกรอบ ให้ใช้คำสั่งดังนี้ครับ

sudo grub-install /dev/sdb
]]>
https://www.unzeen.com/article/3095/feed/ 0
เทคนิคการใช้งานคำสั่ง wget เพื่อดาวน์โหลดไฟล์ https://www.unzeen.com/article/3082/ https://www.unzeen.com/article/3082/#respond Mon, 08 Dec 2014 02:16:01 +0000 http://www.unzeen.com/?p=3082 wget เป็นคำสั่งที่ใช้ในการดาวน์โหลดไฟล์ที่นิยมใช้กันบน Linux ซึ่งปกติเราก็จะใช้ในการดาวน์โหลดไฟล์ซอสโค้ดหรือไฟล์โปรแกรมต่างๆ แต่ว่า wget ไม่ได้มีความสามารถแค่นั้น เรายังสามารถสั่งให้โหลดเฉพาะไฟล์ .pdf หรือไฟล์นามสกุลอื่นๆ จากทั้งเว็บไซต์มาเก็บไว้ที่เครื่องเราได้ หรือจะทำสำเนาทั้งเว็บไซต์ลงมาเก็บไว้เลยก็ยังได้ เดียวใช้งานยังไงมาดูกัน

1. อันนี้พื้นฐาน สั่งดาวน์โหลดไฟล์แค่ไฟล์เดียว ใช้คำสั่ง wget แล้วตามด้วย URL ของไฟล์ที่ต้องการ

$ wget http://www.linuxmint.com/documentation/user-guide/Cinnamon/english_17.0.pdf

2. หากต้องการเปลี่ยนชื่อไฟล์ด้วยหละก็ให้เพิ่มออปชั่น -O เข้าไป

$ wget -O Cinnamon.pdf http://www.linuxmint.com/documentation/user-guide/Cinnamon/english_17.0.pdf

3. จำกัดความเร็วของการดาวน์โหลดด้วยออปชั่น –-limit-rate

$ wget --limit-rate=200k http://www.linuxmint.com/documentation/user-guide/Cinnamon/english_17.0.pdf

4. ถ้าหากว่าโหลดไฟล์ไม่เสร็จเครื่องหยุดทำงานไปก่อน ให้เพิ่ม -c เพื่อสั่งให้โหลดต่อจากของเดิม

$ wget -c -O Cinnamon.pdf http://www.linuxmint.com/documentation/user-guide/Cinnamon/english_17.0.pdf

5. สั่งให้โหลดเป็นแบ็คกราวโพรเซส โดยเพิ่มออปชั่น -b โดยตัว wget จะสร้างล็อกไฟล์ชื่อ wget-log ขึ้นมา เราสามารถดูว่าโหลดถึงไหนแล้วได้จากล็อกไฟล์นี้

$ wget -b http://www.linuxmint.com/documentation/user-guide/Cinnamon/english_17.0.pdf

ดูล็อกไฟล์ว่าดาวน์โหลดถึงไหนแล้ว

$ tail -f wget-log

6. สำหรับบางเว็บไซต์ถูกจำกัดว่าจะต้องโหลดจากบราวเซอร์บางตัวเท่านั้น ให้เพิ่มออปชั่น –-user-agent เพื่อกำหนดให้เป็นบราวเซอร์ที่ต้องการ

$ wget --user-agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36" http://www.linuxmint.com/documentation/user-guide/Cinnamon/english_17.0.pdf

7. คราวนี้มาลองโหลดทีละหลายๆไฟล์บ้าง ให้ทำการใส่ชื่อ URL ที่ต้องการดาวน์โหลดไว้ในเท็กไฟล์ ในตัวอย่างผมตั้งชื่อว่า download-list.txt

download-list.txt

http://www.linuxmint.com/documentation/user-guide/Cinnamon/english_17.0.pdf
http://www.linuxmint.com/documentation/user-guide/Cinnamon/chinese_16.0.pdf
http://www.linuxmint.com/documentation/user-guide/Cinnamon/dutch_17.0.pdf
http://www.linuxmint.com/documentation/user-guide/Cinnamon/german_17.0.pdf

จากนั้นสั่งดาวโหลดทีละหลายๆไฟล์โดยเพิ่มออปชั่น -i แล้วตามดวยชื่อเท็กไฟล์ที่เราได้สร้างเตรียมไว้

$ wget -i download-list.txt

8. ต่อไปมาลองดาวน์โหลดเว็บไซต์ทั้งเว็บมาเก็บไว้ดูในเครื่องกันบ้าง โดยใช้ออปชั่น –-mirror และ ./www-local คือไดเร็กทอรี่ที่ต้องการให้เก็บข้อมูล

$ wget --mirror -p --convert-links -P ./www-local http://www.lookhin.com

9. คราวนี้ถ้าเราอยากได้แค่ไฟล์ที่มีนามสกุล .pdf จากเว็บไซต์ทั้งเว็บ เราก็ใช้คำสั่ง -r –-no-parent -A และตามด้วยนามสกุลของไฟล์ที่ต้องการ

$ wget -r --no-parent -A.pdf http://www.linuxmint.com/documentation/user-guide/

10. หากต้องการดาวน์โหลดไฟล์จาก FTP ก็สามารถทำได้เช่นกัน

$ wget --ftp-user=USERNAME --ftp-password=PASSWORD ftp://ftp.yourdomain.com/document/linux.pdf
]]>
https://www.unzeen.com/article/3082/feed/ 0
เปลี่ยนสีตัวอักษรและใส่ภาพพื้นหลังให้เมนูของ GRUB Bootloader https://www.unzeen.com/article/3066/ https://www.unzeen.com/article/3066/#respond Sat, 06 Dec 2014 13:57:05 +0000 http://www.unzeen.com/?p=3066 ปกติแล้วหลังจากที่เราติดตั้ง Linux เสร็จเรียบร้อย เวลาที่บูตเข้าระบบจะเจอกับหน้าจอของ GRUB Bootloader ซึ่งจะมีตัวอักษรสีขาวบนพื้นดำ หรือไม่ก็จะมี background ที่ติดมากับ Linux ที่เราติดตั้ง เราอาจจะไม่ค่อยชอบมันเท่าไรแต่ก็ต้องเจอทุกครั้งที่บูตเครื่องแน่นอน หลายคนอาจจะไม่ทราบว่าเราสามารถเปลี่ยนรูป background ตรงนี้ได้ ซึ่งขั้นตอนก็ไม่ได้ยุ่งยากอะไร เดียววันนี้เรามาลองทำการเปลี่ยนดู (ผมทดลองบน Linux Mint 17.1 นะครับ เข้าใจว่าสาย debian ก็น่าจะมีวิธีการคล้ายๆกันทั้งหมด)

เริ่มแรกหาภาพที่จะเอามาใช้เป็น background กันก่อนครับ โดยให้ใช้เป็นภาพ .PNG ขนาด 640*480 pixel และสี 8-Bit อันนี้ภาพตัวอย่างของผมนะครับ ไฟล์ภาพตัวอย่าง

เมื่อได้ภาพที่ต้องการแล้วให้ทำการแก้ไขไฟล์ /etc/default/grub.d/50_linuxmint.cfg

$ sudo nano /etc/default/grub.d/50_linuxmint.cfg

ให้ทำการเพิ่มคำสั่ง GRUB_BACKGROUND เข้าไป โดยในตัวอย่างผมจะเอาภาพไปไว้ที่ /usr/share/backgrounds/linuxmint-qiana/grub-boot.png นะครับ

GRUB_BACKGROUND="/usr/share/backgrounds/linuxmint-qiana/grub-boot.png"

grub-change-background-text-color

เมื่อทำการใส่ภาพพื้นหลังเรียบร้อยแล้ว เรามาจะทำการแก้ไขสีของตัวอักษรและสีพื้นหลังให้มันเข้ากับภาพที่เราใส่เข้าไปเมื่อสักครู่นี้

$ sudo nano /etc/grub.d/06_mint_theme

เพิ่มบรรทัดต่อไปนี้ลงไปในส่วนของ set_mono_theme() โดยมี format เป็น สีตัวอักษร/สีพื้นหลัง แต่เราถ้าใส่พื้นหลังเป็น black มันจะเป็น transparent นะครับ งงกับมันเหมือนกัน – -‘

set menu_color_highlight=black/green
set menu_color_normal=black/black
set color_normal=black/black

grub-change-background-text-color

โดยสีที่เราสามารถใส่ได้มีทั้งหมดดังนี้

black
blue
brown
cyan
dark-gray
green
light-cyan
light-blue
light-green
light-gray
light-magenta
light-red
magenta
red
white
yellow

ขั้นตอนสุดท้ายสั่ง update-grub

$ sudo update-grub

grub-change-background-text-color

เรียบร้อยแล้วครับ บูตเครื่องครั้งหน้าจะเจอกับหน้าจอ GRUB Bootloader ประมาณนี้ครับ

grub-change-background-text-color

]]>
https://www.unzeen.com/article/3066/feed/ 0
การตั้งเวลาของเครื่องเซิร์ฟเวอร์ CentOS 6.5 https://www.unzeen.com/article/3020/ https://www.unzeen.com/article/3020/#respond Tue, 14 Oct 2014 05:20:49 +0000 http://www.unzeen.com/?p=3020 พอดีว่าผมกำลังจะทำระบบล๊อกอินในหน้าเว็บไซต์ให้เป็น 2 Step Verification แบบ Time-based One-time Password เลยต้องทำการกำหนดค่าเวลาบนเซิร์ฟเวอร์ให้ตรงกับ NTP Server เลยถือโอกาสเอามาเขียนเก็บไว้หน่อยเป็นบันทึกช่วยจำ โดยจะลองเปลี่ยนทั้งค่า Time Zone ลองตั้งค่าเวลาเอง และกำหนดให้เซิร์ฟเวอร์ใช้ค่าเวลาจาก NTP Server ส่วนเรื่องการทำ Time-based One-time Password ไว้คราวหน้าจะเขียนอีกรอบหนึ่ง

อย่างแรกทำการตรวจสอบก่อนว่าระบบของเราตั้ง Time Zone เป็นประเทศไทยแล้วหรือยัง ด้วยคำสั่ง

cat /etc/sysconfig/clock

จะเห็นว่า Time Zone ปัจจุบันของเราเป็น America/New_York ซึ่งจะทำให้เวลาไม่ตรงกับเวลาในประเทศไทย
centos-set-timezone-ntp

ถ้าหากยังไม่ใช่ Time Zone ของประเทศไทย ให้ทำการเปลี่ยนด้วยการแก้ไข /etc/sysconfig/clock ให้เป็น ZONE=”Asia/Bangkok”

nano /etc/sysconfig/clock

centos-set-timezone-ntp

จากนั้นทำการอัพเดท Time Zone ด้วยคำสั่ง

tzdata-update

และทำการตรวจสอบเวลาปัจจุบัน

date

centos-set-timezone-ntp

หากต้องการตั้งเวลาใหม่ ให้ใช้คำสั่ง

date MMDDhhmmCCYY.ss

โดยความหมายของตัวอักษรแต่ละตัวดังนี้ครับ MM = month, DD = day, hh = hour, mm = minute, CCYY = 4 digit year, ss = seconds

ตัวอย่าง หากเราต้องการแก้ไขวันเวลาให้เป็นวันที่ 11 October 2014 เวลา 10.10 ก็จะสามารถสั่งได้ดังนี้

date 101110102014.00

หรือจะใส่แบบนี้ก็ได้เช่นกัน

date -s "10:10:00 October 11, 2014"

centos-set-timezone-ntp

จากนั้นเรามาลองทำการตั้งเวลาของเครื่องโดยใช้ Network Time Protocol (NTP) กันต่อเลยครับ เริ่มจากติดตั้ง package ntp กันก่อน

yum install ntp

centos-set-timezone-ntp

จากนั้นสั่งสตาร์เซอร์วิสและกำหนดให้ ntpd ทำงานทุกครั้งที่เปิดเครื่อง

service ntpd start
chkconfig ntpd on

centos-set-timezone-ntp

เรียบร้อยครับ เท่านี้เครื่องของเราก็จะมีเวลาที่ตรงกับ NTP Server แล้วครับ

]]>
https://www.unzeen.com/article/3020/feed/ 0
การบันทึกเสียงผ่าน USB Microphone และแปลงเสียงเป็นฟอร์แมตต่างๆ https://www.unzeen.com/article/2772/ https://www.unzeen.com/article/2772/#respond Sun, 06 Jul 2014 02:49:29 +0000 http://www.unzeen.com/?p=2772 หัวข้อนี้จะเป็นตัวอย่างการใช้ Raspberry Pi ต่อกับ USB Microphone เพื่อทำการบันทึกเสียง โดยไฟล์ที่บันทึกได้จะมีนามสกุลเป็น .wav และเราจะทำการแปลงเสียงเป็นฟอร์แมตต่างๆ โดยใช้ ffmpeg อีกทีนะครับ อย่างแรกก็ไปหาซื้อไมโคโฟนที่เป็นแบบ USB และทำการต่อสายต่างๆ ให้เรียบร้อย

raspberry-pi-microphone-sound-recorder

ทำการตรวจสอบหมายเลขไอดีและค่าของดีไวซ์ จากรูปจะเห็นว่าค่าของ Mic Capture Volume มี Values=0

amixer --card 1 contents

raspberry-pi-microphone-sound-recorder

ทำการปรับระดับความดังของไมโครโฟนให้ดังสุด (หรือจะไม่สุดก็แล้วแต่) โดยใส่ค่าได้ตั้งแต่ 0 – 16

amixer -c 1 cset numid=2 16

raspberry-pi-microphone-sound-recorder

ตรวจสอบไอดีของการ์ดที่จะใช้ในการบันทึกเสียง จากรูปเป็นการ์ดหมายเลข 1

arecord -l

raspberry-pi-microphone-sound-recorder

ทำการบันทึกเสียงโดยใช้คำสั่ง arecord โดยมีพารามิเตอร์ดังนี้ -d 5 หมายถึงให้บันทึกเสียงเป็นเวลา 5 วินาทีแล้วหยุด, -D plughw:1 ให้ใช้การ์ดหมายเลข 1, และ test.wav ให้บันทึกเป็นไฟล์ test.wav

arecord -d 5 -f cd -t wav -D plughw:1 test.wav

raspberry-pi-microphone-sound-recorder

เมื่อบันทึกเสร็จ ให้ทดสอบทำการเปิดเสียงที่บันทึกเมื่อสักครู่โดยใช้คำสั่ง aplay

aplay test.wav

raspberry-pi-microphone-sound-recorder

เมื่อได้ไฟล์เสียง .wav มาแล้ว เราสามารถแปลงเป็นฟอร์แมตต่างๆ ได้โดยใช้คำสั่ง ffmpeg ตัวอย่างเราจะแปลงเป็นไฟล์ .mp3 ก็ใช้คำสั่งดังนี้

ffmpeg -i test.wav test.mp3

raspberry-pi-microphone-sound-recorder

ถ้าเรียกใช้คำสั่ง ffmpeg แล้วไม่มีคำสั่งนี้อยู่ก็ให้ทำการติดตั้ง ffmpeg ก่อนนะครับ

sudo apt-get install ffmpeg
]]>
https://www.unzeen.com/article/2772/feed/ 0