'웹서버/아파치 서버'에 해당되는 글 3건


사이트를 운영하다보면 골칫꺼리 중 하나가 스팸 ip가 아닌가 생각됩니다. 웹호스팅 이용자라면 한두개도 아니고 이걸 어떻게 다 막을 수 있을까요?


특히 중국 ip는 골칫거리 중 하나입니다. .htaccess 로 ip를 일일이 막으려고 해도 한계가 있고, ip 끝자리만 바꿔서 접속을 하니 여간 힘든게 아닙니다.


그래서 중국 ip 를 전부 차단시켜줄 수 있는 ip대역을 제공해주는 곳이 있습니다.


먼저 http://www.ip2location.com/free/visitor-blocker 로 접속합니다.


ipv4 로 받을지 ipv6으로 받을지 선택합니다.


차단할 ip 목록을 선택합니다. 중국 ip 를 막을 것이므로 'china' 를 선택합니다.


아파치 서버의 ip 를 차단할 것이므로 'Apache 2.0~2.3 .htaccess deny' 를 선택하고 다운로드 버튼을 클릭합니다.  참고로 deny 는 차단할 때, allow 는 허용할 때 사용됩니다.


아래 링크는 중국 ip 대역 파일입니다. 이걸 다운로드 받아서 사용해도 됩니다.

파일을 .htaccess 로 변경해서 사용해 주세요.


중국 ip 목록.txt


블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

컨테이너 (섹션)

 

컨테이너 지시어는 섹션이라고도 하며 지시어의 범위를 제한하는 역할입니다. 지시어가 컨테이너 밖에 있다면 서버 전체에 영향을 받게됩니다.

 

 VirtualHost

 하나의 아파치 서버가 여러 웹 사이트를 운영할 수 있도록 해주는 가상호스트를 말합니다.

 Directory, DirectoryMatch

 이 컨테이너는 특정 폴더나 하위폴더에만 적용됩니다. Directory 는 폴더의 패턴을 파라미터로 받을 수 있으며, DirectoryMatch는 "^/www/.*/[0-9]{4}"와 같은 정규식을 파라미터로 받을 수 있습니다.

 Location, LocationMatch

 특정한 URL이나 URL 패턴에만 적용받습니다. LocationMatch 는 "/{mydomain|home}/data" 와 같은 정규식 패턴을 받을 수 있습니다.

 Files, FilesMatch

 Directory 나 Location 과 같은 패턴은 같지만 특정한 파일이나 파일의 패턴에만 적용 받습니다.

 

다음은 컨테이너 지시어 예입니다.

 

 <Directory "/www/home/data">

  SomeDirective1

  SomeDirective2

 </Directory>

 <Location "/Download/*.htm">

  SomeDirective3

 </Location>

 <FileMatch "\.(gif|bmp|jpg)">

  SomeDirective4

 </FileMatch>

 

SomeDirective1 과 SomeDirective2 는 www/home/data 와 www/home/data 의 하위 디렉토리에만 적용되고, SomeDirective3 지시어는 Download/*.htm 파일에만 해당됩니다. SomeDirective4 는 파일확장자 .gif, .bmp, .jpg 만 적용된다는 뜻입니다.


 

조건 컨테이너

 

조건 컨테이너는 그 조건이 만족되었을때만 처리되는 지시어입니다.

 

 IfDefine

 이 컨테이너는 파라미터로 받은 조건이 참일때만 처리됩니다. MyModule 이 아파치가 실행될때 -DMyModule 와 같이 정의할 수 있고, 거짓 파라미터 지시어 <IfDefine !MyModule> 형식도 지원합니다.

 IfModule

 이 지시어는 파라미터로 받은 모듈이 서버에 존재할 때만 처리됩니다.

 

다음은 IfDefine 지시어 예입니다.

 

 <IfDefine MyModule>

    LoadModule my_module modules/libmymodle.so

 </IfDefine>


다음은 IfModule 예입니다.

 

 <IfModule prefork.c>

   StartServers               5

   MinSpareServers        5

   MaxSpareServers      10

   MaxClients               20

   MaxRequestsPerChild 0

 </IfModule>

 


아파치 접근제어

 

지시어는 제어할 폴더에 .htaccess 파일을 만들어 ip 주소, 환경변수, 도메인 네임 등을 제어할 수 있습니다.

 

 Allow from 10.0.0.1 10.0.0.2 10.0.0.3

 

ip 주소의 일부분 또는 범위를 지정해서 사용할 수 있고, ip 주소의 첫번째, 두번째, 세번째 바이트만 지정할 수도 있습니다. 다음 예는 10.0 에 해당하는 모든 ip주소를 포함합니다.

 

 Deny from 10.0

 

다음은 ip 주소와 네트워크 마스크를 사용한 예입니다.

 

 Allow from 10.0.0.0/255.255.255.0

 또는

 Allow from 10.0.0.0/24

 

 

도메인 네임을 이용한 Allow/Deny

 

호스트나 부분적 도메인으로 접근을 제어할 수 있습니다.

 

 Allow from mydomain.com

 


환경변수를 이용한 Allow/Deny

 

존재 유무를 검사할 환경변수 이름앞에 "env= "를 붙여주면 접근을 제어할 수 있습니다. 브라우저의 종류나 버전에 따라 통제가 가능합니다.

 

 BrowserMatch MSIE iexplorer

 Deny from env=iexplorer

 

모든 대상으로 접근을 허용하려면 Allow from all 이라고 하고, 모든 사용자 접근을 거부하려면 Deny from all 이라고 지정하면 됩니다.

 

 <Location /home/site>

   Order Allow, Deny

   Allow from all

   Deny from mydomain.com

 </Location>

 

Order Allow, Deny 와 같이 순서를 지정하면 해당 리소스에 대한 모든 접근을 거부하나 위 예는 mydomain.com 도메인을 제외한 모두의 접근을 허용한다는 뜻입니다. Allow,Deny 의 순서가 Allow 지시어를 우선 평가하는데, Deny 지시어보다 Allow 지시어가 우선순위이기 때문에 Deny 가 만족하지 않고, Allow 규칙을 만족한다면 접근을 허용하게 됩니다.

 

블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

웹서버의 전체적인 수행에 영향을 주는 설정 항목으로 구성되어 있는 파일이 httpd.conf 입니다. 여기서 중요한 몇 가지 정보만을 알아 볼 생각입니다.

서버 루트 디렉토리 지정:

 # linux 기본 설치경로
 ServerRoot "/usr/local/Apache2.2"

 # windows 기본 설치경로
 ServerRoot "C:/Program Files/Apache Software Foundation/Apache2.2"

아파치 웹서버가 설치된 경로를 지정하는 곳입니다. 경로 변경이 없다면 그대로 두어도 무관합니다.

Port 지정:

클라이언트와 서버간의 연결 통로를 만들어 주는 것으로 정수값으로 표현합니다.웹서버는 기본 80포트를 사용하지만 ISP 통신사업자의 경우 기본 80포트를 막아두는 곳이 있어서 8080포트를 주로 사용합니다.

 Listen 80
 # Listen 8080

서버 관리자 전자우편 주소:

웹서버 운영시 서버에 문제가 발생할 경우 아래 지정된 전자우편으로 메일이 발송됩니다. 하지만 메일서버가 구축되어 있지 않다면, 이 항목은 무시됩니다.

 ServerAdmin you@example.com

서버이름 지정:

아파치 웹서버에 접속할 수 있는 서버의 이름을 지정하는 항목입니다. 서버이름을 보통 localhost, 또는 127.0.0.1 로 저장합니다만 기본 80포트가 아닐 경우 서버 이름 뒤에 : 를 구분으로 정수값을 정의합니다.

 ServerName localhost:80

 # ServerName localhost:8080

 # ServerName localhost:2221

홈 디렉토리 설정:

클라이언트에서 http://localhost(또는 http://domain.com) 으로 접속했을 때 보여지는 폐이지(또는 폴더)를 말합니다. 이 폴더를 버꾸지 않아도 무방하나 필요하면 다른 홈 디렉토리로 지정해도 됩니다.

 # linux 기본 설치경로
 DocumentRoot "/usr/local/Apache2.2/htdocs"

 # windows 기본 설치경로
 # DocumentRoot "C:/www"
 DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"

아파치 웹서버가 하나의 웹 호스팅을 구성한다면, 이곳에 웹문서를 저장하면 됩니다만, 여러 개 운영이 필요할 경우 여러 개의 서버가 필요한데, 사용자 디렉토리와 가상 호스팅을 사용합니다.

디렉토리 인덱스 지정:

클라이언트가 브라우저 주소창에 파일명을 제외한 URL을 지정했을 때, 웹서버가 클라이언트에 보여질 문서를 지정하는 항목입니다. 이 항목은 여러 개의 값을 가질 수 있으며, 첫 번째 지정문서가 없으면, 두 번째의 지정문서를 보여지게 됩니다.

 <IfModule dir_module>
    DirectoryIndex index.htm index.html index.php
 </IfModule>

브라우저 주소창에 http://localhost(또는 http://localhost/home) 을 입력했을 때, 보여질 index.htm 파일을 서비스합니다. 만약 index.htm 파일이 없다면, 두 번째 지정문서인 index.html 파일을, 이 파일이 없다면 index.php 파일을 서비스합니다. 이 파일 마저 없다면, 페이지를 찾을 수 없다는 내용을 보여줍니다.

기본 언어 지정:

기본 언어의 문자를 지정하는 항목입니다. 웹서버의 버전에 따라 다음 항목이 있을 수도 있고, 없을 수도 있습니다. 없으면 추가해 주면 됩니다.

 # 한국어이면 euc_kr
 # AddDefaultCharset utf-8
 AddDefaultCharset euc_kr

php 실행을 위한 설정:

php 코드가 포함된 문서를 지정합니다. 다음 확장자를 지정한 문서만을 php코드로 인식하게 합니다. "AddType" 을 찾은 문장아래에 다음 코드를 추가해 주면 됩니다.

  AddType application/x-httpd-php .htm .html .php .inc
블로그 이미지

하보니

하보니와 함께하는 phP 초보

Tag 웹서버

댓글을 달아 주세요