IdP512: IdP服务基本安全防护
carsi IdP运行在vmware exsi虚拟机上。为了保证IdP服务安全、稳定地运行,建议从虚拟机管理、虚拟机访问安全防护、外部防护墙、校园网出口、应用防护五个层次进行防护。
虚拟机管理
- 只允许管理员登录虚拟机管理中心(例如exsi的vcenter)进行管理,严格限制管理员IP地址,防止管理员弱密码。
虚拟机访问安全防护
ova快速安装的方式ova镜像配置里面防火墙默认开启了80/443端口,可根据需要调整。
- IdP需要对外提供服务,使用的端口是443,协议是https,建议配置操作系统防火墙,对外只开放443端口。
例如:对于openEuler防火墙配置如下
#查看防火墙状态 [carsi@www ~]$ sudo systemctl status firewalld active(running)表示防火墙运行,inactive(dead)表示防火墙关闭 #启动防火墙 [carsi@www ~]$ sudo systemctl start firewalld #关闭防火墙 [carsi@www ~]$ sudo systemctl stop firewalld #防火墙上开启443端口 [carsi@www ~]$ sudo firewall-cmd --add-service=https --permanent #添加策略后需要刷新防火墙 [carsi@www ~]$ sudo firewall-cmd --reload #如果要在防火墙上删除某个端口 [carsi@www ~]$ sudo firewall-cmd --remove-service=http --permanent #添加策略后需要刷新防火墙 [carsi@www ~]$ sudo firewall-cmd --reload #查看当前防火墙策略 [carsi@www ~]$ sudo firewall-cmd --list-all
- idp运行过程中不需要使用80端口,但是申请免费证书或者续签免费证书需要80端口,可以根据实际情况开启。
#防火墙上开启80端口 [carsi@www ~]$ sudo firewall-cmd --add-service=http --permanent #添加策略后需要刷新防火墙 [carsi@www ~]$ sudo firewall-cmd --reload
- idp管理员对虚拟机进行日常远程登陆和系统运维,建议通过堡垒机进行登录,主机防火墙配置只允许堡垒机IP进行ssh登录。
#防火墙上只对堡垒机开启22端口 [carsi@www ~]$ sudo firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="堡垒机IP地址" port protocol="tcp" port="22" accept" #添加策略后需要刷新防火墙 [carsi@www ~]$ sudo firewall-cmd --reload
限制ssh权限
[carsi@www ~]$ sudo vi /etc/hosts.allow #输入 sshd:堡垒机IP地址:allow [carsi@www ~]$ sudo vi /etc/hosts.deny #输入 sshd:ALL 重启ssh服务 [carsi@www ~]$ sudo systemctl restart sshd
服务器区防火墙防护
- 允许外部ip访问idp服务器的443端口(根据情况是否开启80端口)
- 允许堡垒机ip访问idp服务器22端口
- 封禁其他端口
校园网出口防护
- 允许校外访问idp服务器的443端口(根据情况是否开启80端口),封禁其他端口
应用防护
- IdP+CAS/oauth2的方式,防密码爆破:基于此配置的登录方式,登录时用户浏览器跳转到了CAS/oauth2的登录页面,可以依赖CAS/oauth2自身的防护功能。
- IdP+LDAP的方式,idp3.3以上版本,加上了账号锁定功能,p:maxAttempts="5"表示最大5次尝试,p:counterInterval="PT5M"表示5分钟内达到最大尝试次数,p:lockoutDuration="PT30M"表示锁定账号30分钟,账号锁定的依据是用户的ip和登录的账号,如果某个账号在某台电脑上被锁定了,但另外一台电脑仍可以正常使用。(脚本安装方式默认已进行此项配置)
[carsi@www ~]$ sudo vi conf/authn/password-authn-config.xml #取消注释,修改p:lockoutDuration="PT5M"为p:lockoutDuration="PT30M",增加账号锁定时间 <bean id="shibboleth.authn.Password.AccountLockoutManager" parent="shibboleth.StorageBackedAccountLockoutManager" p:maxAttempts="5" p:counterInterval="PT5M" p:lockoutDuration="PT30M" p:extendLockoutDuration="false" />
版权所有©北京大学计算中心