IT/정보보안기사

시스템 보안 - 4장. Unix(Linux) 보안 관리

다파라파라 2023. 7. 21. 16:03

1. 접근 권한

가. 접근권한 마스크(umask)
  - 파일이나 디렉터리가 생성됨과 동시에 지정된 권한이 주어지도록 설정하는 값
  - 시스템 관리자는 /etc/profile 에 umask를 설정하여 전체 사용자에게 동일한 umask 값을 적용 가능
  - 파일의 권한은 666이고, 디렉터리는 777이며 해당 값에서 umask 값을 뺀 값이 허가권이 된다.

나. 권한상승(SetUID, SetGID)
  - SetUID는 설정된 파일을 실행할 때 일시적으로 파일 소유자의 권한을 얻어 실행 가능
  - SetUID 적용을 위해선 허가권 앞 4를 붙임
  - SetGID 또한 설정된 파일을 실행할 때 일시적으로 소유그룹권한 부여
  - SetGID 적용을 위해선 허가권 앞 2를 붙임

다. 디렉터리 접근권한(sticky-bit)
  - Sticky Bit가 설정된 디렉터리에 파일을 생성하면 해당 파일은 생성한 사람의 소유가 된다.
  - Sticky Bit가 설정된 디렉터리의 파일은 소유자와 root만이 해당 파일에 대한 삭제 및 수정
  - 기존 허가권 앞에 1을 붙임

 

2. 접근 통제

가. 접근 통제(TCPWrapper)
  - 외부에서 들어오는 클라이언트에 대한 접근통제 기능을 제공
  - TCPWrapper가 설치되면 inetd 데몬은 TCPWrapper의 데몬인 tcpd 데몬에 연결을 넘기고
    tcpd 데몬은 접속을 요구한 클라이언트가 접근 권한이 있는지 확인하고 해당 데몬에 연결

나. TCP Wrapper 의 실행경로
  - TCP Wrapper를 사용할 경우 해당 서비스의 실행경로에 “usr/sbin/tcpd”를 명시하며
    inetd 데몬은 외부로부터 서비스 요청이 올 경우 inetd.conf 파일을 참조하여 실행경로에
    설정된 /usr/sbin/tcpd(TCP Wrapper 프로세스)를 실행
  - tcpd는 hosts.allow 및 hosts.deny 파일을 참조하여 접근제어를 수행한 후 실행 인수로
   설정된 서비스를 실행

다. hosts.allow(접근 허용)와 hosts.deny(접근 금지)
  - 문법 : service_list : client_list [: shell_command]
  - 옵션 : service_list, client_list, shell_command

 

3. 슈퍼 데몬(inetd)

- N개의 개별 서버를 하나로 통합하여 클라이언트로부터 다양한 서비스(FTP, Telnet, SSH, HTTP 등)
  요청이 올때마다 해당 서비스를 실행하는 모듈
- inetd 데몬은 최초 실행 시 /etc/inetd.conf 파일의 정보를 참조하여 서비스할 프로그램들에 대한 정보를 획득
     
    * 우분투에는  패키지 선택여부에 따라 다르지만 기본적으로 inetd가 설치되지 않음
       설치 명령어 : sudo apt-get install openbsd-inetd
       inetd 재시작 : sudo /etc/init.d/openbsd-inetd restart
 
①ftp   ②stream   ③tcp   ④nowait   ⑤root   ⑥/usr/sbin/in.ftpd   ⑦in.ftpd -l -a

① 서비스명 : /etc/services 파일에 등록된 포트번호를 참조
② 소켓타입 : stream(TCP 기반 서비스), datagram(UDP 기반의 서비스)
③ 프로토콜 : /etc/protocols 파일에 주어진 프로토콜 중 사용가능한 프로토콜을 설정
④ 플래그 : nowait(즉시처리), wait(대기)
⑤ 사용할 사용자 계정 : 프로그램을 실행시킬 사용자를 설정
⑥ 실행 경로명 : 해당 서비스를 처리하는 실행 모듈의 경로를 절대경로로 설정
⑦ 실행 인수 : 프로그램의 인수를 설정, 첫 번째는 응용 프로그램 자신의 이름

4. 슈퍼 데몬(xinetd)

- 기존의 inetd 슈퍼데몬의 비효율적인 리소스 관리와 보안성 문제를 극복하기 위해 나온 슈퍼데몬
- 서비스별 접근 제어를 위해 TCP Wrapper의 기능뿐만이 아니라 자체적으로 다양한 서비스별 접근제어

서비스 구성
  가. /etc/xinetd.conf : 글로벌 xinetd 설정파일
  나. /etc/xinetd.d/서비스 설정파일 : 개별 서비스에 대한 설정 파일
슈퍼 데몬(xinetd)의 서비스 흐름
  ① 외부에서 telnet 연결 요청(서비스 요청)
  ② xinetd 대몬은 외부에서 요청된 서비스를 tcp_wrapper에게 넘겨준다.
  ③ tcp_wrapper는 /etc/hosts.allow와 /etc/hosts.deny 파일의 설정을 확인하여 접근 가능 여부 판단

    허가된 요청인 경우 : /etc/syslog.conf에 설정되어 있는 /var/log/secure 파일에 해당 접속에 대한 정보를
                                     기록하고 /etc/xinetd.d/telnet 파일을 불러 서비스를 연결한다.
                                     이 때, /etc/xinetd.d/telnet 파일내의 server 지시자행에 설정되어 있는
                                      telnet 대몬의 위치를 찾아서 요청을 처리한다.

    허가되지 않은 요청인 경우 : /etc/syslog.conf 파일에 설정되어 있는 /var/log/secure 파일에 허가되지
                                                 않은 접속이 있었다는 로그를 남기고 접속 요청을 거부하게된다.
슈퍼 데몬(xinetd)의 서비스 관련 파일
  /etc/xinetd.conf xinetd 서비스에 공통으로 적용되는 설정 파일 xinetd의 최 상위 설정 파일.
  /etc/xinetd.d/[SERVICE_FILES] xinetd 기반 서비스들 개별 설정 파일
  /usr/sbin/xinetd xinetd 대몬 파일
  /etc/sbin/tcpd tcp_wrapper 대몬 파일
  /etc/rc.d/init.d/xinetd xinetd 시작/ 종료 스크립트 파일
  /etc/hosts.allow 서비스별 허용할 host, ip 리스트(tpc_wrapper)
  /etc/hosts.deny 서비스별 허용 하지 않을 host, ip 리스트(tpc_wrapper)
  /etc/syslog.conf 시스템 로그 설정 파일
  /var/log/secure tcp_wrapper 로그 파일(접근 기록 파일)
  /etc/services 서비스 포트 설정 파일
  /etc/protocols 프로토콜 설정 파일


5. 보안 쉘(SSH)

- 암호 통신을 이용하여 네트워크상의 다른 컴퓨터에 접속하여
  원격으로 명령을 실행하거나 파일을 조작하는 응용 프로그램 또는 프로토콜
- 기존의 rsh, rlogin, Telnet, FTP 등 평문 송수신 서비스의 취약점을 대체하기 위해
  설계되었으며 디폴트로 22/tcp 포트 사용
- 암호화된 원격 터미널 서비스 제공
- 암호화된 파일 송수신 서비스 제공

6. PAM(장착형 인증 모듈, Pluggable Authentication Modules)

- PAM은 리눅스 시스템 내에서 사용되는 각종 어플리케이션 인증(Authentication)을 위해 제공되는 라이브러리
- 일반적으로 /lib/security 또는 /usr/lib/security 디렉터리에 해당 라이브러리가 저장
- 라이브러리들은 어플리케이션 인증 목적으로 관리자에 의해 선택적으로 사용 가능
④ PAM 라이브러리 관련 경로 
/etc/pam.d : PAM 라이브러리를 이용하는 각 응용 프로그램(서비스)의 설정파일이 위치

PAM을 사용한 인증 절차
  각 프로그램(login, Telnet, FTP 등)은 인증이 필요한 부분에 PAM 라이브러리 호출
  PAM 라이브러리가 호출되면 해당 프로그램의 PAM 설정 파일을 참조하여 PAM 모듈들을 수행하고 결과 반환
  응용 프로그램은 그 반환된 결과를 이용하여 인증 여부를 결정

 

7. 불필요한/취약한 서비스 비활성화

- DoS 공격에 취약한 Simple TCP 서비스 : echo(7/tcp), discard(9/tcp), daytime(13/tcp), chargen(19/tcp)
  등 비활성화
- r 계열 서비스 : rlogin, rsh, rexec 등, r 계열 서비스는 인증 없이 관리자의 원격접속을 가능하게 하는
  명령어들로 이기종 운영체제간 백업 등의 용도로 사용되는 경우가 있으나 보안상 취약함
- 불필요한 rpc(remote procedure call) 서비스 : rpc, cmsd, rusersd 등 분산 환경에서 서버 응용프로그램에
  접근하여 작업 호출(call)을 할 수 있는 서비스로 버퍼 오버플로우 등 다수의 취약점이 존재
- inetd.conf 파일에서 해당 취약한 서비스를 주석(#) 처리
728x90
반응형