새 직장, 작은 장소, 안전한 물건이 방금 내 책상 위에 도착했습니다. 저는 프론트엔드 개발자로 채용되었습니다. 새로운 것을 배우는 것은 좋지만 이전에 시스템 관리 작업을 해본 적이 없습니다.
나는 파기를 시작했고 아파치, 사이트 및 모든 것이 루트에서 실행되고 있음을 발견했습니다. 다른 그룹이나 사용자는 없습니다. 확인하다!
이 상황을 바꾸려면 어떻게 해야 합니까? 나는 이것이 큰 금기 사항이라는 것을 알고 있습니다 ...
누구든지 Apache/PHP 보안에 대한 좋은 기본 101 튜토리얼, 보너스 포인트를 알려주세요.
답변1
기본 구성에서 Apache가 실행되는 것을 찾는 것은 root
드문 일입니다 . Apache가 루트로 실행되고 있는지 어떻게 확인할 수 있습니까? Apache는 반드시시작하다권한 있는 포트에 바인딩하기 위해 루트 역할을 하지만 일반적으로 나중에 해당 권한을 포기합니다.
Apache 구성( 배포판에 따라 일반적으로 /etc/httpd
또는 에서)에서 및 지시문(문서화됨)을 찾을 수 있습니다./etc/apache2
User
Group
여기). 이 두 지시문은 Apache가 실행되는 사용자 ID를 제어합니다.
"다른 그룹이나 사용자가 없는" 시스템을 찾는 것도 이례적입니다. 무엇을 getent passwd
하고 보여줄 것인가 getent group
? 어디진짜root
?를 제외한 다른 사용자나 그룹은 없습니다. 대부분의 배포판에는 사용자 또는 유사한 구성과 해당 사용자로 Apache를 실행하는 일치하는 구성이 함께 제공 apache
됩니다 www-data
.
Apache 구성 및 보안에 대한 다양한 소개 가이드가 있습니다. 간단한 Google 검색으로 가능한 많은 결과를 얻을 수 있습니다. 레드햇/CentOS배포 가이드좋은 출발점입니다(RedHat/CentOS 시스템을 사용하는 경우).
답변2
권한 있는 포트 번호 1024+보다 큰 포트 번호를 가진 모든 사용자로 Apache를 실행할 수 있습니다. 그런 다음 포트 전달을 사용하여 포트 80 및 443에서 특정 포트로 트래픽을 전달합니다.