2011-04-01 3 views
3

모범 사례 및 일반적인 보안을 염두에두고 웹 서버를 설정하려고하며 가능한 한 많이 읽었습니다.postgres, django 및 일반 웹 서버 인증 보안 (pg_hba.conf 등)

내 서버가 nginx & uwsgi를 실행하고 있으며 둘 다 각각의 사용자 'nginx'및 'uwsgi'로 실행되도록 설정되어 있습니다. 두 사용자는 로그인하지 않고 비밀번호 없음으로 설정되어 있습니다.

내 모든 응용 프로그램/프로젝트 폴더는 내 (루트가 아닌) 사용자 이름과 '개발자'그룹에서 chown됩니다. 그들은 모두에게 읽기 전용으로 chmodeded입니다.

1 질문)

나의 이해는 서버 (uwsgi /의 nginx)가이 파일에는 쓰기 권한이 없기 때문에 이것은 좋은 방법이 있다는 것입니다?

2 질문)

내 포스트 그레스 있는 pg_hba.conf은 다음과 같습니다 appdb & appusername 특정 응용 프로그램

에 대한 pgSQL의를 통해 설치되었습니다

local all postgres ident sameuser 
local appdb appusername  password 

이 무슨 뜻이 (unix) 사용자 'postgres'는 ident/unix에 의해 권한이 부여 된 경우에만 로컬로 로그인 할 수 있습니까?

또한

는 데이터베이스 'DBNAME'에 전용 액세스가 올바른 암호를 사용하여 (psql의) 사용자 dbuser에 '를 통해 것을 의미합니까

** 마지막 부분 **

만약 내 서버 (uwsgi) 기술적으로 내 장고 설정 파일 (암호 및 psql 사용자 이름을 포함한 데이터베이스 세부 정보가 있음)에 대한 읽기 권한이 있습니다. 보안 위험이 아닙니까?

모든 설명을 환영합니다!

답변

2
  1. 예는 쓰기를하거나하지 않는 파일에 대한 액세스를 읽을 수있는 서버에 대한 좋은 (웹 애플리케이션을위한 희귀하지만) 방법입니다.

  2. 예. 즉, postgres OS 사용자가 실행하는 프로세스는 postgres 데이터베이스 사용자로 모든 데이터베이스에 액세스 할 수 있음을 의미합니다. 그리고 그것은 ident에 의해 시행되지만 안전하지 못하고 신뢰할 수없는 네트워크 식별자가 아니라 로컬, 안전 및 신뢰성이 높은 SO_PEERCRED입니다.
    공격자가 저장된 비밀번호로 설정 파일 (예 : 백업, 안전하지 않은 전송 등)에서 읽기 권한을 얻은 경우 서비스가 비밀번호가 아닌 로컬 ID —으로 연결되는 것이 좋습니다. 그런 다음 데이터베이스에 아무 것도 할 수 있습니다. ident를 사용하면 코드를 특정 사용자로 실행할 수 있어야하는데, 이는 훨씬 더 어렵습니다.

  3. 모든 것이 보안 상 위험 할 수 있습니다. 보안은이 위험을 관리하는 기술입니다. — 안전하고 편리한 사이의 균형을 관리합니다. 이 파일에 액세스 할 필요가없는 서버를 구성 할 수 있고 지나치게 비실용적이지는 않습니다 (예를 들어 재부팅시 수동 개입이 필요함). 어쩌면이 "ident"인증이 더 나을 수도 있습니다.

1
  1. 가능하면 권한에 대해 편집증을 적용하는 것이 좋습니다. 예입니다. :)
  2. 예, 예, 예.
  3. 허용되는 모든 것은 "보안 위험"이지만 때로는 다른 방식으로는 작동하지 않는 경우가 있습니다. uWSGI는 응용 프로그램 서버입니다. 코드를 읽을 수 없다면 어떻게 코드를 실행해야합니까?