상세 컨텐츠

본문 제목

인터넷 침해사고 경보와 보안공지 모니터링 with 파이썬

Python

by mp.jamong 2020. 12. 19. 08:00

본문

 

KISA 보호나라는 인터넷 침해사고 관련 예방과 대응 소식을 공유해주는 곳으로 사이버 보안 관련 다양한 자료를 제공하고 있습니다. 인터넷 침해사고 발생 상황에 따른 경보 안내와 보안 취약점 정보, 각종 패치 정보를 제공함으로써 사용자에게 안전한 인터넷 생활을 할 수 있도록 도와주고 있습니다.

 

 

KISA 인터넷 보호나라&KrCERT

KISA 인터넷 보호나라&KrCERT

www.boho.or.kr

 

 

인터넷 침해사고 경보

 

KISA 인터넷 보호나라에서는 사이버위협 경보 단계를 정상, 관심, 주의, 경계, 심각 등 5단계로 나뉘어 실시간으로 상태를 제공해주고 있습니다. 각 단계별 세부 설명은 아래 링크를 통해 확인이 가능합니다.

 

 

사이버위협 경보 단계

KISA 인터넷 보호나라&KrCERT

www.boho.or.kr

 

 

보안공지

 

KISA 인터넷 보호나라 자료실에는 보안공지, 보고서, 취약점 정보 등 다양한 자료를 제공해주고 있습니다. 자료실의 내용은 아래 링크를 통해 확인이 가능합니다.

 

 

자료실

KISA 인터넷 보호나라&KrCERT

www.boho.or.kr

 

 

파이썬을 이용한 인터넷 침해사고 경보와 보안공지 모니터링

 

위에서 설명한 KISA 인터넷 보호나라에서 제공하는 인터넷 침해사고 경보 정보와 보안공지에 대해 파이썬을 이용하여 모니터링과 자동 수집 방법에 대해 소개드립니다.

 

▷ 모니터링 자동화를 위해 필요한 파이썬 모듈과 설치 방법은 아래와 같습니다.

 → Selenium 모듈 설치 : pip install selenium

 → datetime 모듈 설치 : pip install datetime

 → dateutil 모듈 설치 : pip install python-dateutil

 → pip install beautifulsoup 모듈 설치 : pip install beautifulsoup4

 

동작 방식은 아래와 같습니다.

 → KISA 인터넷 보호나라 웹사이트에 접속 후 메인 페이지 정보를 가져옵니다.

 → 인터넷 침해사고 경보 단계에 대한 결과 정보를 가져와 원하는 형태로 데이터를 가공합니다.

 → 보안공지 등 자료실에 업데이트된 문서가 있는지 확인하고 해당 기간의 데이터가 있다면 관련 정보를 수집합니다.

 

 동작 방식을 파이썬으로 구현한 내용은 아래와 같습니다.

 


from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
import time
import datetime
from dateutil.parser import parse

# 현재 시간 정보 가져오기와 1일 전 데이터 수집
today = datetime.datetime.now()
today_diff = today + datetime.timedelta(days=-1)

# webdriver 옵션
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko")

# webdriver 설정(Chrome, Firefox 등) - Headless 모드
driver = webdriver.Chrome('chromedriver.exe', options=chrome_options)

# KISA 보호나라 URL 정보
url = 'https://www.boho.or.kr'


try:
    driver.get(url)
    time.sleep(2)

    html = driver.page_source
    soup = BeautifulSoup(html, 'html.parser')

    # 인터넷 침해사고 경보 정보 수집
    bohonara = soup.select_one('head > title').text
    alert_msg = soup.select_one('#gnb > div > div > div')
    articles = soup.select_one('#totalNewsPC > div > ul')

    alert_msg_title = alert_msg.h2.text
    alert_msg_date = alert_msg.find(attrs={'class': 'todayDate'}).text
    alert_msg_state = alert_msg.find(attrs={'class': 'state'}).text

    print(bohonara, ' ', alert_msg_title, ' ', alert_msg_date, ' ', alert_msg_state, '\n')

    # 보안공지 업데이트 확인과 자료실 문서 카테고리별 분류
    for article in articles:
        if article.find('span') == -1:
            pass
        else:
            article_type = article.find_all('span')[0].text
            if article_type == 'E  N  G':
                article_type = '해외소식'

            article_date_raw = article.find_all('span')[1].text
            article_date_trans = article_date_raw.replace(".", "-")
            article_date = parse(article_date_trans)

            article_title = article.a.text
            article_title_strip = article_title.strip()
            article_link = url + article.a['href']

            if article_date.date() >= today_diff.date():
                print('[', article_type, '] ', article_title_strip, article_date.date(), article_link)

except Exception as e:
    print(e)
finally:
    driver.quit()

 

▷ 위의 스크립트 실행시 아래와 같이 결과가 출력됩니다.

 

 

 

 

▽ 같이 보면 더 좋은 블로그 글 

 

RSS를 이용한 보안뉴스 클리핑 자동화 with 파이썬

매일 발생하는 사건, 사고를 정리하기 위해 여러 언론사를 드나들며, 카테고리별로 분류하는 것이 어렵지는 않지만 여간 귀찮은 일이 아닐 수 없습니다. 필요한 카테고리의 항목의 내용에 대해

mpjamong.tistory.com

 

웹페이지의 외부 URL 리스트 확인 방법 with 파이썬

웹페이지 내에 존재하는 외부 URL 리스트 확인이 필요한 경우가 있습니다. 첫번째 이유는 외부 URL 리스트가 많아서 궁금한 경우가 있고, 두번째 이유는 외부 URL이 정상적인 URL인지 확인이 필요할

mpjamong.tistory.com

관련글 더보기

댓글 영역