돌할우밤 공부방

1. SELinux의 개념 및 설정해보기.

  1. SELinux란? Sexurity Enhanced Linux의 약자이며 과거 Linux의 보안을 강화하고 보완한 것이다 또한 앞에 말했다 시피 Linux의 핵심인 커널(Kernel)을 보호하기 위한 '도구'이며 리눅스 커널(Linux Kernel) 에 내장된보안 모듈이며 강제적 접근 제어(Mandatory Access Control - MAC)를 수행한다 이를 이용해 응용프로그램에서 불필요한 부분은 제외하고 오직 필요한 기능에 대해서만 사용 권한을 안전하게 부여하는 것이 가능하다.
  2. SELinux 동작모드 : SELinux에는 3가지 상태가 존재한다.

- enforcing : 강제

- permissive : 허용

- disabled : 비활성화

자 이제 이 3가지 동작모드를 하나씩 활성해보자 그 전에 SELinux명령어를 알고 시작해보자

setenforce [option(0,1)] - 옵션 0=permissive, 옵션 1=enforcing 으로 바꾸는 명령어

getenforce = SELinux 설정값을 출력하는 명령어

setenforce 0을 입력하여 permissive(허용)으로 바꾼 모습
setenforce 1을 입력하여 enforcing(강제)으로 바꾼 모습

여기서 그러면 disabled는 어떻게 바꾸는지 의아해 할 수도 있을거다 disabled는 vi편집기로 /etc/sysconfig/selinux파일을 편집해주면 된다 한번 알아보자.(재부팅 필요)

7번째 줄을 보면 SELINUX=enforcing이라고 설정되어있는 부분이 있다 이 부분에 작동모드를 설정해주면된다
변경 후 :wq로 저장해보고 getenforce로 확인해 보자
disabled로 바뀐 걸 확인해 볼 수 있다.

2.방화벽 리스트보기(전체, 서비스, 포트), 디폴트 설정보기, 방화벽 열고 닫아보고 재실행 시켜보자.

- 방화벽 관련 명령어를 하나 하나 알아보자

firewall-cmd [option] - 방홥젹 관련 명령어

먼저 방화벽이 실행중인지 확인해보자 running이라 되어있으니 실행중이다 이어서 해보자
systemctl로도 확인 가능하다!

- 방화벽 전체 보기 [기본값 존(zone) 확인] [여기서 zone이란 사용자가 요구하는 정책 허용, 특정 허용, 거부,특정 거부 등등에 맞게 그룹으로 관리되는데 처음 설정시 위 명령어를 실행 하였을 때 기본적으로 내장되어 있는 정책들 입니다.]

Zone의 기본 종류
Public 'zone' firewalld의 기본영역, 서비스를 제공하는 포트연결 허용할 경우 사용
Drop '' 들어오는 모든 패킷을 거부하고 응답을 하지 않는다
Block '' 들어오는 모든 패킷을 거부하고 응답 메세지 전달
External '' 라우터를 사용해 내부 연결에 사용
DMZ '' 내부 네트워크는 제한적 설정 후 외부 네트워크와 접근 할 때 사용
Work '' 같은 네트워크 망에 있어도 신뢰하는 네트워크에만 허용
Trusted '' 모든 네트워크를 허용
internal '' 내부 네트워크에 선택한 연결만 허용

firewall-cmd --list-all-zones - 모든 존의 설정 확인

이렇게 존의 설정된 방화벽 서비스/포트를 보는게 가능하다

firewall-cmd --list-all - 현재 방화벽 리스트 보기

이렇게 확인 할 수 있다.

- 서비스 리스트 확인

firewall-cmd --get-services - 등록가능한 서비스 리스트 보기

이렇게 마구잡이로 확인 가능한 모습

firewall-cmd --get-services - 현재 추가된 서비스 리스트 보기

현재 추가된 서비스 리스트를 확인한 모습

 

- 포트 리스트 출력하기

firewall-cmd --list-services - 현재 추가된 서비스 확인

firewall-cmd --list-services --zone='zonename' --permanent - zone에 현재 추가된 서비스 확인

이렇게 포트 리스트를 확인할 수 있다.

- 방화벽 열기

먼저 방화벽을 여는방법 간단하게 3가지 정도 알아보자

firewall-cmd --parmanent --add-service='service name' - 서비스 방화벽 열기

firewall-cmd --parmanent --add-port='port number' - 포트 서비스 방화벽 열기

firewall-cmd --parmanent --add-source='ip number' - ip대역 방화벽 열기

이렇게 간단하게 3가지 정도 되겠다 이렇게 열어논 방화벽 제거(닫기)는 --add값 대신에 --remove를 입력해주면된다.

먼저 간단하게 실습을 해보자 나는 서비스 방화벽을 열고 닫고 리로드, 재실행을 해보겠다.(여기서 열거나 닫기 처럼 구성 설정을 변경했을 때 반드시 재실행을 해줘야 한다.)

ftp방화벽을 열어주고 재실행을 해주는 모습
서비스에 현재 방화벽 리스트에 ftp가 추가된 모습
다시 방화벽을 닫아주고 재실행 하는 모습
다시 확인해보니 ftp가 사라진것을 확인할 수 잇따

 

3. 아파치 설치 후 conf 파일에서 디폴트 디렉터리 찾고 디렉터리에 index.html 파일만들어서 인터넷 접속해서 화면 띄우기 (자기이름 )

먼저 conf 파일에 들어가면

httpd.conf파일이 보일것이다 이것이 아파치의 디폴트 디렉토리를 지정해주는 파일이다 그러므로 확인해 보면은
119번줄 부터 128번까지 살펴보면 아파치의 기본 홈 디렉토리 즉 디폴트 디렉토리는 /var/www/html 이라는 것을 확인할 수 잇다

자 이제 아파치의 홈 디렉토리도 찾았으니 설치를 해보자

위 명령어 입력해 설치 후
방화벽을 설정하고 재시작
아파치를 시작해준다

그다음 /var/www/html로 들어가서 vi로 index.html파일 생성 및 내 이름을 넣으면 된다 그러고 브라우저 불여우에 들어가 자신의 ip를 입력해서 확인해보면

index.html파일 설정 값이 제대로 나오는 것을 확인할 수 있다

 

4. ps 명령어 알아보기 -ef 명령어 알아보기 grep 명령을 활용하여 http출력 or 임의의 계정으로 실행되는 프로그램 찾기

- ps명령어란? 쉽게 정의하자면 현재 실행중인 프로세스 목록과 상태를 보여준다. 이는 다른 프로세스가 정장적인지 확인하거나 비정상적인 프로세스가 올라와있는지 확인하기 위해 사용된다.

 

ps명령어 사용법 및 옵션  : ps [option] [ps name/number]

옵션 설명
-e 모든 프로세스를 출력
-f 풀 포맷으로 출력(UID,PID)
-l 긴 포맷으로 출력
p,-p 특정 PID의 프로세스 출력
-u 특정 사용자의 프로세스 출력

ps 출력 필드의 의미

 항목 의미 
UID  프로세스 실행한 소유자 아이디 
PID  프로세스 고유 번호
PPID  부모 프로세스 PID
프로세스 우선순위 
STIME  프로세스 시작 시간 
TTY  프로세스와 연결된 터미널 
TIME  실행에 걸린 시간 
CMD  프로세스를 생성하는데 내린 명령 

하지만 여기서 내가 사용할 옵션은 -ef이다 즉 모든 프로세스를 풀 포맷으로 출력하겠다는 것이다

이런 식으로 확인 할 수 있다.

하지만 여기서 특정 프로세스를 알아볼 때 -p옵션이 아닌 grep을 사용해 찾아볼 것이다 grep은 내가 알아볼 프로세스 명이나 PID값을 알면 더 유용하게 쓸 수 있다.

ps -ef + grep의 사용법 : ps -ef | grep [ps uame/number/username]

자 이제 그러면 http 프로세스를 확인해보자

이렇게 http 프로세스를 확인 할 수 있다

이번엔 임의의 사용자가 사용하는 프로세스를 확인해보자

root계정과 ubam계정에서 사용하는 프로세스들을 출력한 모습

 

5. kill 명령으로 파이어폭스 중지시키기

-kill명령어란? kill은 프로세스에 시그널을 보낼 수 있는데 이를 이용하면 소유자의 프로세스를 관리 할 수 있으며 root권한을 이용하면 다른 프로세스 역시 관리가 가능하며 보통 프로세스를 종료하는데 사용하는 명령어이다.

-kill은 기본 시그널이 15번이며 즉 Terminate 시그널이 기본사용된다

 

시그널의 종류

시그널 번호 시그널 이름 동작 설명
1 SIGHUP Hang up 종료 없이 프로그램을 새로이 초기화
2 SIIGINT Interrupt Ctrl+c를 사용할 때 발생
9 SIGKILL Kill 프로세스는 이 시그널을 무시 불가하며 프로세스가 강제 종료
15 SIGTERM Terminate 프로세스 종료 하지만 일부 프로세스는 이 시그널을 무시함

 

사용법 : kill [option] [PID]

여기서 나는 파이어폭스를 중지시켜보겠다 하지만 kill의 기본 시그널을 무시할 수 있기때문에 9번 시그널을 주어서 강제 종료를 시키겠다.

먼저 실행중인 불여우의 PID값을 확인한다
강제종료가 됨으로써 실행시간도 초기화가 된 모습을 볼 수 있따

 

6. 가상머신 2개로 ssh 접속해보기 , scp 명령으로 파일 전송해보기

(사전에 가상머신을 2개를 준비해주자)

-ssh란? 쉽게 정의하자면 원격 접속에 사용되는 도구이다(프로토콜) 기존에 사용되었던 rlogin, telnet 등의 취약한점을 보완설계되어 등장했다 큰 특징만 말해보자면 1. 암호화된 패킷 전송, 2.클라이언트와 서버라는 관계 존재, 3. sftp를 지원, 4. 패스워드 없이 로그인 가능, 5. scp-원격복사 가능. 이렇게 되겠다

 

사용법 : ssh [username]@[hostname]

서로다른 ip가상머신을 하나 더 준비하자 나는 gugu라는 ip가 다른 vm의 계정을 준비했다 자 이제 접속해보자

접속할 gugu의 ip 확인
접속이 된 것을 확인할 수 있따

자 이제 접속도 해보았으니 ssh의 큰 특징중 하나인 scp 명령어로 파일을 전송시켜보자

- scp란? 서버와 클라이언트 사이에 로그인하지 않고도 scp를 이용하여 원격으로 파일을 복사 즉 전송할 수 있는 기능이다

 

사용법 : scp [출발지 경로/filename] [username@대상ip]:[도착 절대경로]

scp를 사용해서 먼저 파일을 한번 보내보자
경로에 맞게 잘 복사가되엇다

 

7.  디폴트 런레벨(타겟유닛)을 바꿔서 멀티유저로 실행시켜보고 다시 그래픽 유저로 바꿔서 리부팅 시켜보기

위 제목과 같이 런레벨을 변경하거나 타켓 유닛전환을 타겟 유닛 제어라고한다 그러면 타켓 유닛 제어 명령어를 알아보자

 

- 현재 내가 사용중인 런 레벨에 해당하는 타겟 유닛 확인(default.target에 연결된 타겟 유닛 확인)

사용법 : who -r - 런레벨 확인, systemctl get-default - 연결된 타겟 유닛 확인

각각 확인해 보면 런레벨5=graphical.target이라는 걸 알수있다.

 

-타겟 유닛 변경하기

먼저 변경하는데에 명령어는 'In-s'가 있지만 더욱 쉽게 systemctl로도 편하게 바꿀 수 있다 이번에는 systemctl로 사용해보자

 

사용법 : systemctl set-default [target-unit]

나는 멀티유저로 바꿔보겠다

타겟 유닛값을 multi-user.target으로 주어서 적용을 완료했다 이제 재부팅을 해보자
멀티유저로 바뀐것을 확인한 모습

이제 여기서 다시 런타임 상태에서 그래픽 유저로 바꾸는 방법을 알아보자 위 사진과 같은 상태에서

타겟 유닛을 전활 할 수 있는데 이것 또한 systemctl을 사용하면된다.

 

사용법 : systemctl isolate [target-unit]

 

이제 명령어를 사용해 그래픽 유저로 바꿔 보자

저렇게 입력하고 엔터를 누르게 되면 자동으로 재부팅이 된다
이렇게 다시 바뀐걸 확인할 수 있따
하지만 터미널에서 타켓 유닛을 확인해보면 값이 바뀌질 않았기 때문에 다시 재설정해주자
이러면 설정 끝

 

'IT_공부 > Linux' 카테고리의 다른 글

/Linux/RHCSA/6일차  (0) 2021.06.28
/Linux/RHCSA/5일차  (0) 2021.06.27
/Linux/RHCSA/3일차  (0) 2021.06.20
/Linux/RHCSA/2일차  (0) 2021.06.18
/Linux/RHCSA/1일차  (0) 2021.06.16

>