syslog가 왜 사용자입니까?


15

를 확인하면 /var/log매우 이상한 것을 발견합니다.

me@me:~$ ls -lt /var/log |head -6 '
total 160368
-rw-r-----  1 syslog            adm              19919118 Jan 15 16:55 auth.log
-rw-r-----  1 syslog            adm             139702302 Jan 15 16:55 syslog
-rw-r-----  1 syslog            adm                191122 Jan 15 16:55 mail.log
-rw-r-----  1 syslog            adm               2210432 Jan 15 16:32 kern.log
-rw-r--r--  1 root              root              1741863 Jan 15 14:22 dpkg.log

처음 네 개의 로그 파일의 소유자는 syslog입니다. 내 시스템에는 한 명의 사용자 만 있기 때문에 이상합니다.

me@me~$ users
me

파일 이름 syslog이 왜 사용자 일 수 있습니까?


6
시스템에 둘 이상의 사용자가 있음을 확신합니다. 나는 당신이 "계정과 홈 디렉토리와 관련된 인간 사용자"를 의미한다는 것을 알고 있지만 모든 시스템에 대한 "사용자"의 개념은 그것보다 더 넓습니다.

/etc/passwd언젠가 살펴보십시오 . 루트를 제외한 36 명의 역할 사용자를 계산합니다. 또한 man users명령을 수행하는 것으로 가정하고 있습니다.
chrylis

답변:


26

시스템 액세스에 대한 보안 및 권한과 관련이 있습니다.

그리고 아닙니다 . 자신의 사용자보다 더 많은 사용자가 있습니다. "root", "daemon", "bin", "games", "nobody"및 "list"가 있습니다.

를 수행 more /etc/passwd하여 시스템에있는 사용자의 목록. "/ usr / sbin / nologin"이있는 줄이 많이 있습니다. 즉, 자신의 사용자처럼 로그인하여 일반 사용자로 사용할 수 없습니다. 세 번째 열은 사용자 ID입니다. 1000 미만의 모든 사용자 ID는 의사 사용자입니다. 첫 번째 sudo 사용자 (시스템을 설치 한 사용자)는 기본적으로 1000입니다.

기본적으로 사용자 syslogroot가/var/log/ 소유 한 디렉토리로 설정된 디렉토리 를 사용할 수 있습니다 . 디렉토리에 대한 권한을 손상시키지 않아도 (즉, 다른 사용자가 사용할 수 있도록 권한을 낮추기 위해)이 사용자가 작성되었습니다.

Apache 및 MySQL 사용자도 마찬가지입니다 (설치할 때 www-data 사용자 및 그룹과 MySQL 사용자 및 그룹이 표시됨). 그러나 많은 작업에 사용됩니다. 외부 장치에 액세스하는 데 사용되는 "전화 걸기"그룹이 있습니다. 사용자가이 장치를 사용할 수 있도록이 그룹에 추가됩니다. 그렇지 않으면 권한 거부 오류가 발생합니다. 사용자 액세스 거부는 그룹 제거를 의미합니다.


그 숫자는 항상 1000이 아니 었습니다. 나는 실제 사용자의 ID가 20
kasperd

1
알고 있지만 우분투는 항상 1000에서 시작합니다. 예를 들어 Redhat은 500에서 시작합니다.
Rinzwind

예, 그러나 사용자가 반드시 로컬로 생성되는 것은 아닙니다. 제 경우에는 NIS를 통해 받았지만 요즘은 아마도 LDAP 일 것입니다.
kasperd

20 세부터 실제 사용자는 데비안 기반 배포판을 심각하게 깨뜨릴 수 있습니다. 데비안 기반 시스템의 UID 0-99는 데비안 프로젝트에 의해 특정 용도로 정적으로 할당됩니다.
피터 그린

1
@PaddyLandau / bin / false는 알리지 않고 로그인을 종료합니다. nologin은 "이 계정은 현재 사용할 수 없습니다."라는 메시지를 표시해야합니다. (/etc/nologin.txt에이 공지가 있습니다)
Rinzwind

8

커널 및 기타 서비스에서 작성된 로그 메시지를 다양한 로그 파일, 콘솔 및 / 또는 기타 대상에 기록하는 syslog 서비스는 고유 한 특수 사용자 계정으로 실행됩니다. 다른 많은 서비스도 마찬가지입니다. 이것은 최소 권한원칙 을 구현하는 것입니다 .

손상되거나 결함이있는 서비스 (예 : 공격자가 악용 한 버그가있는 서비스 또는 원인이되는 버그가있는 서비스)의 가능한 영향을 최소화하려면 악의적 인 개발자가 의도적으로 나쁜 일을하도록 설계되었습니다.) 각 서비스가 운영에 필요한 것에 만 액세스하고 다른 것에는 액세스하지 않기를 원합니다.

유닉스와 같은 모든 운영 체제 (우분투와 같은 모든 GNU / 리눅스 배포판 포함)에서 권한을 가장 쉽게 할당 할 수 있습니다 (주로 특정 파일이나 파일과 같은 것을 읽고 쓸 수있는 권리) 사용자 및 그룹을 기반으로합니다. 다른 가능성이 있지만, 종종 특정 상황에서만 설정하거나 작동하기가 더 지루하고 오류가 발생하기 쉽습니다.

따라서 syslog 서비스는 syslog 사용자 계정으로 실행됩니다. 예를 들어 공격자가 syslog 서비스가 의도 한 내용 대신 지시 한대로 수행하도록 할 수있는 경우 syslog 서비스는 여전히 제한됩니다 (syslog에 의해 시행되지 않고 사용자 계정을 기반으로 커널에 의해 시행됨) 로그 파일 (syslog 사용자가 쓰기 액세스 권한을 가진 유일한 파일)에만 쓰려면 소프트웨어 자체가 손상되므로 쓸모가 없습니다. 따라서 공격자는 손상된 syslog 서비스를 사용하여 같은 컴퓨터에서 호스팅되는 웹 사이트 또는 데이터베이스의 내용을 변경할 수 없습니다. 관련 파일은 특정 다른 사용자 (사람 또는 시스템 ) 사용자 만 쓸 수 있도록 설정되어 있기 때문입니다. syslog 사용자 계정이 아닌 계정.

로그 파일을 삭제 / 수정하고 "공개"파일을 읽는 것 (모두에게 "읽기"권한을 갖는 것)보다 더 많은 피해를 입히려면 침입자는 먼저 커널이나 일부 소프트웨어에서 두 번째 버그를 추가로 악용해야합니다. 호출 한 사용자 ( setuid ) 와 다른 권한으로 실행되도록 설치되어 추가 권한 ( 권한 에스컬레이션 ) 을 얻습니다 .


users명령은 당신에 따라, 사용 의 man 페이지 있다, 쇼 사용자 만 현재 로그인 . syslog 사용자는 시스템 사용자 이므로 로그인하지 않으므로이 목록에 표시되지 않습니다. 파일을 살펴 /etc/passwd보거나 여기 에 설명 된 다른 방법 을 사용하여 시스템 의 모든 (인간 및 시스템) 사용자 목록을 얻을 수 있습니다.


7

syslog는 파일이 아니기 때문에; 시스템 데몬 및 응용 프로그램 메시지 (디버그, 오류, 경고 및 정보)를 파일에 저장하기 위해 시스템에서 사용하는 데몬입니다.

syslog의 간략한 역사를 보려면 여기 를 읽으 십시오 .

다른 배포판 (예 : Red Hat Linux 기반 배포판)에서 시스템의 syslog 출력은이라는 파일에 저장됩니다 /var/log/messages. 구성에 따라 다릅니다.

Rinzwind가 말했듯이 보안상의 이유로 운영 체제의 다른 구성 요소는 특정 사용자와 함께 실행되며 각 사용자에게는 고유 한 권한이 있습니다. 예를 들어 syslog에는 최소한 /var/log폴더 에 대한 쓰기 권한이 있습니다 .

시스템에는 많은 서비스가 있으며 일반적으로 각 서비스 또는 소규모 서비스 그룹에 대한 사용자가 있습니다. 예를 들면 다음과 같습니다 apache get www-data|httpd|apache. 일반적으로 이러한 데몬 사용자는 보안 누출을 피하기 위해 Bash 액세스 권한을 얻지 못합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.