‘bin’사용자에게 로그인 쉘이 필요한 이유는 무엇입니까? 것은 bin그것이라는 것이다 유효한

/var/log/auth.log공개 웹 서버 중 하나를 감사하는 동안 다음을 발견했습니다.

Jan 10 03:38:11 Bucksnort sshd[3571]: pam_unix(sshd:auth): authentication failure;
    logname= uid=0 euid=0 tty=ssh ruser= rhost=61.19.255.53  user=bin
Jan 10 03:38:13 Bucksnort sshd[3571]: Failed password for bin from 61.19.255.53
    port 50647 ssh2

처음에는 홍당무로, 이는 ssh임의의 해커로부터의 전형적인 로그인 스팸 처럼 보입니다 . 그러나 자세히 살펴보면 다른 것을 발견했습니다. 대부분의 실패한 /var/log/auth.log항목은 invalid user다음과 같이 말합니다 .

Jan  9 10:45:23 Bucksnort sshd[3006]: Failed password for invalid user sales
    from 123.212.43.5 port 10552 ssh2

에 대한 그 실패 로그인 메시지에 대한 불안 것은 bin그것이라는 것이다 유효한 사용자/etc/passwd심지어이 로그인 쉘은 :

[mpenning@Bucksnort ~]$ grep ^bin /etc/passwd
bin:x:2:2:bin:/bin:/bin/sh

나는 비활성화 할 때 원격으로 로그인 할 수있는 모든 기본 사용자 이름을 다룬 것으로 생각 PermitRootLogin했습니다 /etc/ssh/sshd_config. 이 항목을 발견하면 편집증적인 마음에 새로운 가능성이 열렸습니다. 어떻게 든 서비스가에서 실행되면 bin원격으로 누군가가 bin상자에서 실행중인 서비스에서 사용자의 디렉토리에 ssh 키를 삽입 할 수 있으므로 가능한 경우 사용자의 로그인을 완전히 비활성화하고 싶습니다 bin.

질문

  • 이 서버는 원격이며 수정 비용이 많이 듭니다 (즉, KVM을 연결하기 위해 원격 손을 지불하고 KVM 임대료를 지불합니다). 다음과 같이 /etc/passwd항목을 변경하면 내가 깰 수있는 것을 파악하려고합니다 bin.

    bin:x:2:2:bin:/bin:/bin/false

  • 다음 명령을 실행하여 bin필요한 내용을 파악하려고 시도했습니다 . 그러나 이러한 명령은 파일이 없었으며 소유 한 프로세스를 찾을 수 없습니다 bin. bin어쨌든 사용자는 무엇을 합니까?

    $ sudo find / -group bin

    $ sudo find / -user bin

  • 로그인 쉘을 설정해야하는 다른 사용자가 /bin/false있습니까? 참고로, 나는이 이미 한 /bin/falsewww-data.

  • 내가 너무 편집증입니까?

중요한 경우 데비안을 실행하고 있습니다.



답변

유효한 쉘을 가지고 있고 암호가없는 사용자는 여전히 암호 기반이 아닌 방법으로 로그인 할 수 있습니다. 가장 일반적인 방법은 ssh 키입니다. cron 작업을 실행하려면 유효한 쉘이 필요합니다. 유효한 쉘도 su bin -c 'wibble'작동해야합니다 (최소한 Linux에서는 su bin -s /bin/sh -c 'wibble'작동합니다).

의 경우 bin대부분의 시스템 bin은 정상 작동에서 와 같이 명령을 실행하지 않으므로 셸을 /bin/false올바르게 설정하면 됩니다.

binSSH를 통해 로그인 할 수있는 직접 공격의 위험은 없습니다 . 왜냐하면 /bin/.ssh/authorized_keys사용자 bin또는 루트 로 작성해야하기 때문입니다 . 다시 말해, 들어갈 수있는 유일한 방법은 들어가는 것입니다. 그러나 유효한 쉘을 사용하면 구성 오류의 위험이 높아집니다. 또한 SSH 이외의 서비스로 일부 원격 공격을 허용 할 수도 있습니다. 예를 들어, 사용자 는 공격자가 Samba를 통해 원격으로 암호를 설정 한 다음 해당 암호를 사용하여 SSH를 통해 로그인 할 수 있다고 보고 합니다 daemon.

DenyUsers지시문에 시스템 사용자 이름을 나열하여 SSH 구멍을 막을 수 있습니다 /etc/ssh/sshd_config(불행히도 숫자 범위는 사용할 수 없습니다). 반대로, AllowGroups지시문을 작성하고 실제 사용자를 포함하는 그룹 만 허용 할 수 있습니다 (예 : users모든 실제 사용자에게 그룹 멤버십을 부여하는 경우).

데비안 ( # 274229 , # 330882 , # 581899 )에는 현재이 문제에 대해 버그가 제기되어 있으며 현재 열려 있고“wishlist”로 분류되어 있습니다. 나는 이것이 버그이며 시스템 사용자 /bin/false가 달리 할 필요가없는 한 쉘로 가지고 있어야한다는 데 동의하는 경향이 있습니다 .


답변

사용자라는 것에 대해 걱정할 필요가 없습니다. 이들은 “로그인 및 사용”이라는 의미의 사용자가 아니라 보안 그룹의 의미에서 “사용자”입니다. “/ etc / shadow”를 살펴보면이 “사용자”모두에 암호가없는 것을 알 수 있습니다 (긴 솔트 해시 대신 “x”또는 “!”). 즉, 이러한 사용자는 무엇이든 로그인 할 수 없습니다.

즉,이 모든 사용자에 대해 “/ bin / sh”를 “/ bin / false”로 변경하는 것이 좋은지 잘 모르겠습니다. 프로그램은 이러한 그룹에서 실행되기 때문에 필요한 명령을 실행하지 못할 수 있습니다. 나는 “/ bin / sh”로 남겨 둘 것이다.

이러한 사용자에 대해 걱정할 필요가 없습니다. 생성 한 사용자 (및 “/ etc / shadow”에 해시가있는 사용자)에 대해서만 걱정하십시오.


답변

bin홈 디렉토리 ( /bin) 에 SSH 공개 키를 설정 하려면 침입자가 파일 시스템에 대한 루트 액세스 권한을 가져야하므로 문제가 될 수 있습니다.

원하는 경우 블록을 bin사용하여 sshd 구성에서 사용자에 대한 모든 인증 방법을 비활성화 할 수 MatchUser있습니다.

빈 사용자가 최신 데비안 파생 시스템에서 사용되지 않고 순전히 전통을 고수하거나 일부 표준을 준수하는 것처럼 보입니다.


답변