我有一台 Debian Linux 64 位专用服务器。内核已应用 grsec 补丁。
我主要使用该服务器来运行 Apache Tomcat (6.0.26,Java 6),一切似乎都很好。
唯一的问题是,当我开始Tomcat,我得到了其中一些:
grsec: From xxx.xxx.xxx.xxx: Segmentation fault occurred at 00007fefe04e4000 in /home/t/jre1.6.0_20/bin/java[java:22403] uid/euid:1001/1001 gid/egid:1001/1001, parent /sbin/init[init:1] uid/euid:0/0 gid/egid:0/0
grsec: more alerts, logging disabled for 10 seconds
然后就不再有错误日志了。一切都很好。
内核是:
Linux 2.6.32.2-xxxx-grs-ipv4-64 #1 SMP Tue Dec 29 14:41:12 UTC 2009 x86_64 GNU/Linux
并且该网络应用程序运行良好。
因此,Tomcat 启动时出现分段错误,但一切似乎都运行正常。
这令人担忧吗?我应该转到非 grsec 内核吗?
答案1
我也受 OVH 托管,并且我有很多这样的:
7 月 20 日 07:29:25 nsxxxxxx 内核:grsec:来自 xxxx:/usr/lib/jvm/java-6-sun-1.6.0.17/jre/bin/java[java:4177] uid/euid:1011/1011 gid/egid:1011/1011 中的 00007f0e17e3e300 处发生分段错误,父级 /sbin/init[init:1] uid/euid:0/0 gid/egid:0/0
7 月 20 日 07:29:25 nsxxxxxx 内核:grsec:来自 xxxx:在 /usr/lib/jvm/java-6-sun-1.6.0.17/jre/bin/java[java:30441] uid/euid:1011/1011 gid/egid:1011/1011 中的 000000000000008 处发生分段错误,父级 /sbin/init[init:1] uid/euid:0/0 gid/egid:0/0
7 月 20 日 07:29:25 nsxxxxxx 内核:grsec:来自 xxxx:在 /usr/lib/jvm/java-6-sun-1.6.0.17/jre/bin/java[java:30441] uid/euid:1011/1011 gid/egid:1011/1011 中的 000000000000008 处发生分段错误,父级 /sbin/init[init:1] uid/euid:0/0 gid/egid:0/0
7 月 20 日 07:30:00 nsxxxxxx 内核:grsec:来自 xxxx:在 /usr/lib/jvm/java-6-sun-1.6.0.17/jre/bin/java[java:30620] uid/euid:1011/1011 gid/egid:1011/1011 中的 0000000000000008 处发生分段错误,父级 /sbin/init[init:1] uid/euid:0/0 gid/egid:0/0
7 月 20 日 07:30:02 nsxxxxxx 内核:grsec:来自 xxxx:/usr/lib/jvm/java-6-sun-1.6.0.17/jre/bin/java[java:30620] uid/euid:1011/1011 gid/egid:1011/1011 中的 000000000000008 处发生分段错误,父级 /sbin/init[init:1] uid/euid:0/0 gid/egid:0/0
7 月 20 日 07:30:02 nsxxxxxx 内核:grsec:来自 xxxx:在 /usr/lib/jvm/java-6-sun-1.6.0.17/jre/bin/java[java:30672] uid/euid:1011/1011 gid/egid:1011/1011 中的 000000000000001c 处发生分段错误,父级 /sbin/init[init:1] uid/euid:0/0 gid/egid:0/0
7 月 20 日 07:30:14 nsxxxxxx 内核:grsec:来自 xxxx:/usr/lib/jvm/java-6-sun-1.6.0.17/jre/bin/java[java:30683] uid/euid:1011/1011 gid/egid:1011/1011 中的 000000000000008 处发生分段错误,父级 /sbin/init[init:1] uid/euid:0/0 gid/egid:0/0
7 月 20 日 07:30:14 nsxxxxxx 内核:grsec:来自 xxxx:在 /usr/lib/jvm/java-6-sun-1.6.0.17/jre/bin/java[java:30683] uid/euid:1011/1011 gid/egid:1011/1011 中的 0000000000000008 处发生分段错误,父级 /sbin/init[init:1] uid/euid:0/0 gid/egid:0/0 ...
看来将内核改为非 GRSEC 内核是可行的。
答案2
众所周知,Java 与其他程序不能很好地协同运行。
您至少必须对 Java 二进制文件使用 chpax,但切换到非 grsec 内核是更好的选择。