Fortinet VPN新增Google Auth身分證驗(第一篇)

810 詞

前言

因為想幫Fortinet新增MFA(身分驗證)的機制,雖然原廠Fortinet有提供相對應的設備進行安全性防護驗證,但無奈真的沒經費可以使用,但又想用該怎麼辦呢?

於是就自己做一個吧 (ゝ∀・)

使用者自己連到專用網頁輸入帳號密碼取得OTP驗證QRcode,一切自動化管理

這樣的好處是,我不用一個一個加,省得我還要花時間處理,未來要人員離職要處理的部分也單純簡單,一整個好棒棒 (・∀・)

因為整個作業內容比較麻煩,所以我拆開來來寫比較不會混亂,也方便彼此在確認的時候比較好看,不用一次看個落落長。我信你個鬼

我使用的系統是Centos 7,首先我們要先把Centos 7加入AD,讓AD控管是方便處理帳號跟後續的規則設定。

進入正題 – 將系統加入 AD –

. 安裝需求套件:

1
yum install -y samba samba-common samba-client samba-winbind* krb5-workstation ntp

. 設定開機啟動:

1
2
systemctl enable smb
systemctl enable winbind

. 設定/etc/hosts:

1
123.123.123.123 myhost myhost.mydomain.com.tw

. 執行 setup 比較方便,但 CentOS 7 預設沒裝,如果可以裝會比較好設定:

(如果不能裝,後面有詳細設定)

1
2
yum install -y setuptool ntsysv system-config-network-tui system-config-firewall-tui authconfig
setup

ImgurImgur
ImgurImgur

. 修改 /etc/samba/smb.conf ,增加下列設定:

1
2
3
4
encrypt passwords = yes
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/%D/%U

. 修改 /etc/nsswitch.conf 設定,將 winbind 的順位放到 sss 前面:

1
2
3
passwd: files winbind sss
shadow: files winbind sss
group: files winbind sss

. 修改 /etc/pam.d/system-auth、/etc/pam.d/password-auth,增加下列設定:

1
session required pam_mkhomedir.so

※ 如果不能安裝setup 的設定如下:

vim /etc/samba.smb.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[global]
workgroup = MYDOMAIN
password server = dc.mydomain.com.tw
realm = MYDOMAIN.COM.TW
security = ads
idmap config * : range = 16777216-33554431
template shell = /bin/bash
winbind use default domain = false
winbind offline logon = false
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
passdb backend = tdbsam
load printers = no
cups options = raw
encrypt passwords = yes
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/%D/%U

/etc/krb5.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[libdefaults]
default_realm = MYDOMAIN.COM.TW
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true

[realms]
EXAMPLE.COM = {
kdc = kerberos.example.com
admin_server = kerberos.example.com
}

MYDOMAIN.COM.TW = {
kdc = dc.mydomain.com.tw
}

[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM

. 修改 /etc/security/pam_winbind.conf,增加下列設定:

1
2
require_membership_of = S-1-5-21-1111111111-1111111111-1111111111-111  
(Domain Admins 的 SID,限制Domain Admins的成員才能登入)如果要加入多重群組或帳號,則用逗號分隔

. 增加 sudo 權限:# visudo(加入下列設定)

1
%MYDOMAIN\\domain\ admins ALL=(ALL)  NOPASSWD: ALL

. 與AD校時,然後重新開機:

1
ntpdate dc.mydomain.com.tw

. 加入網域:

1
net ads join -U ADMINS_USER_ID

. 重啟主機

1
reboot

. 確認是否加入網域:

1
2
3
4
5
net ads info (會看到 AD 的相關資訊)
getent group (會看到 MYDOMAIN\GROUP 的網域群組)
(下列指令如果使用者幾萬或幾十萬筆,就不要用了,會等很久)
wbinfo -u (會看到 MYDOMAIN\USERID 的使用者帳號)
getent passwd (會看到 MYDOMAIN\USERID 的使用者帳號)

後言

裡面有些小東西需要配合當時環境做調整,完全照用應該是會有問題的,不過如果可以運到 UserID應該就沒甚麼問題了。

附註,因為這台跟有加入AD做關聯,所以該阻擋的防火牆 deny.host 要記得設定上去,不要發生漏洞了 (`・ω・´)