2017-12-09 7 views
-1

웹에서 전체 답변을 검색했지만 실제로 찾지 못했습니다. 내 질문 : MySQL의 구현 된 SSL을 사용할 때 인터넷에서 직접 내 서버에있는 MySQL에 액세스하는 것이 안전합니까?MySQL SSL은 실제로 사용하기에 안전합니까?

요점 : MySQL SSL은 모든 통신을 암호화하고 공개 키가있는 사용자 만 데이터베이스에 액세스 할 수 있도록 SSL (GRANT ALL PRIVILEGES ON <database> TO '<external_user>'@'%' IDENTIFIED BY 'pass' REQUIRE SSL)을 강제로 데이터베이스에 대한 액세스를 제한 할 수 있습니다. 문제 없다.

그러나 모든 IP 주소에서 MySQL에 액세스 할 수 있어야하고 (bind-address 127.0.0.1 제거) 내 방화벽에서 포트 3306을 열어야합니다. (필자는 iptables의 프런트 엔드로 ufw를 사용합니다). 이 두 단계는 나를 위해 매우 불안전 해 보입니다 (특히 fail2ban 로그에서 포트 22를 공격하려는 시도를 계산할 때 특히 그렇습니다).

누군가 내가 왜 틀렸는 지, 대체 아이디어 또는 설정을 안전하게 만드는 이유가 있습니까?

참고 : SSH 터널을 사용하고 싶지 않습니다. 그것은 확실히 안전하지만 내 지식은 성능을 꽤 많이 저하시킵니다.

Note II : PHP PDO 클래스를 사용하여 데이터베이스에 연결하고 싶습니다.

+0

'할인'? '* 안전 *'을 의미합니까? SSL이 안전한지 묻고 있습니까? 이 시대에? – EJP

+0

@EJP 아니요, 다른 질문을했습니다. 투표를하지 않았습니까? 솔직히 투표하기 전에 질문을 읽어보십시오! 그리고 네, 오타를 바로 잡았습니다. 그리고이 제목에 대한 많은 다른 기사가 SSH 터널 대신 MySQL SSL을 사용하도록 제안했기 때문에 제목은 정확합니다. 따라서 똑같이 안전 할 것으로 기대할 수 있습니다. 그러나 받아 들여진 대답에 따르면 그렇지 않습니다. – PeMa

+0

제목과 텍스트는 모두 '저장'으로 표시됩니다. 내 의견을 수정하기 전까지는 내용이 정확하지 않다는 의미입니다. 귀하의 질문은 실제로 MySQL SSL에 관한 것이 아니라 STARTTLS 명령 이전의 포트 상태와 일반 텍스트 연결을 허용한다는 사실입니다. – EJP

답변

1

설정에 사용되는 SSL은 스니핑과 수정에 대한 전송을 안전하게 유지합니다. require SSL으로 설정하면 클라이언트가 SSL을 사용하기 만하면됩니다 ("공개 키를 사용하는 사용자에게만 데이터베이스에 대한 액세스 허용"과는 반대). 특정 클라이언트 인증서 또는 클라이언트 인증서의 사용을 전혀 시행하지 않습니다. 즉, 암호를 알면 누구나 연결할 수 있습니다.

따라서 데이터베이스의 적절한 액세스 제어는 여전히 비밀로 유지되는 모든 암호에만 의존합니다. SSL은 연결에서 비밀번호를 스니핑하고 트래픽을 수정 (예 : 구문 변경)하는 데 도움이되지만 이미 비밀번호를 알고있는 공격자에게는 도움이되지 않습니다.

TLS는 공격자가 SQL 주입을 사용하여 자신의 SQL 문을 삽입 할 수있는 것처럼 클라이언트의 문제를 방지하는 데 도움이되지 않습니다. 그리고 데이터베이스를 인터넷에 직접 노출 시키면 SSL 사용 여부와 관계없이 서비스 거부 공격에 취약 해지고 또한 강력한 암호가 생길 수 있습니다.

+0

흠, 고마워. 나는 두려움이 합리적이라고 이해했다. 보안을 달성 할 수있는 방법을 제안 할 수 있습니까? 아니면 접근 방식을 변경해야합니까? – PeMa

+1

@PeMa : 유감스럽게도 데이터베이스를 외부에서 사용할 수있게해야하는 이유와 제한 사항이있는 이유에 대해 좁은 사용 사례가 표시되지 않습니다. 그러나 SSH 또는 VPN과의 연결을 터널링하는 데 드는 특정 클라이언트에 대해서만 필요한 경우 노출 된 공격 영역이 줄어들어 위험이 줄어 듭니다.그런 질문을하는 더 나은 사이트는 실제로 security.stackexchange.com이 될 것입니다. 그러나 더 유용한 답변을 얻으려면 최대한 좁은 유스 케이스를 지정하십시오. –

+0

좋아요, 보안에 대해 잘 몰랐습니다 .stackexchange.com. 여기에서 유스 케이스는 한 회사에 대해 여러 개의 웹 앱을 만드는 것이다. 확장 성 이유로 인해 xampp (또는 php build-in server)을 모바일 장치에서 로컬로 사용하여 하나의 중앙 데이터 서버와 통신하는 방법에 대해 생각했습니다. – PeMa