> 데이터 베이스 > MySQL 튜토리얼 > MySQL 보안 예방 조치

MySQL 보안 예방 조치

黄舟
풀어 주다: 2016-12-16 11:25:05
원래의
962명이 탐색했습니다.

MySQL을 사용할 때 보안 문제는 무시할 수 없습니다. 다음은 MySQL에서 표시되는 23가지 참고 사항입니다.

1. 클라이언트와 서버 간의 연결이 신뢰할 수 없는 네트워크에 걸쳐서 통과해야 하는 경우 SSH 터널을 사용하여 클라이언트의 통신을 암호화해야 합니다. 연결.

2. set passWord 문을 사용하여 사용자의 비밀번호를 변경합니다. 먼저 "mysql -u root"를 사용하여 데이터베이스 시스템에 로그인한 다음 "mysql> update mysql.user setpassword=password( 'newpwd')”, 마지막으로 “flush PRivileges”를 실행합니다.

3. 보호해야 할 공격에는 도청 방지, 변조, 재생, 서비스 거부 등이 포함되며 가용성 및 내결함성과 관련이 없습니다. 모든 연결, 쿼리 및 기타 작업은 ACL(액세스 제어 목록) 기반 보안 조치를 사용하여 완료됩니다. SSL 연결에 대한 일부 지원도 있습니다.

4. 루트 사용자를 제외한 다른 사용자는 mysql 메인 데이터베이스의 user 테이블에 접근할 수 없습니다.

user 테이블에 저장된 암호화된 사용자 비밀번호가 유출되면 다른 사용자가 해당 테이블에 접근할 수 없습니다. 사용자 이름/비밀번호에 해당하는 데이터베이스를 자유롭게 사용할 수 있습니다.

5. 사용자 액세스 제어 작업을 수행하려면 grant 및 revoke 문을 사용하십시오.

6. 일반 텍스트 비밀번호를 사용하지 말고 Use를 사용하십시오. md5() 및 sha1()과 같은 단방향 해시 함수를 사용하여 비밀번호 설정

7. 사전에 있는 단어를 비밀번호로 사용하지 마세요.

8. 방화벽을 사용하여 50%를 제거하세요. 외부 위험을 방지하려면 데이터베이스 시스템을 방화벽 뒤에서 작동시키거나 DMZ 영역에 배치하십시오.

9. nmap을 사용하여 인터넷에서 포트 3306을 스캔하거나 telnet server_host 3306을 사용하여 테스트하십시오. 신뢰할 수 없는 네트워크에 있는 데이터베이스 서버의 액세스 TCP 포트 3306에서 액세스하므로 방화벽이나 라우터에서 설정을 수행해야 합니다.

 10. ID=234이지만 다른 사람들은 ID=234 OR 1=1이면 모두 표시되므로 '' 또는 ""를 사용하여 웹 양식에서 문자열을 사용하고 동적 URL에 %22를 추가하여 큰따옴표를 나타냅니다. %23은 파운드 기호를 나타내고 %27은 단일 따옴표를 나타냅니다. 확인되지 않은 값을 mysql 데이터베이스에 전달하는 것은 매우 위험합니다.

11. mysql에 데이터를 전달할 때 크기를 확인하세요.

12. 데이터베이스에 연결해야 하는 애플리케이션은 일반 사용자 계정을 사용해야 합니다.

13. 다양한 프로그래밍에서 특정 '이스케이프 문자' 기능을 사용하세요. 인터페이스(C C++ php Perl java JDBC 등)

인터넷에서 mysql 데이터베이스를 사용할 때는 일반 텍스트 데이터를 전송하지 말고 SSL 및 SSH 암호화를 사용하여 데이터를 전송하세요. > 14. tcpdump 및 문자열 도구를 사용하여 전송된 데이터의 보안을 확인하는 방법을 알아보세요. 예를 들어 tcpdump -l -i eth0 -w -src 또는 dst port 3306 문자열입니다. 일반 사용자로 mysql 데이터베이스 서비스를 시작합니다.

15. 테이블의 링크 기호를 사용하지 말고 --skip-symbolic-links 매개변수를 선택합니다.

16. 데이터베이스 서비스를 시작한 사용자만이 파일에 대한 읽기 및 쓰기 권한을 가질 수 있습니다.

17. 관리자가 아닌 사용자에게는 프로세스 또는 슈퍼 권한을 부여할 수 없습니다. 현재 실행된 쿼리 텍스트, 슈퍼 권한 클라이언트 연결 끊기, 서버 운영 매개변수 상태 변경, 데이터베이스를 복사 및 복제하는 서버 제어에 사용할 수 있습니다.

18. 파일 권한은 사용자 이외의 사용자에게 부여되지 않습니다. 관리자는 로드 데이터 '/etc/passwd'가 표시되지 않도록 표에서 선택을 사용하여 표시되는 문제

19. DNS 서비스 회사의 서비스를 신뢰하지 않는 경우 IP만 설정할 수 있습니다. 호스트 이름 권한 테이블의 숫자 주소;

20. max_user_connections 변수를 사용하여 mysqld 서비스 프로세스를 활성화하여 지정된 계정에 대한 연결 수를 제한합니다.

21. 승인 문도 지원합니다. 리소스 제어 옵션

22. mysqld 서비스 프로세스의 보안 옵션 스위치를 시작합니다. -- local-infile=0 또는 1. 0인 경우 클라이언트 프로그램은 로컬 로드 데이터를 사용할 수 없습니다. --skip-을 사용하는 경우 mysql.user에 대한 grant insert(user)를 'user_name'@'host_name'에 부여합니다. grant-tables 시스템은 모든 사용자의 액세스에 대한 액세스 제어를 구현하지 않지만 mysqladmin 플러시 권한을 사용할 수 있습니다. mysqladmin reload는 기본적으로 액세스 제어를 활성화하며 showdatabases 문은 모든 사용자에게 공개되며 --skip-show-databases를 사용하여 닫을 수 있습니다.

23. 'root'@'localhost' 사용자에 대한 오류 1045(28000) 액세스 거부(비밀번호 사용:NO)가 발생하는 경우 구체적인 방법은 다음과 같습니다. 먼저 --skip을 사용합니다. -grant-tables 매개변수로 mysqld를 시작한 다음, mysql -u root mysql,mysql>update user set 비밀번호=password('newpassword') where user='root';mysql>Flush 특권;을 실행하고 마지막으로 mysql을 다시 시작합니다.

위 내용은 MySQL 보안 주의사항 내용입니다. 더 많은 관련 글은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿