/Linux/RHCSA/4일차2021. 6. 22. 21:01
1. SELinux의 개념 및 설정해보기.
- SELinux란? Sexurity Enhanced Linux의 약자이며 과거 Linux의 보안을 강화하고 보완한 것이다 또한 앞에 말했다 시피 Linux의 핵심인 커널(Kernel)을 보호하기 위한 '도구'이며 리눅스 커널(Linux Kernel) 에 내장된보안 모듈이며 강제적 접근 제어(Mandatory Access Control - MAC)를 수행한다 이를 이용해 응용프로그램에서 불필요한 부분은 제외하고 오직 필요한 기능에 대해서만 사용 권한을 안전하게 부여하는 것이 가능하다.
- SELinux 동작모드 : SELinux에는 3가지 상태가 존재한다.
- enforcing : 강제
- permissive : 허용
- disabled : 비활성화
자 이제 이 3가지 동작모드를 하나씩 활성해보자 그 전에 SELinux명령어를 알고 시작해보자
setenforce [option(0,1)] - 옵션 0=permissive, 옵션 1=enforcing 으로 바꾸는 명령어
getenforce = SELinux 설정값을 출력하는 명령어
여기서 그러면 disabled는 어떻게 바꾸는지 의아해 할 수도 있을거다 disabled는 vi편집기로 /etc/sysconfig/selinux파일을 편집해주면 된다 한번 알아보자.(재부팅 필요)
2.방화벽 리스트보기(전체, 서비스, 포트), 디폴트 설정보기, 방화벽 열고 닫아보고 재실행 시켜보자.
- 방화벽 관련 명령어를 하나 하나 알아보자
firewall-cmd [option] - 방홥젹 관련 명령어
- 방화벽 전체 보기 [기본값 존(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를 입력해주면된다.
먼저 간단하게 실습을 해보자 나는 서비스 방화벽을 열고 닫고 리로드, 재실행을 해보겠다.(여기서 열거나 닫기 처럼 구성 설정을 변경했을 때 반드시 재실행을 해줘야 한다.)
3. 아파치 설치 후 conf 파일에서 디폴트 디렉터리 찾고 디렉터리에 index.html 파일만들어서 인터넷 접속해서 화면 띄우기 (자기이름 )
먼저 conf 파일에 들어가면
자 이제 아파치의 홈 디렉토리도 찾았으니 설치를 해보자
그다음 /var/www/html로 들어가서 vi로 index.html파일 생성 및 내 이름을 넣으면 된다 그러고 브라우저 불여우에 들어가 자신의 ip를 입력해서 확인해보면
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 |
C | 프로세스 우선순위 |
STIME | 프로세스 시작 시간 |
TTY | 프로세스와 연결된 터미널 |
TIME | 실행에 걸린 시간 |
CMD | 프로세스를 생성하는데 내린 명령 |
하지만 여기서 내가 사용할 옵션은 -ef이다 즉 모든 프로세스를 풀 포맷으로 출력하겠다는 것이다
하지만 여기서 특정 프로세스를 알아볼 때 -p옵션이 아닌 grep을 사용해 찾아볼 것이다 grep은 내가 알아볼 프로세스 명이나 PID값을 알면 더 유용하게 쓸 수 있다.
ps -ef + grep의 사용법 : ps -ef | grep [ps uame/number/username]
자 이제 그러면 http 프로세스를 확인해보자
이번엔 임의의 사용자가 사용하는 프로세스를 확인해보자
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번 시그널을 주어서 강제 종료를 시키겠다.
6. 가상머신 2개로 ssh 접속해보기 , scp 명령으로 파일 전송해보기
(사전에 가상머신을 2개를 준비해주자)
-ssh란? 쉽게 정의하자면 원격 접속에 사용되는 도구이다(프로토콜) 기존에 사용되었던 rlogin, telnet 등의 취약한점을 보완설계되어 등장했다 큰 특징만 말해보자면 1. 암호화된 패킷 전송, 2.클라이언트와 서버라는 관계 존재, 3. sftp를 지원, 4. 패스워드 없이 로그인 가능, 5. scp-원격복사 가능. 이렇게 되겠다
사용법 : ssh [username]@[hostname]
서로다른 ip가상머신을 하나 더 준비하자 나는 gugu라는 ip가 다른 vm의 계정을 준비했다 자 이제 접속해보자
자 이제 접속도 해보았으니 ssh의 큰 특징중 하나인 scp 명령어로 파일을 전송시켜보자
- scp란? 서버와 클라이언트 사이에 로그인하지 않고도 scp를 이용하여 원격으로 파일을 복사 즉 전송할 수 있는 기능이다
사용법 : scp [출발지 경로/filename] [username@대상ip]:[도착 절대경로]
7. 디폴트 런레벨(타겟유닛)을 바꿔서 멀티유저로 실행시켜보고 다시 그래픽 유저로 바꿔서 리부팅 시켜보기
위 제목과 같이 런레벨을 변경하거나 타켓 유닛전환을 타겟 유닛 제어라고한다 그러면 타켓 유닛 제어 명령어를 알아보자
- 현재 내가 사용중인 런 레벨에 해당하는 타겟 유닛 확인(default.target에 연결된 타겟 유닛 확인)
사용법 : who -r - 런레벨 확인
, systemctl get-default - 연결된 타겟 유닛 확인
각각 확인해 보면 런레벨5=graphical.target이라는 걸 알수있다.
-타겟 유닛 변경하기
먼저 변경하는데에 명령어는 'In-s'가 있지만 더욱 쉽게 systemctl로도 편하게 바꿀 수 있다 이번에는 systemctl로 사용해보자
사용법 : systemctl set-default [target-unit]
나는 멀티유저로 바꿔보겠다
이제 여기서 다시 런타임 상태에서 그래픽 유저로 바꾸는 방법을 알아보자 위 사진과 같은 상태에서
타겟 유닛을 전활 할 수 있는데 이것 또한 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 |