Monday, June 10, 2024

How to find and kill a MySQL process

  • ปกติจะ kill process จาก phpmyadmin แต่มันค้างทำไงล่ะ
Solved
  • เข้าผ่าน CLI ด้วยสิทธิ์ที่ประมาณ root เลย
  • จากนั้นแสดง process list โดย
mysql > show processlist;
  • มันจะแสดงรายการ process mysql ที่กำลังดำเนินการอยู่ หน้าสุด จะแสดง id
  • ให้เรา เอา id นั้นมา ทำลายได้เลยโดย (สมมุติจะ kill id 123)
mysql > kill [id]
mysql > kill 123
Ref
  • https://phoenixnap.com/kb/how-to-kill-mysql-process
  • https://docs.pantheon.io/guides/mariadb-mysql/kill-mysql-queries

Wednesday, June 5, 2024

Firebase web push notify

Ref

https://www.youtube.com/watch?v=iz5arafmatc

https://firebase.google.com/docs/cloud-messaging/concept-options

https://www.youtube.com/watch?v=r7vBNDL6NUE

https://www.youtube.com/watch?v=9qIIjv17IgQ

Tuesday, June 4, 2024

ทบทวน change owner file and folder linux command

$ sudo chown myuser myfile

$ sudo chown -R myuser myfolder

หัดใช้ Fail2ban ใน Ubuntu

  • ประเด็นคือ late limit login failed สำหรับ web site ที่เราพัฒนาเอง
  • การทำงานก็จะประมาณมี service สักตัวคอยไป monitor log ไฟล์ ถ้าเจอสิ่งผิดปกติตามเงื่อนไขที่ตั้งไว้ตาม  filter เราก็จะให้ action อะไรบ้าง ประมาณนี้
  • สิ่งที่จะคอนฟิก คือ drop package ไว้ด้วย firewall สัก 1 ชั่วโมง ถ้า login web site ล้มเหลวประมาณ 5 ครั้งในระยะเวลาช่วง 10 นาที เป็นต้น
Env
  • Fail2Ban v0.10.2

Step

  • ติดตั้ง fail2ban ด้วยคำสั่ง

$ sudo apt install fail2ban

  • เมื่อติดตั้งเรียบร้อยตรวจสอบสถานะ (มันจะทำงานเป็น service ตัว 1 ในระบบเรา)

$ sudo systemctl status fail2ban 

  • ถ้ายังไปเปิดใช้ก็ start มันซะ

$ sudo systemctl start fail2ban

  • อ้างอิงที่ Ubuntu 22.04 มันจะตั้งค่า [default] ไว้ให้แล้วซึ่ง enabled = false ซึ่ง  [jail] แต่ละอันจะใช้ค่า default ก็ได้ หรือจะกำหนดสำหรับแต่ละ  jail ก็ได้เช่นกัน
  • ที่นี้เรามาสร้าง filter กันก่อนเลย
  • ขั้นแรกสร้างไฟล์ /etc/fail2ban/jail.local เพิ่ม

$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

  • กำหนด whitelist ip default เอาไว้ใช้กับทุก jail (ประมาณบรรทัดที่ 92)

$ sudo nano /etc/fail2ban/jail.local

  • มันถูก comment ไว้อยู่เอา  เช่น เราจะทำ whitelist ip ให้ range 192.168.1.0/24 หรือ อันเดียว 192.168.2.3 

ignoreip = 192.168.1.0/24 192.168.2.3

  • แต่เราสามารถตั้งค่า ignoreip ให้แต่ละ jail แยกกันก็ได้คือกัน โดยวาง ignoreip=xxx ไว้ภายใต้ [jail] แต่ละอัน
  • findtime อันนี้คือ ภายในกี่่นาที ที่เจอ filter เราตั้งค่าไว้ใน log (หน่วยคือ จำนวนครั้งที่นับได้จาก log file เราเงื่อนไขใน filter file ของเรา สามารถกำหนดยแยก jail  ได้เช่นกัน)
  • bantime คือ กำหนดเวลาในการ action ของเราเช่น สั่งให้ firewall block การเข้าถึง server เรากี่นาที่ นับการ monitor เจอ filter ใน log ครบตาม findtime (หน่วยถ้าไม่มีระบุต่อท้าย ค่าเริ่มต้นคือ วินาที สามารถกำหนดแยก jail ได้เช่นกัน)
  • เช่น bantime = 60 หรือ bantime = 60m , bantime = 1h 
  • เริ่มผูกการ monitor กับ web site ที่เราเขียนขึ้นมาโดย
  • เปิดไฟล์ jail.local เพิ่ม jail ของ site เรา

$ sudo nano /etc/fail2ban/jail.local

  • ตัวอย่างตั้งชื่อ jail ว่า[mysite1]
  • enabled = true ก่อนเลย
  • ให้ใช้ filter ชื่อ mysite1
  • ให้ใช้ action คือ iptable (block เลย), linenotify( อันนี้เพิ่ม  action เอง)
  • ให้เรียก monitor file ที่ /var/log/apache/mysite-access.log เช่น ถ้าพบ login failed ใน log

192.168.1.3 - - [04/Jun/2024:11:24:25 +0700] "GET /mygroup/user/loginerror HTTP/1.1" 200 581 "https://mysite.go.th/....

  • ตั้งค่า findtime = 10m คือ ภายในระยะเวลา 10 นาที ถ้า เจอ log ดังตัวอย่าง maxretry = 5 คือ 5 ครั้ง และ bantime = 60m ให้ทำการ block ip ที่พบใน log 60 นาที
  • ให้ action สั่ง iptable เพิ่ม policy block ip นั้น และ ส่ง line notify ให้ admin ด้วย
  • ที่นี้เราต้องเพิ่ม filter สำหรับ jail mysite1 เราโดย

$ sudo /etc/fail2ban/filter.d/mysite1.conf

  • เพิ่มประมาณนี้ และ บันทึกไฟล์ให้เรียบร้อย
  • สุดท้ายเพิ่ม action config file อันที่เราจะใช้ส่ง linenotify อันนี้เราต้องสร้างเอง (action iptables-multiport ใช้สำหรับ block โดย ip อันนี้เป็น action ที่มีให้แล้วแค่เรียกใช้มัน)
$ sudo /etc/fail2ban/action.d/send-line.conf
  • ตัวอย่าง send-line.conf ตอนแรกใช้ curl ส่งเลย แต่มันไม่สะดวก เลยเขียน shell script แยกแล้วเรียกใช้แทนเมื่อ ban และ unban
  • บันทึกให้เรียบร้อย และสั่ง restart service

$ sudo /etc/init.d/fail2ban restart

  • ตรวจสอบสถานะการทำกงาน

$ sudo fail2ban-client status mysite1


  • ถ้าทุกอย่างปกติ จะขั้น detail การ monitor ของ jail นั้นๆ ดังภาพตัวอย่าง

เพิ่มเติม

  • คำสั่งสำหรับดูการทำการว่ามี jail อะไรใช้งานอยู่บ้าง

$ sudo fail2ban-client status

  • ดูเป็นราย jail ด้วยคำสั่ง

$ sudo fail2ban-client status mysite1

  • ดู activity ของ service ทำงานอย่างไรบ้าง 

$ sudo fail2ban-client -d

  • สั่งให้ ban / unban โดยตรงโดย

$ sudo fail2ban-client set [jail-name] ban|unbanip [ip]

$ sudo fail2ban-client set myjail unbanip 192.168.1.2

$ sudo fail2ban-client set myjail banip 192.168.1.2 

  • ลองเปลี่ยนจาก iptable มาใช้ ufw แทนโดย เปลี่ยนค่าของแต่ะล jail ในไฟล์ jail.local
action = iptables-multiport[name=http, port="http,https", protocol=tcp, http-status=429]
action = ufw[application=Apache] # ถ้าเราไม่ใส่ [] มันจะ reject ทุก port (Apache Full ใส่แล้วไม่ทำงานซะงั้น ต้องไปสร้าง ufw app profile name เพิ่มเอานะคับ)

  • บันทึกและ restart service และ ตรวจสอบ ufw status

$ sudo systemctl restart fail2ban

$ sudo ufw status verbose 

  • เพิ่มให้อีกนิด เราจะดู app list ของ ufw โดย

$ sudo ufw app list

  • แล้วถ้าเราต้องการ custom applist ของเราเอาโดย 

$ sudo nano /etc/ufw/applications.d/apache2-utils.ufw.profile 

[MYHTTP]

title=Web Server (HTTP,HTTPS)

description=Apache v2 is the next generation of the omnipresent Apache web server.

ports=80,443/tcp

  • เราก็นำชื่อ application profile ใหม่นี้ไปกำหนด ufw ใน jail เช่น
action = ufw[application=MYHTTP] # reject port 80, 443 เป็นต้น  

  • หรือเราจะสร้าง คอนฟิกไฟล์ profile ใหม่ แล้ววางไว้ภายใต้ /etc/ufw/applications.d/myprofile แล้วเอา section ด้านบนใส่ในไฟล์แล้วบันทึก ก็จะได้ profile ใหม่มาใช้ได้เช่นกัน

Ref

  • https://bornoe.org/blog/2023/09/basic-fail2ban-commands/
  • https://zaiste.net/security/howtos/how-to-setup-fail2ban-ubuntu-18-04/
  • https://confluence.atlassian.com/adminjiraserver0820/using-fail2ban-to-limit-login-attempts-1095777624.html
  • https://araideesite.wordpress.com/2017/03/26/linenotify-part8/
  • https://manpages.debian.org/testing/fail2ban/jail.conf.5.en.html
  • https://serverfault.com/questions/285256/how-to-unban-an-ip-properly-with-fail2ban
  • https://bobcares.com/blog/fail2ban-unban-ip/
  • https://www.youtube.com/watch?v=tCHLrC93KhE
  • https://askubuntu.com/questions/409013/how-do-you-create-an-app-profile-for-ufw

Add a user and grant root privileges on Ubuntu 18.04

  • เพิ่ม user ใหม่ ด้วยคำสั่ง (user ใหม่ที่เพิ่มจะได้กลุ่มใหม่เป็นชื่อ user ด้วย)

# adduser myuser1

  • กรอกข้อมูล profile user ใหม่ หรือ ไม่กรอกก็ได้ สุดท้ายกด Y
  • เพิ่มสิทธิ์ให้ user ใหม่มีสิทธิ์เหมือน root

# visudo หรือ # nano /etc/sudoers.tmp 

  • มองหา

root ALL=(ALL:ALL)ALL

  • เพิ่มบรรทัดนี้ต่อจาก root เพื่อให้ myuser1 มีสิทธิ์เท่า root

myuser1 ALL=(ALL:ALL)ALL

  • กรณีเราจะกำหนดให้ user ที่อยู่ใน group myuser1 ให้มีสิทธิ์เท่า root กำหนดประมาณนี้

%myuser1 ALL=(ALL:ALL)ALL

เพิ่มเติม

  • อีกวิธีคือกำหนดให้ user ใหม่เข้ากลุ่ม sudo ด้วยโดย

$ sudo usermod -aG sudo myuser1

Ref

  • https://www.liquidweb.com/kb/add-user-grant-root-privileges-ubuntu-18-04/

Close root user ubuntu 22.04

  • ประเด็นคือ จะปิดการใช้ user root ใน Ubuntu 
  • เช่น login ด้วย user อื่นที่มีสิทธิ์ root แล้ว su root หรือ sudo -i จะใช้ไม่ได้นะจ้ะ

$ sudo cp /etc/passwd /etc/passwd.old

$ sudo nano /etc/passwd

  • ค้นหาบรรทัดประมาณนี้

root:x:0:0:root:/root:/bin/bash

  • แก้ไขเป็น

root:x:0:0:root:/root:/bin/nologin

เพิ่มเติม

  • คุณต้องแน่ใจว่า มีการกำหนด user อื่นที่มีสิทธิ์เท่า root แล้ว
  • เราคอนฟิกปิด root แล้วคิดว่า ไม่ต้องไปคอนฟิกปิดการ remote ด้วย root ก็น่าจะไม่มีปัญหา
  • แต่ถ้าจะมั่นใจคอนฟิกปิดการ remote ด้วย root (เข้าใจว่าค่า default มันถูกปิดอยู่แล้วนะ)
sudo nano /etc/ssh/sshd_config
  • แก้ไขบรรทัดนี้เป็น no
PermitRootLogin no

Set password complexity policy on Ubuntu 18.04++

  • ประเด็นคือจะตั้ง policy ในการกำหนดรหัสผ่านของ user ที่จะเพิ่มในระบบ  Ubuntu 18.04++
  • เช่น ต้องมีจำนวน 8 ตัวขึ้นไป และมี Upper char อย่างน้อย 1 ตัว และ Lower char และ Digit อย่างน้อย 1 ตัว และ Symbol อย่างน้อย 1 ตัว และ กำหนด อายุของรหัสผ่าน สามารถใช้ได้กี่วันแล้วต้องเปลี่ยนใหม่เป็นต้น

Step

  • ติดตั้ง lib ที่ต้องใช้งานก่อนเลย

$ sudo apt install libpam-pwquality

  • สำหรับสำรองไฟล์คอนฟิก policy ก่อนแก้ไข

$ sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.old

  • จากนั้นเปิดไฟล์แก้ไข 

$ sudo nano /etc/pad.d/common-password

  • ค้นหาบรรทัดประมาณนี้

password    requisite    pam_pwquality.so    retry=3

  • แก้ไขเป็น (คอมเม้นแล้ว โดยใส่เครื่องหมาย  # ด้านหน้าสุด แล้วเพิ่มบรรทัดใหม่)
  • อันนี้ตัวอย่างตามอ้างอิง

# password    requisite    pam_pwquality.so retry=3 minlen=8 difok=3 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 reject_username enforce_for_root

  • เราตั้ง policy เบาๆ ประมาณนี้ก็พอ

password    requisite    pam_pwquality.sol    retry=3    minlen=8    lcredit=-1    ucredit=-1 dcredit=-1    ocredit=-1   
 

  • จากนั้นบันทึกไฟล์ให้เรียบร้อย
  • เข้าใจว่า policy น่าจะมีผลกับการ เปลี่ยนรหัสใหม่ หรือ เพิ่ม user เข้ามาใหม่นะ
  • และ การกำหนดอายุของรหัสผ่านโดยแก้ไขไฟล์ /etc/login.defs (อย่าลืมสำรองไว้ด้วยกันเหนียว)

$ sudo nano /etc/login.defs

# line 165 : set password Expiration days (example below means 60 days)

PASS_MAX_DAYS 60

Ref

  • https://kifarunix.com/enforce-password-complexity-policy-on-ubuntu-18-04/
  • https://www.server-world.info/en/note?os=Ubuntu_22.04&p=pam&f=1#google_vignette

Friday, May 31, 2024

ทบทวน ​Permission linux file & folder

ตัวอย่าง

เพิ่ม-ลด สิทธิ์ให้เจ้าของ file / folder (คือไม่ต้องใส่ u/g/o นำหน้า operator)

# chmod +r myfile

# chmod +rwx myfile

# chmod -r myfile

# chmod -rwx myfile

# chmod -rw myfolder

การจัดการ permission สำหรับแต่ละประเภท user

# chmod ugo+rwx myfile

# chmod g+rw myfile

# chmod go-rw myfile 

# chmod u=rwx,g=rx myfile

# chmod -R u=rwx,go=rx myfolder

# chmod ugo=rwx myfile

# chmod a=rwx myfile

# chmod -R ug=rwx myfolder

Ref

  • https://www.pluralsight.com/blog/it-ops/linux-file-permissions
  • https://stackoverflow.com/questions/17091300/linux-set-permission-only-to-directories

Friday, May 17, 2024

Add user linux to group

  • ประเด็นคือ มี user ในระบบแต่ build docker compose ไม่ได้ ทำไงล่ะ
  • วิธีแรก ให้ root build แทน
  • วิธีสอง เพิ่ม group docker ให้กับ user นั้นก็จะ build compose ให้คำสั่ง docker ได้

เพิ่ม/ลบ/แสดง groups 

$ sudo groupadd mygroups

$ sudo groupdel mygroup

$ sudo grep mygroup /etc/group 

ดู group ของ user โดย

$ groups myuser

mygroup : mygroup

หรือ ดู group ของ user ที่กำลังทำงานอยู่คือ

$ groups

myuser docker

เพิ่ม user เข้าใน group โดย

 # usermod -aG mygroup myuser

Exam: เพิ่ม myuser เข้ากลุ่ม docker 

# usermod -aG docker myuser

Exam: จะเพิ่ม myuser ให้อยู่ในกลุ่ม sudo เพื่อจะได้สิทธิ์เหมือนเป็น root เลยโดย

# usermod -aG sudo myuser

ลบ user ออกจาก group

# gpasswd -d myuser mygroup

หรือ 

# deluser myuser mygroup

เพิ่มเติม

  • การดู group สามารถดูได้จาก user ใหนก็ได้
  • แต่การเพิ่ม group น่าจะต้องใช้สิทธิ์ root , sudo ทำเท่านั้น

Ref

  • https://www.strongdm.com/blog/add-user-to-linux-group
  • https://www.tecmint.com/add-or-remove-user-from-group-in-linux/
  • https://www.pluralsight.com/blog/tutorials/linux-add-user-command

Sunday, March 24, 2024

Authentication plugin 'caching_sha2_password' cannot be loaded

  • ประเด็นมีอยู่ว่า mysql client บน Window 10 จะ remote connect MySQL บน Ubuntu 22.04 ซึ่งน่าจะติดตั้ง MySQL 8.0 ไว้นะคิดว่า

mysql -h remote_host -u user -p

  • แล้วได้ error ดังหัวเรื่อง

Authentication plugin 'caching_sha2_password' cannot be loaded

  • แต่ลองทดสอบ remote  connect ด้วย navicat client กลับเชื่อมต่อได้ซะงั้น
  • ทดสอบบน window เครื่องอื่น ก็ได้ error แบบเดียวกัน
  • สรุปคือ MySQL ตอนสร้าง user และ password ค่าเริ่มต้นการเข้ารหัสจะเป็น sha2 แน่เลย
  • ซึ่งทำให้ mysql client ที่ใช้ version เก่าอยู่ไม่มีตัว plugin sha2 authen แน่ๆ เลย
  • แก้ปัญหาโดย เปลี่ยนการ authen ของ user นั้นเป็นแบบ standard

Solved

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newrootpassword';

Ref

  • https://stackoverflow.com/questions/49194719/authentication-plugin-caching-sha2-password-cannot-be-loaded

Install Java SKD 11 on MacOS ARM

  • ประเด็นคือเขียน flutter โดยใช้ Android Studio  จะติดตั้งบน Android Mobile debug mode
  • แต่ฟ้องล้มเหลวประมาณว่า ต้องการ java 11 ซะงั้น 

Step

$ brew install java11

  • path ที่ติดตั้งน่าจะอยู่ประมาณ /opt/openjdk11 ประมาณนี้
  • ตั้งค่าให้เลือกใช้ได้แบบ global ประมาณนี้

$ sudo ln -sfn /opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk

  • ตรวจสอบเวอร์ชั่น java

$ java --version

Ref

  • https://medium.com/@kirebyte/using-homebrew-to-install-java-jdk11-on-macos-2021-4a90aa276f1c

CLI HTTP and API testing client for the API era.

  • ประเด็น ใช้ curl บน ubuntu 22.04 แล้วคิดว่ามันเอ๋อ (จริง เป็นที่โค้ดตัวเองเน้นๆ ที่มั่วเอง)
  • เลยลองหา cli http client มาใช้ทดสอบดูสิ ว่าได้ผลลัพธ์แบบ curl หรือป่าว
  • สรุปคือได้ผลเหมือนกันกับ curl แต่ก็ดีมี tool ตัวอื่น ไว้ใช้อีกตัว ง่ายๆ เหมือน curl

Install on ubuntu 22.04

$ snap install httpie

Usage ex

$ https httpie.io/hello

$ http PUT pie.dev/put X-API-Token:123 name=John

$ http -f POST pie.dev/post hello=World

Ref

  • https://httpie.io/cli

Monday, February 12, 2024

How to Execute a POST Request with JSON Payload with cURL

  • ทดสอบใช้ CURL บน linux Ubuntu 22.04 เพื่อทดสอบ Restfull api

Pattern

curl -X POST [URL] -H "Content-Type: application/json" -d [JSON_PAYLOAD]

Ex

curl -X POST http://example.com/api/data -H "Content-Type: application/json" -d '{"name": "John Doe", "age": 25}'

curl -X POST http://example.com/api/data -H "Content-Type: application/json" -d @data.json
Ref

  • https://tecadmin.net/post-json-data-with-curl-command/
  • https://www.linode.com/docs/guides/curl-for-rest-api/

Thursday, February 1, 2024

Add Multiple Hosts in phpMyAdmin

  • ปกติเราจะติดตั้ง phpmyadmin ไว้กับเครื่องที่มีฐานข้อมูลอยู่
  • แต่อยากใช้ phpmyadmin กับ remote host อื่นๆ ด้วย

Env

  • Ubuntu 22.04 + Nginx + PHP 8.3 + MySQL 
  • phpmyadmin 5.2.1

Method

  • ดาวน์โหลด zip file จาก https://www.phpmyadmin.net/downloads/ 
  • นำไปวางและแตกไฟล์ไว้ /var/www/html/phpmyadmin
  • จากนั้น คัดลอกไฟล์ชื่อ config.sample.inc.php  -> config.inc.php
  • แล้วเพิ่มประมาณนี้

  • ทดสอบระบบ http://localhost/phpmyadmin

Ref

  • https://tecadmin.net/add-multiple-hosts-in-phpmyadmin/

Tuesday, January 9, 2024

node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by node)

$ node -v

node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by node)

Solved

  • ปัญหาคือ Ubuntu version เราไม่ support nodejs v 20
  • ทางแก้คือ upgrade os ubuntu ให้สูงกว่า 18.04
  • หรือ เปลี่ยน nodejs กลับไปเป็น version 16 คือเก่า ในที่นี้เราจะใช้ nvm (ตัวติดตั้งโดยเลือก เวอร์ชั่นที่เราต้องการได้เลย ) ติดตั้งและตั้งค่าไปใช้อันที่ติดตั้งใหม่
  • ขั้นแรกต้องลง nvm ให้ระบบเราก่อน

$ sudo curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

$ sudo nano $HOME/.bashrc

  • เพิ่มไว้ด้านล่างสุดของไฟล์ .bashrc

check=' export NVM_DIR="$HOME/.nvm"'

if ! grep -qF "$check" ~/.bashrc; then

    echo "" >>~/.bashrc

    echo "# Add NVM to path" >>~/.bashrc

    echo 'export NVM_DIR="$HOME/.nvm"' >>~/.bashrc

    echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >>~/.bashrc

    echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"' >>~/.bashrc

fi

  • จากนั้นใช้ สลับกลับไปใช้อันเดิมโดย (เราจะได้  16 -> 16.20.2)

$ nvm install 16 

$ nvm use 16

Add

  • ถ้าเราต้องใช้ติดตั้ง node lts version ล่าสุดใช้คำสั่ง 

$ nvm install --lts

  • ติดตั้งโดยระบุเวอร์ชั่น ล่าสุดของ 16 -> 16.20.2

$ nvm install 16

  • หรือติดตั้งระบุเวอร์ชั่นแบบระบุ 16.15.1 (Ubuntu 18.04 apt install nodejs จะได้เวอร์ชั่นนี้)

$ nvm install 16.15.2

  • กรณีสลับ version การ node ที่เราได้ติดตั้งไว้แล้วในระบบคือ

$ nvm use 16.15.1

$ nvm use 18 (อันนี้ก็ใช้ใน Ubuntu 18.04 ไม่ได้เช่นกัน)

$ nvm use 20

  • เช็ค GLIB ของ OS เราด้วยคำส่ง

$ ldd --version

Ref

  • https://stackoverflow.com/questions/72921215/getting-glibc-2-28-not-found

Resetting an out-of-range resolution Ubuntu 22.04

ปัญหา

  • ใช้ XORG Desktop  แล้วปรับ resolution สูงเกินไป monitor แสดง out-of-range resolution 
  • พอ restart ขึ้นหน้า login เข้า XORG Desktop มันก็แสดง resolution out of range เหมือนเดิม
  • ประเด็นที่ต้องใช้ XORG อยู่คือ Wayland ใช้ Shutter กับ Barrier มันไม่เสถียร เลย

Solved

Method 1 ใช้ Wayland แทน 

  • เข้าหน้า login แล้วเลือก Wayland Desktop แทน

Method2 ถ้าจะใช้ XORG Desktop เหมือนเดิม 

  • พอเข้าหน้า Login ให้สลับ shell โดยกดปุ่ม Ctrl+Alt+F2
  • login  CLI ด้วย user และ password ที่เราใช้เข้าระบบ  และ ลบ ~/.config/monitors.xml

$ rm ~/.config/monitors.xml

$ sudo reboot 

Ref

  • https://wiki.ubuntu.com/X/Config/Resolution

Tuesday, January 2, 2024

How to secure MongoDB with username and password

  • อ้างอิงบน Mogodb 6.0.12 ($ mongos --version)
  • คอนฟิกให้ remote ด้วย user & password จาก host ใหนก็ได้

$ sudo cp /etc/mongod.conf /etc/mongod/conf.old

$ sudo nano /etc/mongod.conf

......

# enable authen username & password

security:

  authorization: enabled

..........

# allow any remote

net:

    # bindIp: 127.0.0.1,192.168.1.0/24

    bindIp: 0.0.0.0

  • เพิ่ม User ผูกกับ db นั้น
  • โดยจัดการอยู่ที่  mogodb server ใช้ mongosh

$ mongosh

> use admin

> db.createUser({

  user: "myadmin",

  pwd: "password",

  roles: [ { role: "root", db: "mydb" } ]

}) 

  • ทดสอบ remote mongodb จาก client เครื่องอื่น

$ mongosh --host IPMongodb --port 27017 -u "myadmin" -p "password" --authenticationDatabase "mydb"

Ref

  • https://stackoverflow.com/questions/4881208/how-to-secure-mongodb-with-username-and-password
  • https://tecadmin.net/how-to-install-mongodb-on-ubuntu-22-04/

Popular Posts