명령 행에서 MySQL 비밀번호를 사용하는 것은 어떻게 안전하지 않습니까?


12

mysql -e "{command}"기능 을 사용하는 몇 가지 BASH 도구가 있습니다 . 이 도구를 사용할 때마다 암호를 입력하면 번거로울 수 있으므로 암호를 코드와 함께 일반 텍스트 파일로 작성하지 않으려면 메모리에 저장하고 (을 사용하여 read -s) 명령을 실행할 때마다 BASH에서 읽습니다.

MySQL은 여전히 ​​암호가 명령 줄을 통해 제출되고 있다고 생각하지만 (명령 방식으로 암호를 사용하는 것은 안전하지 않을 수 있음) 오류가 계속 발생합니다.

내 목적을 위해이 메시지를 표시하지 않아도됩니다. 내가 알아야 할 것은 무엇이 불안전 수 있는가? 암호는 물리적으로 절대 표시되지 않으므로 어깨 서핑을 할 수 없으며 SSH 암호를 추측 한 사람조차도 스크립트 자체가 아닌 메모리에 저장되어 있기 때문에 암호를 추측 할 수 없습니다. 중간자 공격 또는 이와 유사한 것이 가능합니까?


8
에 넣어 ~/.my.cnf 수행하여 당신은 호스트 당 지정할 수 있습니다 [client<hostname>]예를 들어, [clientlocalhost]더 쉽고 안전 있도록 자동으로 사용합니다 MySQL의 도구
AmazingDreams

bash명령을 실행할 때 어떻게 읽었습니까? 그렇게 mysql -p"$pass"하면 누구나에서 볼 수 있습니다 ps.
Barmar

답변:


26

환경 변수 (실행중인 프로그램 포함)를 볼 수있는 사람은 누구나 암호를 볼 수 있습니다. 또한 프로세스를 볼 수있는 모든 사람은 매개 변수를 포함하여 프로세스를 실행하는 데 사용 된 명령 줄을 볼 수 있습니다.

따라서 사용자 만 로그인하는 상자의 경우 위험이 미미할 수 있습니다. 그러나 개인적으로 당신을 대상으로 한 공격의 경우, 이것은 거대한 사물의 계획에서 사소한 공격 벡터입니다.


22
뿐만 아니라 당신 ~/.history의 등을 보는 사람
ivanivan

HTOP과 유사한 최상위 유틸리티는 말할 것도없이 언급되었습니다. 많은 스크립트는 또한 사용자가 읽기 전용이거나 권한이 없다는 이유로 환경 변수 $ PASS 등을 사용하지 않았습니다. 단일 사용자 독립형에서는 문제가되지 않을 수 있습니다.
mckenzm

1
환경 변수에 대한 질문은 어디에 있습니까? 쉘 변수는 익스포트하지 않으면 환경에 배치되지 않습니다.
Barmar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.