저는 항상 좋은 관행의 친구였습니다. 그들이 우리의 서버, 서비스 또는 단순히 정보의 보안을 유지하는 데 도움이된다면 훨씬 더 좋습니다.
많은 관리자 나 사용자가 가지고있는 습관 (나쁜 습관)은 뿌리 즉, 모든 데이터베이스에 대해 WordPress CMS를 사용하여 사이트를 설치하고 데이터베이스에 대한 액세스 데이터 (WP가 MySQL 서버를 사용하고 해당 DB를 사용하는 경우)로 MySQL 서버 관리 사용자 : root
또한 다른 웹 애플리케이션 (채팅, 붙여 넣기, 포럼 등)을 설치하고 동일한 작업을 수행하며 항상 MySQL의 루트 사용자를 사용합니다.
오류!!!
이것은 단순히 치명적인 습관입니다.
서버에 다음 서비스가 있다고 가정합니다.
- WordPress를 사용하는 사이트 또는 포털.
- 우리의 지원 포럼, 대화 등 ... 전체 커뮤니티.
- MySQL 데이터베이스를 사용하여 사용자와 암호를 저장하는 FTP.
- 이메일 사용자 (사용자 및 비밀번호)는 MySQL 데이터베이스에 저장됩니다.
- 아는 사람과 채팅하기 위해 설치하는 작은 WebChat입니다.
그리고 이들 모두에서 5 개 서비스에서 MySQL 루트 사용자를 사용하여 각 서비스가 해당 데이터베이스에 데이터를 액세스하고 저장합니다.
어느 화창한 날, 많은 트롤 중 하나가 트롤 일뿐만 아니라 일부 악용, 취약성, 해킹 등을 마스터하여 우리에게 해로운 일을하기로 결정합니다.
우리가 사용하고있는 WebChat에서 버그를 찾아이 버그를 이용하여 WebChat 구성 파일을 포함한 WebChat 파일에 액세스합니다.이 파일에는 WebChat이 액세스하는 데 사용하는 사용자 이름과 암호가 있습니다. MySQL 서버, 그리고 무엇을 추측합니까? … ROOT USER는 그 이상도 이하도 아닙니다!
이 정보를 얻음으로써 트롤은 매우 간단한 방법으로 다음을 수행 할 수 있습니다.
- 당사를 삭제하거나 당사가 보유한 사이트 또는 포털 (WordPress)과 관련된 모든 것을 훔칩니다.
- 귀하는 당사 및 당사가 만든 커뮤니티 인 포럼을 사용하는 당사 사용자로부터 정보를 삭제 및 / 또는 훔칠 수 있습니다.
- 또한 서버에 이메일 계정이있는 모든 사용자의 사용자 이름과 비밀번호를 훔칠 수있을뿐만 아니라 이메일에서 정보를 훔치거나 가장하는 등의 작업을 할 수 있습니다.
- 이제 마지막으로 FTP 서버에서 계정을 사용하고 맬웨어가 포함 된 파일을 업로드 할 수 있습니다. 이렇게하면 서버에 대한 절대 및 전체 제어 권한을 얻을 수 있습니다.
음... 어떻게 생각하세요? …
우리가 가지고있는 각 데이터베이스에 대해 독립적 인 사용자를 만들지 않음으로써 일어날 수있는 모든 일이 보이십니까?
이것은 과장된 친구가 아닙니다. 이것은 놀랍도록 쉽게 일어날 수 있습니다 ... 글쎄요, 재앙을 촉발하는 데 필요한 것은 여러분이 설치 한 일부 웹 애플리케이션의 버그 일뿐입니다.
지금…
각 웹 애플리케이션에 대해 별도의 MySQL 사용자를 생성하는 방법은 무엇입니까?
먼저 데이터베이스 생성, 권한 설정, 사용자 생성 등의 권한이있는 루트 사용자로 MySQL 서버를 입력해야합니다.
mysql -u root -p
그들이 위의 내용을 쓰고 누르면 [시작하다] MySQL 루트 사용자의 암호를 묻는 메시지가 표시되면 암호를 입력하고 [시작하다] 다시 한 번 다음과 같이 즉시 표시됩니다.
이제«라는 데이터베이스를 생성합니다.웹챗DB":
CREATE DATABASE webchatdb;
준비, 이미 데이터베이스를 만들었습니다. 이제 사용자를 만들겠습니다«웹 채팅 사용자«비밀번호 사용«비밀번호델푸토웹챗":
CREATE USER 'webchatuser'@'localhost' IDENTIFIED BY 'passworddelputowebchat';
이제 마술 ... 우리는 모든 권한 (읽기 및 쓰기)을 웹 채팅 사용자 DB에서만 웹챗DB:
GRANT ALL PRIVILEGES ON webchatdb.* TO 'webchatuser'@'localhost' WITH GRANT OPTION;
그리고 짜잔, 사용자는 이미 해당 데이터베이스에서 권한을 가지고 있습니다 ... 이제 MySQL에 대한 권한을 새로 고치는 것만 남아 있습니다. 즉, 방금 변경 한 사용자의 권한을 다시 읽도록 MySQL에 지시합니다.
FLUSH PRIVILEGES ;
그리고 이것이 전부였습니다. 우리가 사용하는 각 웹 애플리케이션에 대해이 작업을 수행함으로써 해당 웹 애플리케이션 중 하나를 위반하는 경우 다른 웹 애플리케이션이 안전하다는 것을 보장합니다 (적어도 MySQL 관점에서는).
좋은 습관은 무엇입니까?
제가 할 수있는 한 간단하게 설명하려고했기 때문에 그것이 저에게있는 것처럼 당신에게도 도움이 되었기를 바랍니다.
안부