클라우드 서버에서 비밀번호없는`sudo`를 설정해도 괜찮습니까?


58

내 암호를 할 때마다 I를 입력 할 필요가 없도록 내가 키를 통해 서버에 액세스의 아이디어를 사랑 ssh상자에, 난 내 사용자의 (안 잠금 root) 비밀번호 ( passwd -l username) 그래서 그건 불가능 열쇠없이 로그인 할 수 있습니다.

그러나 sudo명령에 암호를 입력 해야하는 경우이 모든 것이 중단됩니다 . 그래서 암호가없는 로그인과 일을하기 위해 암호sudo 가없는 설정을 원합니다 .

그러나 나는 그것이 예기치 않은 방식으로 나에게 역효과를 줄 수 있다고 생각합니다. 어쨌든 불안전 한 것 같습니다. 이러한 설정으로 인한 경고가 있습니까? 서버의 사용자 계정에 대해이 작업을 권장 / 권장하지 않겠습니까?

설명

  1. sudo서비스 또는 관리 스크립트가 아닌 대화식 사용자 세션에서 의 사용에 대해 이야기하고 있습니다.
  2. 클라우드 서버 사용에 대해 이야기하고 있습니다 (따라서 머신에 물리적으로 로컬 액세스 할 수 없으며 원격으로 만 로그인 할 수 있음)
  3. sudo비밀번호를 다시 입력 할 필요가없는 시간 초과가 있음을 알고 있습니다. 그러나 내 콘서트는 실제로 암호를 실제로 입력하는 데 추가 시간을 낭비하는 것이 아닙니다. 내 생각은 암호를 다룰 필요가 없었습니다.
    • 전혀 외워야한다면 너무 짧아 안전하거나 재사용하기가 어렵다
    • 원격 계정에 길고 고유 한 비밀번호를 생성하는 경우 비밀번호를 어딘가에 저장하고 (로컬 비밀번호 관리자 프로그램 또는 클라우드 서비스) 사용할 때마다 가져와야합니다 sudo. 나는 그것을 피할 수 있기를 바랐다.

따라서이 질문으로 하나의 가능한 구성이 다른 구성에 비해 위험,주의 및 장단점을 더 잘 이해하고 싶었습니다.

후속 1

모든 답변에 따르면, sudo개인 사용자 계정이 손상되면 암호 를 사용하지 않는 것이 안전하지 않다고합니다. 나는 이해. 그러나 다른 한편으로, 비밀번호를 사용하면 비밀번호가 너무 짧거나 일반적인 문자열, 다른 서비스에 반복되는 등 모든 고전적인 위험이 발생합니다. 그러나 암호 인증을 비활성화 /etc/ssh/sshd_config하여 여전히 로그인 할 키가 있어야하는 경우, 입력하기가 더 쉬운 간단한 암호를 사용할 수 sudo있습니까? 이것이 유효한 전략입니까?

후속 2

rootssh 를 통해 로그인 할 수있는 키가있는 경우 누군가 내 컴퓨터에 액세스하여 내 키를 훔치면 (아직 OS의 키 링 암호로 보호됩니다!) root계정에 직접 액세스 할 수 있습니다 sudo경로를 우회합니다 . 그러면 root계정 에 액세스하기위한 정책은 무엇입니까 ?


2
셸을 사용자로 얻는 방법이 종종 있기 때문에 (권장하지 않아도되지만, 시스템에 대한 전체 액세스를 피하기 위해 일반적으로 사용자로 실행 됨), root는 권한이없는 사람들이 루트 액세스를 얻지 못하게합니다. 없는 경우 어떤 방식 으로든 사용자 계정에 액세스 할 수있는 사람은 누구나 서버에 대한 전체 액세스 권한이 있다고 생각합니다. 암호를 설정하는 것은 그리 많지 않지만 도움이됩니다.
piernov

내 후속 질문을 참조하십시오
Dmitry Pashkevich

1
sudo는 비밀번호가 없어야합니다. SSH를 통한 원격 로그인에서 root를 비활성화하고 ssh 포트를 기본값으로 설정해서는 안되며 (dumb-bots를 버리는 데) sudo가 필요한 계정은 필요한 모든 것에 대해 최소한의 sudo 권한으로 만 제한해야합니다 (서비스를 다시 시작하십시오) 등) 및 매우 강력한 비밀번호를 가지고 있습니다.
SnakeDoc

@SnakeDoc 감사합니다, 그것은 내가 기대했던 일종의 대답입니다. 자세한 답변을 작성 하시겠습니까? 배우게되어 기쁘다!
Dmitry Pashkevich

2
@EEAA 리눅스에서는 실제로 매우 쉽습니다. sudo에서 암호를 사용하지 않아야하는 유일한 계정은 시스템 계정으로 로그인 할 수 없어서 해당 계정으로 상승하여 해당 권한을 사용할 수없는 시스템 계정입니다. /etc/passwdnologin과 같은 계정에 가짜 셸을 설정하고 암호를 설정하지 않은 다음 visudo에서 암호를 설정하지 마십시오. 이 작업을 수행하면 시스템 설정이 해당 시스템 계정에 절대적으로 필요한 것, 즉 실행해야하는 유일한 명령으로 잠그도록 설정해야합니다.
SnakeDoc

답변:


48

키를 통해 서버에 액세스한다는 아이디어가 마음에 들기 때문에 상자에 넣을 때마다 암호를 입력 할 필요가 없으므로 사용자 (루트가 아닌) 암호 (passwd -l username)도 잠글 수 없으므로 키없이 로그인 ... 서버의 사용자 계정에 대해이 작업을 권장 / 권장하지 않겠습니까?

비밀번호 기반 로그인을 잘못된 방법으로 비활성화하려고합니다. 사용자 계정을 잠그지 않고에 설정 PasswordAuthentication no하십시오 /etc/ssh/sshd_config.

이 설정을 사용하면 ssh의 비밀번호 인증이 사용되지 않지만 sudo의 비밀번호를 계속 사용할 수 있습니다.

sudo에서 설정 을 권장 하는 유일한 시간 NOPASSWD은 프로세스가 프로그래밍 방식으로 sudo를 통해 명령을 실행할 수 있어야하는 서비스 계정입니다. 이러한 상황에서는 계정 실행에 필요한 특정 명령 만 명시 적으로 허용 해야합니다. 대화 형 계정의 경우 항상 비밀번호를 사용하도록 설정 해야 합니다.

후속 질문에 대한 답변 :

그러나 / etc / ssh / sshd_config에서 비밀번호 인증을 비활성화하여 여전히 로그인 키가 있어야하는 경우 sudo에 대해 더 간단한 비밀번호를 사용하여 입력하기가 더 쉽습니까? 이것이 유효한 전략입니까?

네 맞습니다. 여전히 비교적 강력한 로컬 계정 암호를 사용하는 것이 좋지만 엄청나게 강력하지는 않습니다. ~ 8 자, 임의로 생성 된 것으로 충분

ssh를 통해 루트로 로그인 할 수있는 키가있는 경우 누군가 내 컴퓨터에 액세스하여 내 키를 훔치면 (여전히 OS의 키 링 암호로 보호됩니다!) 키워드에 직접 액세스 할 수 있습니다 sudo 경로를 무시하고 루트 계정.

ssh를 통한 루트 액세스를 비활성화해야합니다. 기간. 에서 설정 PermitRootLogin no하십시오 sshd_config.

그러면 루트 계정에 액세스하기위한 정책은 무엇입니까?

항상 서버 콘솔에 대한 대역 외 액세스 권한을 확보 할 수있는 수단이 있어야합니다. 전용 하드웨어 공급 업체와 마찬가지로 여러 VPS 공급 업체에서이를 제공합니다. 공급자가 실제 콘솔 액세스 권한을 부여하지 않은 경우 (예 : EC2), 일반적 으로이 답변 에서 설명한 것과 같은 프로세스를 사용하여 액세스를 복원 할 수 있습니다 .


2
+1 비밀번호 남겨 두어야합니다.
Chris S

6
+1 sudo 암호는 실제로 보안을 위해 있지는 않지만 (내가 볼 수있는 한) 바보 확인에 더 가깝습니다. 거기에없는 행동은 말할 수없는 행동을 일으킬 수 있습니다.
Boris the Spider

1
백도어를 설치하지 않은 경우 키를 잃어버린 경우 작업이 완료된 것입니다. 잃어버린 키를 올바르게 고칠 수있는 유일한 방법은 실제 터미널에 물리적으로 앉아있는 것입니다. ssh 키가 제공하는 보호 기능이 필요한 경우 함정에 대해 알고 있어야하며 단순히 키를 풀지 마십시오.
SnakeDoc

1
마지막 단락에 대한 의견과 모든 VPS에 대한 일반적으로 액세스 권한을 잃는 것과 관련하여 ... 일부 VPS 제공 업체는 귀하가 잠긴 경우 실제로 도와 줄 것입니다. 내 VM을 단일 사용자 모드로 한 번 부팅하고 잠 그었을 때 나를 위해 몇 가지 작업을 수행했습니다 (잘못된 방화벽 규칙 lol). 호스트에 따라 서비스 요금이 부과 될 수 있습니다. 또한 일부는 작은 가격으로 또는 때로는 무료로 백업 / 스냅 샷을 수행 할 수도 있습니다. 이는 대규모의 파괴적인 변화를 저 지르려는 경우 가치가 있습니다.
SnakeDoc

1
@DmitryPashkevich- PasswordAuthentication모든 사용자에게 영향을 미치는 것과 관련 Match하여 sshd_config의 섹션을 사용 하여 특정 사용자 또는 그룹에 대해 다시 설정할 수 있습니다 .
Matt Thomason

11

나는 일반적으로 NOPASSWORD자동화 된 프로세스에 의해 실행되는 명령에 대한 사용을 제한합니다 . 이러한 명령에 대한 서비스 계정을 갖고 sudo 사용을 필수 명령으로 제한하는 것이 좋습니다.

NOPASSWORD일반 명령을 허용하면 사용자 ID에 액세스하는 모든 사람이 명령을 실행할 수 있습니다. 이것은 자격 증명이 손상되어 발생할 수 있지만 잠시 자리를 비울 때 누군가 책상에 앉아있는 것처럼 간단 할 수 있습니다.

비밀번호를 자주 입력 할 필요가 없습니다. 암호를 입력 한 후 너무 오래 기다리지 않으면 몇 가지 명령을 실행할 수 있습니다. 시간 초과를 구성 할 수 있습니다.


8

나는 두 가지 상황에서만 이것을 사용합니다 :

  • 이 때 절대적으로 자동화 된 스크립트에 필요한 특정 사용자로 실행하는
  • 특정 관리 작업 (시스템 변경을위한 조치가 아닌 관리 작업 만 읽음) 및 특정 사용자 만 해당

기본적으로 대부분의 sudo구성은 동일한 세션에서 잠시 동안 다시 묻지 않습니다 (효과가없는 새 셸을 열 경우). timestamp_timeout설정 을 통해이 동작을 어느 정도 제어 할 수 있습니다 .

암호 sudo없는 암호는 암호없는 암호 ssh키 만큼 위험하지는 않습니다 . 원격 공격자는 처음에 자격 증명을 입력해야하지만 개인 키를 손상시키는 방식으로 (또는 물리적으로 로컬 인 경우) 컴퓨터에서 멀리 떨어진 상태에서 로그인 및 잠금 해제 상태를 유지 한 경우) 암호 요청은 암호 액세스 권한과 권한있는 액세스 사이의 중요한 추가 방어 수단입니다.

추적 관찰 2 :

ssh를 통해 루트로 로그인 할 키가있는 경우

당신이 묘사 한 이유 때문에 이것은 피하는 것이 가장 좋습니다. 원격 연결에 권한있는 액세스 권한이 있어야하는 경우 서비스 계정을 통해 로그인하고 sudo를 통해 작업을 수행 할 수있는 충분한 제어 권한을 부여하십시오. 이것은 구성하기에 더 인기가 많기 때문에 많은 사람들이 귀찮게하지 않습니다 (공격자가 거기에 시간을 소비하는 것보다 매달린 과일이 많기 때문에 유리한 방식으로 작동합니다). 보안과 편의성 사이의 오래된 타협 (프로 팁 : 보안 선택!).


후속 조치 # 2를 해결해 주셔서 감사합니다. 그래도 여전히 혼란 스럽습니다. root직접 로그인하지 않으려 고 하지만 계정에 액세스하는 데 어떤 방법이 필요합니까? 그럼 어떻게해야합니까? ssh 키가 아닌 비밀번호로? 그러나 열쇠가 암호보다 낫지 않습니까?
Dmitry Pashkevich

항상 로컬로 루트로 로그인 할 수 있지만 원격 호스트 (ssh 또는 이와 유사한 방법을 통해)에서 루트에 대한 직접 로그인은 완전히 비활성화하는 것이 좋습니다. sudo (물론 비밀번호 포함)를 통해 루트가 될 수있는 계정이 있다면 계정에 대한 모든 액세스 권한을 잃지 않습니다.
David Spillett

7

로그인과 sudo 모두에 대한 SSH 인증을 모두 사용할 수 있습니다. pam_ssh_agent_auth 모듈 을 통합하면 SSH 키를 사용하여 sudo 할 때 비밀번호를 제공하지 않고 인증 할 수 있습니다.

나는 이것을 5 년 이상 프로덕션 환경에서 사용해왔다.

이를 구성하려면 PAM 모듈을 설치 한 다음 /etc/pam.d/sudo시스템에 해당 라인을 추가 하십시오.

auth    sufficient     pam_ssh_agent_auth.so file=~/.ssh/authorized_keys

이 경우 암호를 사용하여 컴퓨터의 키를 보호하십시오. 그렇게하면 누군가 컴퓨터에 침입하여 열쇠를 훔쳐 야합니다. 계정에 액세스 할 수 있거나 암호를 해독하거나 암호를 훔치면 잠금이 해제 된 상태에서 메모리에서 가져와야 할 수 있습니다. 입력하는 동안 키로거 또는 숄더 서핑 (뒤를보십시오!).

로그인 할 때와 동일한 SSH 키를 사용하거나 sudo 할 때 에이전트에만 추가하는 별도의 키를 설정할 수 있습니다. 따라서 특별히주의를 기울이려면 sudo가 필요할 때만 에이전트에 추가하는 별도의 SSH 키가있는 별도의 certified_keys 파일을 유지할 수 있습니다.

auth    sufficient     pam_ssh_agent_auth.so file=~/.ssh/authorized_keys_sudo

와우, 그거 좋은데! sudo명령 을 실행하기 위해 별도의 키를 생성합니까, 아니면 SSH 인증에 사용 된 것과 동일한 키를 사용합니까?
Dmitry Pashkevich

1
이것은 놀랍다. 내가 할 수 있다면 여러 번 당신을 찬성합니다.
nyuszika7h

일반 SSH 인증에 사용하는 것과 동일한 키를 사용하거나 보안을 강화하기 위해 SSH 인증 에이전트에 sudoing에 사용하는 키를 임시로 추가 할 수 있습니다. 이것은 당신이 아닌 다른 파일을 지정하는 것이 필요 ~/.ssh/authorized_keys당신은 다른 파일을 관리 할 수있는, ~/.ssh/authorized_keys_sudo예를 들어, 또는 /etc/ssh/authorized_keys_sudo.
obscurerichard

6

귀하가 질문 한 이후에이 sudo문제 를 해결하는 방법에 대한 일반적인 조언이 있습니다.

Sudo는 더 많은 보안을 제공하도록 설계되지는 않았지만 (어떤 측면에서는 가능하지만) 누가 시스템에서 어떤 권한을 가지고 어떤 권한을 가지고 있는지에 대한 훌륭한 감사 추적을 제공합니다.

올바르게 설정 한 Sudo는 ALL=(ALL) ALL설정을 사용하지 않고 사용자가 필요로하는 것에 만 국한됩니다. 예를 들어, 사용자가 고정 서비스에 로그인하고 다시 시작할 수 있어야하는 경우 새 소프트웨어를 설치하거나 서버를 종료하거나 방화벽 규칙을 변경하는 등의 기능이 필요하지 않을 수 있습니다.

사람들이 sudo를 사용하여 루트 계정으로 자신을 높이는 경우가 종종 있습니다. sudo su -. 일단 그렇게하면 누가 루트 계정에서 누가 무엇을하고 있는지 알 수 없습니다 (루트는 여러 번 동시에 로그인 할 수 있음). 따라서 때때로 사람들은 sudo su -명령 을 비활성화하려고합니다 . 그러나 실제적인 이유로 관리를 위해 완전히 루트 권한이있는 계정이 필요한 경우 최소한 누군가에게 문제가 발생하도록 sudo su -명령하면 누가 루트로 언제 상승 했는지 기록하게됩니다.

박스를 어떻게 확보합니까?

SSH 포트를 기본값 이외의 것으로 변경하십시오. 이것은 포트 번호를 찾은 다음 벙어리 봇 (botb-bot)을 피하기위한 것입니다.

AllowRootLogin nosshd_config 의 설정을 사용하여 SSH를 통한 루트 로그인을 허용하지 마십시오. 이렇게하면 누군가 루트 계정에 강제로 침입하지 못하게됩니다. 감사와 보안상의 이유로 루트 / 관리자 계정에 직접 로그인하지 못하게하는 것이 일반적으로 좋은 방법입니다. 루트 로그인을 직접 허용하면 누가 로그인했는지, 누가 비밀번호를 받았는지 등을 알 수 없습니다. 그러나 누군가 누군가 지미의 계정에 로그인 한 후 루트 권한을 높이면 어디에서 시작해야하는지 더 잘 알 수 있습니다. 검색 감사 (및 재설정 할 계정).

사용자에게 필요한 SSH 만 허용AllowUsers 설정을 사용 하고 명시 적으로 SSH 액세스가 필요한 계정을 지정 하십시오 . 기본적으로 SSH에서 다른 모든 계정을 차단합니다.

visudo를 통해 Sudoers를 편집하고 사용자에게 필요한 명령 만 허용하십시오. 이 작업을 수행하는 방법에 대한 깊이있는 가이드가 많이 있으므로 여기서 자세히 설명하지 않습니다. 여기 초보자가 있습니다 : http://ubuntuforums.org/showthread.php?t=1132821

이것의 요점은 손상된 계정으로 인해 시스템이 손상되는 것을 방지하는 것입니다. 즉. Sally의 계정이 손상되고 Sally가 sudo를 사용하여 웹 서버를 다시 시작할 수있는 경우 공격자는 웹 서버를 반복적으로 재시동 할 수 있지만 최소한 rm -rf /your/webserver/directory모든 방화벽 포트 등을 열거 나 열 수는 없습니다 .

박스 작동에 필요한 포트만 허용하는 올바른 방화벽 규칙을 설정하십시오. 일반적으로 모든 것을 삭제하고 필요한 것을 명시 적으로 허용하려고합니다. 괜찮은 iptables가 많이 있고 다른 방화벽이 온라인으로 시작됩니다.

# Generated by iptables-save v1.4.7 on Mon Mar  3 17:55:02 2014
*filter
:INPUT DROP [4528:192078]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [39845:27914520]
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 4254 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8080 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8443 -m state --state NEW -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
COMMIT
# Completed on Mon Mar  3 17:55:02 2014

또한 강력한 암호가 핵심입니다.원격 액세스에 SSH 키를 사용하더라도 Sudo 사용을위한 비밀번호가 여전히 필요합니다. sudo가 더 많은 보안을 제공 할 수있는 경우입니다. 누군가가 당신의 ssh 키를 훔치더라도, 여전히 당신의 계정 암호가 sudo를 사용하도록 강제하는 경우에 당신의 상자에서 중요한 일을하지 못하게 될 것입니다. 암호는 단어가 아니라 암호 문구 여야합니다. 문장을 생각하고 사용하십시오. 이것은 일반적으로 8자를 초과하여 많은 엔트로피를 제공하지만 임의의 암호보다 기억하기 쉽습니다. 물론 훌륭한 암호 관행은 John the Ripper와 같은 크래킹 도구를 속이는 기계 생성 임의 암호를 사용한다고 말하며 대부분의 암호와 암호를 찢어 버립니다. 아니요, E를 3으로 바꾸면 효과가 없으며 John은 그러한 순열도 얻습니다.


포괄적 인 답변에 감사드립니다! 상자를 보호하려면 이러한 조언을 모두 사용해야합니다. EEAA의 답변은 내가 요구하는 것에 조금 더 구체적이기 때문에 여전히 받아 들일 것입니다.
Dmitry Pashkevich가

1
@DmitryPashkevich는 괜찮습니다 .EEAA에는 좋은 대답이 있습니다. 당신은 저에게 위의 의견을 자세히 설명해달라고 요청했습니다. 걱정 마세요 :)
SnakeDoc

에 관해서 sudo su -및 변형, sudoreplay유용하게 사용할 수 있습니다.
nyuszika7h

3

경우에 따라이 작업을 수행해야합니다. 예를 들어 일부 하이퍼 바이저 API에는 비밀번호가없는 로그인 및 비밀번호가 필요합니다 sudo. 그러나 여전히 중단하지 않고 제한 할 수 있습니다.

당신이 달성하려는 것을 위해. 나는 암호를 입력하는 데 익숙해졌다. 여기서는 편의상 보안이 더 편리합니다. 또한 루트 액세스가 실제로 필요한 경우 사용할 수 sudo있으며 잠시 동안 자격 증명을 캐시하므로 여러 sudo 명령을 연속으로 실행하면 처음으로 암호를 묻는 메시지 만 표시됩니다. 따라서 당신이 생각하는 것처럼 큰 불편은 없습니다.

또한 당신은 루트 권한이있는 명령을 많이 입력하는 그들의 전면에 당신도 할 수있는 모든 시간 sudo를 넣어하지 않으려는 경우 su또는 sudo -s루트 쉘을 얻을 수 있습니다. 비밀번호를 한 번 입력하면됩니다.


2

암호가없는 sudo에 한 번 물린 적이 있습니다. 그것은 쉘 스크립트였습니다. 일부 설치 프로그램 은 sudo가 필요하거나 오류가 발생하는 대신 내 대신 sudo호출 했습니다.

기본 경로를 설정하거나 표시하지 않고 'make'를 입력하고 'sudo make install'부분을 수행하는 스크립트와 / usr / local에 대해 잘 모르는 스크립트가 처음부터 너무 치명적 임 그래서 / usr에서 수정을 확인하기 시작합니다 ...

나는 NOPASSWD를 다시는 사용하지 않겠다고 맹세했으며 시간 제한 설정을 0으로 변경했습니다.


1

질문에 엄격하게 대답하지는 않지만 다른 옵션을 사용하면 더 길게 설정 timestamp_timeout하여 암호를 자주 입력하지 않아도됩니다. 이렇게하면 누구나 관리자 권한을 얻지 못하지만 귀찮은 일이 줄어 듭니다.

로부터 의 sudoers 남자 페이지 :

timestamp_timeout

sudo가 다시 passwd를 요청하기 전에 경과 할 수있는 시간 (분)입니다. 시간 초과는 미세한 입도가 충분하지 않은 경우 분수 성분을 포함 할 수 있습니다 (예 : 2.5). 기본값은 5입니다. 항상 암호를 묻는 메시지를 표시하려면이 값을 0으로 설정하십시오. 0보다 작은 값으로 설정하면 사용자의 타임 스탬프가 만료되지 않습니다. "sudo -v"및 "sudo -k"를 통해 사용자가 자신의 타임 스탬프를 만들거나 삭제할 수 있도록하는 데 사용할 수 있습니다.

이 블로그 게시물은visudo 다음과 같이 시간 제한을 분 단위로 설정하는 데 사용 되는 몇 가지 예보여줍니다 .

Defaults timestamp_timeout=60

어쩌면 이것이 보안과 사용 편의성 사이에서 행복한 중간 단계입니까?


입력 주셔서 감사합니다! 필자의 원래 질문은 암호를 입력 해야하는 빈도가 아니라 키를 사용하여 컴퓨터에 ssh를 사용할 수 있기 때문에 암호를 전혀 사용하지 않아도된다는 것입니다. 다른 사람들은 그것이 나쁜 생각임을 분명히했습니다.
Dmitry Pashkevich

1

다른 답변은 훌륭하며 대부분의 중요한 사항을 다룹니다. 내가 언급하지 않은 한 가지는 자신의 계정에 이미 발판을 마련한 원격 공격자가 자신을 로그인 할 때 수행하는 모든 종류의 인증을 캡처 할 수 있다는 사실입니다. 쉘 로그인 파일 또는 PATH를 수정하여 sudo 암호를 포함하여 입력 한 모든 내용이 키로거를 설치하도록 키로거를 설치할 수 있습니다. 암호를 수집하기 위해 해킹 된 sudo 바이너리를 PATH에 추가 할 수 있습니다. ssh 에이전트 연결을 연결 시스템으로 다시 도용하여 pam_ssh_agent_auth를 물리 치고 연결하자마자 루트가 될 수 있습니다. 따라서 절대 보안 측면에서 sudo에 암호를 사용하는 것과 그렇지 않은 것의 차이는 보이지 않습니다. 물론 그것은 좀 더 복잡한 공격을합니다.

요약하자면, sudo 액세스 권한이있는 경우 손상된 사용자 계정이 root가되는 것을 절대 방지하는 유일한 방법은 sudo 액세스를 자신에게서 제거하거나 절대 사용하지 않는 것입니다. 당신이 동의하지 않는 경우, 내가 틀린 것을 좋아하기 때문에 알려주세요!

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