MariaDB에서 제공하는 주요 비밀번호 보안 관련 플러그인 적용
https://mariadb.com/kb/en/password-validation-plugins/
Password Validation Plugins
mariadb.com
사전준비
내가 설치한 DB의 플러그인 디렉토리를 확인하고 현재 설치된 플러그인을 살펴 보겠습니다.
현재 설치된 플러그인 확인
MariaDB [mysql]> show plugins;
+-------------------------------+----------+---------------------+----------------------------+---------+
| Name | Status | Type | Library | License |
+-------------------------------+----------+---------------------+----------------------------+---------+
| binlog | ACTIVE | STORAGE ENGINE | NULL | GPL |
| mysql_native_password | ACTIVE | AUTHENTICATION | NULL | GPL |
| mysql_old_password | ACTIVE | AUTHENTICATION | NULL | GPL |
... 생략 ...
| partition | ACTIVE | STORAGE ENGINE | NULL | GPL |
+-------------------------------+----------+---------------------+----------------------------+---------+
80 rows in set (0.005 sec)
MariaDB [mysql]>
플러그인 디렉토리 위치 확인
MariaDB [mysql]> show global variables like 'plugin_dir%';
+---------------+------------------------+
| Variable_name | Value |
+---------------+------------------------+
| plugin_dir | /usr/lib/mysql/plugin/ |
+---------------+------------------------+
1 row in set (0.005 sec)
MariaDB [mysql]>
다운로드 된 플러그인 확인
$ ls -al /usr/lib/mysql/plugin
total 2456
drwxr-xr-x 3 root root 4096 Feb 25 15:10 .
drwxr-xr-x 3 root root 4096 Feb 24 01:37 ..
-rw-r--r-- 1 root root 99560 Aug 19 2024 auth_ed25519.so
-rw-r--r-- 1 root root 68000 Aug 19 2024 auth_pam.so
drwx------ 2 mysql root 4096 Feb 24 01:37 auth_pam_tool_dir
-rw-r--r-- 1 root root 67992 Aug 19 2024 auth_pam_v1.so
-rw-r--r-- 1 root root 67816 Aug 19 2024 disks.so
-rw-r--r-- 1 root root 68160 Aug 19 2024 file_key_management.so
-rw-r--r-- 1 root root 133640 Aug 19 2024 ha_archive.so
-rw-r--r-- 1 root root 133544 Aug 19 2024 ha_blackhole.so
-rw-r--r-- 1 root root 133584 Aug 19 2024 ha_federated.so
-rw-r--r-- 1 root root 199200 Aug 19 2024 ha_federatedx.so
-rw-r--r-- 1 root root 199248 Aug 19 2024 ha_sphinx.so
-rw-r--r-- 1 root root 200376 Aug 19 2024 handlersocket.so
-rw-r--r-- 1 root root 67816 Aug 19 2024 locales.so
-rw-r--r-- 1 root root 67896 Aug 19 2024 metadata_lock_info.so
-rw-r--r-- 1 root root 67928 Aug 19 2024 password_reuse_check.so
-rw-r--r-- 1 root root 67504 Aug 19 2024 provider_bzip2.so
-rw-r--r-- 1 root root 67504 Aug 19 2024 provider_lz4.so
-rw-r--r-- 1 root root 67664 Aug 19 2024 provider_lzma.so
-rw-r--r-- 1 root root 67504 Aug 19 2024 provider_lzo.so
-rw-r--r-- 1 root root 67504 Aug 19 2024 provider_snappy.so
-rw-r--r-- 1 root root 67816 Aug 19 2024 query_cache_info.so
-rw-r--r-- 1 root root 68208 Aug 19 2024 query_response_time.so
-rw-r--r-- 1 root root 71976 Aug 19 2024 server_audit.so
-rw-r--r-- 1 root root 68128 Aug 19 2024 simple_password_check.so
-rw-r--r-- 1 root root 68344 Aug 19 2024 sql_errlog.so
-rw-r--r-- 1 root root 133552 Aug 19 2024 type_mysql_json.so
-rw-r--r-- 1 root root 68016 Aug 19 2024 wsrep_info.so
$
확인해 보면 MariaDB가 설치 되면서 기본적으로 이후 설명할 세가지 플러그인의 so 파일이 함께 설치 되지만 활성화가 되지 않은 상태입니다.
이번 페이지에서는 각각 용도에 대해 알아보고 플러그인 설치 까지만 진행하도록 하겠습니다.
Simple Password Check
기본적인 비밀번호 복잡도를 강제하는 용도 입니다.
- 숫자 n자리 이상 포함 : simple_password_check_digits
- 대문자, 소문자 n자리 이상 포함 : simple_password_check_letters_same_case
- 비밀번호 최소 길이 : simple_password_check_minimal_length
- 특수 문자 n자리 이상 포함 : simple_password_check_other_characters
- 참고1 : https://mariadb.com/kb/en/simple-password-check-plugin/
- 참고2 :마리아 DB 10.1.2 에서 알파버전이 최초 적용 되었습니다만, 참고1 페이지에 보면 10.4.0 이전 버전에서는 password validation plugins와 충돌이 될 수도 있다는 내용을 참고 하시기 바랍니다.
플러그인 파일 확인
$ ls -al /usr/lib/mysql/plugin/*.so | grep simple
-rw-r--r-- 1 root root 68128 Aug 19 2024 /usr/lib/mysql/plugin/simple_password_check.so
$
플러그인 설치
MariaDB [(none)]> install soname 'ed25519';
Query OK, 0 rows affected (0.009 sec)
MariaDB [(none)]>
플러그인 설치 결과 확인
MariaDB [mysql]> show plugins;
+-------------------------------+----------+---------------------+----------------------------+---------+
| Name | Status | Type | Library | License |
+-------------------------------+----------+---------------------+----------------------------+---------+
... 생략 ...
| simple_password_check | ACTIVE | PASSWORD VALIDATION | simple_password_check.so | GPL |
... 생략 ...
+-------------------------------+----------+---------------------+----------------------------+---------+
80 rows in set (0.005 sec)
MariaDB [mysql]>
Password Reuse Check
비밀번호 변경시 이전 비밀번호를 사용하지 못하게 하는 플러그인 입니다.
MariaDB 10.7.0 부터 기본 설치되는 플러그인 입니다.
플러그인 파일 확인
$ ls -al /usr/lib/mysql/plugin | grep reuse
-rw-r--r-- 1 root root 67928 Aug 19 2024 password_reuse_check.so
$
플러그인 설치
MariaDB [(none)]> install soname 'password_reuse_check';
Query OK, 0 rows affected (0.009 sec)
MariaDB [(none)]>
플러그인 설치 결과 확인
MariaDB [mysql]> show plugins;
+-------------------------------+----------+---------------------+----------------------------+---------+
| Name | Status | Type | Library | License |
+-------------------------------+----------+---------------------+----------------------------+---------+
... 생략 ...
| password_reuse_check | ACTIVE | PASSWORD VALIDATION | password_reuse_check.so | GPL |
... 생략 ...
+-------------------------------+----------+---------------------+----------------------------+---------+
80 rows in set (0.005 sec)
MariaDB [mysql]>
ed25519
사용자계정의 비밀번호 저장에 타원곡선 디지털 서명 알고리즘(ECDSA)을 사용할 수 있습니다.
- MariaDB 에서는 기본적으로 비밀번호 저장에 보안에 취약한 sha1 해쉬방식을 고수하고 있습니다. 이것은 MariaDB를 대상으로 하는 보안취약점 점검에 가장먼저 체크 대상이 될 것입니다.
- MariaDB 에서는 이를 보안하기 위해 타원곡선 암호화(ECC)기반으로 하는 ed25519 알고리즘을 플러그인 형태로 제공합니다.
- MariaDB 10.4 이상과 이전 버전에서 각각 적용 방법이 다릅니다. 자세한 내용은 다음회에 암호를 생성하면서 알아 보겠습니다.
- 참고1 : https://mariadb.com/kb/en/password/
- 참고2 : https://mariadb.com/kb/en/set-password/
- 참고3 : https://mariadb.com/kb/en/authentication-plugin-ed25519/
플러그인 파일 확인
$ ls -al /usr/lib/mysql/plugin/*.so | grep ed25519
-rw-r--r-- 1 root root 99560 Aug 19 2024 /usr/lib/mysql/plugin/auth_ed25519.so
$
플러그인 설치
MariaDB [(none)]> install soname 'ed25519';
Query OK, 0 rows affected (0.009 sec)
MariaDB [(none)]>
플러그인 설치 결과 확인
MariaDB [mysql]> show plugins;
+-------------------------------+----------+---------------------+----------------------------+---------+
| Name | Status | Type | Library | License |
+-------------------------------+----------+---------------------+----------------------------+---------+
... 생략 ...
| ed25519 | ACTIVE | AUTHENTICATION | auth_ed25519.so | GPL |
... 생략 ...
+-------------------------------+----------+---------------------+----------------------------+---------+
80 rows in set (0.005 sec)
MariaDB [mysql]>
Server Audit
- 사용자의 엑세스를 기록하는 감사로그를 별도로 남김
- MariaDB 10.0.10 부터 기본 포합되어 설치 됩니다.
- 참고1 : https://mariadb.com/kb/en/mariadb-audit-plugin/
플러그인 파일 확인
$ ls -al /usr/lib/mysql/plugin/*.so | grep audit
-rw-r--r-- 1 root root 71976 Aug 19 2024 /usr/lib/mysql/plugin/server_audit.so
$
플러그인 설치
MariaDB [(none)]> install soname 'server_audit';
Query OK, 0 rows affected (0.015 sec)
MariaDB [(none)]>
플러그인 설치 확인
MariaDB [(none)]> show plugins;
+-------------------------------+----------+---------------------+--------------------------+---------+
| Name | Status | Type | Library | License |
+-------------------------------+----------+---------------------+--------------------------+---------+
... 생략 ...
| SERVER_AUDIT | ACTIVE | AUDIT | server_audit.so | GPL |
+-------------------------------+----------+---------------------+--------------------------+---------+
74 rows in set (0.005 sec)
MariaDB [(none)]>
Cracklib Password Check Plugin
예측하기 쉬운 단어로 비밀번호를 사용하지 못하도록 하는 플러그인으로 기본 제공 플러그인은 아닙니다.
OS레벨의 pam_cracklib 를 이용하는 것으로 패키지 관리자를 통해서 추가로 설치 해야 합니다.
pam_cracklib 설치
$ sudo apt install mariadb-plugin-creaklib-password-check
RedHat, CentOS 게열이면 yum 으로 설치 하시면 됩니다.
lib를 설치 하면 MariaDB 플러그인 디렉토리에 so파일이 다운로드 됩니다.
플러그인 파일 확인
$ ls -al /usr/lib/mysql/plugin | grep cracklib
-rw-r--r-- 1 root root 67752 Aug 19 2024 cracklib_password_check.so
$
플러그인 설치
MariaDB [(none)]> install soname 'cracklib_password_check';
Query OK, 0 rows affected (0.048 sec)
MariaDB [(none)]>
플러그인 설치 확인
MariaDB [(none)]> show plugins;
+-------------------------------+----------+---------------------+----------------------------+---------+
| Name | Status | Type | Library | License |
+-------------------------------+----------+---------------------+----------------------------+---------+
... 생략 ...
| cracklib_password_check | ACTIVE | PASSWORD VALIDATION | cracklib_password_check.so | GPL |
+-------------------------------+----------+---------------------+----------------------------+---------+
81 rows in set (0.005 sec)
MariaDB [(none)]>
MariaDB 공식 페이지에서는 해당 플러그인을 설치후 my.cnf 파일에 플러그인 로드 스크립트를 함께 적어줘야 한다고 나오지만 MariaDB 11.4.3 기준으로 테스트 해보면 해당 플러그인들은 설치 후 즉시 적용 되며, conf 파일에 별다른 추가를 하지 않아도 DB 재가동 후에도 적용되는 것을 확인 했습니다.
다음 편에는 보안 시나리오를 정하고 플러그인 설정을 통해 그것을 적용해 보도록 하겠습니다.
'DataBase' 카테고리의 다른 글
[MariaDB] 보안 취약점 점검 #4 비밀번호 정책 적용 (0) | 2025.02.25 |
---|---|
[MariaDB] 보안 취약점 점검 #3 보안 시나리오 (0) | 2025.02.25 |
[MariaDB] 보안 취약점 점검 #1 시작하며 (0) | 2025.02.24 |
[MySQL/MariaDB] 보안점검 - 개인정보 암호화 저장 (1) | 2024.09.26 |
[MariaDB] 보안점검 - 비밀번호 취약점(SHA1) 개선 (1) | 2024.09.26 |