👨🏻💻Infra/🟦WEB & WAS
Apache Log4j 1.2 취약점 업데이트 방법
2021.12.14 게시된 'Apache Log4j 제품 업데이트 권고'(CVE-2021-45046)를 포함하는 내용으로, log4j 1.2에 대한 취약점이 추가로 확인되어 관련 내용을 추가 공지합니다. 주요 내용 Apache Log4j 2에서 발생하는 원격코드 실행 취약점(CVE-2021-44228) Apache Log4j 2에서 발생하는 서비스 거부 취약점(CVE-2021-45046) Apache Log4j 1.2에서 발생하는 원격코드 실행 취약점(CVE-2021-4104) ※ Log4j : 프로그램 작성 중 로그를 남기기 위해 사용되는 자바 기반의 오픈소스 유틸리티 영향을 받는 버전 CVE-2021-44228 - 2.0-beta9 ~ 2.14.1 버전 CVE-2021-45046 - 2.0-beta9..
Apache Log4j 2.16.0 업데이트 방법 (Log4j 2.12.2 포함)
Log4j 2.15 의 경우 불완전하여 13일 아파치 재단에서 추가 업데이트 버전인 2.16.0 을 배포하였습니다. 또한 Java7 사용자를 위한 2.12.2 버전도 배포 되었습니다. 추가 배포 이유 2.15 버전에서 가장 심각한 취약점은 해결했지만, 일부 구성에서 불완전하여 공격자가 서비스 거부(Dos) 공격을 실행 가능합니다. Java 8 사용자의 경우 2.16.0 으로 업데이트 하시기 바라며 Java 7 사용자의 경우 이번에 2.12.2 가 릴리스 되어 해당 버전으로 업데이트 하셔야 합니다. 이번 취약점에 대해 아직 업데이트를 하지 않은 분들의 경우 2.16.0(Java8) 및 2.12.2(Java7) 로 바로 업데이트 하시기 바랍니다. Log4j 2.16.0 다운로드 링크 https://loggi..
Apache Log4j2 취약점 해결방법
https://serverstudy.tistory.com/221 Apache Log4j 2.16.0 업데이트 방법 (Log4j 2.12.2 포함) Log4j 우회로 인하여 현재 아파치 재단에서 13일 업데이트 버전인 2.16.0 을 추가 배포하였습니다. 또한 Java7 사용자를 위한 2.12.2 버전도 배포 되었습니다. 추가 배포 이유 2.15 버전에서 가장 심각한 serverstudy.tistory.com ▶ 현재 글을 보시는 분들은 추가 배포된 위 링크를 보시기 바랍니다 ◀ 주요 내용 Apache Log4j 2*에서 발생하는 원격코드 실행 취약점(CVE-2021-44228) 프로그램 작성 중 로그를 남기기 위해 사용되는 자바 기반의 오픈소스 유틸리티 영향받는 대상 사용자가 입력하는 문자열을 기록하는 ..
PHP Redis
OS : CentOS7 PHP : 7.3.23 phpredis : 5.3.4 Redis : 6.2.1 phpredis install ----------------------------------설치파일 있다고 가정---------------------------------- tar xzvf phpredis-5.3.4.tar.gz cd /usr/local/src/phpredis-5.3.4 /usr/local/php/bin/phpize ./configure make && make install -------------------------------------------------------------------------------------- ----------------------------------..
Apache client denied by server configuration
error로그에 제목과같은 log가 찍히는 경우 접근 제한을 해제해야 한다. 이전 버전 최신버전 설정이 다르다. 이전버전 Order allow,deny Allow from all 최신버전 Require all granted
PHP7 SSH2
XE나 워드프레스 관리자 화면에서 sftp를 이용하기 위해서는 php 확장 모듈인 ssh2가 필요하다 필자는 소스를 직접 받아 컴파일 하였다. pecl.php.net/package/ssh2 위 URL에서 맞는 버전 설치 후 서버에 업로드 (필자는 1.2 다운로드하였음) tar xzvf ssh2-1.2.tgz cd ssh2-1.2 . . . vi /etc/php.ini 마지막으로 phpinfo에서 ssh2 모듈 확인해보면된다~ 끄읕
PHP7 opcache 설정
php7 버전에서 Zend Opcache 가 포함되어 설치되므로 /etc/php.ini 에서 아래와같이 extension 으로 설정만 해주면된다. [opcache] zend_extension=/usr/local/php-7.3.23/lib/php/extensions/no-debug-zts-20180731/opcache.so opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=10240 opcache.interned_strings_buffer=16 opcache.max_accelerated_files=2400000 opcache.max_wasted_percentage=10 opcache.validate_timestamps=1 opcache.re..
Apache 브라우저 캐시 설정
우리가 사용하는 브라우저는 웹페이지 접근 시 캐시가 쌓인다. 캐시를 쌓는 이유는 동일 사이트 접속 시 미리 최근에 저장해놓은 파일들을 이용하면 웹페이지에 더 빠르게 접근이 가능하기 때문이다. Apache에서 제공하는 캐시모듈을 적용하면 지정한 기간동안 캐시로 보관한다. Apache에서는 mod_expire 모듈을 통해 설정할수있다. 아래 설정은 gif, png, jpg, jpeg 등 파일에 대하여 1달간 캐시를 설정을 하겠다는 뜻이다. 꼭 month와 같은 "달" 이 아닌 몇시간, 몇일, 몇주 도 설정가능하다 ex) years, months, weeks, days, hours, minutes, seconds vi httpd.conf ExpiresActive On ExpiresByType image/x-i..
Apache gzip 압축전송
위 화면은 Chrome 개발자도구에서 확인할수 있는 내용이다 필자가 관리하고있는 사이트는 gzip 으로 압축 전송이 되고있다. 위 사진에 보듯이 서버에서 설정을 아직 안했다면 Response Headers 쪽에 Content-Encoding: gzip 이 없을것이다. 이를 사용하기 위해서는 2개의 조건이 있다. 1. 사이트에 접속하는 사용자의 브라우저에서 gzip 기능을 지원할것 2. 서버에서 gzip으로 전송 vi httpd.conf LoadModule deflate_module modules/mod_deflate.so LoadModule headers_module modules/mod_headers.so LoadModule filter_module modules/mod_filter.so 위 세개 모듈..
Apache ModSecurity requires mod_unique_id to be installed.
위 주석을 해제한다 Modsecurity 를 설치하기전에는 위 라이브러리가 필요하다 주석을 풀어주고 apache restart를 해도되고 modules/ 쪽에 없다면 모듈 설치 후 진행해야한다.
Apache2.4 mod_security
기존환경 : Apache2.4, PHP7.3, MySQL5.7 컴파일설치되어있음 필자와 같이 컴파일설치로 되어있다는 가정으로 진행하겠다. rpm으로 설치되어있어도 웬만해서는 따라올수있다 #modsecurity 소스 다운로드 wget https://www.modsecurity.org/tarball/2.9.3/modsecurity-2.9.3.tar.gz https://www.modsecurity.org 공식홈페이지이며, 필자는 위 주소에서 2.x 버전을 다운 다른 버전을 원하는사람은 다른 버전을 다운받길 바란다. modsecurity 설치까지 완료하면 룰셋을 다운받는다 #modsecurity 룰셋 다운로드 git clone https://github.com/SpiderLabs/owasp-modsecurity..
Tomcat HTTP Header 배너 삭제
Apache-Tomcat 연동사용자에게 HTTP Header를 가리는부분은 Tomcat 이 아닌 Apache 에서 변경해야한다. 이유는 HTTP Header 쪽을 보면 Apache 버전이 노출되기 때문이다. ------------------------------------------------------------------------ Apache-Tomcat 연동사용자는 HTTP Header 에 다음과 같이 나온다. 위 부분에 버전을 가리려면 다음과 같이 설정한다 vi httpd.conf ServerTokens Prod
Tomcat 버전 노출
Apache-Tomcat 을쓰거나 Tomcat 단일로 쓰는 서버 모두 적용대상이다. 서버 버전이 노출되면 해당 버전의 취약점을 이용하여 공격당할수있다. 그러므로 버전 정보는 안보이게 하는것이 좋다 보통 web.xml 파일안에 404 error 페이지가 설정되어있지 않다면 아래사진과 같은 화면을 보게된다 처리방법 CATALINA_HOME/lib 쪽에 오면 catalina.jar 파일이 보인다. jar xvf catalina.jar 위 파일을 압축 풀면 org 와 META_INF 가 생김 그럼 이제 다음 경로로 들어간다 /usr/local/apache-tomcat-7.0.70/lib/org/apache/catalina/util 위 경로에서 ServerInfo.properties 파일을 열어서 위 사진과 같이..
Apache LogFormat 정리
액세스 로그로 저장하는 데이터를 직접 커스텀마이징하여 형식을 지정할 수 있다. 로그 형식은 "LogFormat"으로 지정한다. LogFormat "포맷" 로그-형식-이름 기본적으로 로그 형식으로는 다음의 두 가지가 정의되어있으며, 로그 형식 이름으로 "common"과 "combined"의 두 가지가 있으며, 사용자가 만들수있다. %a 액세스한 IP 주소 %A 서버 (Apache)의 IP 주소 %B 전송된 바이트 수 (헤더는 제외) %b 전송된 바이트 수 (헤더는 제외), 0바이트인 경우는 '-'이 표시된다. %f 요청된 파일 이름 %h 원격 호스트 이름 %H 요청 프로토콜 이름 %l 클라이언트 식별자 %m 요청 메소드명 %q 요청에 포함된 쿼리 문자열, 공백 이외는 "?"가 붙는다. %r 요청의 첫 번째..
[Apache] Apache server-status 로 모니터링 하기
Apache에서는 "mod_status" 모듈에 "server-status"라는 핸들러를 제공한다. (핸들러는 있는 동작을 시키는 함수 같은 것이다. 프로그램의 모임이라고 생각하면 된다.) "server-status" 핸들러를 호출하여 Apache의 동작 상황을 확인할 수 있다. 그럼 브라우저에서 "server-status" 핸들러를 호출하여 동작 상황을 보자 mod_status 모듈 로드 먼저 "mod_status"모듈을 이용할 수 있도록 "LoadModule"에서 모듈을 로드한다. 앞부분에 주석을 제거한다. LoadModule status_module modules/mod_status.so 다음은 "server-status" 핸들러를 호출하는 설정을 한다. "Include"을 사용하여 "httpd-i..
Tomcat 원격 코드 취약점 | CVE-2020-1938 Ghostcat
취약버전 (취약점 공개일 2020.2.24) 9.0.0~9.0.30 8.5.0~8.5.50 7.0.0~7.0.99 Tomcat 버전별 취약점 업데이트 내용 확인 ※ 7.x : http://tomcat.apache.org/security-7.html ※ 8.x : http://tomcat.apache.org/security-8.html ※ 9.x : http://tomcat.apache.org/security-9.html 원인 AJP 연결은 HTTP 연결보다 신뢰도가 높은것으로 취급하며, 기존 취약점버전 Tomcat은 모든 IP주소(0.0.0.0) 에서 수신대기하는 AJP 커넥터를 기본적으로 사용하도록 설정하여 제공하였다. 이 부분은 신뢰할수없는 사용자가 AJP 포트에 엑세스할수있다는것이며, 공격자는 파일..
PHP 메모리 부족 (PHP Fatal Error: Allowed memory size of)
서버 램이 넉넉잡아 16기가 정도 남았다고 해봅시다. memory_limit이 128MB(기본값)이라면 섬네일 생성이 필요한 페이지를 동시에 100명이 요청해도 됩니다. (128MB × 100 = 12.8GB) memory_limit이 512MB이라면 섬네일 생성이 필요한 페이지를 동시에 50명만 요청해도 서버가 다운됩니다. (512MB × 50 = 25.6GB) 즉 서버에서 안정적으로 처리할 수 있는 동접수에 큰 차이가 생기고, 악의를 가진 사용자가 일부러 대용량 이미지를 첨부한 후 동시에 다수의 섬네일 생성을 요청하여 서버를 마비시킬 수 있는 취약점도 발생합니다. PHP Fatal Error: Allowed memory size of 134217728 bytes exhausted (tried to a..
Apache log에 favicon.ico 출력 제거
1. 개요 1) favicon의 정의 - favicon이란, favorite + icon 의 합성어 - 즐겨찾기를 할 경우 즐겨찾기 목록 좌측의 아이콘을 등록할 때 쓰임/ - 한글로 "파비콘"이라고 칭함 - 즐겨찾기를 수행할 때, Default로 찾는 파일임(소스상에서 다른 지정을 안할 경우) Web Server를 운용하다 보면.. errorlog에 아래와 같은 로그가 남기는 것을 볼 수 있다. favicon은 즐겨찾기 등록시에 옆에 보이는 아이콘이다. 소스상에서 따로 코딩하지 않으면 자동적으로 해당 Docroot의 Root디렉토리에서 찾는다. 아래의 경우, /home/monitor/webapps 경로는 물리적 소스 경로이다. 사실상, 별로 중요치 않은 로그이기 때문에 안 쌓이게 하는 것이 좋다. ===..