프로덕션 용 보안 LAMP 서버 (또는 Perl)를 보호하는 절차는 무엇입니까? Linux에서 MySQL

프로덕션 용도로 Linux, Apache, MySQL, PHP 서버 (또는 Perl)를 보호하는 절차는 무엇입니까?

Linux에서 MySQL 비밀번호와 루트 비밀번호를 설정하는 것 외에 다른 단계는 무엇입니까?

또한 추가 편집증 환자라면 일반적으로 필요하지 않을 수있는 단계는 무엇입니까?

기본 단일 사이트 용이지만 안전해야합니다.



답변

이러한 권장 사항은 내 머리 꼭대기에서 벗어난 것이며 포괄적 인 것은 아닙니다.

Linux에서 모범 사례를 구현하는 일련의 스크립트 인 Bastille을 확인하십시오.

일반 텍스트 프로토콜을 통해 인증 데이터를 보내지 마십시오. 예를 들어, FTP를 비활성화하십시오. Apache를 통해 인증 데이터를 보내는 경우 SSL을 사용하십시오.

GUI 인터페이스를 포함하여 불필요한 소프트웨어를 비활성화하고 제거하십시오.

SUID 비트가 설정된 파일을 감사하고 제거하십시오. (이것은 비 루트 능력을 심각하게 제한 할 것입니다. 각 개별 변화에 대한 의미를 이해하십시오.)

쓰기 가능한 공개 디렉토리를 감사하고 쓰기 가능한 비트를 제거하십시오. (/ tmp 만 그대로 두십시오.)

데몬을 루트로 실행하지 마십시오.

보안 모범 사례를 위해 소켓에서 수신 대기하는 모든 다중 사용자 소프트웨어를 조사하십시오.

시스템에 사용자를 추가하지 않는 것이 가장 좋은 방법 중 하나입니다. 다중 사용자 시스템은 세부 사항에 더주의를 기울여야합니다.

비밀번호 표준을 시행하십시오. 예 : 문자와 숫자를 사용하는 영숫자가 아닌 문자 10 자 이상. 암호 파일이 손상된 경우 무차별 강제 실행을보다 어렵게 만듭니다. 시스템을 통해이를 시행하십시오.

최소 10 분의 잠금으로 5 번의 인증 시도 실패 후 사용자를 잠급니다. 사용자가 과거 5 개의 암호를 사용할 수 없도록 암호 기록을 유지하십시오.

더 큰 환경에서는 여러 서브넷으로 네트워크 분리를 사용하여 위험을 격리해야합니다. 소규모 환경 인 경우 로컬 시스템에서 방화벽을 실행하여 노출을 제한하는 것이 좋습니다. 예를 들어 IP에 SSH 만 허용합니다. 추가 레이어에도 tcpwrapper를 사용할 수 있습니다. (/etc/hosts.allow, /etc/hosts.deny)

물론 모든 소프트웨어를 최신 상태로 유지하십시오. 특히 공개 데몬.

SSH로 :

  • SSH 프로토콜 1 비활성화
  • 루트 인증 만 허용 without-password(키 쌍만)

아파치와 함께 :

  • 필요하지 않은 모듈 비활성화
  • .htaccess 및 공용 디렉토리 비활성화
  • FollowSymlink 및 불필요한 옵션 비활성화
  • 필요하지 않은 경우 PHP를 설치하지 마십시오.

MySQL의 경우 :

  • 기본 사용자를 비활성화합니다.
  • 와일드 카드 호스트를 사용하지 마십시오.
  • 모든 사용자에 대해 고유 한 호스트를 설정하십시오.
  • 필요한 경우가 아니면 tcp를 듣지 마십시오. (보통 피할 수 없습니다.)
  • 응용 프로그램 사용자 권한을 최대한 제한하십시오. (쓰기에 이상적인 SELECT, INSERT, UPDATE, DELETE 및 읽기에 대한 SELECT)

보안을 위해 php.ini 튜닝을 연구하는 것이 좋습니다. 기본적으로 더 위험한 소프트웨어입니다.

바스티유 감옥


답변

다음은 설정의 기반으로 사용할 수 있고 배포에 따라 변경 될 수있는 좋은 기사입니다. http://it.toolbox.com/blogs/rayheffer/how-to-build-a-secure-lamp-web- 서버와 센 토스 -5-36786


답변

국방 정보 보호 진흥원 (KISA)은 세트가 보안 체크리스트를 시작하는 좋은 장소입니다. 각 항목의 이론적 근거를 이해하는 것이 더 좋지만 빠른 답변은 아닙니다. Enclave, Network, Unix 및 Web Server STIG 를 살펴 보는 것이 좋습니다 .