2008年8月27日水曜日

Tomcat5.5 のセキュリティ設定

Tomcatをアップグレードして起動した際に下記のようなエラーがでます。
SEVERE: Error unregistering mbean
java.security.AccessControlException: access denied (java.io.FilePermission /var/lib/tomcat5.5/webapps/HttpSpeed/WEB-INF/classes/logging.properties read)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
at java.security.AccessController.checkPermission(AccessController.java:546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.lang.SecurityManager.checkRead(SecurityManager.java:871)
at java.io.File.exists(File.java:731)
at org.apache.naming.resources.FileDirContext.file(FileDirContext.java:828)
at org.apache.naming.resources.FileDirContext.lookup(FileDirContext.java:211)
at org.apache.naming.resources.ProxyDirContext.lookup(ProxyDirContext.java:294)
at org.apache.catalina.loader.WebappClassLoader.findResourceInternal(WebappClassLoader.java:1924)
at org.apache.catalina.loader.WebappClassLoader.findResource(WebappClassLoader.java:936)
at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:299)
at org.apache.juli.ClassLoaderLogManager$2.run(ClassLoaderLogManager.java:273)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.juli.ClassLoaderLogManager.getClassLoaderInfo(ClassLoaderLogManager.java:270)
at org.apache.juli.ClassLoaderLogManager.getLogger(ClassLoaderLogManager.java:175)
at java.util.logging.Logger.getLogger(Logger.java:275)
at com.sun.jmx.trace.TraceManager.getLogger(TraceManager.java:166)
at com.sun.jmx.trace.TraceManager.isSelected(TraceManager.java:197)
at com.sun.jmx.trace.Trace.isSelected(Trace.java:84)
at com.sun.jmx.mbeanserver.Repository.isTraceOn(Repository.java:68)
at com.sun.jmx.mbeanserver.Repository.contains(Repository.java:471)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.isRegistered(DefaultMBeanServerInterceptor.java:593)
at com.sun.jmx.mbeanserver.JmxMBeanServer.isRegistered(JmxMBeanServer.java:598)
at org.apache.commons.modeler.Registry.unregisterComponent(Registry.java:612)
at org.apache.catalina.core.StandardWrapper.stop(StandardWrapper.java:1706)
at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4350)
at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:893)
at org.apache.catalina.startup.HostConfig.undeployApps(HostConfig.java:1180)
at org.apache.catalina.startup.HostConfig.stop(HostConfig.java:1151)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:313)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
at org.apache.catalina.core.ContainerBase.stop(ContainerBase.java:1055)
at org.apache.catalina.core.ContainerBase.stop(ContainerBase.java:1067)
at org.apache.catalina.core.StandardEngine.stop(StandardEngine.java:448)
at org.apache.catalina.core.StandardService.stop(StandardService.java:510)
at org.apache.catalina.core.StandardServer.stop(StandardServer.java:734)
at org.apache.catalina.startup.Catalina.stop(Catalina.java:602)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.stop(Bootstrap.java:307)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.commons.daemon.support.DaemonLoader.stop(DaemonLoader.java:200)




もし内部の試験サーバであれば下記でセキュリティ設定を解除でOK。
/etc/init.d/tomcat5.5
--
TOMCAT5_SECURITY=no


もしきっちり設定したいならJavaのPolicyファイルへ下記追加
#sudo vim /etc/tomcat5.5/policy.d/99examples.policy
grant {
permission javax.management.MBeanTrustPermission "register";
};

grant codeBase "file:${catalina.home}/webapps/gprs/-" {
permission java.security.AllPermission;
}

Ubuntu Edgy Serverからアップグレード方法

会社で運用しているサーバを久しぶりに見たら、Edgy(6.10)だったので最新版のサーバEdition (Hardy 8.04)へアップグレードしましたのでその方法です。

1)先ずは、Aptラインを修正
vim /etc/apt/source.list
#一括変換
:%s/edgy/feisty/g


2)更新及びアップグレードツールインストール
#apt-get update
#apt-get install update-manager-core
#do-release-upgrade


3)Tomcat入れてる場合は下記の変更
Tomcatが入ってた場合は下記のようなエラーが出ると思います。
jsvc error: Cannot locate Java Home

なので下記の設定ファイルにてPathを通します。
#vim /etc/default/tomcat5.5
JAVA_HOME=/usr/lib/jvm/java-6-sun
CATALINA_BASE=/var/lib/tomcat5.5


これでOKです。下記を走らせてエラーのないことを確認しましょう。
#dpkg --configure -a

ここまででFeistyへアップグレード。続いて同様に。。

4)AptラインをHardyへ修正
vim /etc/apt/source.list
#一括変換
:%s/feisty/hardy/g


5)更新及びアップグレードツールインストール
#apt-get update
#apt-get dist-upgrade


Tomcatが入っているなら前回同様
#vim /etc/default/tomcat5.5
JAVA_HOME=/usr/lib/jvm/java-6-sun
CATALINA_BASE=/var/lib/tomcat5.5


6)で、最後の仕上げ。下記でエラーがないことを確認します。
#dpkg --configure -a
# lsb_release -a
--
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 8.04.1
Release: 8.04
Codename: hardy
--


これでばっちり最新版にアップグレードです。