Linux 더미 계정

a·2023년 4월 23일

코테 프로젝트

목록 보기
3/4

Linux 서버 공격 방지

보안의 가장 중요한 측면 중 하나는 서버의 대한 무단 액세스, 특히 파일 생성, 수정 또는 삭제와 같은 작업을 방지하는 것입니다. 이번 프로젝트에서 이러한 공격을 방지하기 위해 더미 계정을 생성하여 관리자 권한이 아닌 실행 권한만을 주어 입력 필드에 입력된 코드를 실행만 할 수 있도록 하였습니다.

1.계정생성

Linux에서 새 계정을 만들려면 root 또는 sudo 권한이 필요합니다. 이 명령을 sudo useradd [option] [username]를 사용하여 지정된 이름으로 새 계정을 생성할 수 있으며 필요에 따라 옵션을 지정할 수 있습니다.
이번 계정을 생성하기 위해 다음 명령어를 통해 dummy계정을 생성합니다.

sudo useradd dummy

계정을 생성한 후 로그인을 하기 위해 암호를 설정해야 합니다. sudo passwd [username] 명령어를 사용하여 비밀번호를 생성해 줍니다.

sudo passwd dummy

2.더미 계정을 통해 코드 실행

이제 더미 계정을 사용하여 코드를 실행하도록 합니다. 예를 들어 Java코드를 컴파일하고 실행하는 Javacovert.sh라는 쉘스크립트가 있는 경우 다음과 같이 Java 명령어를 실행하기 전에 sudo -u [username] 을 추가하여 더미 계정을 사용하여 실행하도록 수정합니다.

참고 : su [username] 명령어을 통해 현 사용 계정을 사용하면서 다른 계정의 권한으로 변경할 때 사용
참고2 : exit 명령어를 통해 로그아웃을 할 수 있음

Javaconvert.sh

#!/bin/bash

file="$1"
params="$2"

# check if the file exists
if [ ! -f "$file" ]; then
        echo "File not fond: $file"
        exit 1
fi

# get the file's extension
ext="${file##*.}"

# parse the String
IFS=',' read -ra args <<< "$params"

# get current working directory
cwd=$(pwd)

#compile and execute the java file
if [ "$ext" = "java" ]; then
        # extract the directory path and file name without extesntion

        dir=$(dirname "$file")
        filename=$(basename "$file" .java)

        # compile the java file
        javac "$file"
        if [ $? -ne 0 ]; then
                echo "Compilation failed"
                exit 1
        fi

        # run the java program with the given parameter file
        cd  "$dir"
        sudo -u dummy "java" "$filename" "${args[@]}"
        cd "$cwd"
else
        echo "Invalid file type: $ext"
        exit 1
fi

3.권한 부여

더미 계정이 코드를 실행할려면 관련 파일 및 디렉토리에 대한 적절한 권한이 필요합니다. 다음과 같은 명령어를 통해 sudo chmod o+rx [directory] 더미 계정에 코드가 저장되고 실행될 디렉토리에 대한 읽기 및 실행 권한을 부여합니다.

sudo chmod o+rx ubuntu

필요에 따라 권한이 있는 그룹에 더미 계정을 추가한 다음 그룹에 읽기 및 실행 권한을 부여할 수도 있습니다. sudo chmod g+rx [directory]

결론

권한이 제한된 더미 계정에서 코드를 실행하도록 함으로써, 서버에 대한 무단 액세스 및 공격을 방지하는 효과적인 방법이 될 수 있습니다.

0개의 댓글