為Akamai云平臺(tái)上部署的資源配置2FA跳板機(jī)-上
為重要賬戶啟用2FA,這幾乎已經(jīng)成為保護(hù)賬戶和數(shù)據(jù)安全的一種標(biāo)準(zhǔn)做法。無(wú)論登錄常見應(yīng)用或服務(wù),或是訪問企業(yè)內(nèi)部資源,時(shí)不時(shí)都會(huì)需要進(jìn)行2FA驗(yàn)證。那么當(dāng)你在Akamai Connected Cloud云平臺(tái)中部署了各類資源(云計(jì)算、云存儲(chǔ)、SaaS、Docker……),需要進(jìn)行管理時(shí),該如何為訪問過程啟用2FA?
延伸閱讀,點(diǎn)擊鏈接了解 Akamai Cloud Computing
首先定義“跳板機(jī)”是什么
跳板機(jī)就是一臺(tái)或一組服務(wù)器,其唯一目的是為基礎(chǔ)設(shè)施的不同部分提供一個(gè)單一入口。
典型的配置是一臺(tái)加固的Unix(或類Unix)機(jī)器,配置有SSH和本地防火墻。管理員從個(gè)人計(jì)算機(jī)以SSH方式連接到跳板機(jī),隨后通過SSH轉(zhuǎn)發(fā)來(lái)訪問目標(biāo)機(jī)器,即可連接到DMZ中的目標(biāo)機(jī)器。
使用SSH端口轉(zhuǎn)發(fā)或基于SSH的隧道連接到目標(biāo)主機(jī),可以使用不安全協(xié)議管理服務(wù)器,而無(wú)需創(chuàng)建特殊的防火墻規(guī)則或在內(nèi)部網(wǎng)絡(luò)上暴露流量。
用到的軟件組件
- 用于服務(wù)器和用戶管理的Cockpit Web界面
- Google Authenticator插件
- Yubikey(可選) – 本文未涉及
- Termius作為SSH客戶端(任何可支持2FA的SSH客戶端均可使用)
用到的Akamai Connected Cloud Compute組件
- 1個(gè)充當(dāng)跳板機(jī)的Nanode
- 一些已部署的服務(wù)器或服務(wù)。本例中將以MySQL數(shù)據(jù)庫(kù)為例。
- Linode Firewall
- VLAN(可選)
還需要準(zhǔn)備什么?
- 裝有Google Authenticator應(yīng)用的手機(jī)
- SSH公鑰和私鑰
如何使用?
簡(jiǎn)而言之,這種方法實(shí)際上就是在為SSH通道啟用2FA。使用這種方法的好處是:可以在幾乎任何使用TCP協(xié)議通信的服務(wù)之間創(chuàng)建隧道。網(wǎng)站?可以!數(shù)據(jù)庫(kù)服務(wù)器?沒問題!SSH協(xié)議?支持!Redis?小意思!……這樣就好理解了吧。
Cockpit又是什么?Cockpit是一個(gè)基于Web的服務(wù)器圖形界面,適用于所有人,尤其適合:
- Linux新手(包括Windows管理員)
- 熟悉Linux并希望以簡(jiǎn)單的圖形方式管理服務(wù)器的用戶
- 主要使用其他工具但希望了解單個(gè)系統(tǒng)概況的專家管理員
如何設(shè)置運(yùn)行?
最簡(jiǎn)單的方法是使用如下的StackScript。
#!/bin/bash
#<UDF name="HOSTNAME" label="The hostname for the new Linode.">
# HOSTNAME=
#<UDF name="MANAGEMENTUSER" label="Cockpit Management user." default="CockpitMGR">
# MANAGEMENTUSER=
#<UDF name="MANAGEMENTUSERPASSWORD" label="Cockpit management user password." default="ReplaceMeN0w!">
# MANAGEMENTUSERPASSWORD=
yum update -y
yum install cockpit nano wget cockpit-dashboard cockpit-packagekit bind-utils -y
systemctl enable --now cockpit.socket
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh epel-release-latest-7.noarch.rpm
yum install google-authenticator -y
#Create user
pass=$(echo $MANAGEMENTUSERPASSWORD | openssl passwd -crypt -stdin)
useradd -m -p $pass $MANAGEMENTUSER
usermod -aG wheel $MANAGEMENTUSER
#Configure hostname SSH & PAM modules
hostnamectl set-hostname $HOSTNAME
sed -i '/preserve_hostname: false/c\preserve_hostname: true' /etc/cloud/cloud.cfg
sed -i '2s/^/auth required pam_google_authenticator.so\n/' /etc/pam.d/sshd
sed -i '2s/^/auth [success=done default=ignore] pam_access.so accessfile=/etc/security/access-local.conf\n/' /etc/pam.d/sshd
sed -i '/auth substack password-auth/c\#auth substack password-auth' /etc/pam.d/sshd
echo 'auth required pam_google_authenticator.so nullok' >> /etc/pam.d/cockpit
echo 'idmsync ALL=(ALL) NOPASSWD: ALL' | sudo EDITOR='tee -a' visudo
echo 'AuthenticationMethods publickey,keyboard-interactive' >> /etc/ssh/sshd_config
sed -i '/ChallengeResponseAuthentication no/c\ChallengeResponseAuthentication yes' /etc/ssh/sshd_config
sed -i '/SELINUX=enforcing/c\SELINUX=disabled' /etc/selinux/config
service sshd restart
#Branding stuff
#Other stuff
systemctl start NetworkManager.service
systemctl start cockpit
systemctl enable NetworkManager.service
firewall-cmd --znotallow=public --add-port=9090/tcp --permanent
firewall-cmd --reload
shutdown -r now
系統(tǒng)會(huì)提示輸入Cockpit管理用戶名、密碼和服務(wù)器根密碼。
使用下面的腳本在Cloud Manager中新建一個(gè)StackScript,選擇Centos 7作為目標(biāo)鏡像,為其命名,保存并按下“Deploy a new Linode”按鈕。
稍等片刻,訪問這個(gè)URL:https://IP_OF_YOUR_LINODE:9090,我們將看到一個(gè)Cockpit登錄界面,類似下圖所示。
這樣就好了!
需要再次提醒大家注意,這種方式不僅操作簡(jiǎn)單,而且適用性非常廣泛,無(wú)論云計(jì)算、云存儲(chǔ)、數(shù)據(jù)庫(kù)、Docker……你在Akamai Connected Cloud中部署的任何資源,只要使用TCP協(xié)議進(jìn)行通信,就支持用這種方式啟用2FA!
在下篇文章中,我們將介紹如何創(chuàng)建用戶以及進(jìn)行2FA身份驗(yàn)證的過程。敬請(qǐng)期待。
—————————————————————————————————————————————————
如您所在的企業(yè)也在考慮采購(gòu)云服務(wù)或進(jìn)行云遷移,
點(diǎn)擊鏈接了解Akamai Linode的解決方案