<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>bean-baek.log</title>
        <link>https://velog.io/</link>
        <description>let's gooooooooo"O"</description>
        <lastBuildDate>Fri, 05 May 2023 08:37:58 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>bean-baek.log</title>
            <url>https://velog.velcdn.com/images/bean-baek/profile/61ec7ad7-a00a-4c6b-8980-4c981bb233f5/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. bean-baek.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/bean-baek" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[본투비루트 후기]]></title>
            <link>https://velog.io/@bean-baek/%EB%B3%B8%ED%88%AC%EB%B9%84%EB%A3%A8%ED%8A%B8-%ED%9B%84%EA%B8%B0</link>
            <guid>https://velog.io/@bean-baek/%EB%B3%B8%ED%88%AC%EB%B9%84%EB%A3%A8%ED%8A%B8-%ED%9B%84%EA%B8%B0</guid>
            <pubDate>Fri, 05 May 2023 08:37:58 GMT</pubDate>
            <description><![CDATA[<p>간단 후기 : 이런 쉬운 걸 그렇게 오래걸리다니.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[CRON THE SCHEDULER]]></title>
            <link>https://velog.io/@bean-baek/CRON-THE-SCHEDULER</link>
            <guid>https://velog.io/@bean-baek/CRON-THE-SCHEDULER</guid>
            <pubDate>Fri, 05 May 2023 08:36:20 GMT</pubDate>
            <description><![CDATA[<h3 id="cron-스케줄러">cron (스케줄러)</h3>
<ul>
<li>관리자들이 고정된 간격을 갖는 지정 날짜 및 시간마다 주기적으로 정기적인 작업을 처리하기 위해 소프트웨어를 실행토록 환경을 설정하는 시간기반 job스케줄러 성격의 데모 프로세스</li>
<li>사용자는 crontab명령으로써 cron이 crontab파일에 접근하여 쉘 명령어들이 주어진 일정에 주기적인 실행하도록 작업 목록을 정의하는 방법만 이해하면 된다</li>
<li>기본 명령어<ul>
<li><code>sudo crontab -e</code> : 설정 및 수정</li>
<li><code>sudo crontab -l</code> : 목록 보기</li>
<li><code>sudo crontab -r</code> : 삭제</li>
<li><code>sudo service cron stop</code> : 중지</li>
<li><code>sudo service cron restart</code> : 재시작</li>
</ul>
</li>
<li>crontab<ul>
<li>분 시 일 월 요일 [실행할 작업]<ul>
<li>해당 사항이 있는 자리에만 숫자를 적고 나머지는 *로 표기</li>
<li>요일의 경우 일요일이 0이고 토요일이 6이다.</li>
<li>아무것도 입력하지 않고 * * * * * 으로 두면 매 분마다 실행</li>
<li><ul>
<li>: 모든 값을 뜻합니다.</li>
</ul>
</li>
<li>? : 특정한 값이 없음을 뜻합니다.</li>
<li>: 범위를 뜻합니다. (예) 월요일에서 수요일까지는 MON-WED로 표현</li>
<li>, : 특별한 값일 때만 동작 (예) 월,수,금 MON,WED,FRI</li>
<li>/ : 시작시간 / 단위 (예) 0분부터 매 5분 0/5</li>
<li>L : 일에서 사용하면 마지막 일, 요일에서는 마지막 요일(토요일)</li>
<li>W : 가장 가까운 평일 (예) 15W는 15일에서 가장 가까운 평일 (월 ~ 금)을 찾음</li>
<li>&#39;#&#39; : 몇째주의 무슨 요일을 표현 (예) 3#2 : 2번째주 수요일</li>
</ul>
</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[UFW와 SUDO?]]></title>
            <link>https://velog.io/@bean-baek/UFW%EC%99%80-SUDO</link>
            <guid>https://velog.io/@bean-baek/UFW%EC%99%80-SUDO</guid>
            <pubDate>Fri, 05 May 2023 08:35:13 GMT</pubDate>
            <description><![CDATA[<p><strong>UFW (Uncomplicated Firewall)</strong></p>
<p>사용자 친화적이고 사용하기 쉬운 인터페이스(CLI)를 제공하는 <strong>방화벽을 관리 프로그램</strong></p>
<p><strong>iptables?</strong></p>
<p><strong>기본적인 네트워킹 패킷 필터링 프로그램</strong></p>
<p><strong>패킷(packet)?</strong> </p>
<p><strong>데이터를 전송할 때 컴퓨터 간에 주고받는 정보의 작은 조각</strong></p>
<p>iptables는 Linux커널의 Netfilter 프레임워크를 사용하여 네트워크 트래픽 모니터링, IP패킷 거부 / 전달</p>
<p>⇒ <strong>iptables은 보안 강화에 유용하지만 복잡하기 때문에 UFW가 개발되었다고 보면 된다.</strong></p>
<pre><code class="language-c">$ sudo apt install ufw # ufw 설치

$ sudo ufw status verbose # ufw 상태 확인(디폴트는 inactive)

$ sudo ufw enable # ufw 활성화

$ sudo ufw default deny # 기본으로 들어오는 패킷 거부(deny)로 설정

$ sudo ufw status # 정책 확인하기</code></pre>
<pre><code>$ sudo ufw allow from 127.0.0.1 to any port 4242 
# 로컬호스트만 4242포트로 들어오는 것 허용

$ sudo ufw allow from 127.0.0.1 to any port 4242 proto tcp 
# tcp기능만 허용함을 추가</code></pre><hr>
<p><strong>Sudo</strong></p>
<p>→ 유닉스 계열의 운영체재에서 <strong>루트가 아닌 다른 유저에게 제한적으로 관리자 권한을 부여하는 용도</strong></p>
<ul>
<li>Sudo 명령어는 /etc/sudoers 설정 파일에 명시되어 있는 유저만 사용 가능</li>
<li>/etc/sudoers 설정 파일은 읽기 전용 → visudo를 사용하여 수정해야한다</li>
</ul>
<p><strong>visudo</strong></p>
<p>→ 편집 전용 명령어 - .tmp파일로 생성 → 저장시 문법에 대한 검사가 자체적으로 이루어지고 저장.</p>
<pre><code class="language-c">$ su - # root계정의 홈으로 전환

$ apt install sudo # sudo 패키지 설치

$ apt --installed list sudo # sudo 패키지 설치 여부 확인

$ mkdir /var/log/sudo # sudo log를 저장할 디렉토리 생성

$ visudo # sudo 설정하러 가기</code></pre>
<p><strong>secure_path</strong> : sudo에서 제공하는 <strong>보안 기능</strong> 중 하나</p>
<p>→ 명령어를 찾을 경로를 나열한 환경변수 값</p>
<p>sudo 명령어 → 가상 쉘 생성 - 안에서 실행 </p>
<p>⇒ 이 쉘 명령어는 securepath로 저장된 경로에서 바이너리 파일을 찾아 실행하는 것</p>
<p>⇒ 해킹 공격에 대한 방어기능 → sudo를 사용하여 path에 악의적 경로가 포함 되었을때</p>
<p><strong>secure_path에 해당하지 않는다면 이를 무시한다.</strong></p>
<p><code>secure_path=&quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin&quot;</code></p>
<p>TTY모드란?</p>
<p>리눅스의 콘솔 및 터미널을 의미</p>
<p>tty모드를 활성화시 터미널을 할당하지 않은 상태에서는 sudo명령어를 실행할 수 없다.</p>
<p>⇒ requiretty의 내용이 이것이다.</p>
<p><code>mail_badpass</code> : 잘못된 패스워드로 sudo실행 시 지정된 메일로 보고</p>
<p><code>iolog_dir=&quot;/var/log/sudo/</code>: sudo log 저장 디렉토리 설정</p>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[SSH와 PORT FORWADING?]]></title>
            <link>https://velog.io/@bean-baek/SSH%EC%99%80-PORT-FORWADING</link>
            <guid>https://velog.io/@bean-baek/SSH%EC%99%80-PORT-FORWADING</guid>
            <pubDate>Fri, 05 May 2023 08:34:41 GMT</pubDate>
            <description><![CDATA[<p><strong>SSH (Secure Shell Protocol)</strong></p>
<ul>
<li>네트워크를 통해 안전하게 원격 로그인을 하고 명령을 실행하기 위한 <strong>보안 프로토콜</strong></li>
<li><strong>암호화 기술을 사용</strong>하여 데이터를 안전하게 전송</li>
<li>주로 원격 서버에 로그인하여 명령을 실행하거나 파일을 전송하는 데 사용</li>
<li>원격 시스템 간에 데이터를 안전하게 전송하는 데도 사용</li>
<li>다른 프로토콜 (Telnet / FTP : 파일 전송 프로토콜)보다 안전하고 신뢰성 높음 (텍스트 기반으로 데이터를 전송하기 때문에 전송되는 데이터가 평문으로 노출되어 보안에 취약함)</li>
</ul>
<p><strong>작동 원리 → 예시 github</strong></p>
<p>사용자(Client)가 키를 생성하면 공개키(public key)와 개인키(private key)가 만들어진다. </p>
<p>공개키를 통신하고자 하는 컴퓨터(Server)에 복사하여 저장한다.</p>
<ol>
<li>클라이언트가 통신하고자 하는 서버에 요청을 보낸다.</li>
<li>응답을 하는 서버가 저장하고 있던 공개키를 보낸다.</li>
<li>클라이언트는 해당 공개키가 자신의 개인키와 한 쌍의 키가 맞는 지 검사한다.(클라이언트에서 자물쇠와 키를 만들어 키를 서버에 보내고, 통신하고자 할 때 다시 그 키가 자물쇠에 맞는 지 확인하는 것이라고 이해하면 쉽다.)</li>
<li>한 쌍의 키가 맞는 것이 증명되면 드디어 두 컴퓨터 사이에 암호화된 채널이 생성된다.</li>
</ol>
<p>암호화 된 채널이 생성되면 이 키를 활용해 데이터를 암호화 복호화하여 주고 받게 된다.</p>
<p>⇒ <strong>사용자와 서버는 각각의 키를 보유하고, 이 키를 이용해 상대를 인증한 뒤 안전하게 데이터를 주고 받게 되는 것.</strong></p>
<hr>
<p><strong>SSHD (Secure Shell Protocol Daemon)</strong></p>
<p>Daemon? 백그라운드에서 요청을 기다리는 프로그램</p>
<p>→ SSH의 연결을 받기 위해 대기하는 프로세스</p>
<p>따라서 우리가 본투비에서 수정해야 할 내용은 sshd_config(들어오는 설정)이다 </p>
<p>(포트를 변경하고 외부 루트 로그인을 허용해야 하기 위해서!)</p>
<pre><code class="language-c">
sudo ufw allow 4242 # 4242 포트 허용
sudo vim /etc/ssh/sshd_config # 포트 번호 변경 및 외부 루트 로그인 허용을 위해 파일 수정
sudo systemctl restart ssh # 다시 시작

systemctl status ssh #openssh 실행 여부와 포</code></pre>
<p><strong>Port Forwading</strong></p>
<p>→ 특정한 포트로 들어오는 데이터 패킷을 다른 포트로 바꿔서 다시 전송하는 작업</p>
<p>네트워크 - 원격기기 사이 직접적으로 연결 시에 유용</p>
<ul>
<li><code>HOST IP</code>: 127.0.0.1(localhost, 자기 자신) 또는 <code>ifconfig | grep inet</code>의 값</li>
<li><code>GuestIP</code>: <code>hostname -I</code>의 값</li>
<li><code>HOST PORT</code>: 5000(임의로 설정해줌)</li>
<li><code>GUEST PORT</code>: 4242(앞서 가상머신에서 허용해 준 포트번호)</li>
</ul>
<pre><code class="language-c">$ ssh name@127.0.0.1 -p 5000 # ssh &lt;사용자 이름&gt;@&lt;HOST IP&gt; -p HOST PORT</code></pre>
<hr>
<p><strong>TCP (Transmission Control Protocol)</strong></p>
<p>→ 연결 지향적</p>
<p>→ 인터넷에서 데이터를 전송하기 위한 프로토콜. </p>
<p>→ 데이터의 신뢰성과 정확성을 보장하기 위해 설계됨</p>
<p>TCP는 데이터를 세그먼트 단위로 나누어 전송 → 각 세그먼트는 일련번호를 갖고 있어 순서대로 조립됨 → 수신 측에서 각 세그먼트를 확인 → 데이터 전송 중 손실된 패킷을 재전송하여 데이터의 완전성을 유지 (신뢰성 정확성 보장)</p>
<aside>
💡 Port forwading은 네트워크에서 패킷을 전달하는 것이므로 해당 패킷이 전송되는 프로토콜을 이해하는 것이 중요. port forwading 설정을 할때 **해당 포트가 TCP인지 UDP인지 체크 필요**

</aside>

<p><strong>UDP(User Datagram Protocol)</strong></p>
<p>→ 비연결성 프로토콜</p>
<p>UDP는 데이트그램 단위(일련번호/확인응답 등의 추가 정보없이 데이터만을 포함) 데이터를 전송</p>
<p>데이터 전송의 신뢰성/정확성은 보장하지 않지만 빠른 전송과 적은 오버해드를 갖고 있어 실시간 스트리밍과 같은 애플리케이션에서 사용</p>
<p>⇒ TCP 와 UDP는 연결 지향성과 신뢰성 여부에서 차이 있음 <strong>TCP는 신뢰성 있는 전송을 위해 연결 후 데이터 확인 / UDP는 빠른 전송을 위해 추가 정보를 제외한 데이터만 전송</strong></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[LVM은 무엇인가?]]></title>
            <link>https://velog.io/@bean-baek/cqk9d75r</link>
            <guid>https://velog.io/@bean-baek/cqk9d75r</guid>
            <pubDate>Fri, 05 May 2023 08:33:16 GMT</pubDate>
            <description><![CDATA[<p><strong>LVM (Logical Volume Mangement)</strong></p>
<p><img src="https://velog.velcdn.com/images/bean-baek/post/0c8d1e78-2eda-436a-9543-c7dde58b7551/image.png" alt=""></p>
<p><strong>물리적으로 떨어져있는 디스크를 논리적으로 하나의 볼륨으로 사용/제거 할 수 있도록하는 기술</strong></p>
<p>→ 리눅스의 저장 공간을 효율적으로 관리/사용하기 위한 커널의 한 부분</p>
<p><code>Partition</code></p>
<p>하나의 디스크에 대한 영역을 나누거나 여러 개의 디스크를 통합하는 것.</p>
<p>고정적이고 물리적인 개념이 강해 한 번 크기를 설정하면 변경이나 추가가 어렵다. </p>
<p><strong>운영체제는 이 파티션을 디스크처럼 인식한다.</strong></p>
<p><code>PV(Physical Volume)</code></p>
<p>LVM에서 사용할 수 있도록 파티션을 물리적 볼륨으로 변환하는 것.</p>
<p>디스크의 파티션을 PV로 초기화시키고 일정한 크기의 PE(PV 최소 단위, 기본 4MB)로 구성.</p>
<p><code>VG(Volume Group)</code></p>
<p>PV가 모여 만들어진 그룹으로, LV를 할당할 수 있는 공간이다.</p>
<p><code>LV(Logical Volume)</code></p>
<p>사용자가 최종적으로 다루는 논리 볼륨이다.</p>
<p>마운터 포인터로 사용할 실질적인 파티션. </p>
<p>크기를 확장하고 축소시킬 수 있으며, 일정 크기의 LE(LV 최소 단위, 기본 단위는 PE와 같음)로 구성.</p>
<ul>
<li>LVM을 사용하지 않고 저장장치를 사용했던 방식
<img src="https://velog.velcdn.com/images/bean-baek/post/35ef77a4-ae02-4c2e-ae6c-ae0c806fa28b/image.png" alt=""></li>
</ul>
<p>   특정 파티션에 마운트 된 파티션의 용량이 찼을때</p>
<p>   추가 디스크를 장착 → 파티션 생성 → 새로운 마운트 포인트 연결 (/home2)→ 기존 (/home) 데이터 (/home2)에복사 → 기존 home파티션 언마운트 → home2를 home으로 다시 마운트</p>
<p>   ⇒ 비효율적!</p>
<p>   <strong>LVM을 사용했을 시</strong></p>
<p>   <img src="https://velog.velcdn.com/images/bean-baek/post/3dddd4a2-d897-413b-b3d9-4e7920614888/image.png" alt="">
   추가 디스크 장착 → 추가된 디스크에 파티션 만들어 PV 생성 → PV를 VG에 추가 → 해당 하는 LV에 크기만 증가</p>
<pre><code>기존 데이터의 삭제나 이동 없이 서비스가 구동중인 상태에서 유연하게 볼륨을 늘리고 줄일 수 있습니다.</code></pre><p><strong>마운트(Mount):</strong> 파티션의 자원을 사용자가 사용할 수 있도록 디렉토리에 연결하는 과정</p>
<p><strong>마운트 포인트(Mount Point):</strong> 리눅스 운영체제에서 사용하고자 하는 장치들을 인식시키기 위한 특정 디렉토리</p>
<ul>
<li>/root : 최상위 마운트 파티션으로 최상위 디렉토리</li>
<li>/swap : 가상 메모리로 사용되는 파티션(실제 물리적인 램이 부족할 때 대신 사용됨), 루트와 함께 꼭 필요한 파티션임</li>
<li>/home : 사용자 계정 파티션, 사용자 계정이 위치함</li>
<li>/boot : 커널 부트 이미지 파티션으로 부팅 시스템 파일들이 설치됨</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[패키지 매니저란?]]></title>
            <link>https://velog.io/@bean-baek/%ED%8C%A8%ED%82%A4%EC%A7%80-%EB%A7%A4%EB%8B%88%EC%A0%80%EB%9E%80</link>
            <guid>https://velog.io/@bean-baek/%ED%8C%A8%ED%82%A4%EC%A7%80-%EB%A7%A4%EB%8B%88%EC%A0%80%EB%9E%80</guid>
            <pubDate>Fri, 05 May 2023 08:30:12 GMT</pubDate>
            <description><![CDATA[<p><strong>Package Manager</strong></p>
<p>패키지 관리자 : 컴퓨터프로그램의 설치, 업그레이드, 구성 제거 <strong>과정을 자동화하는 소프트웨어 도구</strong>들의 모임</p>
<p><strong>apt와 aptitude의 차이</strong></p>
<p>apt(Advanced Packaging Tool)</p>
<ul>
<li><strong>데비안 계열에서 사용되는 기본 패키지 관리 도구</strong></li>
<li>터미널에서 사용되며 패키지 설치, 업데이트 및 삭제를 간단하게 처리 가능</li>
<li>의존성 문제를 자동으로 해결해주는 기능 제공</li>
<li>실질적으로는 dpkg를 호출하여 작업을 수행</li>
</ul>
<p>Aptitude</p>
<ul>
<li>인터렉티브한 (사용자 친화적 / 대화형) CLI 인터페이스를 제공하여 패키지 설치, 업데이트 및 삭제를 직관적으로 처리 가능</li>
<li>의존성 문제 해결 기능 및 패키지 상태를 쉽게 표시해주는 기능 제공</li>
</ul>
<p>⇒ apt는  CLI환경에서 간단한 패키지 관리를 위해 사용되는 도구이며 aptitude는 apt보다 인터랙티브하여 더 많은 기능 제공하는 CLI도구</p>
<ul>
<li><p>dpkg</p>
<p>  데비안 패키지 관리자로써 패키지 설치, 업그레이드, 제거하는 작업 진행. 패키지간의 의존성을 해결하지 못함 → 자동으로 설치하지 않음</p>
<p>  반면 apt는 자동으로 설치 가능 + 패키지 저장소 관리 가능 + 새로운 패키지 찾고 업그레이드 가능</p>
<p>  ⇒ apt는 dpkg기능을 보안하고 패키지 관리를 편리하게 함</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[DIFF BTW DEBIAN & ROCKY?]]></title>
            <link>https://velog.io/@bean-baek/DIFF-BTW-DEBIAN-ROCKY</link>
            <guid>https://velog.io/@bean-baek/DIFF-BTW-DEBIAN-ROCKY</guid>
            <pubDate>Fri, 05 May 2023 08:28:44 GMT</pubDate>
            <description><![CDATA[<p>첫번째, 나는 데비안과 로키의 역사에 대해 알고 싶지 않다.
그들이 어떻게 이 운영체재를 만들게 되었고, 어떤 커뮤니티가 어떤 형식으로 작동이 되는지
내가 굳이 지금 이 내용을 정리할 필요가 없다고 생각했다.</p>
<p>그렇다고 공부하지 말라는 것인가? 아니다. 
알면 좋지만 내가 그들의 역사를 안다고 해서 데비안과 로키의 차이를 명확하게 알수 있는가?
사실 난 아니라고 본다. 애초에 둘의 차이는 역사를 통해서 알 수 있는 것이 아닌
그들이 나뉘어진 후 집중했던 기능에 차이가 있다고 보기 때문이다.</p>
<p>나는 크게 세가지로 구분했다.</p>
<h3 id="diff-btw-debian-and-rocky">Diff btw Debian and Rocky</h3>
<p><strong>Security Framework</strong></p>
<p>Debian : apparmor 사용</p>
<p>Rocky : SELinux 사용</p>
<p><strong>Based on</strong></p>
<p>Debian :  데비안 프로젝트라는 커뮤니티 개발 </p>
<p>Rocky : 레드햇RHEL(red hat enterprise linux) 기반</p>
<p><strong>Package Manger</strong></p>
<p>Debian : apt</p>
<p>Rocky : DNF</p>
<hr>
<h3 id="security-framework-보안-모듈"><strong>Security Framework (보안 모듈)</strong></h3>
<h3 id="apparmor"><strong>AppArmor</strong></h3>
<ul>
<li>시스템 관리자가 응용 프로그램 역량 및 <strong>권한을 제한</strong>할 수 있도록하는 <strong>커널 보안 모듈</strong></li>
<li>개별 애플리케이션의 기능을 제한하여 <strong>해킹될 경우 피해를 최소화</strong>한다</li>
<li>프로그램의 프로필을 통해 아래와 같은 작업을 제한 및 관리함<ul>
<li>네트워크 엑세스</li>
<li>raw 소켓 엑세스</li>
<li>파일 읽기, 쓰기, 실행 권한</li>
<li>기타 해당 프로그램이 취할 수 있는 작업</li>
</ul>
</li>
</ul>
<p>⇒ 강제적 접근통제(MAC)를 제공함으로써 전통적인 유니스 임의적 접근 통제 모델(DAC)을 지원</p>
<ul>
<li><p>강제적 접근통제(MAC) &amp; 임의 접근 통제 (DAC)</p>
<p>  <strong>MAC (Mandatory Access Control)</strong>  </p>
<ul>
<li><p>객체(파일, 디렉토리 프로세스 등)의 보안 <strong>레이블</strong>을 사용하여 보안을 구현함</p>
</li>
<li><p>규칙기반 시스템과 같이 사용</p>
</li>
<li><p>레이블은 시스템 관리자가 정의하며 일반 사용자는 변경불가</p>
</li>
<li><p>다양한 보안 정책 구현 가능</p>
</li>
<li><p>객체에 대한 액세스 권한을 정확하게 제어</p>
</li>
<li><p>MAC는 SElinux와 AppArmor와 같은 보안 모듈에서 사용 → 객체에 대한 보안 강화, 보안 위협으로 시스템 보호</p>
<p><strong>DAC (Discretionary Access Control)</strong></p>
</li>
<li><p>사용자 또는 프로세스가 자원(파일,디렉토리, 소캣 등)에 대한 접근 권한을 설정 / 관리하는 방식</p>
</li>
<li><p>DAC에서는 파일이나 디렉토리 등의 자원에 대한 접근 권한을 (자원을 소유한) 사용자가 임의로 지정 후 변경 가능.</p>
</li>
<li><p>유연성이 높아 다양한 사용자 그룹을 관리할 수 있음.</p>
</li>
<li><p>관리 부담이 높고 권한을 오용할 가능성 있음 보안 위협에 취약함</p>
<p>  → 그래서 MAC 방식이 등장</p>
</li>
</ul>
</li>
</ul>
<pre><code>레이블(Lable)

→ 각각의 주체(Subject)와 객체(Object)에 부여된 보안 태그를 나타낸다. (보안 컨텍스트)

→ MAC를 구현하는데에 레이블을 사용한다.

→ SElinux는 레이블로 엑세스를 제한한다.

프로필(Profile)

→ 특정 애플리케이션의 동작을 정의하는 정책(Policy file)집합</code></pre><h3 id="selinux와-차이">SElinux와 차이</h3>
<p>→ 구현 방법의 차이가 있다.</p>
<p>→ RedHat 계열에서 선호, 같은 계열 CentOS와 같은 운영체제에서 사용</p>
<p>SElinux는 시스템 전체에서 사용되는 보안 모듈 → 일반적으로 <strong>규칙 기반 시스템</strong>으로 구현</p>
<p>AppArmor는 프로세스별로 보안 프로파일을 생성 → 각 애플리케이션의 엑세스 제한 → <strong>프로필 기반 시스템</strong>으로 구현</p>
<blockquote>
<p>이렇게도 설명한다더라 &quot;SElinux는 policy file과 right file system을 통해 작동하는 반면, apparmor는 policy file을 통해 작동한다. 그러므로 SElinux가 좀 더 복잡하고 안정적인 규칙 기반 시스템을 운영 중이다.&quot;</p>
</blockquote>
<ul>
<li><p>policy file &amp; right file system?</p>
<p>   Policy file</p>
<ul>
<li><p>보안 모듈에서 사용되는 파일로, 액세스 제어 및 보안 정책을 정의에 사용</p>
</li>
<li><p>일반적으로 텍스트 파일로 작성, 보안 정책을 포함하는 규칙을 담음</p>
</li>
<li><p>정책은 객체(파일, 디렉토리,포트 등)에 대한 엑세스 권한을 정의, 시스템 보안 전체에 대한 보안 규칙을 정의하는데 사용</p>
</li>
<li><p>시스템 관리자가 작성 혹은 보안 모듈에서 제공하는 기본 정책을 수정하여 사용</p>
<p>⇒ 보안 정책을 변경하는 것은 보안 모듈을 통해 시스템에 대한 액세스 보호, 보안 위협으로부터 시스템 보호 - 보안 위협으로부터 스세템을 보호하는데 중요함</p>
<p>Right File</p>
</li>
<li><p>파일 시스템에 대한 보안 컨텍스트 정보를 포함</p>
</li>
<li><p>파일과 디렉토리에 대한 액세스 권한을 정의</p>
<p>⇒ 애플리케이션에 대한 보안을 강화</p>
</li>
</ul>
</li>
</ul>
<p>SElinux는 </p>
<p>→ 규칙기반과 프로필 기반?</p>
<p>프로필 기반 시스템은 각 애플리케이션에 대한 보안 정책을 개별적으로 설정</p>
<p>규칙 기반 시스템은 시스템 전반에 걸쳐 일관된 보안 정책을 적용.</p>
<ul>
<li><p>예시</p>
<p>  프로필은 각 애플리케이션이 자원에 엑세스할 수 있는 범위를 제한 == 서버 환경에서 웹서버 DB와같은 애플리케이션 보안 강화 적합</p>
<p>  반면 규칙기반 시스템은 전반에 걸쳐 일관된 보안 정책을 적용하기 때문에 보안 요구사항이 높은 시스템의 보안을 강화하는데 적합)</p>
</li>
</ul>
<p>⇒ AppArmor가 SElinux보다 상대적으로 간단하고 사용하기 쉽다. 따라서 SElinux는 기업급 환경에서 높은 보안을 충족, AppArmor는 일반적으로 개인용 시스템이나 작은 규모로 사용.</p>
<p>*<em>AppArmor 설정
*</em>
프로필은 Complain mode 와 Enforce mode로 실행 가능</p>
<p>Complain mode </p>
<ul>
<li>응용프로그램을 제한하지 않고, 위반 사항을 보고하는 로그 항목 작성</li>
</ul>
<p>Enforce mode</p>
<ul>
<li><p>응용프로그램이 제한된 동작을 수행하지 못하게 함</p>
<p><code>aa-enabled</code> : 활성화 여부 확인</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Vitural Machine이란?]]></title>
            <link>https://velog.io/@bean-baek/Vitural-Machine%EC%9D%B4%EB%9E%80</link>
            <guid>https://velog.io/@bean-baek/Vitural-Machine%EC%9D%B4%EB%9E%80</guid>
            <pubDate>Thu, 27 Apr 2023 13:01:16 GMT</pubDate>
            <description><![CDATA[<h2 id="vitural-machine"><strong>Vitural Machine</strong></h2>
<p>→ CPU, 메모리, 네트워크 인터페이스 및 저장공간을 갖춘 소프트웨어 컨테이너 (가상환경)</p>
<p><strong>왜 사용하는 가? (사용 목적)</strong>  </p>
<ol>
<li><p>사용공간 절감 → 여러 가상환경 실행 가능 </p>
</li>
<li><p>속도 &amp; 민첩성 → 개발자를 위한 환경을 완전히 새로 만드는 것보다 효율적임</p>
</li>
<li><p>보안성 → 보안이 의심스러운 앱을 실행, 호스트 운영체제를 보호할 수 있다 (바이러스 회피)</p>
</li>
<li><p>가동중지시간 감소 → VM간 이식이 가능</p>
<p> → 갑자기 중단 시에 하이퍼바이저 간 이동이 용이하다 → 백업 솔루션으로 활용 가능</p>
</li>
</ol>
<p><img src="https://velog.velcdn.com/images/bean-baek/post/b5a9e356-13fb-42bf-a965-33e8064d840a/image.png" alt=""></p>
<p>Host OS : 실제 물리적 컴퓨터의 운영체재</p>
<p>Guest OS : 가상 컴퓨터의 운영체재 </p>
<p>hypervisor : 가상 머신을 생성 / 실행하는 프로세스. 단일 하드웨어에서 여러 다른 가상 머신을 호스팅할 수 있는 프로그램.</p>
<ul>
<li>하나의 컴퓨터로 동시에 서로 다른 2개 이상의 운영체제를 실행할 때(다양한 운영체제에 맞게 개발해야 할 때)</li>
<li>컴퓨터의 다른 부분에는 영향을 주지 않는 독립환경을 만들고 싶을 때(바이러스 회피 등)</li>
<li>하나의 컴퓨터의 자원을 여러명에게 나누어주고, 각 사용자간의 상호간섭을 없애고 싶을 때</li>
</ul>
<p><strong>VirtualBox는 대표적으로 사용되는 시스템 가상머신.</strong></p>
<p><strong>CPU, RAM, 하드디스크 등 컴퓨터의 주요 부품을 가상으로 만들어 동작.</strong></p>
<p>⇒ <strong>이 부품들을 소프트웨어적으로 구현해야 한다.</strong></p>
<p>운영체제(OS, Operating System) 안에 가상의 컴퓨터를 생성→ 실제 PC의 운영체제와 자원을 일부 나누어 사용하는 프로그램</p>
<p>후기 : 난 최대한 간략하고 간단하게 이 내용을 설명하고 싶다. 여기서 CPU, RAM, 하드디스크에 대해서 물어본다면? 당장 칼들고 찾아갈 자신있다. 하지만 정리는 해두었다. 그러므로 컴퓨터 구조에 대해서도 정리한 내용을 시리즈로 올리겠다. 히히</p>
<p>사실 블로그나 다른 곳에서 이해한 내용들을 정리한 것이기 때문에 어? 이거 어디서 봤는데 싶을 것이다. 난 내가 공부하기 위해서 정리하기 때문에 알 바가 아니다. 정보에 대한 감사 인사 정도 드리겠다. 감사합니다 사랑합니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[어디까지 공부해야하는가]]></title>
            <link>https://velog.io/@bean-baek/%EC%96%B4%EB%94%94%EA%B9%8C%EC%A7%80-%EA%B3%B5%EB%B6%80%ED%95%B4%EC%95%BC%ED%95%98%EB%8A%94%EA%B0%80</link>
            <guid>https://velog.io/@bean-baek/%EC%96%B4%EB%94%94%EA%B9%8C%EC%A7%80-%EA%B3%B5%EB%B6%80%ED%95%B4%EC%95%BC%ED%95%98%EB%8A%94%EA%B0%80</guid>
            <pubDate>Wed, 26 Apr 2023 12:27:18 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/bean-baek/post/6fac9d11-c4da-46f6-9eaa-9ed4e1ae325c/image.png" alt="">
나의 노션 정리 제목이다. 
꽤 과격하지만,
해야지.</p>
<p>본투비루트를 하면서 굉장히 고민되는 부분이다.
이 공부를 얼마나 어떻게 어디까지 공부를 해야할까.
어차피 공부해야한다면? 끝까지 하는게 좋을지도 모르겠다라는 생각도 해보고,
끝까지 공부하려면 끝이 보이지 않는 길을 걷기에 지치거나 혹은 시간이 부족하지 않을까.
쓸데없는 고민을 오래했다.</p>
<p>나는 가볍게 공부하는 걸 택했다.
그래서 fail을 받아버렸다.
그러므로 내가 생각했을 때 이 과제의 끝까지 한번 파보려고 한다.</p>
<p>이건 본투비 시작글이다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[정리왕이 될테야!]]></title>
            <link>https://velog.io/@bean-baek/%EC%A0%95%EB%A6%AC%EC%99%95%EC%9D%B4-%EB%90%A0%ED%85%8C%EC%95%BC</link>
            <guid>https://velog.io/@bean-baek/%EC%A0%95%EB%A6%AC%EC%99%95%EC%9D%B4-%EB%90%A0%ED%85%8C%EC%95%BC</guid>
            <pubDate>Wed, 26 Apr 2023 12:21:07 GMT</pubDate>
            <description><![CDATA[<h3 id="사람들이-다-블로그-쓰길래-시작하는-글">사람들이 다 블로그 쓰길래 시작하는 글<img src="https://velog.velcdn.com/images/bean-baek/post/4ec84b71-ae51-469e-8553-cdd8cd73c4e0/image.jpg" alt=""></h3>
<p>사실 오늘 42서울의 본투비루트라는 과제를 fail받았다.
킹받았다는 뜻.
나를 킹받게 하면 불타오르는 치타를 볼 수 있다.
그래서 좀 달려보겠다.
얼마나 오래갈지 모르겠기 때문에
본투비만이라도 빡세게 달려보겠다.
더 달리게 된다면? 글을 많이 쓰겠지 히히
빨리 본투비 끝내고 코딩하고 싶다.
사실 하기 싫다.</p>
]]></description>
        </item>
    </channel>
</rss>