일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- django
- B대면노래방
- 마라마라빔
- 최소스패닝트리
- minimum spanning tree
- 종합설계
- Bellman-Ford
- 함밥
- 파이썬
- codetree
- Planned
- MyPlaylist
- 백트래킹
- 동적계획법
- DP
- BFS
- 모각코
- 프로그래머스
- 그리디알고리즘
- 데이터베이스
- 알고리즘
- SQL
- DFS
- 소프트웨어공학
- programmers
- 실습
- Kruskal
- 장고
- 코드트리
- 백준
- Today
- Total
Leta Learns
서버 분석 프로그램 만들기 본문
정보보안 수업 과제 <서버 분석 프로그램 만들기>
교수님이 제공한 3개의 서버 ip를 입력하면 운영체제, 웹 서버 유무, SSH 유무, 데이터베이스 유무 및 버전을 출력하는 프로그램을 만들어야 한다.
1. 텔넷 설치
텔넷을 쓰지 않고 바로 프로그램을 작성해도 되긴 하는데 나는 처음에 과제를 어떻게 진행할지 갈피가 잡히지 않아서 우선 텔넷을 사용했다. 텔넷에서 각 서버가 어떤 포트를 열고있는지 먼저 확인을 하고 그것을 소켓 프로그래밍으로 바꿀 계획이었다.
텔넷 설치는 아래 링크를 참고하였다.
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)
잘 하고 있는 건지 확실하지 않아서 아래 링크 사용해서 telnet, netstat 두 개 다 사용하는 방법으로 다시 한 번 확인해보았다.
cmd 창을 두 개 실행한 후
각각의 cmd 창에
telnet <IP> <port번호>
netstat -an|find "IP:port번호"
를 실행하였다.
3. 파이썬 소켓 프로그래밍 코드 작성
교수님이 코드는 소켓 프로그래밍 클라이언트 코드를 찾아서 조금만 수정하면 된다고 얘기하셨었다.
그래서 아래 링크의 클라이언트 코드를 참고하였다.
https://on1ystar.github.io/socket%20programming/python/2021/03/21/socket-2/
한 ip에 대해서 웹 서버, SSH, 데이터베이스의 유무를 파악해야 했기 때문에 각각의 포트에 대해서 소켓 프로그래밍을 하였다. 포트가 열려있지 않은 경우 에러가 발생하는데, 다른 포트의 분석 결과에 영향을 미치지 않도록 try ~ except 구문을 사용하였다.
운영체제 분석도 해야했다.
SSH 파트에서 서버 쪽으로 메시지를 날리면 서버가 운영체제 정보가 담긴 메시지를 보내주기도 하는데, 이를 통해서 운영체제 분석을 하였다.
서버에 메시지를 보내고, 서버로부터 메시지를 받는 것은 아래 링크를 참고하였다.
https://chichi-story.tistory.com/19
코드를 올리고 싶긴 한데, 교수님이 추후에도 같은 과제를 내주실 지도 몰라서 일단 올리지 않기로 했다.
(사실 아직 채점 전이라 내가 잘 한 건지 아닌지도 모른다 ㅎㅎ)
과제를 처음 받았을 때는 뭘 해야하는지 감이 안 잡혔는데 실제로 해보니 생각보다 그렇게 어렵지는 않았고, 오히려 간단한 프로그래밍이라 재밌었다.
'Server' 카테고리의 다른 글
Linux에 MySQL Server 설치 및 삭제하기 (0) | 2022.10.07 |
---|---|
Ubuntu 계정 생성 및 확인 (0) | 2022.10.07 |
Spring 사용하기 실습 (0) | 2022.05.13 |
개발 환경 구축 - Spring Boot (0) | 2022.05.07 |
도메인과 서브도메인에 HTTPS 적용 (Let's Encrypt) (0) | 2022.03.28 |