나는LEMP 스택(Ubuntu 20.04)제가 완벽하게 구성하고 최적화했습니다. 웹 패널이 없습니다. 처음에는 내 웹사이트에만 사용했습니다. 나중에 일부 클라이언트 웹사이트를 서버에 추가하기 시작했습니다.
웹사이트 파일 관리를 위해 SFTP 액세스를 요청했기 때문에 서버의 민감한 파일에 액세스/편집할 수 없도록 하기로 결정했습니다.
가능한 한 용도를 격리하기 위해 변경한 사항 목록은 다음과 같습니다.
- sudo 사용자를 생성했습니다(호출 가능)서버관리자) 나 자신과 루트 액세스가 비활성화되었습니다
chmod 700 /home/serveradmin
(없이-R
)- 내 클라이언트(예: client1, client2...)에 대한 일반 사용자 계정을 만든 다음 모든 계정을서버관리자그룹
- nginx 사용자를 다음으로 설정서버관리자
- 각 클라이언트에 대해 서로 다른 php-fpm 풀을 생성했습니다. (전. 소유자: client1 그룹: serveradmin, 청취자에게도 동일)
- 민감한 웹사이트 파일을 다른 사람이 접근할 수 없도록 만들었습니다(예: wp-config.php 파일에 데이터베이스 자격 증명이 포함되어 있음)
chmod -R 700
웹사이트 SSL 폴더용.- 물론 각 클라이언트에 대해 서로 다른 mysql 사용자와 데이터베이스를 만들었습니다.
이제 누구도 다른 /home/clientX 폴더에 접근할 수 없다고 100% 확신합니다. 최소한 어떤 파일도 편집하거나 제거할 수 없습니다. 그러나 저는 경험이 풍부한 Linux 사용자도 아니고 호스팅 제공자도 아닙니다.문제는,해당 클라이언트가 /home 폴더 외부의 시스템 파일에 액세스하고 편집하여 내 서버를 손상시키거나 손상시킬 수 있습니까? (예를 들어 /etc, /var/run 경로는 위험할 수 있습니다.)
기본 시스템 파일의 폴더/파일 권한을 변경하지 않았습니다.
그렇다면 내 서버는 보안되지 않은 걸까요? 안전을 개선하기 위해 여전히 변경이 필요합니까, 아니면 SFTP 액세스 권한을 완전히 피해야 합니까?
감사합니다.
답변1
최소한 3번과 4번 항목은 유효하지 않거나 안전하지 않습니다.
- 내 클라이언트(예: client1, client2...)에 대한 일반 사용자 계정을 만든 다음 모든 계정을 serveradmin 그룹에 추가했습니다.
일반 사용자 계정은 서버 관리자와 어떤 관련이 있나요? 전혀 아무것도 아닙니다. 심지어 이름도 현명합니다. 각 사이트 사용자를 그룹에 속하게 하는 이유는 무엇입니까 serveradmin
?
- nginx 사용자를 serveradmin으로 설정
비슷하게. NGINX는 해당 환경에서 실행되어야 합니다.소유하다사용자이며 일반적으로 nginx
(CentOS/RHEL 배포판) 또는 www-data
(Debian 기반 시스템)입니다. 서버 관리와는 아무런 관련이 없습니다.
PHP의 소켓 소유권, 파일 위치 등과 같은 훨씬 더 자세한 정보가 필요하기 때문에 현재 설정이 어떻게 안전하지 않은지에 대해 자세히 설명할 수 없습니다.
진정한 보안 설정은 가능한 한 많은 사용자 분리를 가정하며 이는 서비스와 관련됩니다. 따라서 NGINX에 대한 별도의 사용자 할당(또는 패키지에서 제공하는 사용자 사용)부터 시작하여 다음 단계를 수행하세요.PHP-FPM에 대한 보안 권한. 각 사이트 사용자 그룹에 있어야 하는 것은 NGINX 사용자이며, 그 반대는 아닙니다.
usermod -a -G client1 nginx
usermod -a -G client2 nginx
...
이제 사용자는 및 그룹 nginx
에 속합니다 . 그 이유는 사용자가 실제로 모든 웹사이트 파일을 모두 읽을 수 있어야 하기 때문입니다 .client1
client2
nginx
반면에 PHP-FPM 풀은 client1:client1
런타임 및 소켓 수신 옵션 모두에 바인딩해도 괜찮습니다.