Archive for the ‘Ubuntu’ Category
ติดตั้ง openldap บน ubuntu 24.04
ติดตั้ง OpenLDAP บน Ubuntu 24.04
1: อัปเดตระบบ
root@ldapserv:~# apt update && sudo apt upgrade -y
2: ติดตั้ง OpenLDAP และเครื่องมือที่เกี่ยวข้อง
root@ldapserv:~# apt install slapd ldap-utils -y
ระบบจะติดตั้ง slapd (OpenLDAP server) และ ldap-utils (เครื่องมือ CLI)
>> ใน Ubuntu 24.04 อาจไม่มี prompt ให้กำหนดรหัสผ่านของ admin (cn=admin) ในระหว่างติดตั้ง
Configuring slapd
Please enter the password for the admin entry in your LDAP directory.
Administrator password: xxxxx
Auto Start Service ตอนเปิดเครื่อง
#sudo systemctl enable slapd
3: ตั้งค่ารหัสผ่านสำหรับ LDAP admin ด้วย dpkg-reconfigure
ตั้งค่า config สำหรับ OPENLDAP ใหม่
root@ldapserv:~# dpkg-reconfigure slapd
คำถามที่คุณจะเจอ:
1. Omit OpenLDAP server configuration? → เลือก No
2. DNS domain name: → เช่น example.com
3. Organization name: → เช่น Example Inc
4. Administrator password: → ตั้งรหัสผ่าน
5. Database backend to use: → เลือก MDB (ค่าเริ่มต้น)
6. Remove the database when slapd is purged? → No
7. Move old database? → Yes
หลังจากนั้นระบบจะตั้งค่าฐานข้อมูลให้ใหม่ทั้งหมด
root@ldapserv:~# netstat -lntp
Active Internet connections (only servers)
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 17736/slapd <–OPENLDAP
tcp6 0 0 :::22 :::* LISTEN 823/sshd: /usr/sbin
tcp6 0 0 :::389 :::* LISTEN 17736/slapd
4: ทดสอบ LDAP ด้วย ldapsearch ตัวอย่าง omtel.co.th
การ search ข้อมูลจาก LDAP server เช่น omtelldap.omtel.co.th จำเป็นต้องทราบ:
1.Base DN (จุดเริ่มต้นของ directory tree ที่จะค้นหา เช่น dc=omtel,dc=co,dc=th)
2.Credentials (ถ้าต้อง bind ด้วย user/password)
3.Port ที่ใช้ (ปกติ 389 สำหรับ LDAP หรือ 636 สำหรับ LDAPS)
4.Filter ที่ต้องการค้นหา เช่น (objectClass=person) หรือ (uid=someone)
ldapsearch -x -H ldap://localhost -D “cn=admin,dc=omtel,dc=ltd” -w ‘รหัสผ่าน’ -b “dc=omtel,dc=ltd”
# extended LDIF
#
# LDAPv3
# base <dc=omtel,dc=co,dc=th> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# omtel.co.th
dn: dc=omtel,dc=co,dc=th
objectClass: top
objectClass: dcObject
objectClass: organization
o: omptelldap
dc: omtel
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
แบบนี้ถือว่าสำเร็จแล้ว!
การตอบกลับจาก ldapsearch ของคุณ:
•แสดงว่าเชื่อมต่อกับ LDAP server ได้สำเร็จ (result: 0 Success)
•มีการคืนค่า entry ของ dc=omtel,dc=co,dc=th ได้ 1 รายการ (root entry ของ directory tree)
•ไม่มี error ใด ๆ เช่น invalid credentials หรือ no such object
ขั้นตอนถัดไป (หากต้องการ):
5. หากต้องการ:
•สร้าง OU (organizationalUnit) เช่น People, Groups
•เพิ่มผู้ใช้ เช่น uid=tee,ou=People,…
ให้ใช้ไฟล์ .ldif เช่น:
ตัวอย่าง: add_base.ldif
dn: ou=People,dc=omtel,dc=co,dc=th
objectClass: organizationalUnit
ou: People
dn: uid=tee,ou=People,dc=omtel,dc=co,dc=th
objectClass: inetOrgPerson
cn: Naitinoi Sak
sn: Sak
uid: tee
userPassword: {SSHA} password
root@ldapserv:~# ldapadd -x -D “cn=admin,dc=omtel,dc=co,dc=th” -w ‘LDAP Password’ -f add_base.ldif
adding new entry “ou=People,dc=omtel,dc=co,dc=th”
adding new entry “uid=tee,ou=People,dc=omtel,dc=co,dc=th”
root@ldapserv:/home/teee# cat add_people_ou.ldif
dn: ou=People,dc=omtel,dc=co,dc=th
objectClass: organizationalUnit
ou: People
#ldapadd -x -D “cn=admin,dc=omtel,dc=co,dc=th” -w ‘xxxxPassxxxxx’ -f add_people_ou.ldif
root@ldapserv:/home/teee# cat gen-user.sh
#!/bin/bash
# BASE DN
BASE_DN=”dc=worldinfinity,dc=co,dc=th”
echo “==== สร้าง LDIF สำหรับเพิ่มผู้ใช้ LDAP ====”
read -p “Login (uid): ” LOGIN
read -p “Full Name (ชื่อ-นามสกุล): ” FULLNAME
# แยกชื่อกับนามสกุล
FIRSTNAME=$(echo “$FULLNAME” | cut -d’ ‘ -f1)
LASTNAME=$(echo “$FULLNAME” | cut -d’ ‘ -f2)
read -s -p “Password: ” PASSWORD
echo
# เข้ารหัสรหัสผ่าน
ENCRYPTED_PASS=$(slappasswd -s “$PASSWORD”)
# สร้าง LDIF
LDIF_FILE=”user_${LOGIN}.ldif”
cat < “$LDIF_FILE”
dn: uid=$LOGIN,ou=People,$BASE_DN
objectClass: inetOrgPerson
uid: $LOGIN
cn: $FULLNAME
sn: $LASTNAME
givenName: $FIRSTNAME
userPassword: $ENCRYPTED_PASS
EOF
echo “✅ ไฟล์ LDIF ถูกสร้างแล้ว: $LDIF_FILE”
root@ldapserv:/home/teee# cat list_ldap_users.sh
#!/bin/bash
# LDAP base และข้อมูลการล็อกอิน
BASE_DN=”ou=People,dc=worldinfinity,dc=co,dc=th”
BIND_DN=”cn=admin,dc=worldinfinity,dc=co,dc=th”
read -s -p “กรุณาใส่รหัสผ่านของ LDAP admin: ” LDAP_PASS
echo
echo “📋 รายชื่อผู้ใช้ใน $BASE_DN:”
echo “——————————-”
ldapsearch -x -D “$BIND_DN” -w “$LDAP_PASS” -b “$BASE_DN” “(objectClass=inetOrgPerson)” uid cn sn dn | \
awk ‘
BEGIN { user = “” }
/^dn:/ { if (user != “”) print user; user = $0 }
/^uid:/ { user = user “\n ” $0 }
/^cn:/ { user = user “\n ” $0 }
/^sn:/ { user = user “\n ” $0 }
END { if (user != “”) print user }
‘ | less
root@ldapserv:/home/teee# cat delete_ldap_user.sh
#!/bin/bash
# ฐานข้อมูล LDAP
BASE_DN=”dc=worldinfinity,dc=co,dc=th”
OU=”People”
# Admin DN และรหัสผ่าน
LDAP_ADMIN_DN=”cn=admin,$BASE_DN”
read -s -p “กรุณาใส่รหัสผ่านของ LDAP admin: ” LDAP_ADMIN_PASS
echo
# รับ UID จากผู้ใช้
read -p “กรอก UID ของผู้ใช้ที่ต้องการลบ: ” UID
# DN ที่จะลบ
USER_DN=”uid=$UID,ou=$OU,$BASE_DN”
# ยืนยันการลบ
read -p “คุณแน่ใจหรือไม่ว่าต้องการลบผู้ใช้ $USER_DN ? (y/n): ” CONFIRM
if [[ “$CONFIRM” != “y” ]]; then
echo “❌ ยกเลิกการลบ”
exit 1
fi
# ลบด้วย ldapdelete
ldapdelete -x -D “$LDAP_ADMIN_DN” -w “$LDAP_ADMIN_PASS” “$USER_DN”
# ตรวจสอบสถานะ
if [ $? -eq 0 ]; then
echo “✅ ลบผู้ใช้ $UID สำเร็จแล้ว”
else
echo “❌ ล้มเหลวในการลบผู้ใช้ $UID (อาจไม่มีอยู่จริงหรือรหัสผ่านผิด)”
fi
สามารถ Connect Test จากโปรแกรม LDAP Client Test เช่น
https://jxplorer.org/downloads/users.html
https://sourceforge.net/projects/ldapadmin/files/ldapadmin/1.8.3/
ตัวอย่าง
Ubuntu Netplan 24.04 Example- Proxmox
root@ldapserv:/etc/netplan# nano 50-cloud-init.yaml
network:
version: 2
ethernets:
ens18:
dhcp4: no
addresses:
– 192.168.100.30/24
routes:
– to: default
via: 192.168.100.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
root@ldapserv:/etc/netplan# netplan apply
WARNING:root:Cannot call Open vSwitch: ovsdb-server.service is not running.
root@ldapserv:/etc/netplan# sudo systemctl status openvswitch-switch
Unit openvswitch-switch.service could not be found.
root@ldapserv:/etc/netplan# apt install openvswitch-switch -y
[*] systemd-logind.service
ตั้งให้เริ่มทำงานอัตโนมัติทุกครั้งที่บูต:
root@ldapserv:/etc/netplan# systemctl enable openvswitch-switch
Synchronizing state of openvswitch-switch.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable openvswitch-switch
Ubuntu แก้ไข motd
ปิดระบบ dynamic MOTD (ให้แสดงแค่ /etc/motd)
sudo chmod -x /etc/update-motd.d/*
sudo nano /etc/motd
ตั้งค่า Static IP ให้กับ Linux Ubuntu
#cd /etc/netplan# ls -l
#nano 50-cloud-init.yaml
network:
version: 2
ethernets:
ens160:
dhcp4: false
addresses:
– 192.168.100.22/24 # Replace with your desired IP and subnet
routes:
– to: default
via: 192.168.100.1 # Replace with your gateway IP
nameservers:
addresses:
– 8.8.8.8 # Google DNS
– 8.8.4.4 # Google DNS
# Restart Interface Card
#netplan apply
หรือให้ใช้งาน DHCP
network:
version: 2
ethernets:
ens160: # Replace with your Interface name
dhcp4: true
#netplan apply