Leta Learns

서버 분석 프로그램 만들기 본문

Server

서버 분석 프로그램 만들기

leta 2022. 11. 17. 10:22

정보보안 수업 과제 <서버 분석 프로그램 만들기>

교수님이 제공한 3개의 서버 ip를 입력하면 운영체제, 웹 서버 유무, SSH 유무, 데이터베이스 유무 및 버전을 출력하는 프로그램을 만들어야 한다.

 

 

1. 텔넷 설치

텔넷을 쓰지 않고 바로 프로그램을 작성해도 되긴 하는데 나는 처음에 과제를 어떻게 진행할지 갈피가 잡히지 않아서 우선 텔넷을 사용했다. 텔넷에서 각 서버가 어떤 포트를 열고있는지 먼저 확인을 하고 그것을 소켓 프로그래밍으로 바꿀 계획이었다.

텔넷 설치는 아래 링크를 참고하였다.

https://bebeya.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B010-%ED%85%94%EB%84%B7-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0Telnet-Client

 

윈도우10 - 텔넷 클라이언트 설치하기(Telnet Client)

윈도우10 - 텔넷 클라이언트 설치하기(Telnet Client) [텔넷 설치여부 확인하기] 윈도우 + R키 를 눌러 실행창을 실행 후 [cmd] 를 입력하고 확인을 누릅니다 커맨드 창에 telnet 을 입력하고 화면전환이

bebeya.tistory.com

 

 

2. 텔넷 사용해서 ip 검색

과제에 사용되는 3개의 ip주소를 텔넷을 사용하여 분석하였다. 

cmd에서

telnet <IP> <port번호>

를 입력하면 결과를 확인할 수 있다.

 

내가 사용한 포트 번호는 아래와 같다.

 

웹 서버: 80

SSH: 22

데이터베이스: 3306 (MySQL)

 

데이터베이스의 경우 MSSQL(1433), 오라클 DB(1521), MySQL(3306), PostgreSQL(5432)를 모두 넣어보았다.

 

과제에서 주어진 3개의 서버는 데이터베이스를 사용하지 않거나, MySQL을 사용하는 경우 두 가지였기 때문에 MySQL 포트번호만 사용하였다.

 

대상 서버의 포트가 열려 있는지 확인하는 3가지 방법 : NHN Cloud Meetup (toast.com)

 

대상 서버의 포트가 열려 있는지 확인하는 3가지 방법 : NHN Cloud Meetup

ACL이나 보안 그룹(security group)으로 포트가 막혀 있는지 확인하고 싶을 때가 많습니다.

meetup.toast.com

 

 

잘 하고 있는 건지 확실하지 않아서 아래 링크 사용해서 telnet, netstat 두 개 다 사용하는 방법으로 다시 한 번 확인해보았다.

cmd 창을 두 개 실행한 후

각각의 cmd 창에

telnet <IP> <port번호>
netstat -an|find "IP:port번호"

를 실행하였다.

https://uutopia.tistory.com/4

 

실무에서 telnet 명령어를 사용하여 간단하게 방화벽 확인하는 방법

실무에서 서버간 연동작업을 수행할 때 네트워크 방화벽을 서로 오픈하게 된다. 송신서버는 OUTBOUND, 수신서버는 INBOUND를 오픈하여 통신을 하게 되는데 통신오류가 발생하면 원인을 찾기가 쉽지

uutopia.tistory.com

 

 

 

3. 파이썬 소켓 프로그래밍 코드 작성

교수님이 코드는 소켓 프로그래밍 클라이언트 코드를 찾아서 조금만 수정하면 된다고 얘기하셨었다.

그래서 아래 링크의 클라이언트 코드를 참고하였다.

https://on1ystar.github.io/socket%20programming/python/2021/03/21/socket-2/

 

소켓 프로그래밍 with Python - 간단한 서버/클라이언트 구현 · on1ystar

소켓 프로그래밍 with Python - 간단한 서버/클라이언트 구현 21 Mar 2021 의문점이나 지적 등의 관심 및 조언을 위한 댓글이나 메일은 언제나 환영이고 감사합니다. python socket 모듈 BSD socket 인터페이

on1ystar.github.io

 

한 ip에 대해서 웹 서버, SSH, 데이터베이스의 유무를 파악해야 했기 때문에 각각의 포트에 대해서 소켓 프로그래밍을 하였다. 포트가 열려있지 않은 경우 에러가 발생하는데, 다른 포트의 분석 결과에 영향을 미치지 않도록 try ~ except 구문을 사용하였다.

 

운영체제 분석도 해야했다.

SSH 파트에서 서버 쪽으로 메시지를 날리면 서버가 운영체제 정보가 담긴 메시지를 보내주기도 하는데, 이를 통해서 운영체제 분석을 하였다.

 

서버에 메시지를 보내고, 서버로부터 메시지를 받는 것은 아래 링크를 참고하였다.

https://chichi-story.tistory.com/19

 

[Python] 소켓통신 (server, client)

python 소켓통신 1. socket-server.py #-*- coding:utf-8 -*- import socket # 통신 정보 설정 IP = '' PORT = 5050 SIZE = 1024 ADDR = (IP, PORT) # 서버 소켓 설정 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server_socket: server_sock

chichi-story.tistory.com

 

 


 

 

코드를 올리고 싶긴 한데, 교수님이 추후에도 같은 과제를 내주실 지도 몰라서 일단 올리지 않기로 했다.

(사실 아직 채점 전이라 내가 잘 한 건지 아닌지도 모른다 ㅎㅎ)

 

과제를 처음 받았을 때는 뭘 해야하는지 감이 안 잡혔는데 실제로 해보니 생각보다 그렇게 어렵지는 않았고, 오히려 간단한 프로그래밍이라 재밌었다.

 

 

 

Comments