Linux

RHCSA 공부 2일차

황동리 2024. 4. 13. 22:51
반응형

3. 로그 분석 및 저장

정확한 시간 유지 관리

NTP(Network Time Protocol)을 사용하여 정확한 시간 동기화를 유지하고 시스템 저널 및 로그에서 기록하는 이벤트의 타임스탬프가 정확하도록 시간대를 구성한다.

로컬 시계 및 시간대 관리

시스템 시간 동기화는 여러 시스템의 로그 파일을 분석하는 데 중요하다. 또한 일부 서비스가 정확하게 작동하려면 시간 동기화가 필요할 수 있다.

timedatectl: timedatectl 명령은 시스템의 현재 시간, 시간대 및 NTP 동기화 설정을 포함하여 현재 시간과 관련된 시스템 설정의 개요를 표시한다.

ex) 명령 결과
[user@host ~]$ timedatectl
 	Local time: Wed 2022-03-16 05:53:05 EDT
 	Universal time: Wed 2022-03-16 09:53:05 UTC
 	RTC time: Wed 2022-03-16 09:53:05
 	Time zone: America/New_York (EDT, -0400)
	System clock synchronized: yes
 	NTP service: active
 	RTC in local TZ: no

timedatectl list-timezones: 나라 별 시간대를 확인할 수 있다.

ex) 명령 결과
[user@host ~]$ timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
...output omitted...

timedatectl set-timezone [나라/도시]: <나라/도시>로 시간대를 변경 할 수 있다.

ex) 명령 결과
[root@host ~]# timedatectl set-timezone America/Phoenix
[root@host ~]# timedatectl
 	Local time: Wed 2022-03-16 03:05:55 MST
 	Universal time: Wed 2022-03-16 10:05:55 UTC
 	RTC time: Wed 2022-03-16 10:05:55
 	Time zone: America/Phoenix (MST, -0700)
	System clock synchronized: yes
 	NTP service: active
 	RTC in local TZ: no

chronyd 서비스 구성 및 모니터링

  • chronyd 서비스는 구성된 NTP 서버와 동기화하여 일반적으로 부정확한 로컬 RTC(실시간 시계)를 추적한다.
  • 네트워크 연결을 할 수 없는 경우 chronyd 서비스는 RTC 시계 드리프트를 계산하고, /etc/chrony.conf 구성 파일에서 driftfile 값으로 지정된 파일에 기록한다.
  • 예를 들어 /etc/chrony.conf 구성 파일에 server 172.25.254.254 iburst을 추가해주면 chronyd 서비스는 172.25.254.254 서버의 NTP 시간 소스로 사용한다.
  • chronyd 서비스는 systemctl을 사용하여 서비스를 시작하고 멈춘다.
    => systemctl start chronyd
  • chronyd 서비스를 사용하면 시간 설정을 시간 소스와 동기화 할 수 있다.

chronyc 명령어

chronyc sources -v 
=> chronyd 서비스의 자세한 내용 확인

4. 파일 보관 및 전송

압축된 tar 아카이브 관리

tar 유틸리티의 옵션

tar
	-c: 압축 파일 생성
    -t: 압축 내용표시
    -x: 압축 해제
    -f: 생성하거나 열려는 아카이브 파일의 이름이 와야한다.
    -v: tar 작업 중에 압축되거나 압축 해제 되는 파일을 표시해준다.
    -z: gzip 압축 알고리즘을 사용하므로 .tar.gz. 접미사 생성
    -j: bzip2 압축 알고리즘 사용하므로 .tar.bz2 접미사 생성
    -J: xz 압축 알고리즘 사용하므로 .tar.xz 접미사 생성

ex) tar [옵션] [파일명] [압축할 파일]
tar -czf createtar.gz /etc => /etc 디렉토리를 createtar.gz으로 gzip압축으로 압축한다.
tar -xf createtar.gz => createtar.gz 압축 해제 한다.

file 명령으로 gz인지 xz 인지 zip인지 확인 가능
ex) file tar.gz

시스템 간 안전한 파일 전송

OpenSSH 제품군으로 SFTP(보안 파일 전송 프로그램)을 사용하여 대화형으로 SSH 서버에 업로드하거나 파일을 다운로드 한다.

sftp 명령어

ex) sftp 사용법
sftp student@servera => sftp 접속 
exuser> help => 사용가능한 sftp 명령 확인
exuser> pwd => 원격 서버 working directory 확인
exuser> lpwd => 로컬 서버 working directory 확인
exuser> put /etc/hosts => 로컬의 /etc/hosts파일을 원격 서버에 넣어준다.
exuser> put -r directory => 디렉토리를 넣으려면 -r 옵션 필요
exuser> get /etc/yum.conf => 원격 서버의 /etc/yum.conf 파일을 가져온다

시스템 간 안전한 파일 동기화

로컬 파일 또는 디렉터리의 내용을 원격 서버 사본과 효율적으로 안전하게 동기화 하기 위해 사용하는 것이 rsync 입니다.

  • rsync 명령은 한 시스템의 파일을 다른 시스템에 안전하게 복사하는 방법 중 하나 입니다.
  • rsync 명령을 사용하여 동기화할 때 두 가지 표준 옵션은 -v 및 -a 옵션 입니다.
  • rsync 명령의 -v 옵션은 더 자세한 출력을 원할 때 사용한다.
  • rsync 명령의 -a 옵션은 "아카이브 모드"를 활성화 합니다. 이 옵션은 재귀적 복사를 활성화하고 중요한 여러 옵션을 켜서 파일 특성을 대부분 보존 한다.
rsync -a로 활성화되는 옵션(아카이브 모드)
-r: 재귀적으로 전체 디렉터리 트리 동기화
-l: 심볼릭 링크 동기화
-p: 권한 보존
-t: 타임스탬프 보존
-g: 그룹 소유권 보존
-o: 파일 소유권 보존
-D: 장치 파일 보존
  • 주로 rsync 명령으로 사용되는 옵션은 -avz 입니다.
  • sftp 명령과 마찬가지로 rsync 명령도 [user@]host:/path 형식으로 원격 위치를 지정한다.
  • --delete 옵션 넣으면 원본과 다른 시스템에 넣는 파일과 동기화가 된다.

rsync 명령

rsync [옵션] [경로] [원격서버:원격서버경로]
=> 원격 서버에 파일, 디렉터리 공유 할 때
rsync [옵션] [원격서버:원격서버경로] [로컬경로]
=> 원격 서버의 파일, 디렉터리를 로컬 서버에 공유 할 때

5. 시스템 성능 튜닝

튜닝 프로파일 조정

tuned 데몬이 관리하는 튜닝 프로파일을 선택하여 시스템 성능을 최적화 한다.

정적 튜닝 구성

tuned 데몬은 서비스가 시작될 때 또는 새 튜닝 프로파일을 선택할 때 시스템 설정을 적용한다. 정적 튜닝은 tuned 데몬이 런타임에 적용하는 프로파일에 미리 정의된 kernel 매개 변수를 구성한다. 활동 수준이 변경될 때 이러한 매개 변수를 조정하지 않는다.

동적 튜닝 구성

동적 튜닝에서는 tuned 데몬이 시스템 활동을 모니터링하고, 런타임 동작 변경에 따라 설정을 조정한다. 동적 튜닝도 선택한 튜닝 프로파일에 선언된 초기 설정으로 시작하지만, 현재 워크로드에 맞게 지속적으로 튜닝을 조정한다.

/etc/tuned/tuned-main.conf 구성파일


=> dynamic_tuning = 1 로 변경을 하면 동적 튜닝으로 구성을 할 수 있다.

튜닝

tuned 패키지를 설치하여 튜닝을 변경 할 수 있다.

=> 설치 및 실행 명령어
dnf install tuned
systemctl start tuned
  • tuned 애플리케이션은 /usr/lib/tuned 및 /etc/tuned 디렉터리에 튜닝 프로파일을 저장한다.
  • 모든 프로파일에는 별도의 디렉터리가 있으며 디렉터리 내부에는 tuned.conf 기본 구성 파일이 있다.

tuned 명령

tuned-adm list
=> 기본 제공 프로파일과 사용자가 생성한 튜닝 프로파일을 둘 다 포함하여 사용 가능한 튜닝 프로파일을 보여줍니다.
tuned-adm profile_info [Profile name]
=> 지정된 프로필의 대한 정보 확인
tuned-adm active 
tuned-adm profile_info
=> 각 명령 끝에 현재 활성 튜닝 프로필을 적지 않으면 알아서 현재 사용하는 프로필에 대한 정보를 알려준다.
>
```
tuned-adm profile [프로파일]
=> 사용하려는 프로파일로 변경한다.

tuned-adm recommand
=> 현재 시스템에 맞는 튜닝 프로파일을 추천해준다.

프로세스 스케줄링에 미치는 영향

정확한 규모로 적절하게 구성된 워크스테이션은 사용자가 의도한 워크로드에 맞게 설계됩니다. 그러나 사용자 및 애플리케이션의 무수한 요청으로 초당 수백 또는 수천 개씩 처리 요청 덕분에 CPU가 쉽게 포화 상태가 될 수 있습니다. 이럴 때, 중요한 시스템의 요청을 우선 순위로, 그 외에 덜 중요한 요청은 후 순위로 하여 CPU의 관리를 해주면 시스템 운영에 있어서 상당히 좋습니다.

이를 위해 사용되는 명령어가 nice와 renice 입니다.

nice

nice의 값을 늘리면 프로세스의 우선순위가 낮아지고, 값을 줄이면 프로세스의 우선순위가 높아진다.

그림으로 보면,

NI의 값이 -20에 가까워 질 수록 우선적으로 처리가 되고, 19에 가까워 질수록 나중에 처리가 된다.

top 명령으로 확인해보면,


NI가 -20이면 PR은 0이고, NI가 0이면 PR은 20이다.

기본적으로 할당되는 NI는 0이다

nice 명령어를 통해 NI 값을 정해줄 수 있다.

그리고, renice 명령어를 통해 NI 값을 변경 해줄 수 있다.


NI 값 최대는 19이다. 그 이상의 값을 넣으면 19로 된다.


6. SELinux 보안 관리

기본 SELinux 개념

SELinux의 기본 목적은 손상된 애플리케이션 또는 시스템 서비스로 인한 부적절한 사용으로부터 사용자 데이터를 보호하는 것 이다.

SELinux 정책은 특정 프로세스가 관련 파일, 디렉터리, 포트에 엑세스 하는 방법을 정의하는 보안 규칙이다. 아래 그림으로 보면 이해하기 좀 더 쉽다.

조금 더 풀어서 설명하면, 웹 서버 프로세스는 httpd_t 유형 컨텍스트로 레이블이 지정된다.
/var/www/html 디렉터리 및 기타 위치의 웹 서버 파일과 디렉터리는 httpd_sys_content_t 유형 컨텍스트로 레이블이 지정된다.

ls -Z 옵션으로 확인하면 SELinux 레이블이 보인다.

SELinux 사용

SELinux에는 3가지 작동 모드가 있다.

  • Enforcing(적용): SELinux가 로드된 정책을 적용합니다. 이 모드는 Red Hat Enterprise Linux의 기본값
    입니다.
  • Permissive(허용): SELinux가 정책을 로드하고 활성 상태지만 액세스 제어 규칙을 적용하지 않고 액세
    스 위반을 기록합니다. 이 모드는 애플리케이션 및 규칙을 테스트하고 문제를 해결하는 데 유용합니다.
  • Disabled(비활성화됨): SELinux가 꺼져 있습니다. SELinux 위반이 거부되거나 기록되지 않습니다.
    SELinux는 비활성화하지 않는 것이 좋습니다

SELinux 모드 변경

getenforce 명령을 사용하면 현재 SELinux의 모드를 볼 수 있다.

setenforce 0
=> SELinux 상태 Permissive로 변경

setenforce 1
=> SELinux 상태 Enforcing로 변경

기본 SELinux 모드 설정

SELinux를 영구적으로 구성하려면 /etc/selinux/config 파일의 설정 내용을 변경 해주어야한다. 아래 그림의 형광부분의 설정을 enforcing, disabled, permissive로 변경해주어 한다.

중요
Red Hat Enterprise Linux9 부터는 부팅 시 selinux=0 커널 매개 변수를 사용해야만 SELinux를 완전히 비활성화 할 수 있다.
더 이상 /etc/selinux/config파일의 SELINUX=disabled 옵션 설정을 지원하지 않는다.

설정파일을 바꾸면 재부팅해야 적용, 바로 적용 시키고 싶으면 setenforce 명령어 사용하면 됨.

하지만 setenforce로 바꾼 것은 재부팅하면 다시 초기화 됨

SELinux 파일 컨텍스트 제어

semanage fcontext 명령을 사용하여 파일 및 디렉터리의 기본 컨텍스트를 결정하고, restorecon 명령을 사용하여 SELinux 정책에서 정의한 컨텍스트를 파일 및 디렉터리에 적용하는 SELinux 정책 규칙을 관리 한다.

semanage fcontext 명령

semanage fcontext [옵션] [파일 및 디렉터리]
	-a: 지정한 개체 유형의 기록 추가
    -d: 지정한 개체 유형의 기록 삭제
    -l: 지정한 개체 유형의 기록 나열
ex) 
semanage fcontext -a -t httpd_sys_content_t '/custom(/.*)?' 
=> /custom 디렉터리 및 디렉터리 아래의 모든 파일을에 대한 컨텍스트 유형을 httpd_sys_content_t로 설정한다.

restorecon 명령

restorecon [옵션] [파일 및 디렉토리]

ex) restorecon -Rv /custom
=> /custom 디렉토리 및 하위 파일에 수정된 컨텍스트를 적용하고 적용 결과 보여줘라.

## 부울을 사용하여 SELinux 정책 조정

SELinux 부울은 SELinux 정책의 선택적 동작을 활성화하거나 비활성화 한다. 부울을 사용하면 애플리케이션 동작을 선택적으로 조정할 수 있다.

> getsebool 명령
이 시스템의 타겟 정책에 사용할 수 있는 부울과 현재 부울 상태를 나열한다.
![](https://velog.velcdn.com/images/dongli/post/1ca16f29-c542-446a-93b6-e0b40fdd1f9e/image.png)
![](https://velog.velcdn.com/images/dongli/post/e038b732-e07c-4926-b2dd-7f3fbdaa8881/image.png)

> setsebool 명령
-P 옵션 없이 setsebool 명령을 사용하여 SELinux 부울을 설정하는 것은 일시적이며, 해당 설정은 재부팅 후 영구 값으로 돌아간다.
`````
semanage boolean -l: 정책 파일의 부울과 함께 부울이 영구적인지의 여부, 기본값, 현재값 등을 보여준다.
setsebool -P: 부울을 영구적으로 변경 한다.

SELinux 문제 조사 및 해결

SELinux 로그 분석 툴을 사용하고 sealert 명령으로 SELinux 문제를 해결 할 수 있다.

에러 로그는 /var/log/messages 에 나온다.
또한, /var/log/messages의 이벤트 메시지에서 제안된 sealert 출력은 이벤트가 설명되어 있으며 영향 받는 프로세스, 엑세스한 파일, 시도 및 거부된 작업 등이 나온다.

/var/log/messages

 


출력되는 정보를 확인하여 SELinux 관련 문제를 해결하면 된다.

 

2024.04.04 - [Linux] - RHCSA 공부 1일차

반응형

'Linux' 카테고리의 다른 글

Linux rsync를 사용하여 백업  (1) 2024.04.17
NFS mount 오류 확인 및 해결 (Connection time out)  (0) 2024.04.16
RHCSA 공부 1일차  (0) 2024.04.04
Quota란?  (1) 2024.01.23
[Ubuntu 20.04] DNS Master - Slave 이중화 구성  (0) 2024.01.19