ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [산대특] 보안에서의 VPN, VPN Tunneling, IPSec, Puppet, Shell, Shell 프롬프트, 시스템/환경 변수
    [산대특]클라우드기반 빅데이터 활용 정보 시스템보안과정/Linux 2024. 9. 10. 20:25

    0910

     

     

      GRUB 가 인식하는 하드디스크 장치명과 

      Linux가 인식하는 하드디스크 장치명은 다르다.

    IDE  시스템의 첫 번째 HDD를 /dev/hda, 첫 번째 파티션을 /dev/hda1로 본다.
    IDE : 통합 개발 환경
    SATA 시스템의 첫 번째 HDD를 /dev/sda, 첫 번째 파티션을 /dev/sda1로 본다. 
    SATA : 저장 장치를 연결하기 위한 표준 인터페이스
    IDE나 SATA 시스템 구분 없이 첫 번째 HDD를 hd0로 보고, 
    첫 번째 파티션을 hd(0,0)으로 인식하고, 두 번째 HDD의 첫 번째 파티션은 hd(1,0), 두 번째 HDD의 두 번째 파티션은 hd(1,1)로 인식한다. 

    =>IDE나 SATA에서 HDD는 a, b, ..로 시작되고 파티션은 1, 2, ..로 시작되며, 

      GRUB에서는 HDD와 파티션이 모두 0, 1, 2, ...로 시작된다. 

    커널을 업그레이드 하거나 수정할 때 필요한 사항.

     

      VPN(Virtual Private Network)으로 네트워크 간 보안연결

    하드웨어나 소프트웨어를 적절히 사용해서 공중망에서도 전용회선과 같은 효과를 내게 하는 기법이다.

    터널로 연결해서 그 안에서 통신이 이뤄지게 하면 송수신 데이터가 외부로 노출되지 않는 전용선처럼 운영될 수 있다.

     본사 로컬에 있는 네트워크처럼 만드는 기법이다. 

     

      VPN 연결은VPN 서버와 VPN 클라이언트사이에 공개키/개인키로 연결됨.

     

    개인키/공개키 배포는 두가지 방법이 있다.


      IPSec 로 호스트 간 보안 연결

      호스트와 호스트를 연결할 때 IPSec라는 도구 PSK 사전 공유키(pre-shared key)보안연결을 할 수 있다. 

    통신 세션의 각 IP 패킷을 암호화하고 인증하는 안전한 IP 통신을 위한 프로토콜로서

    보안은 통신 세션의 개별 IP 패킷을 인증하고 암호화해서 처리 된다.

    여러 IPsec 설정이 가능. 중요한 서버와 이를 관리하는 호스트 간에 IPsec로 연결해서 작업하면 일반 호스트는 이 서버에 접속하지 못하게 할 수 있다. 

     

      IPSec의 주요 장점은 다음과 같다.

    Transparency : 
    IPSec은 network layer에서 동작하므로 사용하는 어플과는 무관하게 동작한다. 주로 HTTPS에서만 동작하는 SSL과는 다르게 IPSec은 FTP, HTTP, SMTP 등 모든 TCP/IP 프로그램에 대한 연결에 대하여 보안연결을 보장한다. 또 SSL, S/MIME 등과 같은 상위 layer의 보안 프로토콜과 연계하여 사용할 수도 있다.
    Network Topology Dependency : 
    전송매체에 종속적이지 않은 TCP/IP 프로토콜을 사용하므로 
    Ethernet, TokenRing, PPP 등 모든 네트워크 토폴로지에서 사용할 수 있다.
    Standardization : 
    L2TP, L2F 등으로 구현될 수 있는 PPTP 같은 터널링 프로토콜과 다르게, 
    IPSec는 표준화된 터널링, 인증, 암호화 기법을 사용한다.
    Multiprotocol Use : 
    IPSec는 터널링 모드를 사용할 경우 여러 프로토콜과도 동작할 수 있어서 IPX, Appletalk 네트워크에서도 사용될 수 있다.

     

      패키지와 파일, 서비스 등의 중앙관리 도구 - Puppet 과 Ansible

      Puppet은 중앙에서 일괄적으로 관리하게 해주는 도구이다.

    관리 서버의 역할Puppet master로 부르고

    master 머신을 통해서 여러 대의 Puppet agent로 불리는 Puppet 클라이언트 호스트들을 관리

     

    Puppet 서버인 master는agent의 상태를 수집할 수 있게 설정되어져 있고, Puppet agent들은 매 30분마다 Puppet master에 접속해서 자신들의 정보와 서버의 정보를 비교해서 서버에 새로운 업데이트된 정보(manifest 파일에서 설정)가 있으면 받아와서 자동으로 자신을 업데이트하는 구조이다. 

     

    Puppet master 서버에서 '~.pp' 매니페스트 파일에 작업 지시 등 필요한 것을 설정하면 된다.

     

      쉘(shell)

      쉘에는 최초의 쉘인 Borune Shell프로그램 개발에 적합한 C Shell과 Tcsh shell,

    모든 기능을 가지고 있는 Korn Shell 등이 있다.

     

    Linux 배포판의 디폴트 쉘은 Bourne ShellBash(Borune Again SHell)로서 /bin/bash에 자리하고 있다. 

     

    쉘은

    사용자와 컴퓨터가 상호작용하는 방법을 제공하는 프로그램 이자

    사용자가 명령어를 입력하면 이를 해석하고 실행해주는 역할

     

    일반 사용자는 Bourne, Bash와 Korn 쉘에서 $

                 C 쉘에서는 %쉘 프롬프트가 표시되고,

    root 관리자는 모두 #으로 쉘 프롬프트가 표시된다.

     

      쉘 프롬프트

    쉘이 사용자에게 명령어 입력을 기다리고 있음을 알려주는 표시

    사용자에게 "여기서 명령어를 입력해 주세요!"라고 말하는 역할

     

      변수

      데이터나 정보를 처리하기 위해서 데이터를 메모리에 저장해 두면 빠르게 해당 데이터를 사용할 수 있다. 메모리는 작은 공간(셀(cell)로 부름)으로 분할되어 있고, 각 셀마다 16진법의 주소를 가지고 있다. 

     

    Linux에서는 시스템이 생성하고 유지하는 (보통 대문자로 표시되는) 

    시스템 변수(System Variables)와 

     

    사용자가 생성하고 유지하는 (보통 소문자로 표시되는) 

    사용자_정의 변수(User Defined Variables)가 있다. 

     

    A 저장 공간은 넣어주는 데이터에 따라서 가지고 있는 값이 변하기 때문변수(Variable)라고 부르고 $A로 불러내서 사용

     

      기존의 메모리 주소에 저장된 값을 없애는 것을 초기화 

     

      쉘에서의 변수는 사용할 때 그 자리에서 선언해주고 바로 사용하면 된다. 

     

      변수_명은 선언 $[변수명]

    영문자_로 시작되어야 하고,
    변수_명은 대소문자를 구분한다. 
    no=10 해주고, echo $no 하면 변수에 저장된 값 10을 보이지만, echo $No 하면 $No는 다른 변수로 취급(+변수 값을 선언하지 않음)되므로 아무 값도 보이지 않는다.
    pwd라는 명령어를 $(pwd) 하면 이 명령어의 결과가 변수로 취급된다.
    ?나 *와 같이 예약된 지시어는 변수_명으로 사용될 수 없다. /* 식으로 사용해야 한다.
    변수_값은 숫자나 문자, 문장이 될 수 있는데 문장은 " "로 묶어서 표시한다.
    ‘변수_명=값’ 구문에서 = 전후에 공간이 있어서는 안 된다!!.  a = 10(x), a=10(0)
    변수_명에 홑 따옴표 ' '와 겹 따옴표 " "를 붙였을 때 각각 의미가 다르다. 

     

    =>$var1과 "$var1"은 값이 같다

    홑 따옴표 ' '는 ' ' 안의 내용을 문자로 처리하는 \와 같아서 '$var1'은 \$var1과 같다. 

     

      시스템 변수

      변수를 보는 'echo $변수_명''printenv 변수_명'과 같은 명령어($가 없음)이다. 

    시스템 변수_명은 주로 대문자로 쓴다.

      printenv는 UNIX 시스템에서의 변수 확인 명령어 변수_명에 $를 붙이지 않는다.

     

      환경변수 설정

    a. 쉘의 환경변수 설정은 'export 변수_명=값' 형식으로 설정하는데
    echo $PATH 해보면 현재 설정된 경로를 보이고,
    PATH: ~ 경로 뒤에 :$HOME(paul 사용자 /home/paul)/bin을 일시적으로 추가한다는 의미
    echo $PATH 하면 맨 뒤에 ~:/home/paul/bin이 추가된다.
    b. 환경변수를 새로 설정하거나 재설정하려면 'set 변수_명=값' 형식으로 해주면 되고, 
    삭제는 'unset 변수_명' 해주면 된다. 
    c. 어느 실행 파일 abc.sh을 /home/centos/abc.sh를 넣어두면
    이 파일을 실행할 때에는 /home/centos로 이동한 뒤 bash abc.sh식으로 해주어야 한다.

    하지만 이 /home/centos 경로를 PATH 경로에 export PATH=$PATH:/home/centos
    식으로 해주면 어디서나 이 /home/centos/ 아래에 있는 실행파일을 실행시킬 수 있다.

     

    Windows 시스템에서도 넣을 수 있다.

    시작 > 제어판 > 시스템 > 좌측의 고급 시스템 설정 > 고급 탭 -> 하단 환경변수로 가서 설정.

     

    [로그인 전]
    ~/.bash_profile은 Bash 쉘에서 로그인 셸이 시작될 때 실행되는 설정 파일
    주로 사용자 개인의 로그인 환경을 설정, 로그인 시 자동으로 실행될 명령어/스크립트 정의에 사용
    [로그인 후]
    ~/.bashrc 은 Bash 쉘의 설정 파일로, 인터랙티브(non-login) 쉘에서 실행
    새로운 터미널 창을 열거나, 새로운 터미널 세션을 시작할 때마다 자동으로 실행
    사용자 개인의 쉘 환경을 설정하고, 사용자 정의 명령어와 기능을 포함하는 데 사용
    환경 변수 설정, 별칭(Alias)정의, 함수 정의, 프롬프트 설정 가능

     

    [로그인 시]
    profile은 Login Shell 환경을 설정하는 데 사용되는 파일로, 주로 로그인 시 실행

    주요 파일 : 
    /etc/profile(시스템 전체 설정)
    시스템의 모든 사용자에게 적용되는 설정을 포함
    모든 사용자가 로그인할 때 실행

    ~/.profile(사용자별 설정)
    각 사용자의 홈 디렉토리에 위치
    해당 사용자만의 로그인 환경을 설정

    profile과 다른 파일의 관계
    .bash_profile: Bash에서 로그인 쉘이 시작될 때 실행되는 파일입니다. ~/.profile을 호출하여 추가 설정을 적용할 수 있습니다.
    .bash_login: .bash_profile이 존재하지 않을 때 호출되는 파일로, 로그인 쉘에서 실행됩니다.
    .bashrc: 비로그인 셸에서 실행되는 설정 파일로, 새로운 터미널 세션이 시작될 때 적용됩니다.
    [로그인 시 시작]
    Login Shell 은 사용자가 시스템에 로그인할 때 시작되는 쉘
    사용자가 시스템에 접근하기 위해 처음으로 열리는 쉘
    사용자가 시스템에 로그인할 때 환경 변수를 설정, 초기화 명령어를 실행해 사용자 환경을 맞춤화

     

연의 취업 도전기.