상세 컨텐츠

본문 제목

RHCSA 뿌수기 4일차

카테고리 없음

by kiminaki 2021. 6. 21. 21:47

본문

1. selinux 개념 설정하기

SElinux란 무엇일까?

리눅스의 보안을 강화해 주는 보안 커널이다. 제로데이공격 및 버퍼 오버플로우 등 어플리케이션 취약점으로 인한 해킹을 방지해 준다.

ftp, home dir 취약점, 세마포어 공유 메모리 관련 취약점, httpd가 생성하는 취약점등 다양하다

방화벽과의 차이라면 방화벽이 rule 기반이라면 selinux는 역할기반으로 접근권한을 관리한다.

 

즉 HTTP를 예로 들면 방화벽은 특정 IP나 특정 패턴의 dest가 80 port인 네트워크 접근을 막는다면,
Selinux는 http role을 갖는 계정으로 실행되는 어플리케이션(apache, cgi, php, java 등등)의 파일, 디렉토리, 소켓 생성,
device i/o, 프로그램 실행 등등에 대한 접근 및 실행 권한에 대한 전반적인 것들을 관리합니다.

 

 

다음은 SElinu는 다음과 같은 동작이 있다.

 

 1. Enforcing (기본값) - SElinux가 켜저있고 정책에 위반된 모든 작업을 차단함

 2. Permissive - SElinux가 켜저있지만 정책에 위반도니 사항에 대해 경고만 하도록 함(audit 로그에 기록하는 상태)

 3. Disable - SElinux가 완전해ㅣ 꺼진 상태

 

 

SELinux 활성화 여부 확인

아래의 명령으로 SElinux가 켜져있는지 확인하려면 아래의 명령 사용

enforcing으로 실행중에 있다.

 

 

 

SELinux 상세하게 보기

 

sestatus

 

 

 

setenforce 0 으로 permissive를만들고 setenforce 1로 Enforcing을 만들 수 있다.

 

 

SELinux 완전히 꺼보기

해당 파일을 열어본다

 

해당 부부능로 disabled로 바꾸면 된다.

 

리부팅시면 완료

 


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

 

방화벽이란 ?

방화벽을 rule 기반으로 포트, 서비스등을 차단할 수 있다. 

예를들어 httpd, ssh, telnet 같은 서비스를 포트나 서비스 이름으로 차단이 가능하다.

 

 

방화벽 리스트 확인하기

디폴트 존이 현재 public으로 되있는것을 볼 수 있다. 존을 퍼블릭으로 딱히 입력을 하지 않아도 알아서 디폴트로 퍼블릭으로 설정된다.

 

 

위의 명령어는 현재 방화벽설정 리스트 전체를 보여준다. 어떤 프로토콜, 서비스, 포트가 열려있거나 닫혀있는지 알려준다.

 

 

위의 사진은 어떤 서비스가 열려있는지, 어떠 포트가 열려있는지 확인 하는 명령어이다.

 

 

방화벽 열고 닫고 하기

위의 명령어는 서비스를 추가시키고,

리로드를 통해 방화벽 재시작

서비스  리스트 확인이다.

 

서비스를 삭제하고

재실행시켜

리스트를 확인한다.

 

포트를 추가시키고 

리로드

리스트 확인이다.

 

삭제시키고 리스트를 확인한 모습이다.



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

 

아파치 설치하기

yum -y install httpd

systemctl start httpd

systemctl enable httpd

아파치를 설치하고 실행 시키고 영구 실행 적용을 시킨다.

 

하지만 ip 접속시

접속이 안된다. 방화벽이 안열려 있기 떄문이다.

 

 

 

방화벽을 열어준다

 

 

 

인덱스파일을 만들어주고 안에 내 이름을 넣었다 그러고 재시작한후 ip 접속을 해본다. 

 

 

 

확인 가능!!!

 

 

아파치 홈 디렉터리 확인

 

해당 파일에서 확인이  가능하다

 

쭉내려보면 아파치 홈디렉터리를 찾을 수 있다. 이곳을 다른디렉터로 바꾸면 홈디렉터리가 변경이 된다.

 



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

 

ps 명령이란 ?

ps명령어는 현재 실행중인 프로세스 목록을 보여준다

ps 현재 사용자가 실행하고 있는 프로세스를 보여준다

 

 

전체 프로세스를 출력 해준다

 

 

 

ps -ef는 uid pid ppid를 출력 해준다 

 

grep 명령과 함께 쓰기 

grep 명령을 사용해 user 가 사용중인 프로세스를 검색 하였다.

 

 

 

grep을 명령을  통해 httpd 실행 프로그램을 확인 하였다.

 

 

5. kill 명령으로 파이어폭스 중지시키기 or 프로그램 하나 중지시켜보기 

 

현재 pid 4852 yes 명령이 실행중이 다 한번 꺼보도록 하자 

yes명령을 종료 시켜 보았다.

 

'파이어 폭스가 현재 켜져있다 꺼보겟다.

 

pkill을 통해 종료 시킬 수 있다.



6. 가상머신 2개로 ssh 접속해보기 , scp 명령으로 파일 전송해보기
(임의의 계정 입력 )

 

ssh 접속 완료

 

kim in hak 단어가 있는 파일을 전송 해본다.

 

파일을 전송해본다. 

 

파일을 확인해 볼 수 있다.

 


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

 

RunLevel 1 

Resuce : 시스템 복구 모드이다. 단일 사용자 모드로서 관리자 쉘을 얻게 된다.

 

RunLevel 2 

Multi-User : NFS를 지원하지 않는 Multi-User 모드이다. 즉, 네트워크를 사용하지 않는 상태의 텍스트 유저 모드를 뜻하는데 CentOS 7부터는 사용되지 않는 레벨이다. 다만 호환성을 위해 런레벨 3과 동일한 것으로 취급된다.

 

RunLevel 3

Full Multi-User : 텍스트 모드의 다중 사용자 모드이다. 일반적인 쉘 스크립팅 기반의 인터페이스로 작동하는 Multi-User 모드이다. 일반적으로 텍스트 유저 모드라고 부른다.

 

RunLevel 4

Multi-User(unused) : 기본적으로는 사용하지 않는 모드이다. 하지만 runlevel2와 같이 호환성을 위해 런레벨3과 같은 것으로 취급된다. 해당 단계에 대한 설정을 임의로 정의해서 별도로 사용하기도 한다.

 

RunLevel 5

Graphical : 그래픽 모드의 다중 사용자 모드이다. 기본적으로는 런레벨3과 동일하지만, GUI를 제공하는 그래픽 유저 모드이다.

 

RunLevel 6

Reboot : 시스템 재부팅을 나타내는 모드이다. 런레벨 0와 마찬가지로 이 상태로 변경하라는 명령을 내리게 되면 시스템을 재부팅 하게 된다. 혹시나 런레벨 6를 init default로 설정한다면 시스템은 무한 재부팅 상태가 되기 때문에 주의해야 한다.

 

 

현재 기본은 graphical 모드이다.

 

위의 명령을 통해 런레벨을 바꾸준다.

 

 

리부트 시키면 멀티유저로 실행된다. 

 

그래피컬로 바꿔준다.

 

리부트 시키면 끝 ~~