반응형

안녕하세요 유똥입니다.

오늘은 웹 서버 운영중, 403 Forbidden error 해결 방안에 대하여 포스팅 진행하겠습니다.

 

그럼, 403 Forbidden error 가 뭘까?

탐색하는 동안 가장 일반적으로 나타나는 오류 중 하나는 오류 403입니다.
기본적으로 하이퍼 텍스트 전송 프로토콜 응답은 여러 가지 이유로 사용자가 얻을 수 있습니다.
탐색하는 동안 403 오류가 발생하면 지정된 URL에 액세스 할 수있는 권한이 없기 때문입니다.

 

인증 또는 액세스 오류로 인해 HTTP를 통해 서버와 통신하는 동안 오류 403 중 하나가 사용자에게 표시됩니다.
사용자가 웹 페이지를 탐색하려고하면 브라우저는 HTTP를 사용하여 요청을 보냅니다.
이에 대한 응답으로 서버는 요청을 검사하고 모든 것이 올 바르면 페이지를로드하기 전에 2xx 범주 성공 코드로 응답합니다.
사용자가 화면에서 볼 수 없을 정도로 빠르게 발생합니다.
그러나 서버가 요청에서 어떤 이유로 든 문제를 발견하면 4xx 범주 오류가 표시됩니다.
이러한 코드는 사전 정의 된 시나리오에 따라 자동으로 생성되며 각 오류 코드는 다른 이유를 나타냅니다.

 

해결방안 )

 

error.log 확인시 

[authz_core:error] client denied by server configuration:dianb78

해당 에러는 아파치 httpd.conf에 대해서 권한 설정이 안되어져 있어서 발생하는 오류입니다.

 httpd.conf 권한 설정

아파치 권한 설정 
httpd.conf 설정 [ Apache 2.2 기준 ]
<Directory "/home">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

httpd.conf 설정 [ Apache 2.4 기준 ]
<Directory "/home">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

위에 내용은 아래의 내용 참고 부탁드립니다.


Options : 지정한 디렉토리이하에 모든 파일과 디렉토리들에 적용할 접근제어를 설정함. 즉 디렉토리를 보여줄 것인가? CGI를 허용할 것인가? SSI를 허용할 것인가? 등의 설정을 여기서 하게 된다.

ㄴ FollowSymlinks : 심볼의 링크를 허용한다. 이 옵션을 지정하면 웹브라우저에서 링크파일의 경로까지도 확인할 수 있게 된다. 보안상 이 값은 설정하지 않는 것이 좋다.

Indexe 웹서버의 디렉토리 접근시 DirectoryIndex에서 지정한 파일(index.html등)이 존재하지 않을 경우에 디렉토리내의 파일목록 리스트를 웹브라우저로 보여준다.

ㄴ None : 모든 허용을 하지 않는다. 즉 None 설정으로 이외의 다른 설정들은 모두 무시한다

 

AllowOverride : 어떻게 접근을 허락할 것인가에 대한 설정.

ㄴ None : AccessFileName에 지정된 파일을 엑세스 인증파일로 인식하지 않는다. 즉, AccessFileName 의 값이 대부분 .htaccess 이므로 이를 무시하게 된다는 의미가 된다. 즉 이 파일을 무시하기 때문에 새로운 접근 인증박싱을 Override하지 않는다. 대부분의 보안이나 중요한 디렉토리에서 사용할 수 있는 것으로 아주 제한적인 접근만을 허용하고자 할 때에 사용하는 값이다.

.htaccess 파일은? 웹서비스 디렉토리별로 설정이 달라져야 할 경우가 있다. 이때 관리자가 모든 설정을 하기는 힘들기 때문에 개별 디렉토리마다 다르게 설정하기 위해 존재하는 파일이다.


Require all granted: 무조건 허용
Require all denied: 무조건 금지
Require ip 19 175.20 192.168.20
특정 아이피만 접근 허용. 여기서는 19으로 시작하는 아이피, 175.20으로 시작하는 아이피, 192.168.20로 시작하는 아이피 세 개를 허용

 


 2. 디렉터리 퍼미션 (Directory Permission )

웹루트가 /var/www/html 인경우
/var, /www, /html 모두 실행권한(755 또는 711)이 있어야 합니다.

chmod 755 /var
chmod 755 /var/www
chmod 755 /var/www/html

 3. Selinux 설정

직접 끄기

vi /etc/sysconfig/selinux
SELINUX=enforcing -> disabled [ 비활성화 ]

 

Selinux 켜야하는 경우

HTTP 웹서버는 httpd_sys_content_t 타입 만 파일과 디렉토리 읽는 것을 허용한다.
user_home_dir_t 타입은 웹서버에서 접근을 하면 403 Forbidden을 표시가 됩니다.

# 하나의 파일이나 디렉터리를 변경할 경우
chcon -t httpd_sys_content_t /var

# chmod와 같이 하위 파일이나 디렉터리를 모두 변경할 경우
chcon -R -h -t httpd_sys_content_t /var/
-R : 하위 모든 파일과 디렉터리의 보안사항을 변경한다.
-h : 심볼릭링크를 따르지 않도록 한다.

추가적으로 Warning: DocumentRoot [/www/html/www] does not exist

해당 오류가 발생한 경우 해당 웹 경로가 없다는 것을 의미합니다. 

이 부분은 웹 경로 디렉터리 설정이 되어져있는지 확인이 필요합니다.

이로서, 여기까지 진행하셨다면 Apache 403 Forbidden error 해결 방법에 대해 알아봤습니다.
모두 고생하셨습니다.

도움이 되셨다면 구독 좋아요

궁금한 내용이 있으시면 댓글 부탁드리겠습니다!!

정리.txt
0.00MB

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
});