내 개인 서버에 SSH 표준 사용자 계정이 있고 sudo 액세스 권한이 있습니다(비밀번호를 통해).
SSH 로그인에 공개 키를 사용하므로 로그인할 때 계정 비밀번호를 입력할 필요가 없습니다. 이 사용자가 비밀번호 없는 sudo 액세스로 실행하도록 허용해도 안전합니까?오직그리고/또는 apt-get update
명령? 보안적인 측면에서 묻고 싶습니다.apt-get upgrade
apt-get dist-upgrade
아니요"깨진/버그가 있는 업데이트" 관점에서 살펴보세요. 로그인한 사람은 저 혼자이고, 업데이트로 인해 문제가 발생하면 언제든지 sudo(비밀번호 사용)를 통해 문제를 해결할 수 있습니다.
요점은 비밀번호를 입력하지 않고도 내 서버에서 적시에 업데이트를 실행할 수 있다는 것입니다. 그러나 누군가가 이 계정에 액세스하는 경우 그 사람이 아무것도 설치할 수 없도록 하고 싶고 이 두 명령에 다른 문제가 있는지도 모르겠습니다.
이것은 내 파일의 정확한 줄입니다 sudoers
.
stephen ALL=(root) NOPASSWD: /usr/bin/apt-get update, /usr/bin/apt-get upgrade, /usr/bin/apt-get dist-upgrade
답변1
신뢰도가 낮은 사용자가 실행하도록 허용해도 apt-get update
괜찮습니다 . 그들이 할 수 있는 최악의 일은 많은 대역폭을 소비하고 일부 디스크 공간을 채우는 것이며, 이를 방지하기 위한 엄격한 조치를 취하지 않는 한 이를 수행할 수 있는 다른 방법도 많이 있습니다.
사용자가 실행하도록 허용하면 apt-get upgrade
루트 액세스 권한이 부여될 수 있습니다. 일부 패키지는 사용자에게 쿼리하고 쉘 이스케이프를 허용할 수 있습니다. 예를 들어 실행 중인 터미널(또는 호출되는 모든 항목)에 대한 액세스 권한이 apt-get upgrade
있는 사용자는 dpkg -i
프로필이 업데이트되었으므로 이제 무엇을 해야 하는지 묻는 메시지를 받을 수 있으며 옵션 중 하나는 다음과 같습니다. 쉘을 실행하여 상황을 확인하십시오.
명령을 추가로 제한해야 합니다.
#!/bin/sh
set -ex
exec </dev/null >"/var/log/automatic-apt-upgrade-$(date +%Y%m%d-%H%M%S)-$SUDO_USER.log" 2>&1
apt-get --assume-no upgrade
이는 사용자가 패키지 관리자와 상호 작용할 수 없기 때문에 사용자가 루트가 될 수 있는 방법을 제공해서는 안 됩니다. 업그레이드는 때때로 시스템을 손상시킬 수 있으며 이러한 권한을 가진 사용자는 아무 것도 고칠 수 없기 때문에 이는 안정적인 릴리스에서만 수행되고 보안 업데이트를 기다리는 것뿐입니다. 커널 업데이트인 경우 전체 루트 액세스 권한이 있는 사용자가 재부팅 시기를 결정하도록 합니다.
그런데 사용자는 패키지 콘텐츠를 삽입할 수 없습니다. 이를 위해서는 패키지를 배포하는 서버를 제어해야 하며, 추가로 서버는 패키지가 서명된 경우 패키지에 서명해야 합니다(이는 모든 공식 소스에 해당됩니다). 이는 업그레이드 시 시스템을 제어하는 공격 벡터와는 아무런 관련이 없습니다.
즉 ... 사용무인 업그레이드, 그것이 당신이 원하는 것이라면.