IdP服务基本安全防护办法

        carsi idp运行在vmware exsi虚拟机上。为了保证idp服务安全、稳定地运行,建议从虚拟机管理、虚拟机访问安全防护、外部防护墙、校园网出口、应用防护五个层次进行防护。

虚拟机管理

  • 只允许管理员登录虚拟机管理中心(例如exsi的vcenter)进行管理,严格限制管理员IP地址,防止管理员弱密码。

虚拟机访问安全防护

ova快速安装的方式ova镜像配置里面防火墙默认开启了80/443端口,可根据需要调整。

  • idp需要对外提供服务,使用的端口是443,协议是https,建议配置操作系统防火墙,对外只开放443端口。

例如:对于CentOS7防火墙配置如下

#查看防火墙状态
[root@www ~]# systemctl status firewalld
active(running)表示防火墙运行,inactive(dead)表示防火墙关闭
#启动防火墙
[root@www ~]# systemctl start firewalld
#关闭防火墙
[root@www ~]# systemctl stop firewalld
#防火墙上开启443端口
[root@www ~]# firewall-cmd --add-service=https --permanent
#添加策略后需要刷新防火墙
[root@www ~]# firewall-cmd --reload

#如果要在防火墙上删除某个端口
[root@www ~]# firewall-cmd --remove-service=http --permanent
#添加策略后需要刷新防火墙
[root@www ~]# firewall-cmd --reload

#查看当前防火墙策略
[root@www ~]# firewall-cmd --list-all
  • idp运行过程中不需要使用80端口,但是申请免费证书或者续签免费证书需要80端口,可以根据实际情况开启。
#防火墙上开启80端口
[root@www ~]# firewall-cmd --add-service=http --permanent
#添加策略后需要刷新防火墙
[root@www ~]# firewall-cmd --reload
  • idp管理员对虚拟机进行日常远程登陆和系统运维,建议通过堡垒机进行登录,主机防火墙配置只允许堡垒机IP进行ssh登录。
#防火墙上只对堡垒机开启22端口
[root@www ~]# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="堡垒机IP地址" port protocol="tcp" port="22" accept"
#添加策略后需要刷新防火墙
[root@www ~]# firewall-cmd --reload

限制ssh权限

[root@www ~]# vim /etc/hosts.allow
#输入
sshd:堡垒机IP地址:allow
[root@www ~]# vim /etc/hosts.deny
#输入
sshd:ALL
重启ssh服务
[root@www ~]# systemctl restart sshd

服务器区防火墙防护

  • 允许外部ip访问idp服务器的443端口(根据情况是否开启80端口)
  • 允许堡垒机ip访问idp服务器22端口
  • 封禁其他端口

校园网出口防护

  • 允许校外访问idp服务器的443端口(根据情况是否开启80端口),封禁其他端口

应用防护

  • IdP+CAS/oauth2的方式,防密码爆破:基于此配置的登录方式,登录时用户浏览器跳转到了CAS/oauth2的登录页面,可以依赖CAS/oauth2自身的防护功能。
  • IdP+LDAP的方式,idp3.3以上版本(ova安装方式idp版本为3.4.3,支持此配置)加上了账号锁定功能,p:maxAttempts="5"表示最大5次尝试,p:counterInterval="PT5M"表示5分钟内达到最大尝试次数,p:lockoutDuration="PT30M"表示锁定账号30分钟,账号锁定的依据是用户的ip和登录的账号,如果某个账号在某台电脑上被锁定了,但另外一台电脑仍可以正常使用。
[root@www ~]# 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" />

版权所有©北京大学计算中心