Programming &/Server & OS

apache 403 Forbidden error

마법눈 2010. 5. 25. 16:20
리눅스에서 아파치를 설치한 후 직면하게 되는 부분이 바로 403 Forbidden 에러다.
403 Forbidden 에러는 단어 그대로 접근이 금지가 됐다는 말이다.
즉 권한이 없다는 뜻.

몇가지 경우가 있기 때문에 체크를 하다보면 해결할 수 있다.
서버관리를 10년이상해도 403 forbidden 에러는 정말 헷갈린다.
또 헤맸다 ㅡ.ㅡ

1. 웹서버의 디렉토리에 권한이 없는경우다.
   웹루트가 /home/hosting/aaa/htdocs 인경우
   hosting, aaa, htdocs 모두 실행권한(755 또는 701)이 있어야한다.
   chmod 755 /home/hosting
   chmod 755 /home/hosting/aaa
   chmod 755 /home/hosting/aaa/htdocs

   755가 아니라 701 로 해도 무방하겠지요.

2. 웹서버 설정파일 셋팅 문제 (httpd.conf)
    <Directory />
        Options FollowSymLinks
        AllowOverride None
        Order deny, allow
        Allow from all
    </Directory>

     위 굵은 글자 부분이 Deny from all 로 되어 있다면 위처럼 변경하고 웹서버를 재시작한다.
     구지 접속을 막고 싶다면 
    <Directory />
        Options FollowSymLinks
        AllowOverride None
        Order deny, allow
        Deny from xxx.xxx.xxx.xxx yyy.yyy.yyy zzz.zzz.zzz
        Allow from all
    </Directory>

3. SELinux 가 동작하는경우
    SELinux 는 취약한 보안을 강화시키는 좋은 환경이다.
    귀찮다면 

    $ vi /etc/selinux/config
    를 실행하여 
    SELinux=disabled 로 수정한다. (enforcing, permissive, disabled 가 있다.

    적용하기 위해서는
    $ setenforce 0 (끄기)
    $ setenforce 1 (켜기)
    혹은 재부팅

4. SELinux가 동작하는 경우
   SELinux 보안환경에서 사용한다면 디렉토리에 보안셋팅을 해줘야한다.

    ls -Z 으로 디렉토리 보안상태를 확인할 수 있다.
   drwxr-xr-x  nlinux nlinux root:object_r:httpd_sys_content_t aaa
   drwxr-xr-x  nlinux nlinux user_u:object_r:user_home_dir_t bbb

   위에서 httpd_sys_content_t 타입을 설정해줘야만 HTTP 웹서버가 접근이 가능하다.

   설정하는 방법은 (하위디렉토리까지 모두 변경)
   
    $ chcon -R -h -t httpd_sys_content_t /home/hosting/aaa

이정도만 체크해주면 99% 이상 해결될거라고 믿는다.
이렇게해도 해결되지 않는다면 좀 더 많은 삽질이 요구된다 ㅡ.ㅡ;;;