2025-03-20

Smile PMS: Tăng hiệu suất quản trị bằng truy vấn SQL Server

Smile PMS là một bộ phần mềm quản lý khách sạn nổi tiếng ở Việt Nam. Trong quá trình vận hành, IT khách sạn có thể gặp khó khăn trong một số đầu việc như sửa lỗi hoặc kiểm soát phân quyền.

Smile PMS sử dụng SQL Server database, do đó, nếu có kỹ năng về quản lý SQL Server thì bạn sẽ tiết kiệm được rất nhiều thời gian trong quản trị hệ thống và hỗ trợ vận hành phần mềm.

Khuyến cáo: Làm việc trực tiếp với database rất nguy hiểm nếu có sai sót, do đó IT nên restore các bản backup để làm việc trên môi trường thử nghiệm.

Sau đây là một số tình huống và hướng dẫn xử lý, cập nhật thời điểm 03/2025:

  1. Tìm lỗi nhập liệu


Lỗi vì nhập liệu quá dài vượt quá phạm vi cho phép là lỗi rất phiền toái, rất hay xảy ra đối với Smile, đặc biệt là thời điểm sáng sớm, làm IT bị réo tên khi còn chưa mở mắt. Nguyên nhân là phía Smile lập trình không tốt, không có lồng điều kiện xác thực đầu vào để ngăn người dùng nhập quá kí tự, và Smile cũng thường đặt số kí tự cho phép khá nhỏ.

Phần note cho từng folio trước đây được thiết lập tối đa 760 kí tự rất hay bị lỗi, gần đây họ đã tăng lên 1500 kí tự đã thoải mái hơn trước.

Tuy nhiên, các trường khác có thể gặp lỗi như FirstName, LastName. Sau đây là các ví dụ để tìm các trường hay gặp lỗi nhập liệu vượt quá kí tự:

Tìm các folio có trường vượt quá số kí tự cho phép có ngày Arrival từ 08/03/2025 trở đi:

Đối với khách lẻ:


SELECT
FolioNum,ArrivalDate,DepartureDate,RoomCode,Notice,ConfirmNum,ReservationClerkID,LastName,FirstName
FROM SMILE_FO.dbo.Folio
WHERE ArrivalDate >= '2025-03-08'
AND (LEN(Notice) >= '1500'
OR LEN(FirstName) >= '100'
OR LEN(LastName) >= '100'
);


Đối với khách đoàn:



SELECT GroupCode,GroupName,FirstArrivalDate,PrivateRemark,CompanyName,CreateClerk
FROM SMILE_FO.dbo.GroupFolio
WHERE FirstArrivalDate >= '2025-03-08'
AND (Len(GroupName) >= '100'
OR Len(PrivateRemark) >= '1000'
);



2. Truy vấn các sai sót trong phân quyền


Vì việc phân quyền trên giao diện đồ họa của Smile hơi rườm rà và khó nhìn, do đó IT có thể xảy ra sai sót khi tiến hành phân quyền. Nhiều khi bảng phân quyền có sự thay đổi, hoặc IT mới vào thay IT cũ, việc rà soát lại các phân quyền là công việc thường xuyên phải làm.

Hiển thị phân quyền của một user:


SELECT *
FROM [SMILE_FO].[dbo].[ClerkPermission]
WHERE ClerkID = 'username'


Danh sách user (chỉ ID) đang hoạt động được phân các quyền cụ thể:


SELECT *
FROM [SMILE_FO].[dbo].[ClerkPermission]
WHERE FunctionID in ('ROverBookAll', 'CHTransactionAudit')
AND ClerkID IN (
SELECT [ClerkID]
FROM [SMILE_FO].[dbo].[Clerk]
WHERE DisabledFlag='0'
)


Lệnh trên sẽ liệt kê những user đang có quyền ROverBookAll hoặc CHTransactionAudit.

Danh sách user (hiển thị thêm LastName) đang hoạt động được phân các quyền cụ thể:


SELECT ClerkPermission.*, Clerk.LastName
FROM [SMILE_FO].[dbo].[ClerkPermission]
JOIN [SMILE_FO].[dbo].[Clerk]
ON ClerkPermission.ClerkID = Clerk.ClerkID
WHERE ClerkPermission.FunctionID in ('ROverBookAll', 'OverBookType')
AND Clerk.DisabledFlag='0'


hoặc

SELECT cp.*, c.LastName
FROM [SMILE_FO].[dbo].[ClerkPermission] cp
JOIN [SMILE_FO].[dbo].[Clerk] c
ON cp.ClerkID = c.ClerkID
WHERE cp.FunctionID in ('FDFutureAvailability', 'MONightAudit')
AND c.DisabledFlag='0'




Lịch sử thay đổi phân quyền của một user:


SELECT *
FROM [SMILE_FO].[dbo].[ClerkChanges]
WHERE ClerkID = 'username'


Lời kết: Từ những truy vấn trên, chúng ta có thể thực hiện các truy vấn khác tùy nhu cầu công việc, và sửa đổi lại thông tin trong database nếu có đủ quyền hạn và kỹ năng để đảm bảo an toàn cho dữ liệu.

2021-07-31

Hướng dẫn cài đặt email Zimbra 8.8.15 trên CentOS 8 mô hình single-server

Zimbra là một bộ phần mềm email server mã nguồn mở bên cạnh phiên bản trả phí, có rất nhiều tính năng và sự ổn định, được nhiều doanh nghiệp, các nhà cung cấp dịch vụ email và các cơ quan Nhà nước tại Việt Nam sử dụng nhằm mục đích tối ưu chi phí và chủ động kiểm soát bảo mật thông tin.

Nhân dịp cài đặt máy chủ email Zimbra cho một công ty thực hiện vào 5/2021, viethoangit.com đăng tải hướng dẫn cài đặt để mọi người tham khảo, nếu thấy có sai sót nào mong mọi người bình luận bên dưới bài viết.

Trong quá trình cài đặt có tham khảo tài liệu Triển khai hệ thống Zimbra mô hình Multi-Server từ công ty Iway của anh Trương Anh Tuấn (iwayvietnam.com).

I. KẾ HOẠCH CÀI ĐẶT


Hướng dẫn này dành cho phiên bản Zimbra 8.8.15 collaboration open source edition cài đặt trên 1 máy chủ CentOS 8 (mô hình Single-Server).

Tên miền giả định được sử dụng trong bài viết là mail.viethoangit.com. 
IP giả định là 192.168.16.235 (thay bằng IP public của bạn trong thực tế).

Thứ tự cài đặt:


Bước 1. Cài đặt hệ điều hành máy chủ CentOS 8

Bước 2. Cấu hình các bản ghi quan trọng: A, MX, SPF, PTR

Bước 3. Cài đặt Zimbra

Bước 4. Cấu hình bảo mật cho Zimbra: SSL, DKIM, DMARC

Bước 5. Các cấu hình bổ sung khác (tùy chọn)

Các bước từ bước 1 tới bước 4 là bắt buộc phải thực hiện để đảm bảo máy chủ email chạy đúng và an toàn, giảm thiểu nguy cơ bị virus, spam, phising…

Bước thứ 5 có thể thực hiện hoặc không tùy bạn, nó chỉ là một số cài đặt trong số rất nhiều những cài đặt khác có hướng dẫn ở trên internet tùy theo nhu cầu của người quản trị.

II. CHUẨN BỊ MÔI TRƯỜNG MÁY CHỦ


1. Đặt time zone:

timedatectl set-timezone Asia/Ho_Chi_Minh

2. Cài đặt RAM ảo:


sysctl vm.swappiness=5

Giá trị 5 nghĩa là RAM ảo chỉ sử dụng khi hết 95% RAM vật lý.

Check giá trị swappiness hiện tại:

cat /proc/sys/vm/swappiness

3. Cài đặt đồng bộ thời gian:


Trên CentOS 8 đã cài sẵn chrony

Để kiểm tra dùng lệnh: chronyc sources

4. Tắt dịch vụ postfix


systemctl stop postfix && systemctl disable postfix

5. Update hệ thống:


yum -y update

6. Đặt hostname:


hostnamectl set-hostname mail.viethoangit.com

Thêm hostname vào file /etc/hosts:

echo "192.168.16.235 mail.viethoangit.com mail" >> /etc/hosts

7. Tắt SELinux:


Tắt Selinux tạm thời để tránh lỗi khi cài đặt:

setenforce 0

Nếu trong quá trình sử dụng Zimbra phát sinh lỗi do Selinux thì bạn có thể tắt nó:

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

Kiểm tra SELinux bằng lệnh:

sestatus

Hiển thị “SELinux status: disabled” là thành công.

Bật lại selinux:

sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/sysconfig/selinux

sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config

8. Cài đặt các gói hỗ trợ:


yum -y install unzip net-tools bind-utils sysstat openssh-clients perl-core libaio nmap-ncat libstdc++.so.6 wget

III. CẤU HÌNH CÁC BẢN GHI QUAN TRỌNG


1. Cấu hình bản ghi A và MX

Bản ghi có dạng

mail A 192.168.16.235

@ MX mail.viethoangit.com 10

Kiểm tra bản ghi MX bằng lệnh:

nslookup -type=mx viethoangit.com

hoặc

dig mx viethoangit.com +noall +answer

Hoặc kiểm tra qua link: https://mxtoolbox.com/

2. Cấu hình SPF (Sender Policy Framework)

Cấu hình bản ghi DNS:

- Tên máy chủ: @
- Loại: TXT
- Địa chỉ chuỗi dạng: v=spf1 +a +mx +ip4:192.168.16.235 ~all

Xem thêm hướng dẫn từ nhà cung cấp domain để biết chi tiết.

Kiểm tra SPF:

dig txt viethoangit.com +noall +answer

hoặc

nslookup -type=txt viethoangit.com

Nếu không thành công sẽ có dòng thông báo “does not designate”.

Hoặc kiểm tra qua link: https://mxtoolbox.com/
 

3. Cấu hình PTR record (rDNS)


Yêu cầu bên quản lý IP (nếu thuê tại data center) hoặc bên quản lý đường truyền (nếu thuê leased-line, ftth có IP tĩnh) trỏ PTR từ IP.

Ví dụ bản ghi có dạng:

192.168.16.235.in-addr. arpa IN PTR mail.viethoangit.com

Kiểm tra bản ghi PTR:

dig -x 192.168.16.235 +noall +answer

hoặc

nslookup -type=ptr 192.168.16.235

IV. CÀI ĐẶT ZIMBRA


1. Tải Zimbra:

cd /var/tmp

wget https://files.zimbra.com/downloads/8.8.15_GA/zcs-8.8.15_GA_3953.RHEL8_64.20200629025823.tgz

wget https://files.zimbra.com/downloads/8.8.15_GA/zcs-8.8.15_GA_3953.RHEL8_64.20200629025823.tgz.sha256

2. Giải nén Zimbra:


tar -xvzf zcs-8.8.15_GA_3953.RHEL8_64.20200629025823.tgz

3. Cài đặt Zimbra:


cd zcs-8.8.15_GA_3953.RHEL8_64.20200629025823

./install.sh

Chọn Y ở tất cả các tùy chọn:

(Chọn N ở “Install zimbra-dnscache” nếu muốn sử dụng server DNS riêng)



Đến đoạn thông báo về DNS error:
DNS ERROR resolving mail.viethoangit.com

It is suggested that the hostname be revolvable via DNS

Change hostname? [Yes]

Đặt thành viethoangit.com (không có “email.”)


Đến đoạn thông báo về DNS error resolving MX:


Đổi lại thành viethoangit.com (không có “email.”):

Màn hình thông báo như hình dưới:


Tiếp theo màn hình sẽ hiển thị như bên dưới:


Chọn 7 để vào “zimbra-store”, sau đó chọn 4 để vào set “Admin Password”.


Nhấn “r” để quay lại menu chính.

Nhấn “a” để chấp nhận các thay đổi.

Hệ thống sẽ tiến hành các thiết lập cuối, chờ một khoảng thời gian đến khi xuất hiện thông báo bên dưới là đã hoàn tất cài đặt:

Configuration complete - press return to exit

4. Tạo SSH key cho tài khoản zimbra:


Mặc định Zimbra sẽ tạo một tài khoản nhưng tắt login bằng mật khẩu, Zimbra Collaboration Suite kết nối với user này bằng ssh keys, cấu hình như sau:

# sudo -u zimbra -i

$ zmupdateauthkeys

Updating keys for webmail.example.com
Fetching key for webmail.example.com
Updating keys for webmail.example.com
Updating /opt/zimbra/.ssh/authorized_keys

5. Hiển thị thống kê trên Administration console


[root@mail ~]# /opt/zimbra/libexec/zmsyslogsetup

Terminal hiển thị:

updateSyslog: Updating /etc/rsyslog.conf...done.

6. Mở port trên firewall:


firewall-cmd --permanent --add-port={25,80,110,143,443,465,587,993,995, 2703,5222,5223,7071,8443,9071,24441}/tcp

firewall-cmd --permanent --add-port=24441/udp

firewall-cmd –reload

Kiểm tra:

firewall-cmd --list-all

7. Kiểm tra các dịch vụ của Zimbra


Đăng nhập vào tài khoản được cấp quyền chạy Zimbra:

su zimbra

Chạy lệnh kiểm tra:

zmcontrol status

8. Kiểm tra đăng nhập vào giao diện quản trị:


https://mail.viethoangit.com:7071/zimbraAdmin/

V. CẤU HÌNH BẢO MẬT CHO ZIMBRA


Lưu ý: Không gửi email trước khi hoàn tất phần cấu hình để tránh bị cho vào blacklist.

1. Bật tự động quét file đính kèm bằng ClamAV antivirus:


# su - zimbra

$ zmprov mcf zimbraAttachmentsScanURL clam://localhost:3310/

$ zmprov mcf zimbraAttachmentsScanEnabled TRUE

2. Cấu hình SSL


Hướng dẫn cấu hình SSL miễn phí: Letsencrypt ssl certificate

Cấu hình certbot-auto làm theo hướng dẫn tại:

https://wiki.zimbra.com/wiki/Installing_a_LetsEncrypt_SSL_Certificate

Nếu lỗi system không hỗ trợ certbot-auto thì làm theo các bước bên dưới như các hướng dẫn này:

https://certbot.eff.org/lets-encrypt/centosrhel8-other

https://snapcraft.io/docs/installing-snap-on-centos

Adding EPEL cho CentOS 8

$ sudo dnf install epel-release

$ sudo dnf upgrade

Installing snapd

$ sudo yum install snapd

Bật snapd socket:

$ sudo systemctl enable --now snapd.socket

Bật hỗ trợ classic snap:

$ sudo ln -s /var/lib/snapd/snap /snap

Đảm bảo phiên bản mới nhất của snapd:

sudo snap install core

sudo snap refresh core

Xóa certbot-auto và bất kỳ Certbot OS packages:

sudo yum remove certbot.

Cài đặt Certbot

sudo snap install --classic certbot

Warning: /var/lib/snapd/snap/bin was not found in your $PATH. If you've not restarted your session
since you installed snapd, try doing that. Please see https://forum.snapcraft.io/t/9469
for more details.
certbot 1.15.0 from Certbot Project (certbot-eff✓) installed

[root@mail letsencrypt]# ln -s /snap/bin/certbot /usr/bin/certbot

[root@mail letsencrypt]# certbot certonly --standalone

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel): admin@viethoangit.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: n
Account registered.
Please enter in your domain name(s) (comma and/or space separated) (Enter 'c' to cancel): mail.viethoangit.com
Requesting a certificate for mail.viethoangit.com
Performing the following challenges:
http-01 challenge for mail.viethoangit.com
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/mail.viethoangit.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/mail.viethoangit.com/privkey.pem
Your certificate will expire on 2021-09-09. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Chuẩn bị cho Certbot command

Thực thi lệnh dưới để đảm bảo cerbot command có thể chạy

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Chạy Certbot

Trường hợp không chạy web server

sudo certbot certonly –standalone

Trường hợp web server đang chạy:

sudo certbot certonly --webroot

Important Note:

To use the webroot plugin, your server must be configured to serve files from hidden directories. If /.well-known is treated specially by your webserver configuration, you might need to modify the configuration to ensure that files inside /.well-known/acme-challenge are served by the webserver.

Thử nghiệm gia hạn tự động

Các gói Certbot trên hệ thống của bạn đi kèm với cron job hoặc systemd timer sẽ tự động gia hạn chứng chỉ của bạn trước khi chúng hết hạn. Bạn sẽ không cần phải chạy lại Certbot, trừ khi bạn thay đổi cấu hình của mình. Bạn có thể kiểm tra tính năng gia hạn tự động cho các chứng chỉ của mình bằng cách chạy lệnh sau:

sudo certbot renew --dry-run


Lệnh gia hạn certbot được cài đặt ở một trong các vị trí sau:

/etc/crontab/

/etc/cron.*/*

systemctl list-timers

Phần này ví dụ về renew khi có webserver HAProxy trên cùng máy chủ:
If you needed to stop your webserver to run Certbot, you'll want to add hook scripts to stop and start your webserver automatically. For example, if your webserver is HAProxy, run the following commands:

sudo sh -c 'printf "#!/bin/sh\nservice haproxy stop\n" > /etc/letsencrypt/renewal-hooks/pre/haproxy.sh'
sudo sh -c 'printf "#!/bin/sh\nservice haproxy start\n" > /etc/letsencrypt/renewal-hooks/post/haproxy.sh'
sudo chmod 755 /etc/letsencrypt/renewal-hooks/pre/haproxy.sh
sudo chmod 755 /etc/letsencrypt/renewal-hooks/post/haproxy.sh

Xây dựng CA trung gian thích hợp cộng với Root CA

Let's Encrypt gần như hoàn hảo, nhưng trong quá trình tạo tệp, họ chỉ thêm tệp chain.pem mà không cần root CA. Bạn phải sử dụng IdenTrust root Certificate và hợp nhất nó sau chain.pem

Copy chuỗi kí tự tại link này: https://letsencrypt.org/certs/trustid-x3-root.pem.txt

Dán vào hàng cuối cùng của tệp chain.pem tại đường dẫn:

/opt/zimbra/ssl/letsencrypt/chain.pem

Verify your commercial certificate.

Copy thư mục Let's Encrypt /etc/letsencrypt/live/$domain vào /opt/zimbra/ssl/letsencrypt:

mkdir /opt/zimbra/ssl/letsencrypt

cp /etc/letsencrypt/live/mail.viethoangit.com/* /opt/zimbra/ssl/letsencrypt/

chown zimbra:zimbra /opt/zimbra/ssl/letsencrypt/*

ls -la /opt/zimbra/ssl/letsencrypt/

su zimbra

cd /opt/zimbra/ssl/letsencrypt/

/opt/zimbra/bin/zmcertmgr verifycrt comm privkey.pem cer

** Verifying 'cert.pem' against 'privkey.pem'
Certificate 'cert.pem' and private key 'privkey.pem' match.
** Verifying 'cert.pem' against 'chain.pem'
Valid certificate chain: cert.pem: OK

Deploy the new Let's Encrypt SSL certificate

Backup thư mục Zimbra SSL

cp -a /opt/zimbra/ssl/zimbra /opt/zimbra/ssl/zimbra.$(date "+%Y%m%d")

Copy the private key under Zimbra SSL path

Trước khi triển khai Chứng chỉ SSL, bạn cần di chuyển privkey.pem theo đường dẫn thương mại SSL Zimbra, như sau:

cp /opt/zimbra/ssl/letsencrypt/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key

Deploy:

$ cd /opt/zimbra/ssl/letsencrypt/

[zimbra@mail letsencrypt]$ /opt/zimbra/bin/zmcertmgr deploycrt comm cert.pem chain.pem


Khởi động Zimbra sau đó vào website để kiểm tra xem SSL đã hoạt động hay chưa:

su zimbra

zmproxyctl start

zmmailboxdctl start

Kiểm tra chất lượng SSL

https://www.ssllabs.com/ssltest/

Điểm A+ là tốt.

Nếu chưa đạt điểm A+ thì có thể tối ưu theo gợi ý trong bài này:

https://zimico.vn/lam-cach-nao-de-dat-diem-a-cho-ssl-test-tren-zimbra/

3. Cấu hình DKIM



Login vào tài khoản Zimbra

su zimbra

Đăng ký khóa DKIM

[zimbra@mail root]$ /opt/zimbra/libexec/zmdkimkeyutil -a -d viethoangit.com

DKIM Data added to LDAP for domain viethoangit.com with selector F9202012-A733-11EB-9336-EE4F3EDFDAF2

Public signature to enter into DNS:

F9202012-A733-11EB-9336-EE4F3EDFDAF2._domainkey IN TXT ( "v=DKIM1; k=rsa; "

"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4YUv3Obt2v/wEPkzQ1asRq0UgC+5/FrlZNLjj0MLTrM+PzdNzx0a+12LTTpcG3GIunpmFsBxUxZ3Ax969q0thqUerRe4To/dpTc+pOFr21yimV7RXL4xQxDH1f1qBYoBGj4sJqeQqLNDQmI3ZLf8CFGa+exkh8uiDgbUg8b3BqeooizoL1X7dRI9tuioxvkILubCncKDvHTtIR"

"PpulJDOCvIYJLB7WJK2sPqo0FXd3gfyrG2QJcshsHBaAxDF0iZnCoaFq4fJCDHcj6e79WBjA9IZpbw1KwO8+JPdLf2N/JqC3AtyfbNRLFhbYKNYyyLZXhDIRxRSAHLJ97wdY/oFwIDAQAB" ) ; ----- DKIM key F9202012-A733-11EB-9336-EE4F3EDFDAF2


Tạo bản ghi trên DNS của tên miền:

Host record: F9202012-A733-11EB-9336-EE4F3EDFDAF2._domainkey

Type: TXT

Value:

v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4YUv3Obt2v/wEPkzQ1asRq0UgC+5/FrlZNLjj0MLTrM+PzdNzx0a+12LTTpcG3GIunpmFsBxUxZ3Ax969q0thqUerRe4To/dpTc+pOFr21yimV7RXL4xQxDH1f1qBYoBGj4sJqeQqLNDQmI3ZLf8CFGa+exkh8uiDgbUg8b3BqeooizoL1X7dRI9tuioxvkILubCncKDvHTtIRPpulJDOCvIYJLB7WJK2sPqo0FXd3gfyrG2QJcshsHBaAxDF0iZnCoaFq4fJCDHcj6e79WBjA9IZpbw1KwO8+JPdLf2N/JqC3AtyfbNRLFhbYKNYyyLZXhDIRxRSAHLJ97wdY/oFwIDAQAB

Lưu ý: xóa bỏ đấu “ (ngoặc kép) và khoảng trắng giữa 2 đoạn mã.
 
Check DKIM record

Cú pháp: dig txt selector._domainkey.domain

dig txt F9202012-A733-11EB-9336-EE4F3EDFDAF2._domainkey.viethoangit.com +noall +answer

hoặc

nslookup -type=txt F9202012-A733-11EB-9336-EE4F3EDFDAF2._domainkey.viethoangit.com

Hoặc kiểm tra online tại các link:

http://dkimvalidator.com

http://dkimcore.org/tools/keycheck.html

https://mxtoolbox.com/dkim.aspx
 

4. Cấu hình DMARC


Tạo bản ghi DMARC

Có thể vào trang sau: https://www.kitterman.com/dmarc/assistant.html


Ví dụ mẫu DMARC:

Host record: _dmarc

Type: TXT

Value: 
v=DMARC1; 
p=quarantine; rua=mailto:admin@viethoangit.com; 
ruf=mailto:admin@viethoangit.com; sp=quarantine

DMARC này có policy là quarantine. Tất cả các email không thỏa mãn điều kiện kiểm tra DKIM, SPF sẽ bị reject và gửi báo cáo về cho admin@viethoangit.com.

Lưu ý chỉ sử dụng _dmarc (không có dấu chấm (.) phía sau) trong DNS record. (Việc này tùy vào nhà cung cấp dịch vụ tên miền cho bạn quy định, vui lòng liên hệ với họ để được hướng dẫn).

Kiểm tra:

dig txt _dmarc.viethoangit.com +noall +answer

hoặc

nslookup -type=txt _dmarc.viethoangit.com

hoặc

Sau khi đã thiết lập xong có thể gửi mail đến gmail để kiểm tra. Xem trong phần show original sẽ báo PASS cho SPF, DKIM và DMARC.

Hoặc kiểm tra trên https://mxtoolbox.com

Ghi chú: Sau khi đã cấu hình đầy đủ DKIM, DMARC, có thể dùng Mail Tester (www.mail-tester.com) để kiểm tra. Gửi mail đến địa chỉ mail được chỉ định đang hiển thị trên trang web sau đó click và nút check, bạn sẽ biết điểm đánh giá, thường thì hệ thống cần đạt từ 8,5-10 điểm.

VI. CÁC CẤU HÌNH KHÁC (tùy chọn)


1. Cấu hình Antispam bổ sung
 
1. 1. Customizing SpamAssassin

Automatic rule updates

$ zmlocalconfig antispam_enable_rule_updates

antispam_enable_rule_updates = false

$ zmlocalconfig antispam_enable_restarts

antispam_enable_restarts = false

$ zmlocalconfig -e antispam_enable_rule_updates=true
$ zmlocalconfig -e antispam_enable_restarts=true

Automatic rule compilation

$ zmlocalconfig -e antispam_enable_rule_compilation=true

$ zmamavisdctl restart

$ zmmtactl restart

1. 2. Customizing Postfix

zmprov ms mail.viethoangit.com +zimbraMtaRestriction reject_unknown_reverse_client_hostname

1. 3. SpamAssassin Tweaks via the Commandline
 
Increase Amavis's Log Level

zmprov mcf zimbraAmavisLogLevel 2

Put Amavis's Temp Dir on a RAM Disk

zmamavisdctl stop

mount -t tmpfs -o size=1024m tmpfs /opt/zimbra/data/amavisd/tmp

Kiểm tra: mount | grep "tmpfs"

Auto-mount:

vi /etc/fstab

Chèn dòng bên dưới vào file:

tmpfs /opt/zimbra/data/amavisd/tmp tmpfs defaults,noexec,nodev,nosuid,size=1024m,mode=750,uid=zimbra,gid=zimbra 0 0

1. 4. Enable DCC

yum -y install gcc

mkdir -p /opt/zimbra/dcc-2.3.168

chown zimbra:zimbra /opt/zimbra/dcc-2.3.168

cd /opt/zimbra;ln -s dcc-2.3.168 dcc

su zimbra

cd /tmp

mkdir dcc

wget https://www.dcc-servers.net/dcc/source/dcc.tar.Z

tar xfz dcc.tar.Z

cd dcc-2.3.168

./configure --homedir=/opt/zimbra/dcc-2.3.168 \--disable-sys-inst --with-uid=zimbra --disable-server \--disable-dccifd --disable-dccm \--with-updatedcc_pfile=/opt/zimbra/data/dcc \--with-rundir=/opt/zimbra/data/dcc/run \--bindir=/opt/zimbra/dcc-2.3.168/bin

make

make install

cd /opt/zimbra/data

mkdir -p dcc/run

Update /opt/zimbra/data/spamassassin/localrules/sauser.cf

use_dcc 2

dcc_path /opt/zimbra/dcc/bin/dccproc

Restart Amavis

zmamavisdctl restart

2. Giới hạn gửi nhận email với Policyd


Ghi chú: Các bạn nên làm theo hướng dẫn mới hơn có trên Zimbra Wiki tại link: https://wiki.zimbra.com/wiki/CBPolicyd_with_Zimbra_MySQL (Setting up CBPolicyd with Zimbra MySQL)

Dưới đây là hướng dẫn làm theo tài liệu trên blog có tại link bên dưới mà tôi đã thực hiện:

https://blog.zimbra.com/2020/03/2-3-zimbra-open-core-series-rate-limiting-email-with-policyd/

Tải script

wget https://raw.githubusercontent.com/Zimbra-Community/zimbra-tools/

master/cbpolicyd.sh -O /tmp/cbpolicyd.sh

Cho phép thực thi

chmod +rx /tmp/cbpolicyd.sh

Chạy script

./tmp/cbpolicyd.sh

Bật và khởi động lại

su zimbra

zmprov ms mail.viethoangit.com +zimbraServiceEnabled cbpolicyd

zmprov ms mail.viethoangit.com zimbraCBPolicydQuotasEnabled TRUE

zmmtactl restart && zmcbpolicydctl start

Mặc định, script cài đặt sẽ thiết lập chính sách cho phép:

– Hạn chế bất kỳ người gửi nào chỉ được phép gửi tối đa 100 email mỗi 60 giây. Qúa số lượng này các email sẽ bị deferred.

– Hạn chế người dùng chỉ có thể nhận tối đa 125 email mỗi 60 giây. Qúa số lượng này sẽ bị chặn (reject).

Để kiểm tra cấu hình, hãy tạm thời thay đổi tỷ lệ email gửi đi thành một con số thấp hơn, để bạn có thể quan sát xem email có bị từ chối hay không:

/opt/zimbra/bin/mysql policyd_db

SELECT * FROM quotas_limits;

UPDATE quotas_limits SET CounterLimit = 1 WHERE QuotasID = 3;



Xem cấu hình mặc định:

zmlocalconfig | grep -i cbpolicy

Xem log policyd tại:

/opt/zimbra/log/cbpolicyd.log

3. Sửa lỗi phân quyền


su - zimbra -c 'zmcontrol stop'

/opt/zimbra/libexec/zmfixperms -v -e

su - zimbra -c 'zmcontrol start'

4. Tài liệu tham chiếu


https://zimbra.github.io/installguides/latest/single.html

https://wiki.zimbra.com/wiki/Installing_a_LetsEncrypt_SSL_Certificate

https://wiki.zimbra.com/wiki/Configuring_for_DKIM_Signing

https://wiki.zimbra.com/wiki/Best_Practices_on_Email_Protection:_SPF,_DKIM_and_DMARC

https://wiki.zimbra.com/wiki/Category:ZCS_8.8

https://wiki.zimbra.com/wiki/CBPolicyd_with_Zimbra_MySQL

2020-12-19

Kiến trúc mạng – phần 3: Mạng gia đình có nhiều thiết bị IoT

Internet of Things (IoT) – internet vạn vật, là một kỷ nguyên kết nối mới khi mọi thứ đều có khả năng kết nối internet, mọi thiết bị đều hoạt động và kết nối với nhau một cách thông minh, và chính quyền, doanh nghiệp, cá nhân có thể giám sát, điều khiển chúng từ xa qua internet chỉ bằng thiết bị di động. Đặc biệt trong bối cảnh mạng 5G đã đi vào cuộc sống thì IoT như có thêm một lực đẩy để phát triển mạnh mẽ. Bài viết này sẽ trình bày mô hình tổng quan của mạng gia đình có nhiều thiết bị IoT trong bối cảnh nhà thông minh phát triển mạnh mẽ như hiện nay. 

Nhu cầu của công dân hiện đại là được sống trong ngôi nhà của mình với tất cả thiết bị điện tử trong nhà đều thông minh, có thể tương tác với chủ nhân của nó, đồng thời điều khiển được từ xa qua internet. Chỉ bằng một chiếc điện thoại hoặc máy tính bảng, trên cùng một giao diện, chúng ta có thể xem được mọi ngóc ngách ngôi nhà qua camera, nhận cảnh báo tự động khi có xâm nhập trái phép vào ngôi nhà qua bất cứ đâu, xem trong tủ lạnh có còn đồ ăn gì không trước khi về nhà, mở cửa cho một người bạn đang đứng trước chuông cửa, bật điều hòa nhiệt độ trước khi về nhà 30 phút, tắt một bóng đèn bằng giọng nói, và các tính năng khác như tự động mở cửa khi xảy ra cháy, tự động kéo rèm cửa đón bình minh lúc 5h, trợ lý ảo nhắc việc qua gương thông minh và âm thanh lúc đang đánh răng buổi sáng, phát một bài nhạc lãng mạn khi nhận thấy hai vợ chồng cùng ở trong phòng ngủ lúc 21h, một robot có thể nhận dạng người thân, bạn bè, mời một ly cà phê vào giao tiếp với họ. 

Việc tích hợp những chức năng đó yêu cầu chúng ta có hạ tầng mạng phức tạp hơn một chút để đáp ứng lưu lượng và tính liên tục của kết nối, đồng thời đảm bảo được an toàn vì các giải pháp tương đối mới thường ít được chú trọng về bảo mật dẫn tới nhiều hệ lụy không đáng có. 

Mô hình mạng



work and iot network for home
Hình 1: Mô hình mạng IoT gia đình


Kết nối WAN:


Với yêu cầu cao về tính sẵn sàng của hệ thống mạng, chúng ta cần sử dụng 2 đường truyền internet từ 2 nhà mạng khác nhau. 

Số lượng kết nối internet tương đối lớn, vì vậy router là một thiết bị chịu tải cao, có chức năng cân bằng tải thay thế cho router nhà mạng. 

Để đảm bảo bảo mật cho hệ thống, router sẽ bật các tính năng tường lửa, nếu tối ưu hơn thì nên sử dụng các loại router kiêm tường lửa open source mạnh mẽ như Pfsense. 

Kết nối LAN:


Mạng nội bộ sẽ phân tách 2 luồng kết nối, một cho các thiết bị IoT và một cho các thiết bị cá nhân hoặc công việc. 

Nên có 02 switch cho hai loại kết nối riêng biệt kể trên. 

Mạng sử dụng cả kết nối có dây và không dây cho các nhu cầu khác nhau. Các thiết bị phát sóng Wifi hẳn nhiên là phải hỗ trợ tần số 5Ghz tốc độ cao. 

Thiết bị phục vụ công việc:


Thiết bị lưu trữ NAS dùng để lưu trữ dữ liệu cho gia đình là không thể thiếu, bao gồm đồng bộ, sao lưu dữ liệu quan trọng cho công việc từ máy tính và điện thoại cá nhân, lưu trữ các hình ảnh và video clip của gia đình, và các tài liệu khác. NAS cũng có thể dùng để làm media server, phục vụ cho nhu cầu nghe nhạc và xem phim nội bộ trong gia đình bằng cách kết nối từ TV, laptop, PC, mobile đến NAS duyệt và xem. Tôi có lời khuyên nên sử dụng NAS Sysnology vì hãng này có phần mềm rất tốt, đồng thời chọn model có tối thiểu 2 khay ổ cứng hỗ trợ RAID để thiết lập RAID 1 đảm bảo an toàn dữ liệu. NAS cũng có đặc điểm là giá không thấp, nên chúng ta vẫn ít thấy trong các hộ gia đình nhỏ. Với model rẻ nhất chỉ có 1 ổ cứng giá cũng gần đến 5 triệu, với model 2 ổ cứng giá gần 10 triệu, trong khi đó các gia đình nhỏ thì nhu cầu có thêm một laptop hoặc PC là lớn hơn nhiều so với NAS. 

Máy in là thiết bị quan trọng và phổ biến hơn NAS trong trường hợp này, nhu cầu về in ấn để chủ động trong công việc là khá nhiều. 

Bảo mật


IoT là thuật ngữ bắt đầu từ (khoảng) năm 2009, với số lượng được cho là 24 tỉ thiết bị IoT vào năm 2020 này, đây là mục tiêu mà hacker không thể không nhắm tới. Theo số liệu từ hãng công nghệ Palo Alto (1), 98% lưu lượng dữ liệu IoT không được mã hóa, 57% thiết bị IoT dễ bị tấn công với mức độ nghiêm trọng trung bình hoặc cao. Rất nhiều hãng sản xuất thiết bị IoT gia nhập thị trường béo bở này mà không đáp ứng đầy đủ các tiêu chuẩn về bảo mật. Người sử dụng và các đơn bị triển khai cũng thường lơ là công tác bảo mật, đơn cử như việc để mật khẩu mặc định hoặc đặt mật khẩu yếu. Nhận thức về an toàn thông tin là yếu tố cực kỳ quan trọng. Các rủi ro khi lắp đặt camera giám sát xuất hiện thường xuyên nhưng vẫn chưa được quan tâm đúng mức. Chúng ta không thể nào ngủ yên được khi có kẻ khác đang điều khiển căn nhà của mình chỉ bằng internet. 

Vì vậy, viethoangit.com khuyến cáo: 

Nhận thức được các rủi ro an ninh thông tin


Điều đầu tiên là tất cả chúng ta cần nhận thức được có mối de dọa lớn về mặt bảo mật, hậu quả thường nghiêm trọng hơn mọi người tưởng tượng, không nên mất bò mới lo làm chuồng. 

Chọn lựa đơn vị uy tín để tư vấn và triển khai


Các kiến thức chuyên ngành ở bất cứ lĩnh vực nào cũng đều vượt quá phạm vi hiểu biết của chúng ta, vì vậy lựa chọn đơn vị uy tín để tư vấn và triển khai là đã giảm bớt được rất nhiều sai lầm không đáng có. 

Đồng thời yêu cầu đơn vị triển khai làm tài liệu hướng dẫn đầy đủ, có hợp đồng và cam kết bảo mật rõ ràng nếu nhu cầu an ninh cao. 

Một giải pháp đơn giản là giám sát các thiết bị mạng của nhà bạn, bằng việc cài đặt phần mềm giám sát trên thiết bị NAS để phát hiện dấu hiệu bị tấn công thông qua lưu lượng mạng tăng đột ngột, điều này các đơn vị chuyên nghiệp sẽ làm cho bạn mà không quá khó khăn. 

Chất lượng đi kèm với mức giá


Không có thứ gì vừa rẻ vừa tốt, nếu quá lăn tăn về giá thì chúng ta đã thỏa hiệp với chất lượng thấp. Vì vậy, việc chọn thương hiệu, mặt hàng tốt với giá cả phải chăng là ưu tiên hàng đầu, không nên tìm kiếm giải pháp rẻ nhất. Các bên bán hàng sẽ cho bạn bất cứ mức giá nào bạn muốn, nhưng chất lượng bên trong bạn không thể kiểm chứng được. 

Chú thích:
(1) https://unit42.paloaltonetworks.com/iot-threat-report-2020/

Nguồn: viethoangit.com 

2020-12-05

Kiến trúc mạng – phần 2: Mạng gia đình có camera giám sát


Phần 2 này chúng ta cùng tìm hiểu về mô hình mạng gia đình có lắp đặt camera giám sát, những điểm khác biệt và lưu ý.

Mô hình này có một đường internet đi vào thiết bị router của nhà mạng có tích hợp khả năng phát wifi cho các thiết bị không dây trong nhà sử dụng như điện thoại, máy tính bảng, laptop, PC, TV, TV Box. Bên cạnh đó chủ nhà có nhu cầu lắp wifi để giám sát. Trong thực tế có không ít gia đình chỉ cần 01 camera không dây giá rẻ, kết nối mạng Wifi tích hợp thẻ nhớ để lưu dữ liệu camera thu được và chủ nhà có thể xem trực tiếp qua internet bằng điện thoại. Việc lắp đặt cũng rất dễ dàng, chỉ cần một vị trí có điện là sử dụng được ngay.

Tuy nhiên chúng ta sẽ chỉ xét đến mô hình có sự quản lý tập trung bởi đầu ghi camera với dung lượng lưu trữ lớn, nhiều tính năng, đảm bảo được tốc độ qua kết nối có dây, và đầu ghi cũng có khả năng kết nối tới các camera không dây để quản lý.

wireless-client-and-camera-network
Mô hình mạng gia đình có camera



Chúng ta có vài điểm lưu ý trong mô hình này như sau:

1. Về mặt kỹ thuật


- Kỹ thuật viên mạng nên thiết lập trên router 2 subnet (dải IP mạng) khác nhau, 1 subnet cho mạng wifi, 1 subnet riêng cho camera. Việc tách riêng 2 subnet là để đảm bảo cách ly lưu lượng broadcast, giảm lỗi, tăng sự bảo mật.

- Kỹ thuật viên lắp camera cũng lưu ý đặt IP của đầu ghi camera và các camera không trùng với dải IP mà router đang cấp phát DHCP. Ví dụ router nhà mạng đang cấp dải IP 192.168.1.2 – 192.168.1.254, thì ta đổi về 192.168.1.100 – 192.168.1.254, rồi đặt IP đầu ghi và camera trong khoảng từ 192.168.1.2 – 192.168.1.99.

- Kỹ thuật viên nên đổi mật khẩu mặc định của đầu ghi và camera để đảm bảo về bảo mật cơ bản.

2. Đối với người sử dụng


a. Vấn đề đối với camera:

Đa phần mọi người đều không có kiến thức về IT, và ngại trong việc cấu hình phần mềm, vì vậy thường giao phó việc đó cho đơn vị lắp camera.

b. Rủi ro xuất hiện từ đây:

- Mật khẩu thường đặt rất dễ nhớ và dễ bị dò quét.

- Người sử dụng bị chính đơn vị lắp đặt camera theo dõi nhất cử nhất động.

- Người sử dụng bị lộ clip nóng.

- Nguy cơ lộ thông tin mật khẩu từ đơn vị thứ 3 (đơn vị lắp camera) ra bên ngoài theo cách vô tình hoặc cố tình, khiến cho kẻ trộm theo dõi thói quen sinh hoạt của gia đình để lên kế hoạch trộm cắp.

c. Giải pháp:

- Người sử dụng cần yêu cầu đơn vị lắp đặt bàn giao tài khoản quản trị cao nhất, tài liệu hướng dẫn sử dụng, hướng dẫn đổi mật khẩu. Tài liệu bằng file mềm gửi qua email và một bản cứng.

- Có thể yêu cầu một bản cam kết bảo mật thông tin để đơn vị lắp đặt camera ký kết.

Vì vấn đề an toàn, người sử dụng buộc phải học các kiến thức về thay đổi cấu hình camera, thông qua tài liệu bàn giao, và thông qua internet.

Như vậy phần 2 này chúng ta đã tìm hiểu qua về sơ đồ logic mạng gia đình có camera giám sát, và các vấn đề bảo mật. Phần 3 chúng ta sẽ tìm hiểu nâng cao thêm một chút đối với những gia đình làm việc nhiều hơn trên môi trường công nghệ thông tin và có đầu tư thiết bị lưu trữ, IoTs. Mời các bạn đón đọc.

Nguồn: viethoangit.com