bestsource

보안 향상을 위해 로컬 호스트에서 MySQL 연결 제한

bestsource 2023. 11. 5. 14:50
반응형

보안 향상을 위해 로컬 호스트에서 MySQL 연결 제한

MySQL 사용자 이름과 비밀번호를 아는 사람이라면 누구나 접근할 수 있다고 들었습니다. 로컬 호스트만 듣고 있어도 말입니다.

내 정보를 가정하면 다음과 같습니다.

USER: root
PASS: 123456
Host: LOCALHOST (only)

어떻게 그곳(현지)에 있는 모든 사람들이 그것에 접근할 수 있습니까?

원격 호스트에서 사용자 이름 및 암호로 액세스를 제한하면 누군가가 외부에서 데이터베이스에 액세스할 수 없습니다.

로컬 호스트 시스템에서 3306(MySQL Default Port)으로만 트래픽을 허용하도록 방화벽을 구성할 수도 있습니다.

갱신하다

사용자가 LOCALHOST를 통해서만 액세스할 수 있도록 설정하려면 다음을 사용합니다.

GRANT ALL PRIVILEGES ON *.* TO db_user @'localhost' IDENTIFIED BY 'db_passwd';
GRANT ALL PRIVILEGES ON *.* TO db_user @'127.0.0.1' IDENTIFIED BY 'db_passwd';

또한 MySQL 서버를 로컬 주소에 바인딩합니다.이 작업은 다음을 편집하여 수행할 수 있습니다.[mysqld]부분의my.cnf:

[mysqld]
bind-address = 127.0.0.1

방화벽이나 MySQL 자체 내에서 MySQL에 대한 직접적인 액세스를 차단할 수 있지만, 해킹을 당할 가능성이 가장 높은 방법은 안전하지 않은 웹 응용 프로그램을 통해 공격자가 데이터베이스 로그인을 읽고 서버에서 연결할 수 있습니다.

따라서 애플리케이션을 안전하게 유지하십시오. 모든 것을 업데이트하고, 파일 업로드를 허용하지 않으며, 계정이 여러 개인 경우 suPHP를 사용하십시오.

mysql 응용 프로그램을 제한하는 경우 다음 단계를 따릅니다.

1. 3306번 포트를 막으시면 됩니다.사이트가 동일한 서버에 있는 경우에도 localhost를 호스트 이름으로 사용하여 데이터베이스에 액세스할 수 있습니다.

2.my.cnf 파일의 "[mysqld]" 섹션에 "bind-address = 127.0.0.1"을 추가하면 로컬 호스트에만 액세스할 수 있습니다.

대부분의 사람들은 이런 종류의 제한을 사용합니다.

이것은 내가 우연히 발견한 오래된 질문이지만, Darkeden에 phpMyAdmin 또는 유사한 기능이 실행되고 있다면 누구나 유효한 MySQL 자격 증명을 사용하여 로그인할 수 있습니다.

손상된 경우 연결 제한 외에 모든 암호를 변경합니다.

그의 (조정된) 질문에 대한 답변을 보지 못했습니다. 로컬 호스트에 잠금을 걸었는데도 공격자가 계속 침입하고 있다는 것입니다.

진정으로 로컬 호스트로 제한한 경우(netstat -an | egrep 3306을 사용하여 확인하려면 0.0.0이 아닌 127.0.0.1을 듣고 있는지 확인), 로컬 호스트에서 연결을 시작하는 방법만이 액세스할 수 있습니다.

수행할 초기 단계:

  1. 아마도 교체 시스템을 처음부터 다시 구축하고 공개적으로 접근하기 전에 강화할 것입니다(예: 가능한 것을 사용하여 반복 가능한 조리법을 사용하면 몇 번의 반복 작업을 거쳐야 할 수 있으므로 도움이 될 것입니다.) 평판이 좋은 보안 스캐너로 명백한 구멍이 무엇인지 확인하십시오.
  2. 보안 전문가의 도움 받기(달러 또는 시간을 들여서 해결하고 싶은 경우에 따라 다름)
  3. 보안 패치 적용,
  4. 필요 없는 서비스를 제거하고,
  5. 데이터베이스 액세스를 필요한 프로그램에만 제한합니다.
  6. 모든 비밀번호를 다시 설정하고,
  7. 설치된 루트 키트 및 기타 바이러스를 확인합니다.
  8. 만일 당신의 사무실에서 당신의 서버를 보호하고 사회 공학을 다루는 직원을 훈련한다면,
  9. 들어오는 요청을 모니터링 및 필터링하고 직접 액세스를 거부하는 서비스 사용(예: 클라우드 플레어를 저렴한 시작점으로 사용)
  10. 서버에 액세스하는 데 사용되는 모든 컴퓨터에서 키보드 로거(물리적, 소프트웨어 및 기타 바이러스)를 확인합니다.
  11. 서버에 액세스할 때 키 입력을 기록하는 물리적인 방법(예: atm에서 사용되는 웹캠 스타일)을 확인하면 소리가 더 이국적입니다(https://en.wikipedia.org/wiki/Acoustic_cryptanalysis), 근처의 wifi 액세스 포인트로 타이핑하면 더 이국적입니다(예:
  12. 감사 추적을 추가하고 데이터베이스 활동을 모니터링하여 그가 어떻게 통과하고 있는지 파악합니다. 하지만 그렇지 않으면 보안 구멍에서 다른 보안 구멍으로 옮겨갈 것이기 때문에 최소한 모든 명백한 보안 작업을 먼저 수행해야 합니다.

그는 또한 다음을 사용할 수 있습니다.

  1. 외부에서 액세스할 수 있고 기존 데이터베이스 연결을 통해 임의의 sql 명령을 실행할 수 있는 보안 구멍이 있는 사용자가 실행 중인 일부 프로그램(예: 웹 서버)을 통해 액세스합니다. https://www.w3schools.com/sql/sql_injection.asp 을 참조하십시오.

  2. 외부에서 액세스할 수 있는 일부 프로그램을 속여서 localhost:3306(예: 컴퓨터의 잘못 구성된 네트워크 방화벽을 통해)에 대한 연결을 프록시합니다.

  3. 로컬 프로그램(bash.mysql 등)을 실행하기 위해 일부 프로그램을 속이고 데이터베이스에 대한 접근 권한을 얻는 것 - 버퍼 오버플로 및 기타 특수하게 조작된 데이터는 임의 코드를 실행하는 데 일반적인 문제입니다.

  4. 정당한 접근이 가능한 연결을 공격하는 중간에 있는 남자

  5. 외부에서 자동으로 또는 수동으로 데이터를 처리하는 프로그램의 버그(예: e-메일, postscript/pdf/스크립팅 처리가 포함된 문서) - 텍스트 파일을 보는 것조차 위험할 수 있음 - https://www.proteansec.com/linux/blast-past-executing-code-terminal-emulators-via-escape-sequences/ 참조

  6. 사람들이 당신에게 접근할 수 있도록 하는 사회공학적 방법

  7. 액세스 권한이 있는 컴퓨터에 하드웨어 장치를 연결하는 데 성공했습니다(작업 주차장에 놓여 있는 "메모리 스틱"을 집어 들고 "프로그래밍 가능한 키보드" 대신 확인하고 모든 컴퓨터가 키보드를 신뢰합니다!).

  8. 그리고 제가 모르는 다른 방법들도 더 많지만, 관련된 방법들은...

실질적인 보안이 필요하다는 것만 기억하세요. xkcd가 딱 맞는 말이라고 생각합니다. https://xkcd.com/538/

언급URL : https://stackoverflow.com/questions/13208614/restricting-mysql-connections-from-localhost-to-improve-security

반응형