리눅스 / SELinux(Security-Enhanced Linux)

SELinux(Security-Enhanced Linux)는 리눅스 커널에 통합된 보안 모듈로, 미국 국가안보국(NSA)이 개발한 강력한 접근 제어 메커니즘을 제공하는 보안 프레임워크입니다. SELinux는 시스템의 보안을 강화하기 위해 다양한 보안 정책을 적용하여 프로세스와 사용자 간의 상호작용을 제어합니다. SELinux의 주요 특징과 기능은 다음과 같습니다:

  1. 정책 기반 접근 제어
    SELinux는 시스템의 모든 파일, 디렉터리, 포트, 그리고 프로세스에 대한 접근을 제어하기 위해 보안 정책을 사용합니다. 이 정책은 시스템 관리자에 의해 정의되고 적용됩니다.

  2. 강제 접근 제어(Mandatory Access Control, MAC)
    SELinux는 전통적인 자유 접근 제어(Discretionary Access Control, DAC)와 달리, 더 엄격한 보안 정책을 강제하는 MAC을 사용합니다. 이를 통해 시스템의 보안 수준을 크게 향상시킬 수 있습니다.

  3. 보안 컨텍스트
    SELinux는 각 파일, 프로세스, 그리고 시스템 객체에 보안 컨텍스트를 할당합니다. 이 보안 컨텍스트는 해당 객체에 대한 접근 권한을 결정하는 데 사용됩니다.

  4. 세분화된 권한 제어
    SELinux는 세분화된 권한 제어를 통해 특정 작업에 필요한 최소한의 권한만을 부여함으로써 보안을 강화합니다. 이를 통해 시스템이 더 안전해지고, 잠재적인 보안 취약점을 줄일 수 있습니다.

  5. 로그 및 감사
    SELinux는 보안 이벤트를 상세히 기록하고 감사 로그를 생성하여 시스템 관리자가 보안 위협을 감지하고 대응할 수 있도록 합니다.

SELinux는 많은 리눅스 배포판에 기본적으로 포함되어 있으며, Red Hat Enterprise Linux (RHEL), CentOS, Fedora 등에서 널리 사용되고 있습니다. 사용자는 시스템 보안을 강화하기 위해 SELinux를 활성화하고 적절한 정책을 구성하여 활용할 수 있습니다.

같은 카테고리의 다른 글
CentOS 7 / firewall-cmd 명령어로 방화벽 관리하기

CentOS 7 / firewall-cmd 명령어로 방화벽 관리하기

CentOS의 방화벽 관리 데몬은 firewalld입니다. 설정은 firewall-cmd 명령어로 합니다. 방화벽 실행 여부 확인 firewall-cmd --state 실행 중이면 running, 실행 중이 아니면 not running을 출력합니다. 방화벽 다시 로드 firewall-cmd --reload 방화벽 설정 후 다시 로드해야 적용됩니다. 존(Zone) 출력하기 firewall-cmd --get-zones 존(zone) 목록을 출력합니다. firewall-cmd --get-default-zone 기본 존을 출력합니다. firewall-cmd --get-active-zones 활성화된 존을 출력합니다. 사용 가능한 서비스/포트 출력하기 firewall-cmd --list-all 사용 가능한 모든 서비스/포트 목록을 출력합니다. firewall-cmd --zone=public --list-all public 존에 ...

리눅스 / 명령어 / man / 명령어의 설명서 출력하는 명령어

man은 manual의 약어로, 명령어의 설명서를 출력하는 명령어이다. man 뒤에 명령어 이름을 넣고 엔터를 누릅니다. 예를 들어 # man rm 은 rm 명령어의 설명서를 출력한다. ↑ 키를 누르면 한 줄 위로 올라가고, ↓ 키를 누르면 한 줄 아래로 내려간다. Page Up 키를 누르면 한 페이지 위로 올라가고, Page Down 키를 누르면 한 페이지 아래로 내려간다. /를 ...

Ubuntu 16.04 / Apache / javascript 폴더 접근이 안되는 문제 해결하는 방법

javascript 폴더 접근 불가 우분투(Ubuntu)에서 아파치(Apache)로 웹서버를 운영할 때 이상한 문제가 하나 발생합니다. 사이트 경로에 javascript가 있으면 forbidden 에러가 나는 것입니다. Forbidden You don't have permission to access /javascript/ on this server. 이 문제가 발생하는 이유는 자바스크립트 설정 때문입니다. /etc/apache2/conf-available/javascript-common.conf에 다음과 같은 코드가 있습니다. Alias /javascript /usr/share/javascript/ javascript로 접속하면 /usr/share/javascript/로 연결시키라는 뜻입니다. 사이트 접속자는 /usr/share/javascript/에 접속 권한이 없으므로 forbidden 에러가 ...

Rocky Linux 8 / root 계정으로 ssh 접속 가능하게 설정하는 방법

Rocky Linux 8 / root 계정으로 ssh 접속 가능하게 설정하는 방법

Rocky Linux를 설치할 때 가능하게 설정하지 않았다면, root 계정으로 ssh 접속을 할 수 없다. 보안 상 권장되는 설정이나, 테스트나 공부 목적 등으로 root 계정으로 ssh 접속하는 게 더 좋은 상황이라면, 다음과 같이 하여 접속을 허용할 수 있다. vi나 nano 같은 텍스트 에디터로 /etc/ssh/sshd_config 파일을 연다. 제일 밑에 다음 코드를 추가하고, 저장한다. PermitRootLogin yes 다음과 같이 ...

리눅스 / 명령어 / touch / 빈 파일 만들기, 최종 수정 시간 변경하기

touch는 빈 파일 만들거나 파일의 최종 수정 시간을 현재 시간으로 바꾸는 명령어이다. abc.txt 파일이 없다면, 내용이 없는 abc.txt 파일을 만듭니다. abc.txt 파일이 있다면, 파일의 최종 수정 시간을 현재로 변경합니다. # touch abc.txt

다른 서버나 컴퓨터의 포트가 열렸는지 확인하는 방법

다른 서버의 특정 포트가 열려 있는지 알아야 할 때가 있습니다. 윈도우와 리눅스에서 확인하는 방법을 정리합니다. 윈도우 telnet 명령어 이용하는 방법 텔넷 클라이언트 기능을 추가합니다. 명령 프롬프트(CMD) 또는 PowerShell에서 다음과 같이 명령합니다. google.com의 443 포트가 열렸는지 확인하는 것입니다. C:\Users\JB>telnet google.com 443 포트가 열려 있다면 아무 내용 없는 창이 나옵니다. 만약 닫혀 있다면 아래와 같이 연결하지 못한다는 메시지가 나옵니다. C:\Users\JB>telnet ...

CentOS 7 / 고정 IP 설정하는 방법

CentOS 7 / 고정 IP 설정하는 방법

CentOS를 설치할 때 네트워크를 설정할 수 있다. GUI 환경이므로 네트워크 설정을 알고 있다면 쉽게 고정 IP로 설정할 수 있다. 만약 DHCP로 설치했다면 다음과 같은 방법으로 고정 IP 설정을 할 수 있다. 네트워크 설정 파일 수정 네트워크 설정 파일은 /etc/sysconfig/network-scripts에 있다. 파일 이름은 ifcfg-enp0s3 처럼 생겼다. 텍스트 에디터로 열면 다음과 같이 설정되어 있다. TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="dhcp" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="enp0s3" UUID="91af51db-7cf0-4069-9433-77d356b31bca" DEVICE="enp0s3" ONBOOT="yes" CentOS 버전 ...

리눅스 / 명령어 / rdate / 타임서버의 시간과 동기화해주는 명령어

rdate는 서버의 시간과 타임서버의 시간을 동기화해주는 명령어이다. rdate는 설치되어있지 않는 경우가 많으므로, 필요하다면 설치를 해야 한다. CentOS라면 # yum install rdate Ubuntu라면 # apt install rdate 와 같이 명령하여 설치할 수 있습니다. 타임서버의 시간을 확인할 때는 -p 옵션을 사용합니다. 현재 서버의 시간을 변경하지 않는다. # rdate -p time.bora.net 현재 서버의 시간을 타임서버의 시간으로 맞출 때에는 -s 옵션을 ...

Rocky Linux 8 / DNF 사용법

Rocky Linux 8 / DNF 사용법

dnf는 패키지를 관리하는 명령어이다. 도움말 도움말 보기 # dnf -h 목록 보기 패키지 목록 보기 # dnf list 그룹 목록 보기 # dnf grouplist 검색 zip을 키워드로 패키지 검색 # dnf search zip 정보 출력 zip 패키지 정보 출력 # dnf info zip Server with GUI 그룹 정보 출력 # dnf groupinfo 'Server with GUI' 설치 zip 패키지 설치 # dnf install zip httpd와 php 설치 # dnf install httpd php Server ...

리눅스 / IP 확인하는 방법

리눅스에서 IP 주소를 확인하는 방법은 여러 가지가 있으며, 이를 수행하는 데 사용되는 명령어와 도구는 다음과 같습니다. 이 명령어들은 모두 터미널에서 실행됩니다. ip addr 아래 명령어를 실행하면 모든 네트워크 인터페이스의 상세 정보가 표시됩니다. IP 주소는 inet 항목에서 확인할 수 있습니다. # ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen ...