[어플리케이션 보안] Apache 웹 서버 보안

박은미·2022년 4월 11일
0

정보보안기사

목록 보기
3/4
post-custom-banner

Apache HTTP 서버

  • Apache HTTP Server는 오픈 소스 소프트웨어 그룹인 아파치 소프트웨어 재단에서 만드는 웹 서버 프로그램

Apache 보안 설정

  • 서버 실행 계정 확인: root 말고 apache라는 별도의 계정을 권한으로 만들어 아파치 웹 프로세스에 대한 권한으로 할당한다.
  • Apache 설정파일 수정(httpd.conf): Timeout, MaxClient, Port, User, MaxSpareServer 등 설정 파일을 수정한다 (/etc/httpd/conf/httpd.conf)

httpd.conf

  • 리눅스 아파치 웹서버의 메인 설정파일

  • 위치 : /etc/conf/httpd/httpd.conf

  • httpd.conf 세션 설정

    • TimeOut : 클라이언트의 요청에 서버가 대기하는 시간
    • KeepAlive (on/off) : on 으로 설정하면 클라이언트와 서버간의 tcp 연결을 keepalivetimeout 동안 유지하게 된다. 즉, 한 번의 연결에 대해 한 번의 요청만 처리하는 것이 아니라 또 다른 요청을 기다리게 된다. (일반적으로 on이 좋다), 한번 맺은 세션을 요청이 끝나더라도 유지해주는 기능
    • KeepAliveTimeout : KeepAlive 옵션이 on 이라면 클라이언트 최초 요청을 받은 뒤에 다음 요청이 전송될때까지 대기하는 시간(s)
    • MaxKeepAliveRequests : KeepAlive 옵션이 on 이라면 허용할 최대 요청 수를 정의함. 이 옵션을 0으로 설정하면 무한대의 요청을 허용함 (성능은 좋아짐), KeepAlive 를 허용하는 유저 수.
    • MaxClients : 아파치 서버 동시 접속자 수 (최대: 256)
    • DirectoryIndex : 웹 디렉토리 접근 시 인식되는 인덱스 파일의 순서 지정
    • Listen : 사용할 포트 지정
    • CustomLog : 엑세스 로그 파일 위치 지정
    • ErrorLog : 에러 로그 파일 위치 지정
    • Port : 아파치가 사용할 기본 포트 (일반적으로 80)
    • User : 보안상 절대 root 로 설정하지 말자
  • httpd.conf 접근제어

    • Order Deny, Allow: Deny와 Allow 순서를 정한다.
    • Deny from All : 모든 트래픽을 막는다.
    • FollowSymLinks : 심볼릭 링크를 허용한다.
    • LimitRequestBody : 파일 업로드, 다운로드 시 파일크기를 제한한다.
    • Indexes : 웹 서버의 디렉토리에 접근 했을 때 DirectoryIndex 지시자로 설정한 파일이 없을 경우 디렉토리안의 파일목록을 보여준다. → '디렉토리 리스팅'이 가능하므로 해당 값을 삭제하는게 안전하다.
    • AllowOverride: 클라이언트의 디렉토리 접근 제어에 관한 설정, 어떻게 접근을 허락할 것인가? (None, ALL, AuthConfig, FileInfo...) → 'None' 이면 값을 'AuthConfig'로 변경해서 상위 디렉토리 접근을 금지할 수 있다.
- 시스템 루트( / ) 디렉토리에 대한 제어
<Directory />
Order Deny, Allow
Deny from All
LimitRequestBody 5000000
Options FollwSymLinks
AllowOverride None
</Directory>

- /usr/local/apache/htdocs 디렉토리에 대한 제어
<Directory  "/usr/local/apache/htdocs"/>
Order Deny, Allow
Deny from All
Allow from 127.0.0.1
LimitRequestBody 5000000
Options Indexes FollowSymLinks
AllowOverride AuthConfig
</Directory>
  • IIS 용 : WebKnight (국내 인터넷진흥원이 권고하는 무료 웹 방화벽)
  • 아파치 용: ModSecurity (국내 인터넷진흥원이 권고하는 무료 웹 방화벽), 아래와 같이 httpd.conf 파일에 적용 가능함
<IfModule mode_security.c>
 정책내용
</IfModule>

.htaccess

  • .htaccess 파일을 사용하여 디렉토리별로 설정을 변경할 수 있다.

기출문제

1. htaccess 파일 설정의 의미에 대하여 답하시오.
1.1)

<FileMatch "\.(ph|lib|sh|)">
Order Allow DENY
Deny From ALL
</FilesMatch>

1.2) AddType text/html .php .php1 .php2 .php3 .php4 .phtml
1.1 답) .ph, .lib, .sh 등의 서버 사이드 스크립트 파일에 대해 직접 URL 호출 금지 (업로드된 스크립트의 실행을 방지하기 위해)
1.2 답) 서버스크립트 확장자를 text/html MIME Type으로 재조정하여 업로드된 스크립트 실행 방지

https://q.fran.kr/%EB%AC%B8%EC%A0%9C/10005
https://q.fran.kr/%EB%AC%B8%EC%A0%9C/9721
https://q.fran.kr/%EB%AC%B8%EC%A0%9C/14779
https://q.fran.kr/%EB%AC%B8%EC%A0%9C/9998


참고사이트
https://namu.wiki/w/%EC%95%84%ED%8C%8C%EC%B9%98%20HTTP%20%EC%84%9C%EB%B2%84
https://zidarn87.tistory.com/364
https://peemangit.tistory.com/308
https://mosei.tistory.com/entry/apache-httpdconf-%EC%84%A4%EC%A0%95-%EB%B0%8F-%EC%84%A4%EB%AA%85
https://developer.mozilla.org/ko/docs/Web/HTTP/Connection_management_in_HTTP_1.x
https://dukkoong.tistory.com/18 (13회 기출문제)

post-custom-banner

0개의 댓글