리눅스 서버에서 apache-log4j 사용 유무 확인 하기.
apache-log4j 보안 이슈가 발생함.
개발과 배포가 끝나고 유지 보수도 진행하고 있다면 개발자에게 확인하면 되겠지만, 유지 보수를 진행하지 않는 사이트 관리자들이 사용 여부와 버전까지 확인하기가 어렵다는 문제가 있다.
간단하게 아래의 방법으로 log4j 사용을 확인 해 보자.
먼저, 자신의 서버가 웹 서버로 동작하는지 확인해야 한다.
# netstat -antp | grep -i listen tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 677/httpd tcp 0 0 0.0.0.0:8400 0.0.0.0:* LISTEN 2314/cvd tcp 0 0 0.0.0.0:46387 0.0.0.0:* LISTEN 2314/cvd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 963/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1995/master tcp 0 0 0.0.0.0:49114 0.0.0.0:* LISTEN 2315/ClMgrS tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 677/httpd tcp 0 0 127.0.0.1:34107 0.0.0.0:* LISTEN 2314/cvd tcp 0 0 0.0.0.0:42276 0.0.0.0:* LISTEN 2314/cvd tcp 0 0 127.0.0.1:199 0.0.0.0:* LISTEN 962/snmpd tcp6 0 0 :::8009 :::* LISTEN 1418/java tcp6 0 0 :::8080 :::* LISTEN 1418/java tcp6 0 0 :::22 :::* LISTEN 963/sshd tcp6 0 0 ::1:25 :::* LISTEN 1995/master tcp6 0 0 127.0.0.1:8005 :::* LISTEN 1418/java
또는,
# ss -ant | grep -i listen LISTEN 0 128 *:80 *:* LISTEN 0 64 *:8400 *:* LISTEN 0 8 *:46387 *:* LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 8 *:49114 *:* LISTEN 0 128 *:443 *:* LISTEN 0 10 127.0.0.1:34107 *:* LISTEN 0 8 *:42276 *:* LISTEN 0 128 127.0.0.1:199 *:* LISTEN 0 100 :::8009 :::* LISTEN 0 100 :::8080 :::* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::* LISTEN 0 1 ::ffff:127.0.0.1:8005 :::*
위에서 80, 443 포트가 LISTEN 상태이므로, 웹서버로 이용중
이제, jsp를 사용하는지 확인한다.
# ps -ef | grep -i java root 17656 1 0 Feb21 ? 13:36:20 /opt/java/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Djava.net.preferIPv4Stack=true -Dignore.endorsed.dirs= -classpath /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/opt/tomcat -Dcatalina.home=/opt/tomcat -Djava.io.tmpdir=/opt/tomcat/temp org.apache.catalina.startup.Bootstrap start root 67650 67626 0 11:41 pts/0 00:00:00 grep --color=auto -i java
java 프로세스가 위와 비슷하게 보인다면 jsp를 사용한다고 보면 된다.
이제, 문제의 apache-log4j를 find 명령으로 찾아본다.
# find / -name log4j* -print /opt/apache-tomcat-8.5.57/webapps/lrm/WEB-INF/classes/log4j.xml /opt/apache-tomcat-8.5.57/webapps/lrm/WEB-INF/lib/log4j-1.2.15.jar /opt/apache-tomcat-8.5.57/webapps/lrm/WEB-INF/lib/log4jdbc-log4j2-jdbc4-1.16.jar /opt/apache-tomcat-8.5.57/webapps/QRreading/WEB-INF/classes/log4j.xml /opt/apache-tomcat-8.5.57/webapps/QRreading/WEB-INF/classes/log4jdbc.log4j2.properties /opt/apache-tomcat-8.5.57/webapps/QRreading/WEB-INF/lib/log4j-core-2.0.1.jar /opt/apache-tomcat-8.5.57/webapps/QRreading/WEB-INF/lib/log4j-1.2.15.jar /opt/apache-tomcat-8.5.57/webapps/QRreading/WEB-INF/lib/log4j-api-2.0.1.jar /opt/apache-tomcat-8.5.57/webapps/QRreading/WEB-INF/lib/log4jdbc-log4j2-jdbc4-1.16.jar /opt/apache-tomcat-8.5.57/webapps/QRreading/WEB-INF/lib/log4jdbc-remix-0.2.7.jar
log4j관련 파일이 보이므로 일단 log4j를 사용한다고 볼 수 있다.
추가: 사용중인 버전은 log4j-core, log4j-api 뒤의 숫자이다. 위의 예에서는 2.0.1이며, 패치 대상이다.