우리 모두는 매우 익숙합니다. 아파치 웹 서버는 웹 파일이나 웹 사이트를 웹에 호스팅하는 데 매우 인기 있는 웹 서버입니다. 다음은 Linux 상자에서 Apache 웹 서버를 구성하는 데 도움이 되는 몇 가지 링크입니다.
이 튜토리얼에서는 웹 서버를 보호하기 위한 몇 가지 주요 팁을 다룰 것입니다. 웹 서버에 이러한 변경 사항을 적용하기 전에 Apache 서버에 대한 몇 가지 기본 사항이 있어야 합니다.
설치할 때 아파치 소스 또는 다음과 같은 다른 패키지 설치 프로그램 사용 냠, 그것은 표시 아파치 버전 서버에 설치된 웹 서버 운영 체제 이름 서버의 오류. 에 대한 정보도 보여줍니다. 설치된 Apache 모듈 당신의 서버에서.
위 사진에서 알 수 있듯이 아파치 보여주고 있다 버전 와 더불어 설치된 OS 당신의 서버에서. 이것은 웹 서버와 Linux 상자에도 주요 보안 위협이 될 수 있습니다. 을 예방하기 위해 아파치 이러한 정보를 세상에 표시하지 않으려면 Apache 기본 구성 파일을 약간 변경해야 합니다.
vim 편집기로 구성 파일을 열고 "서버 서명", 기본적으로 켜져 있습니다. 우리는 할 필요가 끄다 이 서버 서명과 두 번째 줄 "ServerTokens 제품"는 Apache가 모든 페이지 요청에 대한 서버 응답 헤더의 제품으로 Apache만 반환하도록 지시하고 OS, 주 및 부 버전 정보를 표시하지 않습니다.
# vim /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora) # vim /etc/apache2/apache2.conf(데비안/우분투)
서버 서명 끄기. ServerTokens 제품
# 서비스 httpd 다시 시작(RHEL/CentOS/Fedora) # 서비스 apache2 재시작(데비안/우분투)
기본적으로 Apache는 모든 콘텐츠 없는 경우 문서 루트 디렉토리의 인덱스 파일. 아래 이미지를 참조하십시오.
우리는 할 수 있습니다 끄다 사용하여 디렉토리 나열 옵션 지시문 특정 디렉토리에 대한 구성 파일에서. 이를 위해 우리는 항목을 작성해야합니다 httpd.conf 또는 아파치2.conf 파일.
옵션 - 인덱스.
Apache 개발자 커뮤니티는 지속적으로 작업하고 있습니다. 보안 문제들 그리고 그것의 출시 업데이트된 버전 새로운 보안 옵션. 따라서 항상 사용하는 것이 좋습니다. 최신 버전 ~의 아파치 귀하의 웹 서버로.
확인하다 아파치 버전: 현재 버전을 확인할 수 있습니다. httpd -v 명령.
# httpd -v. 서버 버전: Apache/2.2.15(Unix) 서버 구축: 2013년 8월 13일 17:29:28
다음 명령으로 버전을 업데이트할 수 있습니다.
# yum 업데이트 httpd. # apt-get apache2 설치
또한 유지하는 것이 좋습니다. 핵심 그리고 OS 특정 OS 또는 커널에서만 작동하는 특정 응용 프로그램을 실행하지 않는 경우 최신 안정 릴리스로 업데이트됩니다.
어떤 사건의 희생자가 될 가능성을 최소화하는 것이 항상 좋습니다. 웹 공격. 따라서 모든 항목을 비활성화하는 것이 좋습니다. 모듈 현재 사용하지 않는 것. 다음 명령을 사용하여 웹 서버의 컴파일된 모든 모듈을 나열할 수 있습니다.
# grep LoadModule /etc/httpd/conf/httpd.conf # 해당 'LoadModule' 라인을 이 위치에 배치해야 합니다. # LoadModule foo_module 모듈/mod_foo.so. LoadModule auth_basic_module 모듈/mod_auth_basic.so. LoadModule auth_digest_module 모듈/mod_auth_digest.so. LoadModule authn_file_module 모듈/mod_authn_file.so. LoadModule authn_alias_module 모듈/mod_authn_alias.so. LoadModule authn_anon_module 모듈/mod_authn_anon.so. LoadModule authn_dbm_module 모듈/mod_authn_dbm.so. LoadModule authn_default_module 모듈/mod_authn_default.so. LoadModule authz_host_module 모듈/mod_authz_host.so. LoadModule authz_user_module 모듈/mod_authz_user.so. LoadModule authz_owner_module 모듈/mod_authz_owner.so. LoadModule authz_groupfile_module 모듈/mod_authz_groupfile.so. LoadModule authz_dbm_module 모듈/mod_authz_dbm.so. LoadModule authz_default_module 모듈/mod_authz_default.so. LoadModule ldap_module 모듈/mod_ldap.so. LoadModule authnz_ldap_module 모듈/mod_authnz_ldap.so. LoadModule include_module 모듈/mod_include.so. LoadModule log_config_module 모듈/mod_log_config.so. LoadModule logio_module 모듈/mod_logio.so. LoadModule env_module 모듈/mod_env.so. LoadModule ext_filter_module 모듈/mod_ext_filter.so. ...
위는 기본적으로 활성화되지만 종종 필요하지 않은 모듈 목록입니다. mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex. 특정 모듈을 비활성화하려면 "#"를 입력하고 서비스를 다시 시작하십시오.
기본 설치로 아파치 사용자와 함께 프로세스를 실행합니다. 아무도 또는 악마. 보안상의 이유로 다음을 실행하는 것이 좋습니다. 아파치 자체적으로 비특권 계정. 예를 들어: http-웹.
# 그룹 http-web을 추가합니다. # useradd -d /var/www/ -g http-web -s /bin/nologin http-web
이제 당신은 말할 필요가있다 아파치 이 새 사용자와 함께 실행하려면 다음 항목을 만들어야 합니다. /etc/httpd/conf/httpd.conf 서비스를 다시 시작합니다.
열려있는 /etc/httpd/conf/httpd.conf vim 편집기로 키워드 검색 "사용자" 그리고 "그룹"를 지정해야 합니다. 사용자 이름 그리고 그룹 이름 사용.
사용자 http-web. 그룹 http-web
"를 사용하여 디렉토리에 대한 액세스를 제한할 수 있습니다.허용하다" 그리고 "부인하다" 옵션 httpd.conf 파일. 이 예에서는 루트 디렉토리, 이를 위해 다음을 설정하여 httpd.conf 파일.
옵션 없음 주문 거부, 모두 거부 허용.
이 두 모듈 "mod_security" 그리고 "mod_evasive"는 보안 측면에서 Apache의 매우 인기 있는 모듈입니다.
어디에 mod_security 로 작동 방화벽 웹 애플리케이션을 위해 트래픽 모니터링 실시간으로. 또한 웹 사이트 또는 웹 서버를 다음으로부터 보호하는 데 도움이 됩니다. 무차별 대입 공격. 당신은 단순히 설치할 수 있습니다 mod_security 기본 패키지 설치 프로그램의 도움으로 서버에서.
$ sudo apt-get libapache2-modsecurity를 설치합니다. $ sudo a2enmod 모드 보안. $ sudo /etc/init.d/apache2 강제 새로고침
# yum은 mod_security를 설치합니다. # /etc/init.d/httpd 재시작
mod_evasive 매우 효율적으로 작동하며 하나의 요청을 처리하고 매우 잘 처리합니다. 그것은 방지 디도스 공격 많은 피해를 입힐 수 있습니다. 이 기능의 mod_evasive 처리할 수 있게 해줍니다. HTTP 무차별 대입 그리고 도스 또는 디도스 공격. 이 모듈은 세 가지 방법으로 공격을 탐지합니다.
mod_evasive 소스에서 직접 설치할 수 있습니다. 여기에서는 Linux 상자에서 이러한 Apache 모듈을 설정하는 데 도움이 되는 이러한 모듈의 설치 및 설정 가이드가 있습니다.
기본적으로 아파치 따르다 심볼릭 링크, 우리는 할 수 있습니다 끄다 이 기능은 FollowSymLinks ~와 함께 옵션 지시문. 그리고 그렇게 하기 위해서는 메인 설정 파일에 다음 항목을 만들어야 합니다.
옵션 -FollowSymLinks
그리고, 특별한 경우 사용자 또는 웹사이트 필요 FollowSymLinks enable, 우리는 ".ht액세스” 파일을 해당 웹사이트에서 가져옵니다.
# 심볼릭 링크를 활성화합니다. 옵션 +FollowSymLinks
메모: " 내부에서 재작성 규칙을 활성화하려면 ".ht액세스" 파일 "모두 재정의 허용"는 전역적으로 기본 구성에 있어야 합니다.
우리는 할 수 있습니다 끄다 서버 측에는 (mod_include) 그리고 CG 필요하지 않은 경우 실행하고 그렇게 하려면 기본 구성 파일을 수정해야 합니다.
옵션 - 포함합니다. 옵션 - ExecCGI
Directory 태그를 사용하여 특정 디렉토리에 대해서도 이 작업을 수행할 수 있습니다. 여기 이 예에서 우리는 끄기 "에 대한 포함 및 Cgi 파일 실행/var/www/html/web1" 디렉토리.
옵션 -ExecCGI를 포함합니다.
다음은 수 있는 다른 값입니다. 켜짐 또는 끄다 옵션 지시문과 함께.
기본적으로 아파치 HTTP 요청의 총 크기에는 제한이 없습니다. 즉, 무제한이며 웹 서버에서 큰 요청을 허용하면 피해자가 될 수 있습니다. 서비스 거부 공격. Apache 지시문의 요청 크기를 제한할 수 있습니다.LimitRequestBody"를 디렉토리 태그와 함께 사용합니다.
다음에서 바이트 단위로 값을 설정할 수 있습니다. 0 (제한 없는) NS 2147483647 (2GB) 요청 본문에서 허용됩니다. 사이트 요구 사항에 따라 이 제한을 설정할 수 있습니다. 업로드를 허용하는 사이트가 있고 특정 디렉토리의 업로드 크기를 제한하려는 경우를 가정해 보겠습니다.
여기 이 예에서, user_uploads 사용자가 업로드한 파일이 들어 있는 디렉토리입니다. 우리는 한계를 설정하고 500K 이것을 위해.
LimitRequestBody 512000.
글쎄요, 귀하의 웹사이트를 디도스 공격. 다음은 이를 제어하는 데 도움이 될 수 있는 몇 가지 지시문입니다.
Apache를 사용하면 사용자와 독립적으로 로깅할 수 있습니다. OS 로깅. 웹 서버와 상호 작용한 사용자가 입력한 명령과 같은 추가 정보를 제공하기 때문에 Apache 로깅을 활성화하는 것이 좋습니다.
그렇게 하려면 다음을 포함해야 합니다. mod_log_config 기준 치수. Apache에서 사용할 수 있는 세 가지 주요 로깅 관련 지시문이 있습니다.
당신은 또한 당신이하고있는 특정 웹 사이트에 사용할 수 있습니다 가상 호스팅 이를 위해서는 가상 호스트 섹션에서 지정해야 합니다. 예를 들어 다음은 로깅이 활성화된 내 웹사이트 가상 호스트 구성입니다.
DocumentRoot /var/www/html/example.com/ 서버이름 www.example.com. DirectoryIndex index.htm index.html index.php. ServerAlias example.com. 오류 문서 404 /story.php. 오류 기록/var/log/httpd/example.com_error_log 커스텀로그 /var/log/httpd/example.com_access_log 결합
마지막으로 가장 중요한 것은 SSL 인증서, SSL 인증서를 사용하여 인터넷을 통해 모든 통신을 암호화된 방식으로 보호할 수 있습니다. 사람들이 로그인 자격 증명을 제공하여 로그인하는 웹 사이트가 있거나 사람들이 자신의 정보를 제공하는 전자 상거래 웹 사이트가 있다고 가정합니다. 은행 계좌 정보 또는 차변/신용 거래 제품 구매를 위한 카드 세부 정보, 기본적으로 웹 서버는 이러한 세부 정보를 일반 텍스트 형식으로 전송하지만 SSL 인증서 귀하의 웹사이트에 아파치 이 모든 정보를 암호화된 텍스트로 보냅니다.
당신은 할 수 있습니다 SSL 인증서 구매 다음과 같은 다양한 SSL 제공업체에서 namecheap.com. 아주 작은 규모의 웹 비즈니스를 운영하고 있고 그럴 의향이 없다면 SSL 인증서 구입 여전히 할당할 수 있습니다 자체 서명 인증서 귀하의 웹사이트에. 아파치 사용 mod_ssl 지원하는 모듈 SSL 인증서.
# openssl genrsa -des3 -out example.com.key 1024. # openssl req -new -key example.com.key -out exmaple.csr. # openssl x509 -req -days 365 -in example.com.com.csr -signkey example.com.com.key -out example.com.com.crt
인증서가 생성되고 서명되면. 이제 이것을 Apache 구성에 추가해야 합니다. vim 편집기로 기본 구성 파일을 열고 다음 행을 추가하고 서비스를 다시 시작하십시오.
SSLCertificateFile /etc/pki/tls/certs/example.com.crt SSLCertificateKeyFile /etc/pki/tls/certs/example.com.key SSLCertificateChainFile /etc/pki/tls/certs/sf_bundle.crt ServerAdmin의 SSLEngine [이메일 보호됨] ServerName example.com DocumentRoot /var/www/html/example/ ErrorLog /var/log/httpd/example.com-error_log CustomLog /var/log/httpd/example.com-access_log 공통.
브라우저를 열고 다음을 입력하십시오. https://example.com, 그리고 당신은 새로운 자체 서명 인증서.
다음은 사용할 수 있는 몇 가지 보안 팁입니다. Apache 웹 서버 보안 설치. 더 유용한 보안 팁과 아이디어는 공식 온라인 문서를 참조하십시오. 아파치 HTTP 서버.