Tomcat 8 throwing – org.apache.catalina.webresources.Cache.getResource Unable to add the resource

I have just upgraded Tomcat from version 7.0.52 to 8.0.14. I am getting this for lots of static image files: org.apache.catalina.webresources.Cache.getResource Unable to add the resource at [/base/1325/WA6144-150×112.jpg] to the cache because there was insufficient free space available after evicting expired cache entries – consider increasing the maximum size of the cache I haven’t specified any particular resource settings, and I…

Read More

The Scrum framework in 30 seconds

<iframe allowtransparency=”true” frameborder=”0″ scrolling=”no” class=”wistia_embed” name=”wistia_embed” src=”https://fast.wistia.com/embed/iframe/p7novk9lc6″ width=”480″ height=”316″></iframe>

简介SELinux的在CentOS 7 – 第3部分:用户

介绍 在我们的SELinux教程的最后一部分,我们将讨论SELinux用户以及如何微调他们的访问。 我们还将了解SELinux错误日志以及如何了解错误消息。 注意 本教程中显示的命令,包和文件在CENTOS 7上进行了测试。其他发行版的概念保持不变。 在本教程中,除非另有说明,否则我们将以root用户身份运行命令。 如果您没有访问到root帐户,并使用使用sudo权限的其他帐户,您需要与先于命令sudo关键字。 SELinux用户 SELinux用户是与普通Linux用户帐户不同的实体,包括root帐户。 SELinux用户不是使用特殊命令创建的,也不具有对服务器的自己的登录访问权限。 相反,SELinux用户在引导时加载到内存的策略中定义,并且只有少数用户。 用户名称以_u ,就像类型或域名结束与_t和角色结束_r 。 不同的SELinux用户在系统中具有不同的权限,这就是它们的用途。 在文件安全上下文的第一部分中列出的SELinux用户是拥有该文件的用户。 这就像你会看到文件的所有者从一个普通ls -l命令的输出。 进程上下文中的用户标签显示进程正在运行的SELinux用户权限。 当强制执行SELinux时,每个常规Linux用户帐户都映射到SELinux用户帐户。 可以有多个用户帐户映射到同一个SELinux用户。 此映射使常规帐户能够继承其SELinux对应方的权限。 要查看该映射,我们就可以运行semanage login -l命令: semanage login -l 在CentOS 7中,我们可以看到: Login Name SELinux User MLS/MCS Range Service __default__ unconfined_u s0-s0:c0.c1023 * root unconfined_u s0-s0:c0.c1023 * system_u system_u s0-s0:c0.c1023 * 此表中的第一列“登录名”表示本地Linux用户帐户。 但是这里只列出了三个,你可能会问,我们在本教程的第二部分中没有创建几个帐户吗? 是的,并且它们被示出为默认的条目表示。 任何普通的Linux用户帐户被首先映射到默认登录。 然后将其映射到名为unconfined_u的SELinux用户。 在我们的例子中,这是第一行的第二列。 第三列显示用户的多级安全/多类别安全(MLS / MCS)类。 现在,让我们忽略该部分,以及之后的列(服务)。 接下来,我们有根用户。 请注意,这不是映射到“ 默认 ”的登录,而是被赋予了其自身的条目。 同样,root也映射到unconfined_u SELinux用户。 system_u是不同类的用户,用于运行进程或守护程序。 要了解SELinux的用户在系统中可用,我们可以运行semanage user命令: semanage user -l 我们的CentOS 7系统的输出应该是这样: Labeling MLS/ MLS/ SELinux User Prefix MCS Level MCS Range SELinux…

Read More

简介SELinux的在CentOS 7 – 第2部分:文件和进程

介绍 在第一部分我们SELinux的系列,我们看到了如何启用和禁用SELinux,如何改变一些使用布尔值的策略设置。 在第二部分中,我们将讨论文件和进程安全上下文。 从前面的教程刷新你的记忆,一个文件的安全上下文是一个类型 ,一个过程的安全上下文是一个域 。 注意 本教程中显示的命令,包和文件在CENTOS 7上进行了测试。其他发行版的概念保持不变。 在本教程中,除非另有说明,否则我们将以root用户身份运行命令。 如果您没有访问到root帐户,并使用使用sudo权限的其他帐户,您需要与先于命令sudo关键字。 创建测试用户帐户 首先,让我们创建四个用户帐户来演示SELinux的功能。 普通用户 切换用户 访客 restricteduser 目前应该是root用户。 让我们运行下面的命令来添加regularuser帐户: useradd -c “Regular User” regularuser 然后,我们运行passwd命令来修改自己的口令: passwd regularuser 输出将要求我们输入新密码。 一旦提供,该帐户将准备登录: Changing password for user regularuser. New password: Retype new password: passwd: all authentication tokens updated successfully. 让我们创建其他帐户: useradd -c “Switched User” switcheduser passwd switcheduser useradd -c “Guest User” guestuser passwd guestuser useradd -c “Restricted Role User” restricteduser…

Read More

用 CentOS 7 打造合适的科研环境

这篇博文记录了我用 CentOS 7 搭建 地震学科研环境 的过程,供我个人在未来重装系统时参考。对于其他地震学科研人员,也许有借鉴意义。 阅读须知: 本文适用于个人电脑,不适用于服务器; 不推荐刚接触 Linux 的人使用 CentOS 发行版; 本文尽量写的浅显易懂,但要求读者掌握 Linux 基础知识; 本文所有操作均在 CentOS 7 下完成,其他发行版或多或少与 CentOS 7 不同,因而仅供参考; 本文所安装的软件纯粹出于个人习惯及喜好,读者应自己判断,按需安装; 安装 CentOS CentOS 7 的安装与其他 Linux 发行版的安装差不多,个别地方稍有不同。 准备工作 准备材料 U 盘:容量 2GB 以上,用于制作 U 盘启动盘,因为在制作启动盘时会格式化 U 盘,所以 U 盘内不要包含重要资料 CentOS 7.2 LiveCD ISO 镜像文件 Universal USB installer:Windows 下的 U 盘启动盘制作工具 一个已安装 Windows 的电脑:用于制作 U 盘启动盘 运行 Universal USB…

Read More

简介SELinux的在CentOS 7 – 第1部分:基本概念

介绍 安全增强型Linux或SELinux是大多数现代Linux发行版中内置的高级访问控制机制。 它最初由美国国家安全局开发,以保护计算机系统免受恶意入侵和篡改。 随着时间的推移,SELinux在公共领域发布,各种发行版已经将其纳入其代码中。 许多系统管理员发现SELinux是一个未知的领域。 这个话题看起来很艰巨,有时很混乱。 但是,正确配置的SELinux系统可以大大降低安全风险,了解其中的一点可以帮助您解决与访问相关的错误消息。 在本教程中,我们将了解SELinux背后的概念 – 包,命令和配置文件 – 以及拒绝访问时记录的错误消息。 我们还将看到一些将SELinux投入运行的实际情况。 注意 本教程中显示的命令,包和文件在CENTOS 7上测试。其他发行版的概念保持不变。 在本教程中,除非另有说明,否则我们将以root用户身份运行命令。 如果您没有访问到root帐户,并使用使用sudo权限的其他帐户,您需要与先于命令sudo关键字。 为什么选择SELinux? 在我们开始之前,让我们来了解一些概念。 SELinux的实现了所谓的MAC(强制访问控制)。 这是一个什么样的在每一个Linux发行版已经存在上实现时,DAC(自主访问控制)。 要理解DAC,让我们先考虑传统的Linux文件安全性如何工作。 在传统的安全模型中,我们有三个实体:用户,组和其他(u,g,o),它们可以对文件或目录具有读,写和执行(r,w,x)权限的组合。 如果用户创建郭沫若在他们的家目录中的文件,该用户将具有读它/写访问,并因此将祚群。 “其他”实体可能无法访问它。 在下面的代码块中,我们可以考虑jo的主目录的假设内容。 你并不需要设置这个祚用户-我们将在后面的教程很多用户来设置。 运行这样的命令: ls -l /home/jo/ 可以显示如下输出: total 4 -rwxrw-r–. 1 jo jo 41 Aug 6 22:45 myscript.sh 现在jo可以更改此访问权限。 jo可以向其他用户和组授予(并限制)此文件的访问权限或更改文件的所有者。这些操作可以将关键文件暴露给不需要此访问权限的帐户。 jo也可以限制为更安全,但这是自由的:系统管理员无法为系统中的每个文件强制执行它。 考虑另一种情况:当Linux进程运行时,它可以作为root用户或具有超级用户权限的其他帐户运行。 这意味着如果黑客黑客控制了应用程序,他们可以使用该应用程序访问用户帐户可访问的任何资源。 对于以root用户身份运行的进程,基本上这意味着Linux服务器中的一切。 想想一个场景,你想限制用户从他们的主目录执行shell脚本。 当您有开发人员在生产系统上工作时,可能会发生这种情况。 你希望他们查看日志文件,但你不希望他们使用su或sudo命令,你不希望他们能够从他们的主目录运行任何脚本。 你是怎样做的? SELinux是微调这种访问控制要求的一种方法。 使用SELinux,您可以定义用户或进程可以执行的操作。 它将每个进程限制在其自己的域中,因此进程只能与允许的域中的某些类型的文件和其他进程进行交互。 这可以防止黑客劫持任何进程以获得系统范围的访问。 设置测试系统 为了帮助我们了解这些概念,我们将构建一个运行Web和SFTP服务器的测试服务器。 我们将从安装最少软件包的CentOS 7的裸安装开始,并在该服务器上安装Apache和vsftp守护进程。 但是,我们不会配置任何这些应用程序。 我们还将在我们的云服务器中创建一些测试用户帐户。 我们将在整个课程的不同地方使用这些帐户。 最后,我们将安装所需的SELinux相关软件包。 这是为了确保我们可以使用最新的SELinux命令。 安装Apache和SFTP服务 首先,让我们登录到服务器作为root用户运行以下命令来安装Apache: yum install httpd 输出将显示正在下载的软件包,并要求您提供安装权限: Loaded plugins: fastestmirror, langpacks … … ================================================================================ Package Arch Version Repository Size…

Read More

java war 打包、解压命令

java war 打包、解压命令 经常将工程打包成war包,打包如下: // 将当前目录打包成war包 jar   cvf   temp.war   */  . 命令格式: java cvf 打包文件名称 要打包的目录 打包文件保存路径   解压自然就是: jar xvf temp.war   jar和linux下面的tar命令类似

tomcat在ubuntu下启动缓慢,耗时很长时间

tomcat在ubuntu下启动缓慢,耗时很长时间,Creation of SecureRandom instance for session ID generation using [SHA1PRNG] 编辑时间:2017-02-10 浏览量:1059 将tomcat部署到ubuntu下启动时发现需要10几分钟才能启动完成,但是在windows下启动时只需几秒钟的时间,查看日志发现Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [342,445] milliseconds,此处耗费了很长的时间,上网查询解决,特此记录。 Tomcat 7启动很慢,且日志上无任何错误,在日志中查看到如下信息: Log4j:[2016-10-29 15:47:11] INFO ReadProperty:172 – Loading properties file from class path resource [resources/jdbc.properties]  Log4j:[2016-10-29 15:47:11] INFO ReadProperty:172 – Loading properties file from class path resource [resources/common.properties]  29-Oct-2016 15:52:53.587 INFO [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [342,445] milliseconds. 原因 Tomcat 7/8都使用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom类产生安全随机类SecureRandom的实例作为会话ID,这里花去了342秒,也即接近6分钟。 SHA1PRNG算法是基于SHA-1算法实现且保密性较强的伪随机数生成器。 在SHA1PRNG中,有一个种子产生器,它根据配置执行各种操作。 1)如果Java.security.egd 属性或securerandom.source属性指定的是”file:/dev/random”或”file:/dev/urandom”,那么JVM 会使用本地种子产生器NativeSeedGenerator,它会调用super()方法,即调用 SeedGenerator.URLSeedGenerator(/dev/random)方法进行初始化。 2)如果java.security.egd属性或securerandom.source属性指定的是其它已存在的URL,那么会调用SeedGenerator.URLSeedGenerator(url)方法进行初始化。 这就是为什么我们设置值为”file:///dev/urandom”或者值为”file:/./dev/random”都会起作用的原因。 在这个实现中,产生器会评估熵池(entropy pool)中的噪声数量。随机数是从熵池中进行创建的。当读操作时,/dev/random设备会只返回熵池中噪声的随机字节。/dev/random非 常适合那些需要非常高质量随机性的场景,比如一次性的支付或生成密钥的场景。 当熵池为空时,来自/dev/random的读操作将被阻塞,直到熵池收集到足够的环境噪声数据。这么做的目的是成为一个密码安全的伪随机数发生器,熵池要有尽可能大的输出。对于生成高质量的加密密钥或者是需要长期保护的场景,一定要这么做。 那么什么是环境噪声? 随机数产生器会手机来自设备驱动器和其它源的环境噪声数据,并放入熵池中。产生器会评估熵池中的噪声数据的数量。当熵池为空时,这个噪声数据的收集是比较花时间的。这就意味着,Tomcat在生产环境中使用熵池时,会被阻塞较长的时间。 解决 有两种解决办法: 1)在Tomcat环境中解决 可以通过配置JRE使用非阻塞的Entropy Source。 在catalina.sh中加入这么一行:-Djava.security.egd=file:/dev/./urandom 即可。 加入后再启动Tomcat,整个启动耗时下降到Server startup in 2912 ms。 2)在JVM环境中解决…

Read More