born2beroot 과제는 VirtualBox를 통해서 가상머신을 만드는 프로젝트이다 주어진 요구사항에 따라 여러가지 규칙들을 적용하고(sudo , ufw, ssh 등) bonus과제에서는 wordpress를 이용하여 간단한 웹사이트를 만들어보게 된다
가상머신이란 실제로 물리적인 컴퓨터가 아닌 다른 컴퓨터가 만들어낸 가상의 컴퓨터를 뜻한다 이번 과제에서는 Virtual Box라는 프로그램을 이용해 가상머신을 사용하여 진행하게된다
Born2beroot 과제에서는 debian운영체제와 rocky운영체제 중 하나를 선택하여 진행된다 그중 debian 운영체제는 리눅스 운영체제를 기반으로 만들어지고있는 오픈소스 프로젝트이다 처음 프로젝트가 공개되고 오랜시간이 지났으며 자발적인 커뮤니티에서 만들어지고 있기 때문에 debian관련 정보들을 쉽게 찾아볼 수 있다 단 기업이 만드는 rocky같은 운영체제에 비해 업데이트 주기가 느리다는 단점이 있다
LVM(Logical Volume Manager)는 리눅스의 저장공간을 효율적이고 유연하기 관리하기 위한 커널의 한 부분이다 disk를 물리파티션으로만 나누게 될 경우 컴퓨터를 사용하면서 불편한 부분들이 생기는 데 LVM을 이용하면 불편한점들을 줄일 수 있다
LVM의 장점
apt 와 aptitude는 둘다 패키지를 관리해주는 프로그램이다
그래픽 | 속도 | 의존성 관리 | |
---|---|---|---|
apt | CLI환경(Command Line Interface) | aptitude대비 빠른 속도 | aptitude대비 의존성 관리 부분이 약함 |
aptitude | GUI환경(Graphical User Interface) | apt대비 느린속도 | apt대비 의존성 관리 부분이 강함 |
의존성 관리란 예를들어 A프로그램을 설치 했는데 A프로그램을 설치하기 위해서는 B프로그램과 C프로그램이 필요할 경우 A에 B와 C프로그램이 의존성으로 연결되어져 A프로그램만 설치해도 B와C프로그램이 같이 설치되어진다 차후 사용자가 A프로그램을 삭제할 경우 apt는 A프로그램만 삭제해주지만 aptitude의 경우 의존성을 파악해 A B C프로그램을 다 삭제시켜 준다
AppArmor란 리눅스 애플리케이션 보안 시스템이다 AppArmor는 어플리캐이션마다 보안정책을 정의할수 있으며 이 정책은 해당 어플리케이션이 어떤 파일, 디렉토리, 네트워크 리소스에 접근 할 수 있는지 어떤 시스템 호출을 사용할 수 있는지 등을 규정한다 정책을 따로 정의하지않아도 기본적인 정책은 정의되어져있어 해당 어플리케이션이 접근 가능한 리소스를 제한하는 최소한의 보안을 제공한다
SSH(Secure Shell)란 원격 접속을 할 떄 보안 유지를 위해 암호화를 하여 통신하는 인터넷 프로토콜이다 SSH는 서버에 접속할 때 비밀번호 대신 key를 이용하여 보안을 유지한다 SSH key는 공개키(public key)와 비공개키(private key)로 이루어진다 key를 생성하게 되면 공개키와 비공개 키가 만들어지는데 이중 비공개키는 client에 위치하고 공개키는 server에 넣어주면 SSH접속 간 client의 비공개키와 server의 공개키를 비교하여 일치하는지 확인한다
SSH 연결 순서
1. 인증: 클라이언트가 SSH 서버에 접속하려면, 클라이언트는 비공개키를 사용하여 서버에 자신을 인증합니다. 클라이언트는 비공개키를 사용하여 암호화된 인증 요청을 생성하고, 서버에 전송합니다.
2. 암호화: SSH 서버는 클라이언트로부터 받은 암호화된 인증 요청을 비공개키를 이용하여 복호화합니다. 이때, 복호화는 비공개키만 가능하며, 공개키는 암호화된 데이터를 해독할 수 없습니다.
3. 인증 확인: SSH 서버는 복호화된 인증 요청을 확인하여 클라이언트의 신원을 검증합니다. 이는 클라이언트가 제공한 공개키로 암호화된 데이터가 일치하는지를 확인하는 과정입니다.
4. 세션 키 교환: 인증이 성공하면, SSH 서버와 클라이언트는 안전한 통신을 위해 임시 세션 키를 생성합니다. 이 세션 키는 대칭키 암호화를 사용하여 암호화 및 복호화에 사용됩니다.
5. 데이터 암호화 및 복호화: SSH 세션에서 데이터는 세션 키를 이용하여 암호화되고 전송됩니다. 데이터 수신측에서는 해당 세션 키를 사용하여 암호화된 데이터를 복호화합니다.
UFW(Uncomplicated Firewall)란 리눅스 환경에서 쉽게 사용할 수 있는 방확벽 관리 프로그램이다 UFW는 설치를 하게되면 모든 port를 막은 후 사용자가 원하는 포트만 해제하는 식으로 동작하여 간단하게 보안을 유지할 수 있게 도와준다
👀 방화벽이란 네트워크 보안 장치로 네트워크 트래픽을 모니터링하고 제어하여 악성 행위로부터 보호해준다
sudo(superuser do)란 일반 사용자가 시스템 관리자 권한으로 특정 명령어를 실행할 수 있게 해주는 명령어이다 리눅스에서는 파일의 권한을 특정 유저를 기준으로 구분해서 줄 수 있는데 일반유저로 실행할 수 없는 명령들을 sudo를 이용하여 실행시키면 그때에 한해 시스템 관리자 권한으로 실행시켜준다
TTY(teletypewriter)란 텍스트 기반으로 사용자와 시스템 간의 상호작용을 담당하는 인터페이스이다 우리가 흔히 사용하는 터미널, 콘솔등이 TTY에 속한다
Crontab이란 리눅스에서 특정 시간마다 어떠한 명령을 실행시키고 싶을때 사용할 수 있는 서비스이다
*( 0 ~ 59분) *(0 ~ 23시간) *(0 ~ 31일자) *(0 ~ 12월) *(0 ~ 6요일)
리눅스에서 Service란 백그라운드에서 실행되는 소프트웨어 프로세스를 의미한다 서비스는 시작 시 자동으로 실행되며 장치가 종료되기 전까지 계속 실행되있는 상태이다 SSH, Crontab등 항상 동작해야하는 프로그램들은 Serivce로 만들어져 사용자가 신경쓸 필요없이 항상 동작을하게 만들어져있다
Born2beroot Bonus 과제에서는 Wordpress를 이용한 웹사이트를 구축하는데 다음과같은 기술을 사용합니다