라벨이 apache인 게시물 표시

Apache 보안 강화를 위한 ModSecurity 설정 가이드

이미지
웹 서버의 보안은 항상 중요한 이슈입니다. 오늘은 Apache 웹서버에서 사용할 수 있는 강력한 오픈소스 웹 애플리케이션 방화벽인 'ModSecurity'를 활용하여, 일반적인 보안을 강화하는 방법에 대해 알아보겠습니다. ModSecurity란? ModSecurity는 다양한 공격 유형으로부터 웹 애플리케이션을 보호하는 데 도움을 주는 인기있는 오픈소스 웹 애플리케이션 방화벽(WAF)입니다. Ubuntu에서의 Modsecurity 설치 및 설정 ModSecurity 설치하기 먼저, Ubuntu에서는 아래의 명령어를 통해 ModSecurity와 필수 의존성 패키지들을 설치할 수 있습니다. 1 2 sudo apt - get update sudo apt - get install libapache2 - mod - security2 cs 설치가 완료되면, 아래의 명령어를 통해 Apache에 mod_security 모듈이 제대로 로드되었는지 확인할 수 있습니다. 1 apachectl -M | grep security2_module cs 위의 명령어를 실행하였을 때 "security2_module (shared)"라는 출력이 나타난다면, mod_security 모듈이 정상적으로 로드된 것입니다. <이렇게 나온다면 정상입니다.> 만약 출력되지 않는다면, 아래의 명령어를 통해 mod_security 모듈을 활성화하세요. 1 sudo a2enmod security2 cs 모듈 활성화 후에는 Apache 서버를 재시작하여 변경사항을 적용합니다. 1 sudo systemctl restart apache2.service  cs ModSecurity 설치가 완료되었습니다. 이제 기본 구성 파일을 활성화하고 OWASP CRS를 적용하는 과정으로 넘어갑시다. 기본 구성 파일 활성화 아래 명령어를 실행하여 Modsecurity의 기본 구성 파일을 활성화합니다. 1 sudo mv  / etc / modsecurity / modsecurity.conf

mod_cband, mod_evasive, mod_ratelimit을 이용한 apache 트래픽 관리

apache에서 초당 접속 횟수 제한하는 방법 웹 서버를 운영하다보면 트래픽이나 속도를 제한해야 하는 경우가 있습니다. 예를 들어, 특정 IP나 URL에 대해 초당 접속 횟수를 제한하거나, 다운로드 속도를 조절하거나, 전체적인 대역폭을 관리하거나 하는 등의 작업이 필요할 수 있습니다. 이런 경우에는 apache 웹 서버에서 제공하는 여러가지 모듈과 설정을 이용할 수 있습니다. 이번 포스팅에서는 ubuntu 기준으로 apache에서 초당 접속 횟수를 제한하는 방법에 대해 알아보겠습니다. apache 설치하기 ubuntu에서 apache를 설치하는 방법은 간단합니다. 터미널을 열고 다음 명령어를 입력하면 됩니다. 1 2 sudo apt update sudo apt install apache2 cs 설치가 완료되면 다음 명령어로 apache 서비스의 상태를 확인할 수 있습니다. 1 sudo systemctl status apache2 cs mod_cband 모듈 사용하기 apache에서 초당 접속 횟수를 제한하는 방법 중 하나는 mod_cband라는 모듈을 사용하는 것입니다. mod_cband는 개별 홈페이지의 트래픽을 관리하기 위해 사용하는 모듈로서, 다음과 같은 기능을 제공합니다. CBandLimit: 일정 기간 동안 허용할 최대 트래픽 용량을 설정합니다. CBandPeriod: 트래픽 제한을 적용할 기간을 설정합니다. CBandSpeed: 일정 시간 동안 허용할 최대 전송 속도를 설정합니다. CBandRemoteSpeed: 원격 클라이언트의 최대 전송 속도를 설정합니다. CBandExceededURL: 트래픽 제한이 초과되었을 때 보여줄 URL을 설정합니다. CBandScoreboard: 트래픽 사용량을 저장할 파일의 경로를 설정합니다. CBandStatusHandler: 트래픽 상태를 확인할 수 있는 핸들러를 설정합니다. mod_cband 모듈을 설치하고 사용하는 방법은 다음과 같습니다. 1. mod_cband 모듈 다운로드 및 설치 1 2 3 4 5 6 w

apache 웹 서버 보안 강화하기 : 8가지 필수 설정

이미지
Apache 기본 보안 설정 Apache는 가장 널리 사용되는 웹 서버 중 하나입니다. 그러나 Apache를 설치하고 사용하기만 한다면 보안상의 취약점이 있을 수 있습니다. 이 포스팅에서는 Apache의 기본 보안 설정에 대해 알아보겠습니다. 1. 서버 정보 숨기기 웹 페이지의 헤더와 404 에러페이지에서 서버에서 사용하고 있는 OS 버전/ OS 정보가 노출되었다면, 공격자에게 힌트를 주게 됩니다. 이런 서버 정보를 숨기기 위해서는 ServerTokens 설정을 수정해야 합니다. ServerTokens 설정은 HTTP response의 HTTP Header에 노출되는 서버 정보를 얼마나 보여줄 것인가를 설정할 수 있습니다. 설정 값은 Full, OS, Minimal, Minor, Major, Prod 이 있습니다. Full : Apache/2.4.18 (Ubuntu) / PHP … OS : Apache/2.4.18 (Ubuntu) Min : Apache/2.4.18 Minor : Apache/2.4 Major : Apache/2 Prod : Apache ServerTokens 설정은 OS별로 다음과 같은 파일에서 수정할 수 있습니다. 우분투 : /etc/apache2/conf-available/security.conf CentOS : /etc/httpd/conf/httpd.conf 설정 파일 내 ServerTokens 를 Prod로 수정하고 아파치를 재시작하면, 서버 정보가 최소한으로 노출됩니다. 2. 디렉토리 인덱싱 차단 디렉토리 인덱싱 차단은 이전 포스팅에서도 한번 언급했던 것입니다. ( 이전 포스팅 보기 ) 디렉토리 인덱싱은 웹 서버에 있는 파일과 폴더의 목록을 보여주는 기능으로 이 기능이 활성화되어 있다면, 공격자는 웹 서버의 구조와 파일을 쉽게 파악할 수 있습니다. 따라서 디렉토리 인덱싱을 차단하는 것이 좋습니다. 디렉토리 인덱싱을 차단하기 위해서는 /etc/apache2/apache2.conf 파일에서 Options 부분에 있는 Indexes 를 제

apache에서 .htaccess 파일을 사용하여 웹사이트 설정 변경하기

이미지
apache에서 .htaccess 사용설정 하는 방법 웹사이트를 운영하다보면 서버의 설정을 변경해야 할 때가 있습니다. 예를 들어, URL을 재작성하거나, 접근 권한을 제어하거나, 오류 페이지를 커스터마이징하거나, 캐시를 관리하거나 등등의 작업을 해야 할 수 있습니다. 이런 작업들을 하기 위해서는 웹서버의 설정 파일을 수정해야 하는데, 이는 보통 root 권한이 필요하고, 설정 파일을 잘못 수정하면 서버가 다운될 수도 있습니다. 그래서 apache 웹서버에서는 .htaccess라는 파일을 사용하여 웹사이트의 디렉토리별로 서버의 설정을 변경할 수 있게 해줍니다. .htaccess 파일은 웹사이트의 루트 디렉토리나 하위 디렉토리에 생성할 수 있으며, 해당 디렉토리와 그 하위 디렉토리에만 영향을 미칩니다. .htaccess 파일은 일반적으로 텍스트 에디터로 작성할 수 있으며, 서버를 재시작할 필요 없이 바로 적용됩니다. 하지만 .htaccess 파일을 사용하기 위해서는 apache 웹서버에서 .htaccess 파일의 사용을 허용해야 합니다. 이번 포스팅에서는 apache에서 .htaccess 파일의 사용설정 하는 방법에 대해 알아보겠습니다. .htaccess 파일의 사용 허용하기 apache에서 .htaccess 파일의 사용을 허용하기 위해서는 httpd.conf라는 설정 파일을 수정해야 합니다. httpd.conf 파일은 보통 /etc/httpd/conf/ 또는 /etc/apache2/ 디렉토리에 위치합니다. httpd.conf 파일을 열어서 다음과 같은 내용을 찾습니다. 이 부분은 웹사이트의 루트 디렉토리에 대한 설정입니다. AllowOverride None이라고 되어 있는데, 이는 .htaccess 파일의 사용을 금지한다는 의미입니다.  이를 AllowOverride All로 변경하면 .htaccess 파일의 사용을 허용하게 됩니다. 만약 특정 디렉토리에만 .htaccess 파일의 사용을 허용하고 싶다면, 다음과 같이 해당 디렉토리에 대한 설정을 추가합니다.

apache 웹 서버에서 ‘index of /’ 페이지 없애는 방법

이미지
안녕하세요. 이번에는 apache의 'index of /'에 대한 설명과 없애는 방법에 대해 알아보겠습니다. apache의 'index of /'란 무엇인가요? apache는 웹 서버 소프트웨어로, 웹 브라우저와 웹 사이트 간의 통신을 가능하게 해줍니다. apache는 웹 사이트의 파일들을 저장하고 있으며, 웹 브라우저가 요청하는 파일을 전달해줍니다. 그런데, 웹 브라우저가 특정 디렉토리(폴더)를 요청할 때, 그 디렉토리에 index.html이나 index.php와 같은 기본 파일이 없다면, apache는 'index of /'라는 제목으로 그 디렉토리의 모든 파일과 하위 디렉토리를 나열해주는 페이지를 보여줍니다. 예를 들어, http://example.com/galerias/ 라는 주소로 접속했을 때, galerias 디렉토리에 index.html이나 index.php가 없다면, 다음과 같은 화면을 볼 수 있습니다. 'index of' 페이지 이러한 페이지를 디렉토리 인덱싱이라고 부르며, apache의 mod_autoindex 모듈이 제공하는 기능입니다. 디렉토리 인덱싱은 웹 사이트의 구조나 파일들을 쉽게 확인할 수 있게 해주는 장점이 있지만, 보안측면에서 심각한 문제를 초래합니다. apache의 'index of /'를 없애는 방법은 무엇인가요? apache의 'index of /'를 없애는 방법은 크게 세 가지입니다. 1. 기본 파일 생성하기 가장 간단한 방법은 디렉토리에 index.html이나 index.php와 같은 기본 파일을 생성하는 것입니다. 이렇게 하면, 웹 브라우저가 디렉토리를 요청할 때, apache는 기본 파일을 보여주게 됩니다. 예를 들어, http://example.com/galerias/ 라는 주소로 접속했을 때, galerias 디렉토리에 index.html이 있다면, 다음과 같은 화면을 볼 수 있습니다. index.html에 접속하면 사이트 주인

Apache 서버에서 HTTP를 HTTPS로 리다이렉트 시키는 방법

이미지
HTTP를 HTTPS로 자동 변경하기 얼마 전, certbot으로 무료 SSL 인증서를 발급하는 포스팅을 한 적이 있다. ( 포스팅 보러가기 ) 지난 포스팅에서 제시한 방법대로 진행했다면 아마 apache의 Rewrite를 이용하여 자동으로  'http to https' 설정이 되어 있을 것이다. 하지만 구버전의 certbot을 이용하였거나, certbot SSL 인증서를 이용하지 않을 경우에는 직접 설정해주어야 하는데 이번 포스팅에서는 Apache 서버에서 HTTP를 HTTPS로 리다이렉트 시키는 방법에 대해 알아보겠다. 이론공부 : HTTP와 HTTPS의 차이점과 장점 HTTP는 웹 브라우저와 웹 서버가 통신하는 데 사용되는 프로토콜인데, 이는 보안이 취약하기 때문에 데이터가 가로채어질 우려가 있다. 그래서 HTTPS라는 프로토콜이 등장했는데, HTTPS는 HTTP를 암호화하여 보안을 강화하기 위해 TLS/SSL 기술을 적용한 것이다. HTTPS 사용시, 데이터가 양방향으로 암호화되어 중간에 민감한 정보가 유출될 위험이 줄어든다. 또한 대부분의 웹 브라우저에서 HTTPS 사이트가 안전하다는 것을 보여주고 있다. HTTPS를 사용하면 웹 페이지 로딩 속도를 높여주는 HTTP/2라는 성능 개선된 프로토콜을 사용할 수 있으며, 구글은 HTTPS 사이트를 우대한다. (검색 순위에 영향을 줌) Apache 서버에서 리다이렉트 시키기 리다이렉트란 한 URL에서 다른 URL로 자동으로 이동시키는 것으로 Apache 서버에서 HTTP를 HTTPS로 자동 리다이렉트시키는 방법은 여러가지가 있다. 가장 보편적인 방법은, 가상 호스트 설정 파일에 Redirect 명령어를 사용하는 것인데, 이 방법은 가상 호스트 설정 파일에서 다음과 같은 코드를 작성하면 된다. virtualhost파일에 설정하기 <VirtualHost *:80> ServerName example.com ServerAlias www.example.com Redirect permanent