Email: [email protected]
Nginx event driven/async IO 구조를 이용한 ML endpoint rest API 호출 및 MySQL DB Insert를 통한 고성능 방화벽 구현
![image](https://private-user-images.githubusercontent.com/75467180/288728193-2a6150ee-93f2-49ff-98d5-32ceab6dd9a0.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIxNzYzMDMsIm5iZiI6MTcyMjE3NjAwMywicGF0aCI6Ii83NTQ2NzE4MC8yODg3MjgxOTMtMmE2MTUwZWUtOTNmMi00OWZmLTk4ZDUtMzJjZWFiNmRkOWEwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI4VDE0MTMyM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWY1NzA5MGJmZDIxYmQxODYxY2ViOWRhOWVmZjk3NTE3MWZmYzZlMGI0ZDk0N2E3YmJkODg1NzczNDAxZmY1YzcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.YSXEjzin0eeIzu0_sckDjEIL8rz6ClRPQguX4_mDJ5Q)
![image](https://private-user-images.githubusercontent.com/75467180/288728328-7f97feff-5d06-47c6-a3d0-d17bb4e07961.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIxNzYzMDMsIm5iZiI6MTcyMjE3NjAwMywicGF0aCI6Ii83NTQ2NzE4MC8yODg3MjgzMjgtN2Y5N2ZlZmYtNWQwNi00N2M2LWEzZDAtZDE3YmI0ZTA3OTYxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI4VDE0MTMyM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM5NzZjZjg5NWM0ZjE5OTY2YmY2NmI3M2ZkMTFkYzQ1OThjYmRjZWJhMjcxYzA3Mjc0ZDkwOTNkNmQxYWQzNDUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.3d-SlsAZtsoMibLemQ8Mapoh_Ys8hZGRS8TacqoToys)
![image](https://private-user-images.githubusercontent.com/75467180/288728391-cc997a4e-2cdd-4f68-8132-424c6a210076.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIxNzYzMDMsIm5iZiI6MTcyMjE3NjAwMywicGF0aCI6Ii83NTQ2NzE4MC8yODg3MjgzOTEtY2M5OTdhNGUtMmNkZC00ZjY4LTgxMzItNDI0YzZhMjEwMDc2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI4VDE0MTMyM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTA0YTA4NzJjN2Y0MzgyOWJiYmE5YmNjZDQ4N2ZhOGE4MmIzYTU2YWFmYWE2ODdhMTNlM2FmY2ExNGU0ODQ0ZDYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.rRAx1vgghJWGbMI_-NEw2FQWPSH0bxLLTmVFYjIqrYw)
이 프로젝트를 설치하기 위해서는 다음 단계를 따라야 합니다:
- Git 저장소를 클론합니다:
git clone [repository-url]
- 필요한 환경 변수 파일(
.env
)을 설정합니다.
- dash.env, waf.env, db.env 파일을 만들어서 환경변수를 설정해줍니다.
- Docker를 사용하여 컨테이너를 구축 및 실행합니다:
docker-compose up
또는docker-compose up -d
를 터미널에 입력합니다.
AWS endpoint URL이 필수적으로 필요합니다
이 프로젝트를 사용하기 위한 단계는 다음과 같습니다:
- 웹 대시보드를 통해 사용자 인터페이스에 접근합니다.
- 필요한 설정을 조정하고 프로젝트를 시작합니다.
- 로그 및 보안 관련 데이터를 모니터링합니다.
- AWS Endpoint를 호출하기 위해서는 WAF.env 파일에 aws api 정보를 입력한다
예시)
- AWS_HOST= {your sagemaker host url}
- AWS_KEY= {your key}
- AWS_SECRET= {your secret Key}
- AWS_REGION= {your location}
- AWS_SERVICE=sagemaker
- CONTENT_TYPE=application/json
- REQUEST_METHOD=POST
- REQUEST_PATH= {작성}
- http:https://localhost:9090으로 접속하여 테스트 웹 환경을 띄운다.
- 로그인이나, 사진 업로드 기능에 공격구분을 넣어본다.
- http:https://localhost:9093 으로 접속하여 어떤 공격인지 확인해본다.
![image](https://private-user-images.githubusercontent.com/75467180/288724027-ffc40047-feac-4f2d-9002-906abb6455ed.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIxNzYzMDMsIm5iZiI6MTcyMjE3NjAwMywicGF0aCI6Ii83NTQ2NzE4MC8yODg3MjQwMjctZmZjNDAwNDctZmVhYy00ZjJkLTkwMDItOTA2YWJiNjQ1NWVkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI4VDE0MTMyM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVlMjEwM2JhY2I1MTdjOTEyMjE0YjBmODdlZTQwNmUwZDRiYWFhY2I4OGY0NWJjOTEzYzViYTJhZWI3MzJjZTMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.SP67eSpBo-6mNsFn_qdhjXDmkPDI7TIqb67dspWQ54o)