mysql 사용자 비밀번호가 약한 이유는 무엇입니까?


23

"강력한 mysql 사용자 비밀번호가 필요하지 않기 때문에 이미 서버에 액세스 할 수 있기 때문에"조정에 대한 논쟁이있었습니다. 라이브 비즈니스 웹 사이트에서 표준 영어 사전 단어 인 4 자리 비밀번호에 대해 이야기하고 있습니다.

본인의 지식과 경험으로 답변에 영향을 미치지 않으면 서 관심없는 제 3 자 소스의 답변을 보여 드리고자합니다. 누구든지 이것에 대해 관심이 있습니까? 프로그래밍 / 실용적인 답변을 부탁드립니다.


7
root:root로그인 중 하나 인 것 같습니다 .

3
네 자리 비밀번호? 처럼 1337?
Gumbo

답변:


39

이 주장을 한 사람은 "누군가가 발에 들어가면 완전히 접근 할 수있을 것"이라고 말하는 것 같습니다. 이 논리에 따라 방화벽은 내부 네트워크의 모든 암호가 필요하지 않습니다.

강력한 암호는 네트워크 침입으로 인한 피해를 제한하기위한 한 단계입니다. 네트워크의 작은 부분이 손상되었다고해서 패배 할 이유가 없습니다.


13
'심층 방어'는 오늘의 모토입니다.
Scott Pack

3
일단 파일 시스템에 액세스 할 수 있으면 암호를 저장하는 PHP 파일 또는 구성 파일에 액세스 할 수 있습니다. 이에 대한 추가 보안을 설정하지 않으면 공유 호스트에서 일반적으로 어렵거나 불가능합니다 .
Lotus Notes

2
@Lotus PHP와 MySQL 서버가 동일한 머신이라고 가정합니다.
meagar

2
@Lotus Notes, 어쨌든 응용 프로그램에서 루트 사용자를 사용해서는 안됩니다. 잘 설계된 응용 프로그램은 필요한 액세스 만 허용합니다. 대부분의 경우 여기에는 데이터에 대한 액세스가 포함되지만 항상 모든 데이터가있는 것은 아니며 경우에 따라 읽기 전용 일 수도 있습니다.
bradlis7

1
@Lotus 참고 사항 : 많은 공유 호스트는 suPHP를 사용하여 민감한 PHP 파일의 660 개를 제공합니다.
webbiedave

14

그것은 실제로 ' 심층 방어 '라는 개념으로 돌아가서 적어도 강력한 암호는 암호를 느리게하여 발견하고 차단할 수 있습니다. 나는 문이있는 공동체를위한 하나의 열쇠와 모든 집의 문 열쇠를 갖는 비유를 좋아한다.


누군가 키 / 도어 비유를 내놓기를 기다리고있었습니다. |
meagar

그러나 집안의 모든 문마다 다른 열쇠가있을 것입니다. 선은 어디에서 그리나요?
Dan

4
@ Dan : 그러나 안전한 시설에서 모든 문마다 다른 열쇠를 기대할 것입니다. 단독 주택은 없습니다. 모든 자물쇠가 같은 열쇠를 사용할 것으로 기대합니다. 그러나 룸메이트와 같은 공동 주택에서는 잠금 해제 된 문 (모두 같은 키를 사용하는 문일 수도 있음) 또는 룸메이트마다 다른 키와 같은 가정 철학에 따라 결정됩니다.
wallyk

5
자물쇠 및 기타 안전 장치는 주로 아마추어 도둑을 위해 또는 전문가를 저지하기 위해 사용됩니다. 또 다른 억지력은 집 주변의 적절한 조명이며 하루 종일 어디에서 무엇을하는지 분명하게하는 규칙적인 루틴을 피하는 것입니다. 휴가 계획에 대해 낯선 사람과 채팅하지 말고 오랜 시간 동안 방치 한 경우 현지 경찰에게 알리십시오. 항상 누군가가 집에있는 것처럼 보이도록하십시오. 또한 ... 잠깐, 또 질문은 무엇입니까?
Stephen Watkins

6

MySQL 서버 설정 방법에 따라 다릅니다. 홈 (127.0.0.1) IP 외부의 요청 만 수락하면 적당히 더 안전합니다.

원격 IP를 허용하는 시나리오에서는 훨씬 더 큰 거래가됩니다.

또한 침입시 강력한 보안을 유지하는 것이 좋습니다. 가능한 한 적은 거리를 유지하는 것이 좋습니다.


6

회계의 소액 현금 상자에 자물쇠가 있습니까? 그렇다면 왜 그렇습니까? 건물에 물리적 보안이 없습니까?


5

강력한 mysql 사용자 비밀번호가 필요하지 않기 때문에 이미 서버에 액세스 할 수 있기 때문에

mysql은 네트워크 간 클라이언트-서버 환경에서도 사용할 수 있기 때문에 기본적으로 필요하지 않습니다. 기본적으로 사용자 / 패스는 데이터베이스 (3306 포트를 열고 서버를 공개적으로 볼 수있는 오프 사이트)에 액세스 할 수 있습니다. ).


5

실제로 다른 방법이 될 수 있습니다. mysql에 액세스 할 수 있으면 서버 OS 자체에 액세스 할 수 있습니다.

  1. MySQL LOAD_FILE 및 SELECT ... INTO OUTFILE 쿼리를 통해 mysql 사용자는 기본 파일 시스템에서 파일을 읽고 쓸 수 있습니다. mysql 사용자가 액세스 할 수있는 모든 파일 (MySQL은 루트로 실행됩니까?) linux / UNIX에서 SELECT LOAD_FILE ( '/ etc / passwd')를 쿼리하고 웃어보십시오. 만약 mysqld가 root로 동작한다면 SELECT LOAD_FILE ( '/ etc / shadow')를 시도하고 sysadmin이 울리는 것을 볼 수 있습니다.
  2. 리눅스에서 mysql 사용자 "root"는 서버의 "mysql"사용자 (mysqld를 실행하는 사용자)와 동일한 암호를 사용합니다. 그런 다음이 암호가 사소한 경우 (또는 medusa / hydra와 같은 자동화 도구로 찾을 수있는 경우) 데이터베이스 서버에 직접 SSH / 텔넷을 연결하고 바보 일 수 있습니다.

4

누군가 서버에 대한 루트 액세스 권한을 얻는 경우 MySQL 비밀번호가 필요하지 않습니다. 그러나 서버에서 루트가 아닌 웹 사용자가 아닌 앱만 실행할 수있는 경우에도 강력한 MySQL 비밀번호로 데이터를 저장할 수 있습니다. 그러나 대부분의 해킹은 웹에서 발생하므로 해커가 웹 계정에 액세스하여 PHP 파일에서 DB 비밀번호를 추출 할 수 있습니다.

MySQL 서버가 localhost 이외의 곳에서 연결을 수락하지 않는다고 가정하면이 모든 것이 가능합니다. 그렇다면 강력한 PW가 필요합니다.


4

여기서 간과 된 것 같습니다. 신뢰할 수있는 네트워크에서 사용자를 신뢰하십니까?

솔직히, 나는 IT에서 시작할 때 어떤 모습인지 알기 때문에 그렇지 않습니다. 나는 권한이 없었던 영역을 찌르고 찌르고, 솔직히 약한 MySQL 암호는 나에게 행운이었고 기회를 얻었을 때 우연히 기뻐했을 것입니다. 당연하지).

누군가 사회 공학을 사용하여 신뢰할 수있는 네트워크에 접속하면 어떻게 되나요? 그럼 넌 어때? 방화벽 뒤의 시스템에있는 경우 보안이 제대로 작동하지 않으며 견고한 방화벽 보안이 손상되어 시스템으로 바로 연결됩니다.

강력한 암호는 매우 간단하고 암호를 안전하게 유지하기위한 많은 암호 관리 도구가 있으므로 암호를 사용하지 않는 것에 대한 변명이 없습니다.


문제는 MySQL에서 원격 연결을 허용하지 않아야하거나 필요한 경우 localhost/ 127.0.0.1를 호스트로 지정해야한다는 것 입니다. 이런 식으로 아무도 외부의 데이터베이스에 액세스 할 수 없습니다 (같은 네트워크의 데이터베이스도 포함).
Chazy Chaz

2

뭐라고. 서버가 IP로 잠겨 있고 사용자가 정보를 신경 쓰지 않는 일련의 테이블에서 SELECT로 제한되어 있다면 큰 문제는 아닙니다.

다른 한편으로, 나는 키보드를 잠깐 동안 쳐서 MySQL 암호를 설정하고 결과 횡설수설을 보호 된 파일에 붙여 넣습니다. 로그인 할 때마다 코드에서 참조합니다. 이것이 작동하는 방식입니다.

왜 쉬워? 암호가 제한된 로컬 계정 (모두 그대로)에 연결되어 있다면 왜 암호를 입력합니까? 그렇지 않은 경우 암호는 보호하려는 데이터의 값에 상대적인 강도를 가져야합니다.


2

mySQLs 계정 / 액세스 정보는 실제 데이터베이스와 별도의 파일에 저장됩니다. 따라서 다른 파일을 해당 위치로 끌어서 놓기 만하면됩니다. mySQL을 사용하면 파일 시스템의 관련 부분에 대한 쓰기 권한이 있으면 게임이 끝납니다.


2

요구 사항이 변하기 때문에 ...

따라서 로컬 시스템으로 만 MySQL 연결을 수락하는 것으로 제한되는 오늘날 서버는 내일에 외부 도구를 사용하여 데이터베이스를 관리 할 수 ​​있습니다. 이 설정을 수행하는 사람은 사용중인 암호가 매우 약하다는 것을 모를 수 있습니다.

우수하고 강력한 (예 : 길고 임의의) 암호를 기억해야하는 사용자가 불편한 경우 암호를 매우 강하게 설정 한 다음 .my.cnf암호를 입력하는 것이 약한 암호를 사용하는 것보다 훨씬 편리합니다. 물론 여기에도 보안 관련 사항이 있지만 비밀번호를 액세스하는 애플리케이션과 같이 비밀번호를 어딘가에 저장해야하므로 이미 비밀번호 사본을 확보하고 있습니다.

또한 @meagar의 말을 읽어보십시오.


1

그들이 이미 액세스 할 수 있다는 전제는 사실이 아닙니다. 그러나 액세스 권한이 있고 권한이없는 계정이 있으면 여전히 mysql 비밀번호를 쉽게 해킹 할 수 있습니다.

또한 서버가 라이브 프로덕션 서버 인 경우 인터넷에 자신을 광고하는 것보다. 어떤 점에서, 누군가는 것을 의미 , 포트 및 사용자 계정 모두를 mysql을 포함하여 해당 서버에 브 루트 포스 공격을 시도합니다.

데이터에 관심이있는 경우 기본 단계보다 루트 사용자와 데이터베이스의 루트 비밀번호가 다릅니다. 다른 사람들은 사용자와 프로그램에 대해 가능한 가장 낮은 권한을 가져야한다고 말했습니다.

꽤 싼 컴퓨터에서 4 자 암호를 몇 분 안에 해킹 할 수 있습니다.

나는 다른 사람들이 말한 것을 반복하고 있을지 모르지만, 당신의 상사를위한 탄약이 많을수록 좋습니다.


1

실제 시나리오의 많은 이유는 이전에 게시물로 덮여 있었으므로 "철학"을 추가하겠습니다. 강력한 암호를 사용하고 보안을 강화하기 위해 예방 조치를 취하는 것이 작업 철학입니다. 사고 방식.

약한 암호를 사용하여 지금 당신이있는 거 MySQL의는 127.0.0.1에서 실행 루트 사용자가 액세스 권한을 가지고 있기 때문에 당신이 미리 생각하지 않는다는 것을 보여줍니다. 언젠가 mysql에 네트워크를 통해 액세스 권한을 부여해야하는 경우 어떻게됩니까? 당신이 떠난 모든 보안 전체를 포함해야합니까?

좋은 관리자는 최악의 시나리오를 편집증의 관점에서 먼저 생각합니다.


1

사용자의 권한에 따라 항상 여러 수준에서 항목을 잠 가야합니다. 또한 데이터베이스에 저장 한 데이터에 따라 다릅니다. 또한 MySQL에는 전체 데이터베이스를 인수 할 수있는 취약점이 있지만 사용자 계정으로 로그인하기 만하면된다는 가설도 있습니다. 암호가 강력하면이 취약점이 무시됩니다. 그러나 이것은 실제로 특정 사건에 달려 있습니다.


MySQL 서버가 손상된 경우 사용자와 비밀번호는 쓸모가 없습니다. 데이터베이스 파일이 암호화되지 않았습니다. 앱의 MySQL 사용자는 localhost / 127.0.0.1을 호스트로 사용하여 원격으로 사용하거나 원격 연결을 비활성화 할 수 없습니다.
Chazy Chaz

1

mysql에서 다른 사람을 사칭하는 것은 매우 쉽습니다. 비밀번호가없는 사용자 ID (가장 약한 보안)가 주어지면 그냥 사용하십시오 mysql -u userid. 암호가 있으면 조금 더 어렵지만 암호가 약하면 쉽게 사용할 수 있습니다. root에 비밀번호가 없으면 root로 액세스 할 수 있습니다 mysql -u root. 그런 다음 루트가 할 수있는 모든 것을 데이터베이스 내에서 수행 할 수 있습니다.

특히 원격 액세스가 가능하거나 사용 가능한 경우 보안에 호스트 사양을 사용하는 것이 좋습니다.

파일의 비밀번호는 권한에 의해 다소 보호 될 수 있습니다. 루트 또는 비밀번호 파일 소유자의 액세스는 사소한 것입니다. 가능한 경우 디스크의 암호를 암호화해야합니다. 이로 인해 액세스가 약간 어려워 지지만 여전히 취약합니다.


0

글쎄, 당신이 MySQL DB를 직접 호스팅하지 않지만 호스팅 서비스에 있고 누군가가 서버의 IP 주소에 액세스하면 사용자 이름과 비밀번호가 마지막 방어선입니다. 항상 안전한 사용자 이름 / 암호를 사용하는 것이 좋습니다.


메! 누군가 서버에 액세스하면 PHP 파일에서 사용자 / 암호를 읽을 수 있습니다.이 답변을 업데이트하거나 삭제하십시오.
Chazy Chaz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.