728x90
변경에 대한 영향도
MySQL 사용자의 셸을 /bin/bash에서 /sbin/nologin으로 변경하면 다음과 같은 영향이 발생할 수 있습니다:
1. 보안 강화
- 영향:
/sbin/nologin은 사용자가 시스템에 로그인하지 못하도록 제한합니다. MySQL 사용자 계정(mysql)은 일반적으로 데몬 프로세스를 실행하는 데만 사용되므로, 로그인 셸이 필요하지 않습니다. 이를 통해 악의적인 사용자가mysql계정을 통해 시스템에 접근하는 것을 방지할 수 있습니다. - 이점: 시스템 보안이 강화되며,
mysql계정이 악용될 가능성이 줄어듭니다.
2. MySQL 서비스 동작
- 영향 없음: MySQL 데몬은 셸 로그인을 요구하지 않으므로,
/sbin/nologin으로 변경해도 MySQL 서비스의 실행에는 영향을 주지 않습니다. - 주의사항: MySQL 서비스가 정상적으로 실행되기 위해 필요한 권한(파일/디렉토리 접근 권한 등)이 유지되어야 합니다.
3. 시스템 관리
- 영향: 관리자가
mysql계정으로 직접 로그인하거나su - mysql명령을 사용하여 셸에 접근할 수 없게 됩니다. 이는 의도적인 보안 조치로, 관리자가mysql계정으로 직접 작업해야 할 경우 다른 방법을 사용해야 합니다(예:sudo -u mysql). - 대안: 필요한 경우
sudo를 통해mysql사용자로 명령을 실행할 수 있습니다.
4. 잠재적 문제
- MySQL 관련 스크립트나 작업이
mysql계정의 셸에 의존하는 경우(드물게 발생), 해당 작업이 실패할 수 있습니다. 하지만 대부분의 MySQL 설치 환경에서는 이런 의존성이 없으므로 영향은 미미합니다. - 변경 전, 시스템에서
mysql계정이 셸을 사용하는 특정 작업(예: cron 작업)이 있는지 확인해야 합니다.
보안 조치 방법 가이드
/bin/bash를 /sbin/nologin으로 변경하여 MySQL 사용자 계정의 보안을 강화하는 절차는 다음과 같습니다.
1. 현재 설정 확인
mysql 사용자의 현재 셸을 확인합니다:
grep ^mysql /etc/passwd
- 출력 예:
mysql:x:999:999:MySQL Server:/var/lib/mysql:/bin/bash /bin/bash가 셸로 설정되어 있는지 확인합니다.
2. 셸 변경
mysql 사용자의 셸을 /sbin/nologin으로 변경합니다:
sudo usermod -s /sbin/nologin mysql
- 또는
/etc/passwd파일을 직접 편집:sudo vipwmysql사용자 항목에서:/bin/bash를:/sbin/nologin으로 변경.- 예:
mysql:x:999:999:MySQL Server:/var/lib/mysql:/sbin/nologin - 편집 후 저장하고 종료.
3. 변경 확인
변경이 올바르게 적용되었는지 확인합니다:
grep ^mysql /etc/passwd
- 출력 예:
mysql:x:999:999:MySQL Server:/var/lib/mysql:/sbin/nologin
4. MySQL 서비스 테스트
변경 후 MySQL 서비스가 정상적으로 작동하는지 확인합니다:
sudo systemctl restart mysql
sudo systemctl status mysql
- 서비스가 정상적으로 시작되고 오류가 없는지 확인합니다.
5. 추가 보안 조치
- 계정 잠금: 추가로
mysql계정을 잠가 로그인 자체를 차단할 수 있습니다:sudo passwd -l mysql - 권한 점검: MySQL 데이터 디렉토리(
/var/lib/mysql등)와 설정 파일(/etc/my.cnf등)의 소유자가mysql사용자와 그룹으로 설정되어 있는지 확인:ls -ld /var/lib/mysql ls -l /etc/my.cnf- 필요 시 권한 수정:
sudo chown -R mysql:mysql /var/lib/mysql sudo chmod -R 750 /var/lib/mysql
- 필요 시 권한 수정:
- 불필요한 권한 제거:
mysql계정이 불필요한 시스템 권한(예: sudo 권한)을 가지지 않도록 확인:sudo visudomysql계정 관련 항목이 없어야 합니다.
6. 모니터링 및 로깅
- 변경 후 시스템 로그를 모니터링하여 예상치 못한 오류가 발생하는지 확인:
sudo tail -f /var/log/syslog # 또는 sudo tail -f /var/log/messages - MySQL 관련 오류 로그도 확인:
sudo tail -f /var/log/mysql/error.log
7. 롤백 계획
만약 변경 후 문제가 발생하면, 셸을 원래대로 복구할 수 있습니다:
sudo usermod -s /bin/bash mysql
- 복구 후 MySQL 서비스를 다시 테스트합니다.
추가 권장 사항
- 최소 권한 원칙:
mysql계정은 MySQL 서비스 실행에 필요한 최소한의 권한만 가져야 합니다. - 정기 점검:
/etc/passwd와/etc/shadow파일을 주기적으로 점검하여 의도하지 않은 변경이 있는지 확인합니다. - SELinux/AppArmor: SELinux 또는 AppArmor가 활성화된 경우,
mysql계정의 동작이 제한될 수 있으므로 관련 정책을 점검합니다.
반응형
'서버 리뷰' 카테고리의 다른 글
| NGINX WebDAV 모듈 힙 버퍼 오버플로우 취약점(CVE-2026-27654) 분석 및 대응 가이드 (0) | 2026.05.30 |
|---|---|
| [Network/Java] OpenSSL 검증 코드와 Java PKIX 에러 매핑 완벽 정리 (0) | 2026.05.18 |
| NAT와 공인 IP에 대한 이해 (0) | 2025.09.18 |
| MariaDB의 `mysql` 계정: 상징적 의미, 삭제 방법 및 로그인 영향 (0) | 2025.09.11 |
| 우분투 서버 vs 데스크톱 비교 (0) | 2025.05.06 |