Spring Boot Init.d 服务安全防护 (Secur
2017-05-26 本文已影响46人
非典型程序员
给Spring Boot 应用创建指定的用户
当以root用户身份执行时,跟使用 root 启动init.d服务的情况一样。 Spring Boot 内嵌的启动脚本使用 jar 文件所属用户去启动应用。 您不应该以root身份运行应用程序,因此您的应用程序的 jar 文件不应该由root拥有。相反,创建一个特定的用户来运行应用程序,并使用修改 jar文件的所有者。如下:
# 创建用户
[root@my love~]# adduser bootapp
# 修改文件所属用户
[root@my love~]# chown bootapp:bootapp your-app.jar
现在,内嵌的可执行脚本将以 bootapp 用户运行应用程序。
将Spring Boot 应用所属账号 shell 设置为 /usr/sbin/nologin
为了减少应用程序的用户帐户遭到入侵的机会,您应该考虑防止其使用可登陆的 shell。 例如,将帐户的shell设置为 /usr/sbin/nologin
# 将bootapp 用户的 shell 环境设置为 /usr/sbin/nologin
[root@my love~]# usermod -s /usr/sbin/nologin bootapp
# 此时切换用户,会给出相应的提示信息
[root@my love~]# su bootapp
This account is currently not available.
防止应用程序相关文件被串改
首先,配置其权限,使其不能被写入,并且只能由其所有者读取或执行:
[root@my love~]# chmod 500 your-app.jar
其次,如果应用程序或运行它的帐户被泄露,还应该采取措施防止可执行文件被损坏。 如果攻击者确实获得访问权限,他们可以使 jar 文件变得可写,并更改其内容。为了防止这种情况,使用 chattr 使其变得不可变:
# chattr -i your-app.jar 可以取消这一限制,此命令只能使用 root 用户运行。
[root@my love~]# chattr +i your-app.jar
这将阻止任何用户修改该jar,包括root。
如果你的应用程序还有相应的.conf , 也应该修改相应的权限,所属账户等配置。
[root@my love~]# chmod 400 your-app.conf
[root@my love~]# chown root:root your-app.conf