MySQL의 바인드 주소를 0.0.0.0으로 설정하는 것은 얼마나 나쁜가?


35

원격 서버가 현재 웹 응용 프로그램과 Linux 서버를 공유하는 MySQL 인스턴스에 액세스하도록 허용하려고합니다. 설명서 에 따르면 이것이 올바르게 이해되지 않는 한이 가능한 유일한 방법은 bind-address 지시문이 0.0.0.0 으로 설정 되어 MySQL이 유효한 사용자를 생성 할 수있는 모든 IP에서 액세스 할 수있게하는 것입니다.

따라서 두 가지 질문이 있습니다.

  1. 이것이 보안에 얼마나 해로운가?
  2. MySQL과 로컬 및 원격 상호 작용을 허용하는 더 나은 접근 방법이 있습니까?

답변:


36

바인드 주소 설정을 약간 이해하고 있다고 생각합니다 . 이것은 MySQL이 연결을 수신 할 로컬 주소입니다. 기본값은 0.0.0.0이며 모든 인터페이스입니다. localhost에 대해서만 127.0.0.1을 지정하지 않으면이 설정은 서버에 액세스 할 수있는 IP를 제한하지 않습니다.

특정 IP 주소 에서 특정 사용자를 제한해야하는 경우 다음 과 같이 생성 / 권한 사용자를 활용하십시오CREATE USER 'bobdole'@'192.168.10.221';


+1이지만 기본 청취 주소는 MySQL 설치 방법에 따라 다릅니다.
John Gardeniers

고마워 Doug, 나는이 경우 기본값이 내 로컬 호스트라고 생각하지만 특정 데이터베이스의 사용자가 여전히 IP로 제한되어 있음을 아는 것이 좋습니다.
jonathanatx

@jonathanatx MySQL 기본 bind-address (5.6에서 그리고 내가 아는 한)는 0.0.0.0입니다. 비록 많은 설치에서 로컬로 바인딩하는 것이 가장 좋은 방법이라고 생각합니다. 다른 사람이 출입하지 못하게하려면 문을 열지 마십시오.
ebyrob

1

에이. 그것은 나쁜. 각 데이터베이스에서 ip로 사용자 액세스를 제한 할 수는 있지만 모든 연결을 로컬로 가져 오는 것이 더 안전하다고 생각합니다. 내 서버에서 MySQL은 기본 구성 인 127.0.0.1 인 로컬 연결 만 허용합니다. 데이터베이스에 원격으로 액세스하려면 데이터베이스에 연결하기 전에 ssh 터널을 만든 다음 로컬로 연결하기 만하면됩니다. PHP로 코딩하는 경우이 작업을 매우 쉽게 수행 할 수 있습니다. 데스크톱 응용 프로그램을 사용하는 경우 Linux에서 쉽게 수행 할 수 있습니다 (ssh 터널 조회) .Windows에서는 일반적으로 Putty와 같은 프로그램을 사용하여 터널을 만듭니다.


7
꽤 미쳤어 요. 이를 수행하는 표준 방법은 특정 호스트 이름 또는 IP에서만 액세스 할 수있는 사용자를 작성하는 것입니다. 모든 웹 서버가 데이터베이스에 SSH 터널을 만들도록하는 것은 필요한 것보다 훨씬 많은 작업입니다.
TheLQ

3
웹 서버와 데이터베이스 서버가 항상 동일한 장치는 아닙니다. 확실히 인터넷에서 연결을 허용하지 마십시오. 그러나 MySQL 네트워크 액세스로 솔루션을 설계하는 안전한 방법이 있습니다.
Shane Madden

1
작은 설정 (하나의 db, 하나의 www)의 경우 ssh tunnelling을 수행 할 수 있습니다 . 실제 설정의 경우 VPN과 방화벽이 사용자를 보호하므로 0.0.0.0을 통해 원격 액세스를 허용합니다.
Sonia Hamilton

2
SSH 터널 아이디어가 미쳤다고 생각하는 모든 사람들에게는 많은 MySQL 트래픽이 분명하다는 것을 고려하십시오. 어떤 이유로 신뢰할 수없는 네트워크 (예 : 인터넷)를 통해 연결해야하는 경우 SSH를 사용하거나 VPN을 통해 수행하십시오. 내가 말하는 것을보고 싶다면 Wireshark 또는 다른 패킷 스니퍼를 실행하십시오.
Brad

2
@Brad MySQL은 암호화를 지원하므로 올바르지 않습니다.
Marti Markov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.