내에서 /etc/passwd
파일, 나는 것을 볼 수 있습니다 www-data
아파치가 사용하는 사용자뿐만 아니라 시스템 사용자의 모든 종류가 하나가 /usr/sbin/nologin
나 /bin/false
자신의 로그인 쉘로. 예를 들어, 다음은 선택된 행입니다.
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin games:x:5:60:games:/usr/games:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin syslog:x:101:104::/home/syslog:/bin/false whoopsie:x:109:116::/nonexistent:/bin/false mark:x:1000:1000:mark,,,:/home/mark:/bin/bash
결과적으로, 이러한 사용자 중 한 명으로 바꾸려고 할 때 (때로는 권한에 대한 이해를 확인하고 적어도 절반 이상의 제정신의 이유가있는 경우가 있음) 실패합니다.
mark@lunchbox:~$ sudo su www-data
This account is currently not available.
mark@lunchbox:~$ sudo su syslog
mark@lunchbox:~$
물론 다음과 같은 방법으로 쉘을 시작할 수 있기 때문에 불편하지 않습니다.
mark@lunchbox:~$ sudo -u www-data /bin/bash
www-data@lunchbox:~$
그러나 이것은 사용자에게 로그인 쉘을 거부함으로써 어떤 목적 이 제공 되는지 궁금합니다 . 설명을 위해 인터넷을 둘러 보는 많은 사람들은 이것이 보안과 관련이 있다고 주장하며 모든 사람들은 이러한 사용자의 로그인 쉘을 변경하는 것이 어떤 식 으로든 나쁜 생각에 동의하는 것 같습니다. 인용문 모음은 다음과 같습니다.
Apache 사용자의 쉘을 비 대화식으로 설정하는 것은 일반적으로 좋은 보안 관행입니다 (대화식으로 로그인 할 필요가없는 모든 서비스 사용자는 쉘이 비 대화식으로 설정되어야합니다).
-https : //serverfault.com/a/559315/147556
사용자 www-data의 쉘은 / usr / sbin / nologin으로 설정 되어 있으며 매우 좋은 이유가 있습니다.
-https : //askubuntu.com/a/486661/119754
[시스템 계정] 은 특히 쉘이 활성화 된 경우 보안 허점이 될 수 있습니다 .
나쁜
bin:x:1:1:bin:/bin:/bin/sh
좋은
bin:x:1:1:bin:/bin:/sbin/nologin
-https : //unix.stackexchange.com/a/78996/29001
보안상의 이유로 Tomcat 서버를 실행하기 위해 로그인 셸이없는 사용자 계정을 만들었습니다.
# groupadd tomcat # useradd -g tomcat -s /usr/sbin/nologin -m -d /home/tomcat tomcat
-http: //www.puschitz.com/InstallingTomcat.html
이 게시물은 만장일치로 동의하지만 시스템 사용자에게 실제 로그인 셸을 제공하지 않으면 보안에 도움이되지만 그중 하나는이 주장을 정당화 할 수 없으며 어느 곳에서도 설명을 찾을 수 없습니다.
이러한 사용자에게 실제 로그인 쉘을 제공하지 않음으로써 우리 자신을 보호하려는 공격은 무엇입니까?