Arief Yudhawarman

Masih belajar buat blog

Samba File Server Join Active Directory Dengan Ransomware Prevention and Detection

with one comment

Pada kesempatan ini penulis akan membahas instalasi dan setup Samba File Server di Ubuntu Server 16.04 LTS yang join Active Directory Windows 2008 R2 Enterprise dengan tambahan fitur Ransomware Prevention and Detection. Sebenarnya Server Windows mempunyai semacam komponen atau role bernama FSRM (File System Resource Manager) yang berfungsi untuk mencegah serangan ransomware (Anti Ransomware File System Resource Manager Lists) dengan mencocokkan file di server dengan database yang berisi koleksi nama file atau extension file ransomware.

Sedangkan kelebihan metode Ransomware Prevention and Detection versi penulis dengan FSRM adalah

  1. Memonitor perubahan extension file honeypot
  2. Memonitor penghapusan file honeypot
  3. Memonitor perubahan extension file ke extension ransomware
  4. Memonitor pembuatan ransomware note
  5. Memonitor perubahan extension common files seperti MS Office ke extension yang tidak umum

FSRM hanya menjalankan monitoring fungsi nomor 3 dan 4.

Langkah-langkah setup Linux Ubuntu Server 16.04 LTS untuk join AD (Active Directory) diambil dari artikel Integrate Ubuntu 16.04 to AD as a Domain Member with Samba and Winbind.

Data Active Directory (AD):

  • Server AD : Windows 2008 R2
  • Domain : TECMINT.LAN
  • IP Address : 192.168.150.57
  • DNS Server: 192.168.150.57

Konfigurasi Awal

Saat instal awal linux buat 3 partisi, partisi ‘/’ (root) dan ‘/home’ dengan file system ext4 serta satu partisi swap:

# <mount_point> <type> <options>
/  ext4  noatime,nodiratime,user_xattr,errors=remount-ro
/home  ext4  noatime,nodiratime,user_xattr,acl
/swap  swap

Setelah reboot edit file /etc/network/interfaces untuk setup ip address static dan dns nameserver. Lalu ubah nama server menjadi adc2.

# The primary network interface
auto ens18
iface ens18 inet static
	    address 192.168.150.50
	    netmask 255.255.255.192
	    gateway 192.168.150.62
	    dns-nameservers 192.168.150.57
	    dns-search tecmint.lan

Edit file /etc/resolv.conf

nameserver 192.168.150.57
search tecmint.lan

Edit file /etc/hosts

127.0.0.1	localhost
192.168.150.50  adc2.tecmint.lan adc2

Edit file /etc/hostname

adc2

Jalankan update dan upgrade: apt-get update && apt-get upgrade

Cek dns

root@adc2:~# host -t A tecmint.lan
tecmint.lan has address 192.168.150.57
    
root@adc2:~# host -t SRV _kerberos._udp.tecmint.lan
_kerberos._udp.tecmint.lan has SRV record 0 100 88 vmw2008r2e.tecmint.lan.
    
root@adc2:~# host -t SRV _ldap._tcp.tecmint.lan
_ldap._tcp.tecmint.lan has SRV record 0 100 389 vmw2008r2e.tecmint.lan.
    
root@adc2:~# host -t A vmw2008r2e.tecmint.lan
vmw2008r2e.tecmint.lan has address 192.168.150.57


Instal Paket

apt-get install samba krb5-config krb5-user winbind libpam-winbind libnss-winbind

Cek bahwa kerberos secara otomatis sudah setup REALM

root@adc2:~# grep TECMINT.LAN /etc/krb5.conf
        default_realm = TECMINT.LAN

Test Kerberos authentication against an AD administrative account and list the ticket.

root@adc2:~# kinit administrator
Password for administrator@TECMINT.LAN:  

root@adc2:~# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@TECMINT.LAN

Valid starting       Expires              Service principal
07/26/2023 15:29:12  07/27/2023 01:29:12  krbtgt/TECMINT.LAN@TECMINT.LAN
        renew until 07/27/2023 15:29:05


Edit file /etc/samba/smb.conf

[global]
   workgroup = TECMINT
   realm = TECMINT.LAN
   netbios name = ADC2
   security = ADS
   dns forwarder = 192.168.150.57

   idmap config * : backend = tdb
   idmap config * :range = 50000-1000000
	            
   template homedir = /home/%D/%U
   template shell = /bin/bash
   winbind use default domain = true
   winbind offline logon = false
   winbind nss info = rfc2307
   winbind enum users = yes
   winbind enum groups = yes

   vfs objects = acl_xattr
   map acl inherit = Yes
   store dos attributes = Yes

   usershare path =
   
   # for debugging
   log file = /var/log/samba/%m.log
   log level = 1 auth:5 winbind:5

Jalakan perintah testparm untuk melihat apakah konfigurasi smb.conf tidak mengandung kesalahan.

Edit file /etc/nsswitch.conf

passwd:         compat winbind
group:          compat winbind
shadow:         compat winbind
gshadow:        files

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Restart samba

systemctl restart smbd nmbd winbind

Join Ubuntu machine to Active Directory Server issuing the following command. Use the name of an AD DC account with administrator privileges.

root@adc2:~# net ads join -U Administrator
Enter Administrator's password:
Using short domain name -- TECMINT
Joined 'ADC4' to dns domain 'tecmint.lan'

root@adc2:~# net ads info testjoin
LDAP server: 192.168.150.57
LDAP server name: VMW2008R2E.tecmint.lan
Realm: TECMINT.LAN
Bind Path: dc=TECMINT,dc=ORG
LDAP port: 389 
Server time: Wed, 26 Jul 2023 15:53:19 WIB 
KDC server: 192.168.150.57
Server time offset: -11 


Restart winbind

systemctl restart winbind

Check id of domain admins and other user.

root@adc2:~# id Administrator
uid=50000(administrator) gid=50000(domain users) groups=50000(domain users),50001(denied rodc password replication group),50002(schema admins),50003(enterprise admins),50004(domain admins),50005(group policy creator owners)

root@adc2:~# id uadc1
uid=50001(uadc1) gid=50000(domain users) groups=50000(domain users)


Configure AD Accounts Authentication

In order to test if the Ubuntu machine was successfully integrated to realm run wbinfo command to list domain accounts and groups.

root@adc2:~# wbinfo --dc-info TECMINT
VMW2008R2E.tecmint.lan (192.168.150.57)

root@adc2:~# wbinfo -t
checking the trust secret for domain TECMINT via RPC calls succeeded

root@adc2:~# wbinfo -u
administrator
guest
krbtgt
uadc1
uadc2
uadc3
uadc4
uadc5
uadc6

root@adc2:~# wbinfo -g
domain computers
domain controllers
schema admins
enterprise admins
cert publishers
domain admins
domain users
domain guests
group policy creator owners
ras and ias servers
allowed rodc password replication group
denied rodc password replication group
read-only domain controllers
enterprise read-only domain controllers
dnsadmins
dnsupdateproxy

Di Server AD (Windows 2008) buka dos prompt dan lakukan ping ke hostname adc2.tecmint.lan (server linux).

C:\Users\Administrator>ping adc2.tecmint.lan

Pinging adc2.tecmint.lan [192.168.150.50] with 32 bytes of data:
Reply from 192.168.150.50: bytes=32 time<1ms TTL=64
Reply from 192.168.150.50: bytes=32 time<1ms TTL=64
Reply from 192.168.150.50: bytes=32 time<1ms TTL=64
Reply from 192.168.150.50: bytes=32 time<1ms TTL=64

Ping statistics for 192.168.150.50:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

Konfigurasi Autentikasi Akun Active Directory

Agar user AD (user domain) bisa autentikasi di server linux, jalankan pam-auth-update. Pilih semua profile PAM yang akan aktif:

PAM profiles to enable:
[*] Unix authentication
[*] Winbind NT/Active Directory authentication
[*] Register user sessions in the systemd control group hierarchy
[*] Create home directory on login

Edit file /etc/pam.d/common-account tambahkan baris berikut agar user domain yang berhasil autentikasi otomatis akan membuat direktori home

session    required    pam_mkhomedir.so    skel=/etc/skel/    umask=0022

Untuk tes autentikasi pada server linux dengan akun AD, gunakan parameter nama pengguna domain setelah perintah su -. Jalankan perintah id untuk mendapatkan info tambahan tentang akun AD.

root@adc2:~# su - administrator

administrator@adc2:~$ id
uid=50000(administrator) gid=50004(domain users) groups=50004(domain users),50000(BUILTIN\administrators),50001(BUILTIN\users),50008(schema admins),50009(enterprise admins),50011(domain admins),50012(group policy creator owners),50015(denied rodc password replication group)
    
administrator@adc2:~$ pwd
/home/TECMINT/administrator

Konfigurasi Samba di Server Linux untuk file sharing

Di server linux kita buat terlebih dahulu directory untuk sambashare dan recycle bin.

mkdir /home/NAS
chmod -R 775 /home/NAS
chown -R root:"Domain Admins" /home/NAS
mkdir /home/RECYCLE
chmod -R 775 /home/RECYCLE
chown -R root:"Domain Users" /home/RECYCLE

Selanjutnya edit file /etc/samba/smb.conf untuk mengaktifkan file sharing.

[global]
   workgroup = TECMINT
   realm = TECMINT.LAN
   netbios name = ADC2
   security = ADS
   dns forwarder = 192.168.150.57

   idmap config * : backend = tdb
   idmap config * :range = 50000-1000000
	    
   template homedir = /home/%D/%U
   template shell = /bin/bash
   winbind use default domain = true
   winbind offline logon = true
   winbind nss info = rfc2307
   winbind enum users = yes
   winbind enum groups = yes

   vfs objects = acl_xattr
   map acl inherit = Yes
   store dos attributes = Yes

   # Anti-ransom
   full_audit:failure = none
   full_audit:success = pwrite write rename unlink
   full_audit:prefix = IP=%I | USER=%u | MACHINE=%m | VOLUME=%S
   full_audit:facility = local5
   full_audit:priority = notice

[nas]
   comment = File Sharing
   path = /home/NAS
   read only = No
   browseable = yes
   # Option to enable audit for ransomware detection
   #vfs object = recycle full_audit
   vfs object = dfs_samba4 acl_xattr recycle full_audit
   recycle:repository = /home/RECYCLE
   recycle:keeptree = yes
   recycle:versions = yes
   recycle:touch = yes
   recylce:exclude_dir = /tmp /TMP /temp /TEMP
   recycle:exclude = *.TMP *.tmp *.temp ~$* *.log *.bak

[recycle]
   comment = Recycle
   path = /home/RECYCLE
   read only = yes
   browseable = No

Jalakan perintah testparm untuk melihat apakah konfigurasi smb.conf tidak mengandung kesalahan.

Restart service samba dengan perintah

systemctl restart smbd nmbd winbind

Manage Samba Share Permissions

The process of managing permissions can be done directly from Windows Explorer using Samba4 AD account with administrative privileges. First, create some folders, FAD, GAD, ITD using Windows Explorer.

We want to create some folders permission like table below

User ADFolders
FADGADITD
uadc1RWROX
uadc2RWROX
uadc3XRWRO
uadc4XRWRO
uadc5ROXRW
uadc6ROXRW
RW: Read Write Access, RO: Read Only Access, X: No Access

Login ke Windows sebagai administrator domain (Windows sudah join active directory). Buka windows explorer, klik Network lalu nama server samba (ADC2) lalu klik nama share (nas). Kemudian berturut-turut buat directory FAD, GAD dan ITD.

Sorot mouse di folder ITD, lalu klik Properties

Klik tab Security lalu klik tombol Edit.

Di kotak dialog Permissions, pilih group Everyone dan klik tombol Remove. Ulangi langkah yang sama untuk group ‘Domain Users’.

Klik tombol Apply lalu OK. Tampilan akan kembali ke ITD Properties.

Klik tombol Advanced lalu klik tombol Change Permissions

Klik tombol Add lalu masukkan user AD atau object name uadc5 lalu klik tombol Check Names, klik OK.

Di permission Full Control klik Allow lalu klik tombol OK.

Ulangi langkah yang sama untuk penambahan user AD uadc6.

Langkah selanjutnya adalah penambahan user uadc3 dan uadc4 dengan permission RO di folder ITD.

Masih di window Advanced Security Settings for ITD klik tombol Change Permission, klik tombol Add lalu masukkan nama object uadc3 klik tombol Check Names, klik OK. Setup permission read only mengikuti gambar di bawah. Setelah selesai klik tombol OK.

Ulangi langkah yang sama untuk penambahan user uadc4. Hasil akhir seperti gambar di bawah.

Lakukan hal yang sama untuk folder FAD dan GAD. Set permission masing-masing user mengikuti tabel folder permission di atas.

Mengatur permission untuk Samba Recycle Bin

Pengaturan permission untuk Recycle Bin dilakukan langsung di console dengan menggunakan aplikasi setfacl dan getfacl. Pertama buat directory FAD, GAD dan ITD di /home/RECYCLE lalu set permission dengan menyalin permission yang sudah ada.

cd /home/NAS/
mkdir /home/RECYCLE/FAD
chown -R administrator:"Domain Users" /home/RECYCLE/FAD
getfacl FAD | setfacl --set-file=- /home/RECYCLE/FAD
mkdir /home/RECYCLE/GAD
chown -R administrator:"Domain Users" /home/RECYCLE/GAD
getfacl GAD | setfacl --set-file=- /home/RECYCLE/GAD
mkdir /home/RECYCLE/ITD
chown -R administrator:"Domain Users" /home/RECYCLE/ITD
getfacl ITD | setfacl --set-file=- /home/RECYCLE/ITD

Kita bandingkan permission folder /home/NAS/ITD dengan /home/RECYCLE/ITD

root@adc2:~# getfacl /home/NAS/ITD
getfacl: Removing leading '/' from absolute path names
# file: home/NAS/ITD
# owner: administrator
# group: domain\040users
user::rwx
user:administrator:rwx
user:uadc5:rwx
user:uadc4:r-x
user:uadc3:r-x
user:uadc6:rwx
group::---
group:domain\040users:---
mask::rwx
other::---
default:user::rwx
default:user:administrator:rwx
default:user:uadc5:rwx
default:user:uadc4:r-x
default:user:uadc3:r-x
default:user:uadc6:rwx
default:group::---
default:group:domain\040users:---
default:mask::rwx
default:other::---

root@adc2:~# getfacl /home/RECYCLE/ITD
getfacl: Removing leading '/' from absolute path names
# file: home/RECYCLE/ITD
# owner: administrator
# group: domain\040users
user::rwx
user:administrator:rwx
user:uadc5:rwx
user:uadc4:r-x
user:uadc3:r-x
user:uadc6:rwx
group::---
group:domain\040users:---
mask::rwx
other::---
default:user::rwx
default:user:administrator:rwx
default:user:uadc5:rwx
default:user:uadc4:r-x
default:user:uadc3:r-x
default:user:uadc6:rwx
default:group::---
default:group:domain\040users:---
default:mask::rwx
default:other::---

Logoff dari mesin windows lalu login sebagai user uadc3. User ini mempunyai hak akses RW ke folder \\ADC2\nas\GAD. Buat file text baru, misal New Text Document.txt, dan simpan di folder tersebut. Lalu hapus filenya. Di server adc2 atau server samba, kita cek apakah filenya sudah masuk ke /home/RECYCLE/GAD.

root@adc2:~# ls -l /home/RECYCLE/GAD/
total 12
-rwxrwx---+ 1 uadc3 domain users  0 Oct 24 11:19 New Text Document.txt

Server Samba dengan Ransomware Detection and Prevention

Agar server samba bisa menjalankan Ransomware Detection and Prevention maka instal paket tambahan yang perlu

apt-get install sqlite3 liblogfile-rotate-perl libnet-ssh-perl libdbd-sqlite3-perl ipset libtry-tiny-perl mailutils zip unzip

Kemudian ikuti langkah-langkah di tulisan penulis sebelumnya Samba File Server Dengan Fitur Ransomware Detection and Prevention.

  • Konfigurasi rsyslog
  • Konfigurasi log rotate

Kemudian download source code aplikasi Ransomware Detecion and Prevention di sini. Atur penempatan file-filenya seperti di Readme.txt.

Jalankan script aplikasi melalui script init.

/usr/local/sbin/rwdetection.sh start

Cek apakah ada error saat eksekusi aplikasi dengan melihat log /var/log/RWDetection.err.log, jika isi file kosong berarti aplikasi berjalan normal. Status aplikasi bisa dilihat melalui script ini.

/usr/local/sbin/rwdetection.sh status

Jika normal maka akan tampil tulisan Ransomware Detection is running.

Lakukan simulasi serangan ransomware di shared folder seperti buat file baru dengan extension rrcc, hapus file honeypot, buat file ransomware note, dll.

Berikut contoh log /var/log/RWDetection.log hasil injeksi ransomware.

User AD TECMINT\uadc3 menghapus file honeypot A_DO_NOT_OPEN-ShahZeZ6.txt.

Nov 17 15:15:17 WARNING [honeypot deleted] TECMINT\uadc3 192.168.150.60 (192.168.150.60) deleting file 'A_DO_NOT_OPEN-ShahZeZ6.txt' at share 'GAD/honeypots/'

User AD TECMINT\uadc3 menjalankan ransomware Lockbit.

Nov 17 15:37:49 WARNING [found ransomware note] TECMINT\uadc3 192.168.150.60 (192.168.150.60) creating file 'Restore-My-Files' at share 'GAD/honeypots/'
Nov 17 15:37:49 WARNING [found ransomware extension] TECMINT\uadc3 192.168.150.60 (192.168.150.60) writing file 'A_DO_NOT_OPEN-ShahZeZ6.pdf.lockbit' at share 'GAD/honeypots/'
Nov 17 15:37:49 WARNING [extension honeypot changed] TECMINT\uadc3 192.168.150.60 (192.168.150.60) renaming file '0_DO_NOT_OPEN-ShahZeZ6.xlsx' to '0_DO_NOT_OPEN-ShahZeZ6.xlsx.lockbit' at share 'GAD/honeypots/'
Nov 17 15:37:49 WARNING [found ransomware extension] TECMINT\uadc3 192.168.150.60 (192.168.150.60) writing file 'A_DO_NOT_OPEN-ShahZeZ6.pdf.lockbit' at share 'GAD/honeypots/'
2023-11-17 15:37:49, WARNING Ban 192.168.150.60

Jalankan perintah ipset -L samba untuk menampilkan list ip yang di-ban oleh server samba.

root@adc2:~#  ipset -L samba
Name: samba
Type: hash:ip
Revision: 4
Header: family inet hashsize 1024 maxelem 65536 timeout 86400 comment
Size in memory: 256
References: 1
Members:
192.168.150.60 timeout 7444 comment "Ban: 192.168.150.60 (TECMINT\uadc3)"

Tulisan sebelumnya

Written by awarmanf

November 18, 2023 at 6:40 am

One Response

Subscribe to comments with RSS.

  1. […] Samba File Server Join Domain Active Directory dengan Ransomware Prevention and Detection […]


Leave a comment