ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [산대특] nmap,IDS, IPS 도구들
    [산대특]클라우드기반 빅데이터 활용 정보 시스템보안과정 2024. 9. 2. 20:52

    0902

     

     

      타겟에 관한 광범위한 정보를 알려주는 - Nmap
      타겟 서버에서 운영체제의 종류, 버전, 실행되고 있는 서비스, 오픈 포트, 설치된 프로그램과 버전 등의 정보를

    수집하는 도구

    NSE(Nmap Script Engine, 겡장한 도구)으로 더욱 풍성하게 사용될 수 있다.

     

    ** 종합적으로 타겟에 대한 정보 모으기, 침투, 관리, … 등에 대한 도구로 Metasploit, NSE, SET(Social Engineering Toolkit)이 있다.

    nmap 실행 옵션으로

    sS SYN 세션 수립 안 함-디폴트 
    sT / sU TCP 스캔 / UDP 스캔  
    sN 모든 플래그(URG, FIN, PSH, SYN, RST, ACK)를 OFF로 설정(null)
    sX 모든 플래그를 ON으로 설정(x-mass 인터뷰)  
    sV 열린 포트와 버전보기 
    O OS 보기
    A OS와 OS 버전 보기 
    v 상세 결과 보기 등과 이외의 많은 플래그들이 있다. 

    =>nmap으로 자신의 서버를 스캔해서 많은 정보가 보이면 관리자는 이들 정보가 보이지 않도록 조치를 해둬야 한다.

      만능 보안 도구인 - Netcat
      Swiss Army Knife 로도 알려진 작지만 강력한 ncat은 주로 백도어로 사용되지만 포트 스캔, 파일 송수신도 가능하다.

    netcat은 다양한 기능이 있으므로 잘 알아두면 좋다. 

      패킷 분석에 쓰이는 - TCPdump

      Tcpdump는 Wireshark와 유사한 패킷분석 도구로써 네트워크를 모니터링해서 인터페이스에 도달한 데이터를 콘솔에 텍스트로 표시해준다. 

      

      tcpdump --help 해서 보면 옵션으로 

    i 인터페이스 지정 s 바이트 수 지정
    port 포트 지정 proto 프로토콜 지정
    X 16진수로 표시 n 주소변환 않음
    N 호스트의 도메인표시 l 표준출력으로 버퍼링
    t 시간 표시 v 상세정보 표시
    w 기록하기

    v 자세히

    vv 더 자세히

    vvv 졸라 자세히

     

    뿐만 아니라 dst, src, host, net, 그리고 and와 or 등을 조합해서 사용할 수 있다.

    destination, source(데이터의 출처)/Starting Point(시작점)

     

    비슷한 것으로 타겟의 패스워드를 알 수 있는 medusa 와 hydra 가 있다. 

    https://lrl.kr/tLqE
    https://lrl.kr/haZz

     

      파일의 변조 유무를 알아내는 - TripWire 

      타겟 시스템에 침입 후 파일을 변조한 경우 그 변조된 파일을 찾아주는 도구이다.

    이런 기법은 AV 프로그램의 작동과 유사하다. 하지만 실시간 확인은 불가능하다. 

     

    =>가능한 한 시스템 설치 후 바로 Tripwire를 실행시켜 두는 것이 좋다.

     

      TripWire를 설치하면 /etc/tripwire 디렉터리에

    site.key(사이트_키), tw.cfg(구성_설정), twcfg.txt(구성설정_편집),

    tw.pol(정책_설정), twpol.txt(정책설정_편집), ubuntu-local.key(로컬_키) 파일이 생성된다. 

     

    site.key(사이트_키) 설정파일과 정책파일을 암호화할 때 사용
    tw.cfg(구성_설정) tripwire를 설정하는 이진파일이어서 편집이 불가
    twcfg.txt와 twpol.txt 텍스트 파일을 편집기로 편집한 뒤
    패스워드를 넣어서 암호화하면 tw.cfg와 tw.pol 파일로 전환되어 적용되는 원리
    tw.pol(정책_설정)
    ubuntu-local.key(로컬_키) 시스템 데이터베이스를 초기화할 때 필요함

    =>시스템 데이터베이스의 어느 파일에서 변경이 생기면 Added, Removed, 그리고 Modified 항목으로 보고할 것이다.

     

    https://img.stibee.com/61433_1653009254.png

    취업을 향해 달려가는 나

     

      외부에서 시스템 포트를 스캔하는지 실시간으로 검사하는 - PortSentry
      portsentry는 실시간으로 메모리에 상주하며

    nmap과 같은 외부에서 해당 시스템의 포트 스캔을 탐지해서 막아주는 방어도구이다.

     

    시스템을 스캔한 침투자의 IP를 검사해 TCPwrapper의 /etc/hosts.deny 파일에 IP를 넣어 원천적으로 차단

    관리자에게 이메일로 알림

    스캔공격을 받을 때 외부 스크립트나 실행파일을 실행해서 자동으로 침투머신에 역공격을 수행

     

    https://img.stibee.com/61433_1653009952.png

     

      Rootkit 탐지하기 

      목적은 타겟에 백도어 심어두기와 침투흔적 삭제다.

    백도어는 해커가 다음에도 별도의 수고 없이 타겟 시스템에 쉽게 로그인할 수 있게 해주는 악성코드로써

    관리자는 항상 이를 감지해내야 한다.

    해커가 서버에 침투하면 악성 프로세스 감지나 백도어 탐지를 위한

    find, ps, w, ls, cat ...와 같은 이진 실행파일 명령어들을 변조해서

    해당 명령어의 실행결과가 다르게 나오게 하는 수법도 사용한다.

     

    따라서 이들 명령어가 들어있는 /bin, /sbin, /usr/bin, /usr/sbin 등

    디렉터리에서 파일의 변조 여부를 집중 감시하면 루트킷을 발견할 기회가 커진다. 

     

      또 변경된 명령어 때문에 악성 프로세스나 백도어를 찾아내는 것이 힘들다면

    작업했던 정보나 외부 접속기록을 가지고 있는 로그파일을 검토하는 것도 하나의 방법이다.

     

    하지만 해커도 이를 알고 침투 후에 로그를 삭제하거나,

    침투 중에 로그 데몬을 중지시키기도 하고,

    과도한 조치는 오히려 의심을 살 수 있으므로

    침입 당시의 로그만 삭제하거나 가짜 로그로 대체시키는 수법까지 사용

     

      다음의 도구들로 루트킷을 찾아낼 수 있다. (루트킷을 찾아내는 세 가지 방법)

    chkrootkit으로 rootkit 도구가 시스템에 숨겨져 있는지 찾아내고, 

    chkproc는 해커가 내부 시스템에서 실행시키고 있는 악성 프로세스를 찾아내고, 

    chkwtmp는 지금까지 사용자들의 로그인, 로그아웃 했던 모든 내력을 모두 저장하고 있는 /var/log/wtmp 파일을 점검해서 해커가 비워놓았는지(null bytes) 검사해준다. 

     

     

    https://lrl.kr/lm88

     

      로그로 침입여부를 판단해주는 - Logcheck와 Logwatch 
      해커는 타겟 시스템에 들어와서 파일 등을 변조하거나 악성 백도어를 심어둔 뒤 

    작업 흔적을 지우기 위해서 작업했던 기록을 가지고 있는 로그파일을 변조하기도 하므로 

    관리자는 Logcheck, Logwatch, 그리고 Loganalyzer와 같은 도구로 

    시스템 로그를 검사해서 시스템에서 일어난 중요한 작업이나 

    로그파일 변조유무 등을 확인해서 침투된 여부를 판별할 수 있어야 한다. 
    =>이를 위해서 로그파일을 반드시 다른 머신에 저장시키는 구조의 네트워크를 구축해 두어야 한다. 뒤에서 로그 서버를 별도로 살펴볼 것이다. 
      
      시스템 점검도구로 시스템 로그에 관한 Logcheck와 Logwatch, 파일의 변경이나 백도어 업로드 등

    파일에 관한 Filewatcher, 또 특정 로그 체크와 사용자 정의 작업에 관한 Watchdog 등이 있다. 

     

    Logcheck 도구는 침투가 우려되거나 중요한 서비스 항목에 대해서 로그파일을 생성시켜서 

    해당 서비스에 문제가 있을 때 관리자에게 메일링하도록 설정해주는 도구이다.  

     

      침입감지 시스템(IDS), 침입예방 시스템(IPS)과 네트워크 모니터링

    방화벽(FW)이나 침입감지 시스템(IDS), 침입예방 시스템(IPS)은 일반적으로 Fail Safe 원칙을 따른다. 

     

    네트워크상의 특정 호스트에 설치하고 보안을 설정해서 모니터링과 보안을 적용시키는 도구로 

    ∎ 외부에서 내부의 특정 호스트의 서비스나 포트로 침입하는 것을 감지해서 막는 Firewall(방화벽)

    <=Web Firewall(.htaccess)

     

    ∎ 내부 네트워크에 proxy나 mail relay 등을 통해서 내부 네트워크에서 바이러스 전파를  막아주며 라우터 아래 스위치 장비 밖에 두는 내부 FireWall의 일종인 VirusWall(바이러스 월)

     

    ∎ 네트워크상의 침입을 알려주는 침입감지 시스템 IDS(Intrusion Detection System) <=침입이 있을 때 알리기만 함

     

    ∎ 네트워크상의 침입을 막아주는 침입예방 시스템 IPS(Intrusion Prevention System) <=침입이 있을 때 방어 조치를 취함 

     

    ∎ 종합적인 보안관리 시스템인 통합 보안관리 ESM(Enterprise Security Management), 

     

    ∎ 위협관리 도구들을 묶어놓은 통합 위협관리 UTM(Unified Threat Management) 

     

    ∎ 네트워크상의 노드 추가 등을 관리하는 접근관리 NAC(Network Access Control) 등을 알아본다. 

      현장에서 매우 중시하는 도구들이므로 잘 알아두면 좋을 것이다.  

     

      그리고 다음의 용어도 보안에서 중요하므로 알아두자.

    ■ 위험(risk)은

    ① 예상되는 위협(threat)에 의하여 자산(asset)에 발생할 가능성이 있는 손실의 기대치

    ② 자산의 가치 및 취약성과 위협 요소의 능력, 보호 대책의 효과 등에 의해 영향을 받음

     

    ■ 위협(threat)은 

    ① 자산에 손실을 발생시키는 직/간접적인 원인이나 행위

    ② 보안에 해를 끼칠 수 있는 행동이나 사건

     

    ■ 취약점(vulnerability)은 

    ① 위협에 의하여 손실이 발생하게 되는 자산의 약점(weakpoint)

    ② 기능의 설계 또는 구현 단계에서의 오류나 동작, 설치 또는 운용상의 문제점으로 인하여 정보 시스템이 가지게 되는 보안상 취약점

    =>취약점이 중복되는 지점이 위험하다고 하고, 실제 해킹 등으로 침투하는 행위를 위협이라고 하며, 위협을 통해서 조직의 자산에 해가 있을 수 있다.

     

      네트워크 모니터링 도구들

      외부에서의 침입을 모니터링해서 로그하거나 통보하는 도구들을 FW과 IDS, IPS에 대해서 알아본다.

     

    일반적인 분류로는 NIC(Network Interface Card: 네트워크 카드)가 하나인 In-Line 방식(노드들의 네트워크 주소와 방화벽 주소가 동일함)과 NIC가 두 개인 Out-of-Path 방식(노드의 네트워크 주소가 방화벽의 주소와 다름)이 있다.

     

    ∎ In-Line으로 Snort, Fail2Ban, Suricata, OSSEC, ModSecurity, PacketFence(NAC)ELK(ElasticSearch+Logstash(네트워크에 산재되어 있는 객체를 찾는 도구)+Kibana)를 알아보고,

    PacketFence는 NAC(Network Access Control) 도구의 하나로, 네트워크 접근 제어, 인증, 보안, 위협 탐지 등의 기능을 제공하는 오픈 소스 솔루션입니다. 

     

    ∎ Out-of-Path(란 라우터 밖에 설치하는 것 (아마두 NIC))로

    Linux FW, ASG(Astaro Security Gate), Untangle(유명), Security Onion, FortiGate(상당히 유명,회사에서 이거나 ASG 쓴다)와 Endian을 알아보며, 

     

    ∎ Cloud Network Monitoring으로 Zabbix(알면 회사 감동), MRTG(Multi Router Traffic Grapher), Cacti, Nagios(졸라 유명해) 와 Ganglia를 알아본다.  

     

     

      IDS/IPS의 고전 - Snort (졸라 유명)

      Snort는 침입감지를 수행하는 IDS를 주로 하지만 IPS 역할도 해서 외부로부터의 침입여부를 빠르게 알려주기도 하고

    설정에 따라서 막기도 한다.

    Snort는 sniffer mode, logger mode, 그리고 IDS/IPS mode로 작동될 수 있는데

    Snort가 제대로 작동되려면 AV에서의 악성코드에 대한 데이터베이스가 있어야 하듯이

    유효한 침투에 대한 룰 세트(Signature based) 데이터베이스가 잘 유지되어야 하므로 rule.conf 파일 설정이 중요하다. 

     

      IPS에 강한 - fail2ban 

      이 fail2ban은 IPS로 사용되는데 서버 서비스를 실행중인 서버에 fail2ban을 설치해두면

    외부에서의 의심스런 침투가 있을 때 이를 미리 막아서 서버의 보안을 강화시켜주는 도구이다.

    fail2ban-client는 fail2 ban-server의 jail 설정 등을 확인시키는 콘솔 명령어로써

    일반적인 서버-클라이언트 개념과 무관하므로 주의한다.

    fail2ban의 jail 설정에 따라 서버 머신의 로그 파일을 모니터링해서 서버에 의심스런 호스트 접근을 감지한 뒤

    해당 IP들을 추려서 차단해준다.

    SNORT가 IDS 도구라면 FAIL2BAN은 IPS 도구인데 서버나 방화벽에 설정해서 사용하는 로그기반 도구이다. 

     

      설정은 /etc/fail2ban/fail2ban.conf 파일에서 해줄 수 있지만 기본설정을 그대로 놔두고 사용해도 문제는 없다. 의심스런 행동이 몇 번 탐지되면 어떤 액션을 취해야할지 이 파일에서 '필터.액션' 구문으로 jail을 정의해준다. 

     

      이 파일을 열고 보면 

    selinux-ssh의 SELinux, apache-auth 등 인증  

    nginx-http-auth, php-url, drupal-auth, webmin-auth, squid, 3proxy 등 WEB 

    proftpd, pure-ftpd, wuftpd, vsftpdFTP

    postfix, sendmail, qmail, dovecotMAIL 

    mysqld-auth, mongodb-authDB

    xinetd, stunnel, pam-generic, nagios, portsentryMONITORING과 SECURITY에 관한 항목들이 있으므로

    이들을 활용해서 원하는 규제를 해줄 수 있다.

     

    *** 참고로 Log level은 Debug > Info > Notice > Warning > Error > Critical (> Emergence) 단계가 있는데

    설정한 로그레벨 이하는 기록하지 않고, 그 이상만 기록한다!!!

    일반적으로 Warn은 오류가 아니어서 정상실행되므로 이 레벨로 로그 경고 설정을 해준다.

     

      IDS/IPS로 강력한 - suricata 
      이 도구는 single-thread인 Snort의 진보된 multi-thread 버전으로 어느 정도의 RAM과 CPU만 있는 머신이라면 웬만한 규모의 네트워크에서 IDS/IPS 역할을 잘 수행한다. 

     

    suricata.yaml 파일의 Detect-engine에서 low, medium, high, 그리고 사용자정의 보안레벨을 설정할 수 있다. 

    Suricata는 Snort의 다음 버전으로 알려져 있는데 여기서도 지정된 룰로 침투여부를 판단할 때 snorts의 룰과 호환된다. 

     

     

      의심스러운 호스트나 네트워크를 규제해주는 - DenyHosts 

      이 도구도 Fail2Ban처럼 IPS로 사용된다.

    원격에서 여러 IP로 무차별 연결을 시도하는 DDoS 공격의 해커를 막는 기법 중 하나이다.

     

    서버가 DDoS 공격에서와 같이 사설 IP나 알 수 없는 무수한 악성 IP 주소들을 모두 막을 수 없으므로 연결을 허용할 IP 주소만 지정해두고 서버의 Messages나 Secure 로그를 읽어서 이런 이상한 IP 주소나 네트워크들의 연결을 TCPwrapper의 /etc/hosts.deny 파일에 넣어서 막는 기법이다. 

     

      TCPwrapper는 일반적으로 /etc/hosts.allow 파일을 먼저 보고 /etc/hosts.deny 파일을 나중에 보므로 설정은 먼저 /etc/hosts.deny 파일에서 모두 거부로 해두고, /etc/hosts.allow 파일에서 필요한 것들만 허용해주면 /etc/hosts.allow의 허용할 것 이외에는 모두 /etc/hosts.deny에서 거부된다.

     

      IDS/IPS/NAC 로 사용되는 - OSSEC(Open Source SECurity)

      OSSEC도 강력한 IDS/IPS 도구인데 그래픽 모드로 다양하게 설정해서 네트워크상의 노드들의 활동을 볼 수 있다.

    네트워크상의 노드들은 OSSEC의 에이전트가 되어서 자신들의 정보를 OSSEC에게 보내는 방식으로 해서 OSSEC가 노드들의 활동을 감지할 수 있다. 

      보통 보안 설정은 HID(Host Intrusion Detection,컴퓨터로 들어오는)과 NID(Network Intrusion Detection,네트워크로 침투하는 )로 나누어서 설정한다. OSSEC는 HID 설정인데 Ubuntu 20.04에서 실행하면 잘된다. 모니터링 대상이 되는 각 호스트에 agent를 넣어서 각 호스트의 정보를 모니터링 서버에게 보내면 서버 한 곳에서 각 호스트의 정보를 모아 볼 수 있다.

     모니터링을 하려면 모니터링 하려는 곳에 각각 agent가 들어가 있어야 한다. agent 는 소속된 컴퓨터의 정보를 메인 모니터링 하는 곳으로 보낸다.

     

      보안 침해를 감지하는 - ModSecurity 

      ModSecurity도 보안 침투를 감지하고 막아주는 방화벽으로 손색이 없는 도구인데

    Web, DB, 그리고 DDoS 공격도 잘 막아준다.

     

    프로그램에 내장된 룰 이외에 한국정보보호진흥원(http://www.securenet.or.kr)에서 ModSecurity의 룰을 별도로 다운받아서 사용할 수도 있다. 우리나라 보안기관에서 지원하고 있는 도구이므로 잘 알아두면 좋다.

     

연의 취업 도전기.