安装部署 Office Online Server 集群

既然是集群,首先将域控变成两台:

将AD2加入域中,服务器角色中添加AD域服务,然后将其提升为域控,选择添加到现有域。

集群嘛,多安装几台 Office Online Server,但不导入SSL证书。

在第一台上用管理员打开PowerShell部署 Office Online Server farm

New-OfficeWebAppsFarm -InternalUrl "https://officeonline1.ad.local" -ExternalUrl "https://officeonline.nju.edu.cn" -SSLOffloaded -EditingEnabled

在其它台上用管理员打开PowerShell加入 Office Online Server farm

New-OfficeWebAppsMachine -MachineToJoin "officeonline1.ad.local"

在PowerShell中查看所有节点的状态

(Get-OfficeWebAppsFarm).Machines

前端 Nginx 负载均衡卸载SSL

upstream officeonline {
	ip_hash;
	server 192.168.1.11:80;
	server 192.168.1.12:80;
	server 192.168.1.13:80;
}

map $http_upgrade $connection_upgrade {
	default	upgrade;
	''	close;
}

server {
	listen 80;
	listen [::]:80;
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
	server_name officeonline.nju.edu.cn;

        include ssl/nju_edu_cn.conf;

	location / {
		proxy_pass http://officeonline;
		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection $connection_upgrade;
		proxy_cache_bypass $http_upgrade;
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Real-PORT $remote_port;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Forwarded-Proto $scheme;
	}
}

安装部署单台 Office Online Server

Office Online Server 必须加入域,且不能装在域控上,因此先装两台带桌面体验的 Windows Server 2022 并升级。

第一台用来做域控,给2C/4G的资源就够了,服务器角色中添加AD域服务,然后将其提升为域控,如添加新林的根域名为 ad.local

第二台用来装Office Online Server,要多给资源,首先将其DNS改为域控的IP,加入域并重启。

用管理员打开PowerShell执行安装要求的角色和服务,安装完成后重启。

Add-WindowsFeature Web-Server,Web-Mgmt-Tools,Web-Mgmt-Console,Web-WebServer,Web-Common-Http,Web-Default-Doc,Web-Static-Content,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression,Web-Security,Web-Filtering,Web-Windows-Auth,Web-App-Dev,Web-Net-Ext45,Web-Asp-Net45,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Includes,NET-Framework-Features,NET-Framework-45-Features,NET-Framework-Core,NET-Framework-45-Core,NET-HTTP-Activation,NET-Non-HTTP-Activ,NET-WCF-HTTP-Activation45,Windows-Identity-Foundation,Server-Media-Foundation

安装如下依赖软件,部分软件在Windows 2022中已经存在(.NET和VC++ 2015),安装程序会有提示直接退出,这个没关系

安装 Office Online Server ,当前版本是2018年11月发布的16.0.10338.20039

0a764830ee8cca9a92f749c9a6a9cd6a0e99e592 en_office_online_server_last_updated_november_2018_x64_dvd_1b5ae10d.iso

Microsoft Download Center下载语言包,在下载页面切换语言可以下载不同语言的语言包,当前是2018年11月发布的语言包,将多个语言包依次安装

87b77a9abf29cf11e95f74c07fb7419026882c05 wacserverlanguagepack-20181129cn.exe
33965054f9e93f6429cf3022dea0f6a575f8d178 wacserverlanguagepack-20181129en.exe
0432a9b8a27b7f56692e37c117b8cf79c45458fa wacserverlanguagepack-20181129tw.exe

Microsoft Update Catalog查找下载最新的Microsoft Office Online Server 服务器场部署安全更新,当前版本是2022年11月8日发布的KB5002276,安装时也会自动更新语言包

5abacedb0f21d8629a0a0eab1b4d163ca0228f96  wacserver-x-none_5abacedb0f21d8629a0a0eab1b4d163ca0228f96.cab

在MMC控制台-证书(本地计算机)-个人中导入pfx格式含私钥的HTTPS证书,注意IIS不支持双证书,因此考虑兼容性导入RSA证书,导入后右击证书属性,设置友好名称(如nju.edu.cn)

用管理员打开PowerShell部署 Office Online Server farm

New-OfficeWebAppsFarm -InternalUrl "https://officeonline.ad.local" -ExternalUrl "https://officeonline.nju.edu.cn" -CertificateName "nju.edu.cn" -EditingEnabled

在PowerShell查看详细配置

Get-OfficeWebAppsFarm

使用 Singularity 容器升级固件

构建一个安装了SST的CentOS8容器

singularity build –sandbox sst-build docker://centos:8.4.2105

cp sst-*.x86_64.rpm sst-build/home

singularity shell -w sst-build

rpm -ivh /home/sst-*.x86_64.rpm

rm /home/sst-*.x86_64.rpm

exit

singularity build sst.sif sst-build

到节点上升级

singularity shell –writable-tmpfs sst.sif

sst show -ssd

sst load -ssd 0

sst load -ssd 1

……

exit

reboot

 

山石网科 Hillstone 防火墙QoS详解

防火墙固件StoneOS 5.5R6,两路ISP PPPoE动态IP接入和静态IP接入,需要提供SSLVPN接入并将内网服务器发布到ISP的公网IP上,对公网直接访问和SSLVPN进行限速。山石网科的原厂工程师都搞不清楚怎么配置及其含义,所以只能通过自己实验来解决。
 
接口:
  • PPPoE接入:配置接口绑定三层安全域(untrust),IP配置为PPPoE,因为是动态IP所以必须配置DDNS,关闭逆向路由。
  • 静态IP接入:配置接口绑定三层安全域(untrust),IP配置为静态IP,关闭逆向路由。
目的NAT:
  • 源Any,目的地址对于动态IP选物理端口、对于静态IP填写IP地址,服务为对外发布的端口,转换为填写内网服务器IP和端口。
安全策略:
  • 源Any,目的安全域trust,目的地址为DDNS的动态域名和静态IP,服务对应目的NAT的服务。

VPN:

  • 为每个ISP接入创建独立的VPN,绑定各自的接入接口,为每个ISP创建独立的不同子网的隧道接口和地址池。
iQoS配置:
  • 不勾选”启用NAT IP匹配“。
iQoS策略:
  • 为每一个IPS接入创建单独的第一层流控管道。
  • 管道模式为整形,此模式支持带宽借用。
  • 匹配条件创建两条,一条只设置目的接口为ISP接防火墙的物理端口(无论动态还是静态IP),服务选择目的NAT中的服务;另一条只设置目的地址条目为vpn的地址池。
  • 流控动作是重点,在上述匹配条件下,正向流量指客户端下载、防火墙向ISP上传的流量;反向流量指客户端上传,防火墙从ISP下载的流量。
  • 管道带宽是ISP分配给的带宽,特别注意对于上下行非对等的宽带一定不要设置错。
  • 限制类型选限每IP,同IP下NAT的多个客户端会按照整个IP限制。
  • 限流选目的IP,这里的目的IP是客户端IP、源IP是服务器IP,因要限速每个客户端所以选目的IP,正向和反向是一样的。
  • 设置最小带宽,最小带宽是保证带宽,保证客户端有最基本的带宽可用。不设置最大带宽,尽可能的提高带宽利用率。
  • 不勾选平均带宽,这样不能很好地利用总带宽,应该设置最小保证带宽,不限制最大带宽可以充分利用带宽。如果勾选了平均带宽,会出现20Mb总带宽,4个IP连接,只有2个IP传输数据的时候,总带宽只能跑到10Mb。如果设置了最大带宽,但最大带宽小于总带宽,在单一客户端使用的情况下,跑不满总带宽会有浪费。

在以上配置的情况下,单一客户端可以跑满总带宽,多个客户端时可以保证每个客户端至少能获得最小带宽。

NVMe 热移除

  1. 通过主板BMC确认拟移除物理位置NVMe盘对应的SN
  2. 使用 nvme list 查找SN对应的盘符
  3. 使用 mmlsnsd -m|grep $HOSTNAME 查找盘符对应的NSD名称
  4. 使用 mmdeldisk 从文件系统中移除NSD
  5. 使用 mmdelnsd 删除NSD
  6. ls -l /sys/class/block/ 查找盘符对应的BUS ID
  7. 使用 lspci -vvv|grep -a1 NVMe 查找BUS ID对应的 Physical Slot
  8. cd /sys/bus/pci/slots/$slot ($slot替换为上一步查到的Physical Slot)
  9. cat address 确认BUS ID正确
  10. echo 0 > power 下电
  11. lsblk 中已无此盘符
  12. 执行 mmnsddiscover 刷新
  13. 此时对应NVMe盘指示灯应熄灭,拔出此盘

GPFS CES 安装配置

GPFS提供两种高可用NFS服务的方式,分别是Cluster NFS (CNFS)和Cluster Export Services (CES),二者互斥只能选其一。CNFS只支持NFS、CES支持NFS/SMB/Object。CNFS基于Linux kernel的NFS server,NFS的配置不由GPFS管理,元数据性能较好;CES基于用户空间的Ganesha NFS server,GPFS管理NFS配置,数据流式访问性能好。注意两者切换必将导致NFS停机。

设置CES共享目录:此目录每个CES节点应均能访问,此步骤需要整个GPFS集群停机
mmshutdown -a
mmchconfig cesSharedRoot=/share/ces
mmstartup -a

添加CES节点:
mmchnode –ces-enable -N ces1,ces2

配置CES IP:CES IP是专用于提供NFS/SMB/Object服务的虚IP,不可用于内部GPFS通讯,CES IP必须可通过DNS或/etc/hosts解析。每个CES节点上应配置有和CES虚IP相同网段IP的网络接口,GPFS只能给这些网络接口添加子IP。如ces1配置有192.168.1.101/24、ces2配置有192.168.1.102/24,CES IP为192.168.1.11和192.168.1.12
mmces address add –ces-ip 192.168.1.11,192.168.1.12

验证CES IP:
[root@ces1 ~]# mmces address list –full-list
cesAddress cesNode attributes cesGroup preferredNode unhostableNodes
192.168.1.11 ces2 none none none none
192.168.1.12 ces1 none none none none

安装NFS:
yum install pyparsing pygobject2 libwbclient
rpm -ivh gpfs.nfs-ganesha-2.7.5-ibm058.12.el7.x86_64.rpm gpfs.nfs-ganesha-gpfs-2.7.5-ibm058.12.el7.x86_64.rpm gpfs.nfs-ganesha-utils-2.7.5-ibm058.12.el7.x86_64.rpm

安装SMB:
yum install libarchive gdb
rpm -ivh gpfs.smb-4.11.16_gpfs_19-2.el7.x86_64.rpm

启用CES NFS:
mmces service enable nfs

在所有CES节点上启动NFS服务:
mmces service start NFS -a

验证CES NFS:
[root@ces1 ~]# mmces service list -a
Enabled services: NFS
ces1: NFS is running
ces2: NFS is running

推荐创建一个独立的fileset用于NFS:
mmcrfileset share data –inode-space new
mmlinkfileset share data -J /share/data

设置用户认证方式:
mmuserauth service create –data-access-method file –type userdefined

创建NFS共享:
mmnfs export add /share/data –client “192.168.1.100/32(Access_Type=RW)”

检查NFS共享:
[root@ces1 ~]# mmnfs export list

Path Delegations Clients
—————— ———– ————-
/share/data NONE 192.168.1.100/32

 

FortiWeb中配置HTTPS

以FortiWeb 6.3.1导入GoGetSSL颁发的RSA/ECC双证书为例

  1. 导入根证书和OCSP证书:菜单System->Certificates->CA,CA标签页,导入AAA Certificate Services、USERTrust RSA Certification Authority、USERTrust ECC Certification Authority、GoGetSSL RSA DV CA、GoGetSSL ECC DV CA
  2. 导入中级证书:菜单System->Certificates->Intermediate CA,Intermediate CA标签页,导入AAA Certificate Services签发的USERTrust RSA Certification Authority和USERTrust ECC Certification Authority,再导入USERTrust RSA Certification Authority签发的GoGetSSL RSA DV CA和USERTrust ECC Certification Authority签发的GoGetSSL ECC DV CA
  3. 创建中级证书组:菜单System->Certificates->Intermediate CA,Intermediate CA Group标签页,创建证书组GoGedtSSL RSA,先添加GoGetSSL RSA DV CA,再添加USERTrust RSA Certification Authority,ID 1应为签发服务器证书的中级证书,ID 2应为根证书签发的中级证书;同样的创建证书组GoGetSSL ECC,加入中级证书GoGetSSL ECC DV CA和USERTrust ECC Certification Authority;再创建一个证书组GoGetSSL把这四个中级证书都加进去
  4. 导入服务器证书:菜单System->Certificates->Local,分别导入证书颁发机构签发的服务器RSA和ECC证书及其对应的Key
  5. 添加OCSP stapling:菜单System->Certificates->OCSP stapling,为每一个服务器证书创建对应的OCSP,其中CA Certificate和OCSP URL按照服务器证书内容选择和填写,CA要先导入
  6. 创建多证书:菜单System->Certificates->Multi-certificate,创建一个多证书,分别选择RSA和ECDSA两个服务器证书
  7. 在Server里面如果使用多证书,就要选择有RSA和ECC中级证书的证书组,这是因为当前FortiWeb的系统的多证书只能选择一个中级证书组,所以就需要这个中级证书组里面放置所有的中级证书,将这些中级证书全部发送给客户端,让客户端自己选择

用 openssl s_client -showcerts -status -tlsextdebug -connect www.yaoge123.com:443 和 SSL Labs 检查证书链和OCSP

廉价SSL证书比较

  首先是当然推荐免费的Let’s Encrypt,支持ECDSA和泛域名,极大地推动了HTTPS的普及,但是90天的有效期太短了。对于复杂的系统来说,会有很多不能自动导入证书的设备,管理起来成本太高。因此我们来看一下三种便宜的SSL证书:Sectigo (Comodo)、RapidSSL、AlphaSSL。

  Sectigo(原Comodo,拆分出售后改名),主品牌一直以来就是廉价SSL证书的代表,所以用它家证书的基本都是小网站。Comodo自己拥有四个根证书,分别是COMODO RSA Certification AuthorityCOMODO ECC Certification AuthorityUSERTrust RSA Certification AuthorityUSERTrust ECC Certification Authority,都是从2010年(COMODO ECC从2008年起)起至2038年止的根证书,这四个证书比较新故在老的系统中不受信任,不过也因为比较新所以提供了更高的安全性并且完美支持ECDSA(RSA4096、ECC384,SHA384)。对于老的系统,COMODO收购了一个从2000年起的根AddTrust External CA Root,但是这个证书到2020年5月30日就过期了,不过COMODO还有一个2004年起的根AAA Certificate Services能一直用到2028年。AddTrust和AAA在老系统中兼容性很好,只要在服务器的证书链中导入交叉签名的第二个中级证书即可,这样老系统就能信任新颁发的SSL证书,但是这样会导致证书链变长(两个中级证书)。Sectigo的证书几乎所有网站都在卖,最便宜的通配符证书应该是GoGetSSL售卖的自有品牌证书(4年$32.5/year),Sectigo用自己的根证书给GoGetSSL签发了两个中级证书GoGetSSL RSA DV CAGoGetSSL ECC DV CA,GoGetSSL再用自己的中级证书给用户签发SSL证书,所以和Sectigo证书兼容性一样。

  RapidSSL是DigiCert下属的廉价证书品牌,使用DigiCert的根证书,根和中级证书只支持RSA。RapidSSL比较有名,很多网站都有转售,通配符证书两年期SSL2BUY便宜(2年$73.5/year),四年期CheapSSLsecurity更便宜一点(4年$72.31/year)。

  AlphaSSL是GlobalSign下属的廉价证书品牌,使用GlobalSign的根证书,根和中级证书只支持RSA。这个名气小很多,很少有网站转售,通配符证书两年期SSL2BUY便宜(2年$40/year)。

  综上所述,想要便宜且整个证书链支持ECDSA只能买GoGetSSL,但是对于老终端需要四级证书链。不需要整个证书链是ECDSA的,老终端也只有一个中级证书的三级证书链,可选RapidSSL和AlphaSSL,RapidSSL名气大一点,其它的基本没有区别。

  现在几乎所有的SSL证书都是由中级证书签发的,而直接由根证书签发没有中级证书的SSL证书现在应该已经不存在了,因为这样根证书太不安全了。所以三级证书链基本上就是最短的证书链了。多一级中级证书服务器额外发送大约2K的证书信息,客户端需要多查询一个证书的吊销情况。

CAs trustworthy in browsers db可以大概查看各个根证书受信任情况。