컬쥐네 다락방

리눅스 | 워드 프레스 연결 중 'Error establishing a database connection' 에러 해결 본문

클라우드/리눅스

리눅스 | 워드 프레스 연결 중 'Error establishing a database connection' 에러 해결

코딩하는 갱얼쥐 2022. 3. 16. 15:50

워드 프레스를 접속하기 위해 주소창에 내 ip주소를 입력했을 때 DB와 연결되는 과정에서 에러가 뜰 때가 있다.

 

이 전 과정에서 DB 사용자 설정과 MariaDB 포트, 방화벽 모두 열어줬지만 발생했다.

그렇다면 이건 SELinux (Securiy Enhanced Linux)에 의해 접속이 막혀 발생했을 확률이 높다.

 

과거 리눅스는 소스코드가 공개되어 있기 때문에 보안이 취약했고, 이를 보완하기 위해 만든 것이 SELinux다.

Linux Kernel 보안 모듈이라고도 하며, Linux의 핵심인 Kernel을 보호하기 위한 장치

 

SELinux는 3가지 상태가 존재한다.

- enforcing : 강제 - 추가 시스템 보안을 위해 모든 보안 정책을 사용한다

- permissive : 허용 - 서비스 거부 메세지를 통보 받을 수 있고 자료와 프로그램에 이름을 할당한 후 로그를 기록한다. 하지만 보안 정책을 사용하지는 않는다. 처음 selinux를 사용하는 사람이 selinux가 어떤 영향을 미치는지 알아볼 때 좋다.

- disabled : 비활성화 

 

SELinux 설정 방법

selinux 설정 파일에 들어가서 설정을 변경해준다.

[root@localhost ~]# vi /etc/sysconfig/selinux

 

 vi 편집기로 열어보면  SELINUX = enforcing 으로 활성화된 상태를 볼 수 있따.

이 설정을 변경할 경우 재부팅시에 설정이 적용된다.

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

SELinux 관련 명령어

setenforce / getenforce

setenforce는 시스템을 벗어나지 않고 임시적으로 SELinux 설정을 변경할 수 있다.

setenforce 0 - SELINUX=permissive 와 동일

setenforce 1 - SELINUX = enforcing와 동일 (단 SELinux status값이 disable이면 사용 불가)

 

getenforce - 현재 SELinux의 설정 값을 볼 수 있다.

[root@wordpress ~]# getenforce
Permissive

sestatus - SELinux의 상세 정보를 볼 수 있다.

[root@wordpress ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      31

setsebool

형태 : setsebool [옵션] [설정할 정책] [ON/OFF] (on,off 대신 1,0 사용 가능)

SELinux 설정값을 주는 명령어

ex) setsebool -P : 재부팅 후에도 적용되는 옵션 (SELinux 환경 설정이 저장된다)

     setsebool -P ftpd_full_access on : ftp에 대한 selinux 접근 보안 정책 확인

 

getsebool

형태 : getsebool [옵션] 

해당 옵션에 대한 boolean값 상태 확인

ex) getsebool -a : 모든 옵션의 boolean 값 확인 (보통 | grep과 같이 사용한다)

 

SELinux 로그 파일

리눅스의 어떤 로그 데몬을 사용하는지에 따라 로그 파일의 위치가 달라질 수 있다.

 

auditd를 사용하는 경우

/var/log/audit/audit.log 에 저장된다.  (보통 대부분은 여기에 해당한다.)

audit.log에는 SELinux뿐 아니라 사용자 로그인/로그오프, 데몬 시작/종료 등 중요한 시스템의 감사 이력이 저장된다. 

 

rsyslogd를 사용하는 경우

/var/log/messages에 SELinux의 감사 로그가 남게된다.

 

auditd + setroubleshootd를 사용하는 경우

audit.log에는 감사 이력이 저장되며 SELinux의 에러 메세지는 사용자 친화적으로 변역되어 /var/log/messages에 저장된다.

Comments