반응형

mod_cband : 홈페이지의 히트(hit)수 제한 및 도메인별 대역폭제한등 트래픽을 관리

 

mod_cbnad 다운로드

 

압축 풀기

 

컴파일 설정

 

mod_cband 설치

 

apache 모듈 적용 확인

 

관리 페이지 접근 허용 아이피 설정

cband 옵션

CBandSpeed 1024 10 30 => 최대 1024kbps전송속도로 제한, 초당 10개의 요청 처리, 동시 접속을 30개로 제한

CBandRemoteSpeed 20kb/s 3 30 => 접속자(ip)에대해 최대 20kb/s , 초당 3개의 요청, 동시 접속 30개로 제한

CBandPeriod 1D => 일일트래픽

CBandLimit 1000Mi => 1000myte를 초과할 경우

CBandExceededSpeed 500 5 10 => 속도를 500bps로 초당 5번 의 연결, 동시접속자를 10명으로 제한

CBandRandomPulse On/Off => 속도 제한을 위해서 임의의 파형을 생성한 다음 처리하는 mod_cband의 처리 방법, 부하가 많을때는 자동 Off

CbandExceededURL => 제한을 초과했을시 보여줄 URL, 지정하지 않으면 503 에러 발생

CbandScoreboard => 가상호스트의 scoreboard 파일 지정, 성능향상을 위해 필요

CbandUserSpeed => cband 가상 사용자의 속도, 요청수, 동시 접속수 제한

 

cband 상태 확인

 

반응형
반응형

mod_security : 오픈 소스 웹 응용 프로그램 방화벽

mod_security 다운로드

 

 

현재 디렉토리에 압축 품

 

스크립트 실행

 

설치

 

모듈 복사

 

모듈 추가

 

설정 변경후 재시작
★ 웹 서비스 단절이 발생하면 안될 때
/usr/local/apache/bin/apachectl -t    문법 테스트
/usr/local/apache/bin/apachectl graceful    적용

 

 

모듈 확인

 

룰셋 적용

SetRuleEngine On | Off | DetectionOnly

On : ModSecurity 기능 활성화

Off : ModSecurity 기능 비활성화

DetectionOnly : 활성화는 하지만 차단하지 않고 탐지만 함

 

SetAuditEngine On | Off | RelevantOnly

On : 모든 트랙젝션 로깅

Off : 모든 트랜젝션 로깅 안함

RelevantOnly : Error , Warning 의 트랜젝션, SecAuditLogRelevantStatus에 정의된 상태코드와 일치하는 트랜젝션만 로깅

 

SetAuditLog logs/modesec_audit.log

검사 로그 파일의 경로를 지정

 

SetAuditLogParts : 로그 파일에 기록할 항목을 정의

A : audit log header

B : request header

C :request body

F : 최종 response header

H : 감사 로그 트레일러

Z : 로그의 끝을 의미

 

접근 차단

 

 

로그 확인(접근 차단)

 

 

 

반응형
반응형

 

1. httpd.conf

사진 삭제

apache 환경 설정 파일

사진 삭제

apache의 홈디렉토리를 지정

 

시스템의 기본값 이외에 다른 IP 주소와 포트에 대해서도 연결할 수 있도록 해줌

 

서버에 문제가 생겼을 때 클라이언트가 메일을 보내는 웹 서버 관리자의 주소

 

 

내부 네트워크에서 리눅스 서버의 IP주소로 웹 서버에 접속할 수 있도록 변경

 

apache 웹 서버의 기능을 확장시켜주는 프로그램들을 모듈 형태로 제공, 동적 공유 객체(DSO)

 

 

웹 서버로 사용될 HTML 문서가 위치하는 곳의 디렉토리를 지정

 

FollowSymLinks 항목은 심볼링 링크를 따라 이동할 수 있게 하는 옵션

AllowOverrride 항목은 각각의 디렉토리에 별개의 파일을 만들어 접근 권한을 설정할 때 사용하는 옵션(보안상 중요)

 

 

웹 서버의 DocumentRoot 로 설정된 디렉토리에 대한 설정을 하는 항목

/usr/local/apache/htdocs 는 사용자들이 웹 서버에 있는 웹 문서를 제대로 읽을 수 있도록 설정되어 있음

웹 서버에 대한 접근은 Allow 를 통해서 이루어짐 (Allow from all 항목은 모든 곳에서 들어오는 접속 허용)

 

 

 

DirectoryIndex 항목은 주소창에 웹 서버의 URL 주소만 지정했을 때 처음에 보여줄 파일을 결정

 

 

php파일로 해석될 확장자 추가

 

 

 

2. vhost.conf

 

하나의 Web Server에는 Main Host 외에 별도의 디렉토리를 가진 여러개의 Host를 설정하여 Virtualhost 설정을 통해 1개의 서버에서 여러개의 웹사이트를 운영할 수 있음

/usr/local/apache/conf/extra/httpd-vhost.conf 에서 설정

 

vhost를 사용하기 위해 httpd.conf 파일에서 Include 주석 처리 해제

 

 

 

 

항목에 대한 설명

DocumentRoot : 웹소스 파일이 위치한 디렉토리의 절대경로 입력

ServerName : 호스트를 제외한 도메인 주소

ServerAlias : 호스트를 포함한 도메인 주소

ErrorLog : 접근시에 발생되는 에러로그가 위치할 경로

CustomLog : 에러로그를 제외한 로그가 위치할 경로

 

 

 

AllowOverrride None : 모든 허용을 하지 않음, None설정으로 이외의 다른 설정들은 모두 무시

Require all granted : 디렉토리 권한(전체 접근 허용)

 

 

 

 

파이어폭스 웹 사이트에서 도메인 주소 입력 후 확인

 

 

 

 

IP기반 가상 호스트

한 장비에 여러개의 IP를 할당받고 IP별로 가상호스트를 사용하는 방법

IP추가를 위해 네트워크 가드 추가 및 네트워크 설정 등이 필요

 

 

 

포트 기반 가상 호스트

포트를 기반으로 가상 호스트를 설정

Listen 포트에 사용할 포트를 여러개 설정한 후 VirtualHost를 해당 포트로 설정

포트를 인식하고 사용자들이 웹서비스에 접근하는 것은 불편하므로 일반적인 방법 X

 

 

 

 

 

이름 기반 가상 호스트

 

한 장비에 여러개의 도메인 이름을 부여하고 도메인 이름별로 가상 호스트를 사용하는 방법

이름 기반 가상 호스트는 클라이언트 요청시 전송하는 헤더중 Host 헤더정보를 사용하여 가상호스트 설정에 따라 웹 서비스를 하게 됨

 

NameVirtualHost 설정 : 80포트에서 이름 기반 가상 호스트를 사용하겠다는 의미로 반드시 적어줘야 함

ServerAlias : 웹서비스가 여러개의 도메인을 사용할 경우 지정해 줌(여러개 지정 가능)

 

 

 

 

 

3. vhosts.ssl.conf

virtualhost 의 ssl 을 설정의 편리를 위해 httpd-vhosts.conf 를 복사한 파일

 

사용하기 위해선 httpd.conf 에서 include 를 해줘야 함

 

사용하기 위해선 httpd.conf 에서 include 를 해줘야 함

여러개의 가상 호스트에 ssl 설정을 하기위해 따로 분리해놓은 설정 파일

 

 

4. php flag off 방법

 

 

사진 삭제

/usr/local/src/php-5.6.25/sapi/apache 디렉토리에서 php 실행 금지

 

 

 

 

5. maxclient 설정 수정방법

사진 삭제

MaxClients : 초기 시작시 실행가능한 최대 아파치 자식 프로세스의 개수를 지정

MaxClients : 최대 동시접속자 수

MaxClients 설정 변경

MaxClients 값 변경 후 apache 재시작

 

 

2) 모듈 사용하기

 

1. 모듈 확인방법

모듈 종류

core : 항상 사용 가능한 핵심 Apache HTTP Server 기능

mod_authn_file : 문자파일을 이용한 사용자 인증

mod_authz_host : 호스트 (이름 또는 IP 주소)를 기반으로 한 그룹 인증

mod_authz_groupfile : 일반 문자파일을 이용한 그룹 권한부여

mod_authz_user : 사용자 권한 부여

mod_auth_basic : 기본 인증

mod_include : 서버 구문 분석 된 html 문서 (서버 측 포함)

mod_filter : 상황에 맞는 스마트 필터 구성 모듈

mod_log_config : 서버로의 요청을 로그에 기록

mod_env : CGI 스크립트나 SSI 페이지에 전달할 환경변수를 수정

mod_setenvif : 요청의 성격에 따라 환경변수 설정을 변경

mod_version : 버전별 설정

prefork : 스레드되지 않은 사전 포크 웹 서버를 구현

mod_mime : 요청 된 파일 이름 확장자를 파일의 동작 (핸들러 및 필터) 및 컨텐츠 (마임 유형, 언어, 문자 세트 및 인코딩)와 연관

mod_status : 서버 활동과 성능에 대한 정보를 제공

mod_autoindex : 자동으로 유닉스의 ls 명령어나 Win32 dir 쉘명령어와 유사한 디렉토리 목록을 만듦

mod_asis : HTTP 헤더를 포함한 파일을 보냄

mod_cgi : CGI 스크립트 실행

mod_negotiation :콘텐츠 협상 제공

mod_dir : "마지막 슬래쉬" 리다이렉션을 제공하고 디렉토리 index 파일을 서비스

mod_actions : 이 모듈은 미디어종류나 요청메서드에 따라 CGI 스크립트를 실행

mod_userdir : 사용자별 디렉토리

mod_alias : 파일시스템의 다른 부분들을 문서 계층구조에 포함하고, URL 리다이렉션을 제공

mod_so : 시작할때 혹은 재시작할때 실행가능한 코드와 모듈을 서버로 읽어들임

 

 

 

2. mod_ssl 적용

apache 컴파일시 mod_ssl 모듈 enable

make && make install 

apache 설정 파일에서 mod_ssl 활성화 확인

 

 

3. vhosts.conf 에서 특정 URL 차단하기

vhost : 웹 서버에 기본적으로 존재하는 호스트인 main host 를 제외한 나머지 host

 

해당 도메인으로 접속을 전부 거부

해당 도메인으로 지정한 ip만 접속을 허용

 

 

192.168.1.25, 192.168.1.26,  example.com 을 제외한 모든 IP 및 도메인 허용

 

 

4. httpd-default.conf 설정 내용

httpd-default.conf : http 기본 설정 파일

 

클라이언트 요청에 의해 서버와 연결된 후 둘 사이에 아무런 메세지가 발생하지 않아서 오류로 처리하는 시간(대기시간)

네트워크 속도가 나쁘거나 서버의 성능이 낮을 수록 수치를 높게 설정

 

연결 지속성 설정, 프로세스가 요청을 처리하고 연결을 끊을 것인지 지속적으로 유지하고 있을 것인지를 설정

 

 

KeepAlive 가 On 일 경우 , 커넥션당 처리할 수 있는 최대 요청의 수, 0으로 설정할 경우 처리할 수 있는 최대 요청 갯수 제한 없음

 

동일한 연결에 동일한 클라이언트로부터 다음번 요청이 있을 때까지 대기하는 시간

 

 

아파치 프로세스가 자신의 URL 및 SERVER_NAME, PORT 값을 어떠한 방식으로 설정할지 결정하는 지시어

OFF 일 경우 클라이언트에 의해 제공되는 Hostname 과 Port 를 사용함

ON 일 경우 아파치는 ServerName 지시어의 값을 사용

 

각각의 디렉토리에 .htaccess 파일을 두고 해당 디렉토리에 대하여 아파치의 설정값을 변경할 수 있도록 해줌

 

서버의 HTTP 응답 헤더 구성

 

서버의 내부 오류나 FTP 디렉토리 리스팅 등, 서버에 의해 생성되는 페이지에 서버의 버전정보, 호스트 네임 등을 추가 할 수 있음

 

로그 기록시 도메인네임(On) 또는 아이피 주소(Off_로 저장할지 설정)

On 일 경우 DNS 질의를 하기 때문에 성능저하 불러 올 수 있음

 

 

반응형
반응형

 

APACHE – 아파치 소프트웨어 재단에서 관리하는 HTTP 웹서버

 

1. 소스 패키지 설치 단계 (configure / make / make install)

configure : 설치 전에 여러가지 옵션을 지정해주고 컴파일 환경을 검사하는 단계

make : 미리 정해진 스크립트를 따라 소스 코드를 컴파일 해주는 도구

make install : 컴파일이 완료된 뒤 설치

 

 

2. 필요한 라이브러리 설치 : apr, apr-util, pcre, apache

Apache

정적 파일의 웹서비스를 담당하는 웹서버

APR(아파치 포터블 런타임), APR-util

Apache가 설치된 OS에 관계 없이 일정한 동작을 하기 위해 필요한 라이브러리

아파치 HTTP 서버의 핵심 고급 IO 기능에 대한 접근

OS 수준의 기능(난수 생성, 시스템 상태)

기본 프로세스 처리(공유 메모리, NT 파이프와 유닉스 소켓) 등 많은 용도로 사용

PCRE(Perl Compatible Regular Expressions)

펄 호환 정규 표현식으로 정규식 패턴 일치를 구현하는 함수의 집합

 

 

3. apache 소스 설치 과정

※ wget : 웹 서버로부터 콘텐츠를 가져오는 컴퓨터 프로그램

 

 

apr 설치

http://mirror.23media.de  웹 사이트에서 apr-1.6.2.tar.gz 파일을 가져옴

 

현재 작업 중인 위치에서 새로운 디렉터리를 생성하고 그안에 압축을 해제

 

 

압축 해제한 apr-1.6.2의 디렉토리로 이동 한 뒤 현재 디렉토리에서 configure라는 이름을 갖는 스크립트 파일을 찾고 실행(소프트웨어가 설치될 컴퓨터의 의존성을 체크하는 것이 목적)

 

 

configure 스크립트가 생성한 Makefile 을 이용해서 동작

 

필요한 모든 요소들이 생성되고 난 뒤 시스템 상에서 정해진 위치에 파일 복사(최종 디렉토리에 복사)

 

 

 

apr-util 설치

http://mirror.23media.de  웹 사이트에서 apr-util-1.6.0.tar.gz 파일을 가져옴

 

 

현재 작업 중인 위치에서 새로운 디렉터리를 생성하고 그안에 압축을 해제

 

압축 해제한 apr-util-1.6.0의 디렉토리로 이동 한 뒤 현재 디렉토리에서 configure라는 이름을 갖는 스크립트 파일을 찾고 실행

 

 

configure 스크립트가 생성한 Makefile 을 이용해서 동작

 

설치가 완료 된 후 최종 디렉토리에 복사

 

 

 

 

 

PCRE 설치

 

http://ftp.pcre.org  웹 사이트에서 pcre-8.41.tar.gz 파일을 가져옴

 

현재 작업 중인 위치에서 새로운 디렉터리를 생성하고 그안에 압축을 해제

 

 

압축 해제한 pcre-8.41의 디렉토리로 이동 한 뒤 현재 디렉토리에서 configure라는 이름을 갖는 스크립트 파일을 찾고 실행

 

 

configure 스크립트가 생성한 Makefile 을 이용해서 동작

 

 

설치가 완료 된 후 최종 디렉토리에 복사

 

 

 

 

Apache 설치

 

http://archive.apache.org  웹 사이트에서 httpd-2.4.38.tar.gz 파일을 가져옴

 

 

현재 작업 중인 위치에서 새로운 디렉터리를 생성하고 그안에 압축을 해제

 

압축 해제한 httpd-2.4.38 의 디렉토리로 이동 한 뒤 현재 디렉토리에서 configure라는 이름을 갖는 스크립트 파일을 찾고 실행

 

컴파일 내용

--prefix=/usr/local/apache/

: 컴파일된 프로그램을 /usr/local/apache/ 위치에 설치

 

--enable-so

: mod so가 제공하는 DSO 기능을 사용

 

--enable-rewrite

: mod rewrite가 제공하는 규칙기반 URL 조작 기능을 사용

 

--with-apr=/usr/local/apr

: httpd 소스 배포본에 포함된 APR 자동으로 웹서버와 같이 컴파일

 

--with-apr-util=/usr/local/apr-util

: httpd 소스 배포본에 포함된 APR-util 자동으로 웹서버와 같이 컴파일

 

--enable-ssl

: mod_ssl이 제공하는 SSL/TLS 기능을 사용한다.

 

--with-ssl=/usr/local/openssl

: mod_ssl 을 사용하는 경우 configure는 설치된 OpenSSL을 찾음

 

--enable-mods-shared=most

: 대부분의 모듈을 DSO 모듈로 컴파일 함

 

--with-pcre=/usr/local/pcre

: httpd 소스 배포본에 포함된 pcre 자동으로 웹서버와 같이 컴파일

 

--with-mpm=prefork

: apache 2.4 버전은 기본 event 형식으로 해당 옵션 제외

 

configure 스크립트가 생성한 Makefile 을 이용해서 동작

 

설치가 완료 된 후 최종 디렉토리에 복사

 

 

httpd 서비스 실행 확인 /  리눅스 시작 시 httpd 서비스 자동 실행

 

iptables(방화벽) 에서 apahce(80 포트) 오픈
/etc/init.d/iptables reload 로 적용

 

 

apache 접속 확인

 

 

 

 

 

 

4. apache configure 확인

--config-cache

: --cache-file=config.cache와 같음

 

--cache-file=FILE

:검사 결과를 FILE 파일에 캐싱함, 기본값은 검사결과를 기록 X

 

--no create

: configure 스크립트를 정상적으로 실행하지만, 출력파일은 만들지 X, 컴파일을 위한 makefile을 만들기 이전에 검사 결과 확인에 유용

 

--quite

: 실행중에 checking ... 문구 출력 X

 

--srcdir=DIR

: DIR 디렉토리를 소스파일 디렉토리로 지정

 

--prefix=/usr/local/apache

: 아키텍쳐에 독립적인 파일을 /usr/local/apache 설치

 

--enable-MODULE=shared

: 해당 모듈을 DSO 모듈로 컴파일함

 

--enable-MODULE=static

: 포함하는 모듈은 기본적으로 정적으로 링크

 

 

5. apache 서버 prefork, worker 방식

prefork 방식

미리 포크(fork)

자식 프로세스들을 일정량 미리 준비해두는 방식

프로세스당 스레드 1

자식 프로세스는 최대 1024개까지 가능

스레드간 메모리 공유 안함(독립적이라 안정적, 메모리 사용 많음)

StartServers : 아파치 시작시 생성되는 기본 프로세스 개수

MinSpareServers : 최소 프로세스의 개수

MaxSpareServers : 최대 프로세스의 개수

MaxClients : 아파치 시작시 최대로 실행할 자식프로세스의 개수

 

 

worker 방식

프로세스 당 스레드 여러 개

메모리 공유 사용(메모리 사용량 적음, 통신량 많은 서버에 적절, 리소스 경합 주의 필요)

StartServers : 아파치 시작시 생성되는 기본 프로세스 개수

ServerLimit : 최대 실행가능한 프로세스 개수

MaxClients : 최대동시접속자수

MinSpareThreads : 최소로 유지할 쓰레드 개수

MaxSpareThreads : 최대로 유지할 쓰레드 개수

ThreadsPerChild : 하나의 자식프로세스가 가질 수 있는 쓰레드 개수

MaxRequestsPerChild : 자식프로세스가 살아있는동안 요청을 받을 개수

 

반응형
반응형

 

패키지 설치

# yum install letsencrypt -y

 

인증서 발급 테스트

# certbot renew --dry-run

인증서 발급 테스트 성공

 

 

 

인증서 발급 방법

certbot certonly --webroot --webroot-path=[DocumentRoot] -d [도메인]

# certbot certonly --webroot --webroot-path=/home/hwlee.hktest.shop/docs -d hwlee.hktest.shop

 

※ 인증서 발급시 방화벽에 80 port 허용 되어있어야함(443 포함, 443은 ssl 사용 포트)

 

/etc/letsencrypt/live/hwlee.hktest.shop 경로에 인증서 생성

 

인증서 확인

 

 

 

 

apache 에 ssl 적용

vhosts.ssl.conf 에 ssl 적용

 

web 에서 ssl 적용 정상 확인

 

 

 

인증서 만료 날짜 확인

# certbot certificates

인증서 90일 적용

 

 

 

인증서 자동 갱신

 

크론탭 설정

# vi /etc/crontab 에 아래 내용 추가

 

00 09 * * 1 root /usr/bin/certbot renew --renew-hook="/usr/local/httpd2/bin/apachectl graceful"

 

※ geoip 및 해외 접속 차단이 되어있으면 무료 갱신이 안됨(미국, 독일 허용되어야 함)

 

반응형
반응형

 

mod_security 설정 파일에 내용 확인

# vi /usr/local/apache/conf/security.conf

해당 룰셋 주석 제거

 

 

 

반응형

+ Recent posts