안녕하세요 유똥입니다.
오늘은 웹 서버 운영중, 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 해결 방법에 대해 알아봤습니다.
모두 고생하셨습니다.
도움이 되셨다면 구독과 좋아요를
궁금한 내용이 있으시면 댓글 부탁드리겠습니다!!
'IT > Linux' 카테고리의 다른 글
Ubuntu 16.04 LTS 서버버전 설치 (0) | 2021.01.30 |
---|---|
리눅스 faile2ban 설치 및 설정 (0) | 2021.01.28 |
APM ( Apache 2.4 + PHP 7.3 + MariaDb 10.3 ) yum 설치 (0) | 2021.01.26 |
APM ( Apache 2.4 + PHP 5.6 + MySQL 5.7 ) yum 설치 (0) | 2021.01.26 |
APM yum 설치 (0) | 2021.01.25 |
최근댓글