'전체 글'에 해당되는 글 403건

  1. 2026.08.26 웹쉘 탐색/취약점 스캐닝 시도
  2. 2026.08.25 네트워크 연결 안될때 의심해볼 포인트
  3. 2026.08.24 DMZ
  4. 2026.08.13 DB와 DB를 연결하는 방법(데이터베이스 연결방법)
  5. 2026.08.12 [Oracle] Archive (Log) Mode
  6. 2026.03.18 Docker와 Kubernetes(Minikube) 환경을 구축
  7. 2026.03.17 [Ubuntu 24.04] swap 설정 ~ ssh server 설정
  8. 2026.03.17 Google Antigravity
  9. 2025.11.29 서브넷 마스크 및 2진수 IP를 10진수로 변환하는 방법을 인터넷으로 자동으로 계산해주는 사이트
  10. 2024.11.27 [네트워크] 기본적인 네트워크 설정 & 외부 통신 확인

웹쉘 탐색/취약점 스캐닝 시도

|
172.182.200.96 - - [25/Aug/2026:00:08:31 +0900] "GET /wp-content/plugins/hellopress/wp_filemanager.php HTTP/1.1" 404 1047
172.182.200.96 - - [25/Aug/2026:00:08:31 +0900] "GET /this_is_a_new_hello_world.php HTTP/1.1" 404 1009
172.182.200.96 - - [25/Aug/2026:00:08:31 +0900] "GET /wp-includes/theme-compat/index.php HTTP/1.1" 404 1019
172.182.200.96 - - [25/Aug/2026:00:08:31 +0900] "GET /wp-includes/ID3/index.php HTTP/1.1" 404 1001
172.182.200.96 - - [25/Aug/2026:00:08:31 +0900] "GET /wp-includes/blocks/comment-template/index.php HTTP/1.1" 404 1041
172.182.200.96 - - [25/Aug/2026:00:08:31 +0900] "GET /wordpress/wp-includes/Requests/index.php HTTP/1.1" 404 1031
172.182.200.96 - - [25/Aug/2026:00:08:32 +0900] "GET /wp-login.php HTTP/1.1" 404 975
172.182.200.96 - - [25/Aug/2026:00:08:32 +0900] "GET /test/index.php HTTP/1.1" 404 979
172.182.200.96 - - [25/Aug/2026:00:08:32 +0900] "GET /wp-includes/blocks/read-more/index.php HTTP/1.1" 404 1027
172.182.200.96 - - [25/Aug/2026:00:08:32 +0900] "GET /.well-known/index.php HTTP/1.1" 404 993
172.182.200.96 - - [25/Aug/2026:00:08:32 +0900] "GET /css/index.php HTTP/1.1" 404 977
172.182.200.96 - - [25/Aug/2026:00:08:32 +0900] "GET /wp-content/uploads/gravity_forms/b/d/e/g/dfylbgoahqt.php HTTP/1.1" 404 1063
172.182.200.96 - - [25/Aug/2026:00:08:32 +0900] "GET /wp-includes/js/thickbox/index.php HTTP/1.1" 404 1017
172.182.200.96 - - [25/Aug/2026:00:08:33 +0900] "GET /modules/mod_simplefileuploadv1.3/elements/Cyb3r.php HTTP/1.1" 404 1053
172.182.200.96 - - [25/Aug/2026:00:08:33 +0900] "GET /wp-includes/php-compat/index.php HTTP/1.1" 404 1015
172.182.200.96 - - [25/Aug/2026:00:08:33 +0900] "GET /echkm.php HTTP/1.1" 404 969
172.182.200.96 - - [25/Aug/2026:00:08:33 +0900] "GET /wordpress/first.php HTTP/1.1" 404 989
172.182.200.96 - - [25/Aug/2026:00:08:33 +0900] "GET /wp-includes/Text/about.php7 HTTP/1.1" 404 1005
172.182.200.96 - - [25/Aug/2026:00:08:33 +0900] "GET //wp-content/index.php HTTP/1.1" 404 993
172.182.200.96 - - [25/Aug/2026:00:08:33 +0900] "GET /wp/wp-includes//index.php HTTP/1.1" 404 1001
172.182.200.96 - - [25/Aug/2026:00:08:34 +0900] "GET /upload.php HTTP/1.1" 404 971
172.182.200.96 - - [25/Aug/2026:00:08:34 +0900] "GET /images/gmapfp/xsamxadoo.php HTTP/1.1" 404 1005
172.182.200.96 - - [25/Aug/2026:00:08:34 +0900] "GET /wp-includes/pomo/index.php HTTP/1.1" 404 1003
172.182.200.96 - - [25/Aug/2026:00:08:34 +0900] "GET /wp-content/themes/home/index.php HTTP/1.1" 404 1015
172.182.200.96 - - [25/Aug/2026:00:08:34 +0900] "GET //wp-includes/theme-compat/index.php HTTP/1.1" 404 1021
172.182.200.96 - - [25/Aug/2026:00:08:34 +0900] "GET /403.php HTTP/1.1" 404 965
172.182.200.96 - - [25/Aug/2026:00:08:34 +0900] "GET /cgi-bin/mt/byp.php HTTP/1.1" 404 987
172.182.200.96 - - [25/Aug/2026:00:08:35 +0900] "GET //wp-includes/Text/Diff/index.php HTTP/1.1" 404 1015
172.182.200.96 - - [25/Aug/2026:00:08:35 +0900] "GET /update/wpup.php HTTP/1.1" 404 981
172.182.200.96 - - [25/Aug/2026:00:08:35 +0900] "GET /wp-includes/Requests/index.php HTTP/1.1" 404 1011
172.182.200.96 - - [25/Aug/2026:00:08:35 +0900] "GET /file.php HTTP/1.1" 404 967
172.182.200.96 - - [25/Aug/2026:00:08:35 +0900] "GET /wp-includes/js/jcrop/Jcrop.php HTTP/1.1" 404 1011
172.182.200.96 - - [25/Aug/2026:00:08:35 +0900] "GET /wp-includes/js/plupload/index.php HTTP/1.1" 404 1017
172.182.200.96 - - [25/Aug/2026:00:08:35 +0900] "GET /security.php HTTP/1.1" 404 975
172.182.200.96 - - [25/Aug/2026:00:08:35 +0900] "GET /wp-admin/css/colors/index.php HTTP/1.1" 404 1009
172.182.200.96 - - [25/Aug/2026:00:08:36 +0900] "GET /wp-content/plugins/hello-dolly/hello.php HTTP/1.1" 404 1031
172.182.200.96 - - [25/Aug/2026:00:08:36 +0900] "GET /wp-includes/js/tinymce/index.php HTTP/1.1" 404 1015
172.182.200.96 - - [25/Aug/2026:00:08:36 +0900] "GET /wp-includes/fonts/about.php HTTP/1.1" 404 1005
172.182.200.96 - - [25/Aug/2026:00:08:36 +0900] "GET /byp.php HTTP/1.1" 404 965
172.182.200.96 - - [25/Aug/2026:00:08:36 +0900] "GET /wp-includes/wp-conflg.php HTTP/1.1" 404 1001
172.182.200.96 - - [25/Aug/2026:00:08:36 +0900] "GET /wp-admin/user/802277/index.php HTTP/1.1" 404 1011
172.182.200.96 - - [25/Aug/2026:00:08:36 +0900] "GET /wp-content/themes/index.php HTTP/1.1" 404 1005
172.182.200.96 - - [25/Aug/2026:00:08:37 +0900] "GET /wp-includes/Text/about.php HTTP/1.1" 404 1003
172.182.200.96 - - [25/Aug/2026:00:08:37 +0900] "GET /wp-content/ai1wm-backups/about.php HTTP/1.1" 404 1019
172.182.200.96 - - [25/Aug/2026:00:08:37 +0900] "GET /wp-includes/images/media/index.php HTTP/1.1" 404 1019
172.182.200.96 - - [25/Aug/2026:00:08:37 +0900] "GET //2.php HTTP/1.1" 404 963
172.182.200.96 - - [25/Aug/2026:00:08:37 +0900] "GET /wp-admin/install.php HTTP/1.1" 404 991
172.182.200.96 - - [25/Aug/2026:00:08:37 +0900] "GET /wp-includes/widgets/index.php HTTP/1.1" 404 1009
172.182.200.96 - - [25/Aug/2026:00:08:37 +0900] "GET //system.php HTTP/1.1" 404 973
172.182.200.96 - - [25/Aug/2026:00:08:38 +0900] "GET //images/security.php HTTP/1.1" 404 991
172.182.200.96 - - [25/Aug/2026:00:08:38 +0900] "GET /wp-includes/blocks/search/index.php HTTP/1.1" 404 1021
172.182.200.96 - - [25/Aug/2026:00:08:38 +0900] "GET /wp-includes/blocks/nextpage/index.php HTTP/1.1" 404 1025
172.182.200.96 - - [25/Aug/2026:00:08:38 +0900] "GET /wp-content/themes/twentytwentyfour/index.php HTTP/1.1" 404 1039
172.182.200.96 - - [25/Aug/2026:00:08:38 +0900] "GET /wp-content/themes/twentytwentyfour/assets/css/geido.php HTTP/1.1" 404 1061
172.182.200.96 - - [25/Aug/2026:00:08:38 +0900] "GET //wp-admin/maint/wp-login.php HTTP/1.1" 404 1007
172.182.200.96 - - [25/Aug/2026:00:08:38 +0900] "GET /wp-includes/blocks/shortcode/index.php HTTP/1.1" 404 1027
172.182.200.96 - - [25/Aug/2026:00:08:39 +0900] "GET /wp-includes/blocks/comments-pagination-numbers/index.php HTTP/1.1" 404 1063
172.182.200.96 - - [25/Aug/2026:00:08:39 +0900] "GET /ws.php HTTP/1.1" 404 963
172.182.200.96 - - [25/Aug/2026:00:08:39 +0900] "GET /wp-includes/IXR/class-IXR-client-merge.php HTTP/1.1" 404 1035
172.182.200.96 - - [25/Aug/2026:00:08:39 +0900] "GET /wp-content/plugins/admin.php HTTP/1.1" 404 1007
172.182.200.96 - - [25/Aug/2026:00:08:39 +0900] "GET /wp-admin/network/index.php HTTP/1.1" 404 1003
172.182.200.96 - - [25/Aug/2026:00:08:39 +0900] "GET /museu/yhweq.php HTTP/1.1" 404 981
172.182.200.96 - - [25/Aug/2026:00:08:39 +0900] "GET /first.php HTTP/1.1" 404 969
172.182.200.96 - - [25/Aug/2026:00:08:40 +0900] "GET /wp-includes/interactivity-api/index.php HTTP/1.1" 404 1029
172.182.200.96 - - [25/Aug/2026:00:08:40 +0900] "GET /autoload_classmap.php HTTP/1.1" 404 993
172.182.200.96 - - [25/Aug/2026:00:08:40 +0900] "GET /Qdkv4tOtNdefault.php HTTP/1.1" 404 991
172.182.200.96 - - [25/Aug/2026:00:08:40 +0900] "GET /wp-content/index.php HTTP/1.1" 404 991
172.182.200.96 - - [25/Aug/2026:00:08:40 +0900] "GET /images/class-config.php HTTP/1.1" 404 997
172.182.200.96 - - [25/Aug/2026:00:08:40 +0900] "GET /wp-includes/blocks/post-date/index.php HTTP/1.1" 404 1027
172.182.200.96 - - [25/Aug/2026:00:08:40 +0900] "GET /wp-includes/blocks/social-link/index.php HTTP/1.1" 404 1031
172.182.200.96 - - [25/Aug/2026:00:08:40 +0900] "GET /wp-includes/IXR/index.php HTTP/1.1" 404 1001
172.182.200.96 - - [25/Aug/2026:00:08:41 +0900] "GET /.well-known/autoconfig/atomlib.php HTTP/1.1" 404 1019
172.182.200.96 - - [25/Aug/2026:00:08:41 +0900] "GET /wp-includes/blocks/text-columns/index.php HTTP/1.1" 404 1033
172.182.200.96 - - [25/Aug/2026:00:08:41 +0900] "GET /wp-includes/blocks/file/index.php HTTP/1.1" 404 1017
172.182.200.96 - - [25/Aug/2026:00:08:41 +0900] "GET /UuAFIYGYKdefault.php HTTP/1.1" 404 991
172.182.200.96 - - [25/Aug/2026:00:08:41 +0900] "GET /wp-admin/css/colors/about.php HTTP/1.1" 404 1009
172.182.200.96 - - [25/Aug/2026:00:08:41 +0900] "GET /wp-includes/Text/Diff/Engine/upload.php HTTP/1.1" 404 1029
172.182.200.96 - - [25/Aug/2026:00:08:41 +0900] "GET /wp-admin/js/index.php HTTP/1.1" 404 993
172.182.200.96 - - [25/Aug/2026:00:08:42 +0900] "GET /wp-admin/images/about.php HTTP/1.1" 404 1001
172.182.200.96 - - [25/Aug/2026:00:08:42 +0900] "GET /wp-includes/Text/Diff/index.php HTTP/1.1" 404 1013
172.182.200.96 - - [25/Aug/2026:00:08:42 +0900] "GET /index/function.php HTTP/1.1" 404 987
172.182.200.96 - - [25/Aug/2026:00:08:42 +0900] "GET /wp-includes/js/thickbox/alfa-rex.php8 HTTP/1.1" 404 1025
172.182.200.96 - - [25/Aug/2026:00:08:42 +0900] "GET /wp-includes/block-patterns/index.php HTTP/1.1" 404 1023
172.182.200.96 - - [25/Aug/2026:00:08:42 +0900] "GET /wp-head.php HTTP/1.1" 404 973
172.182.200.96 - - [25/Aug/2026:00:08:42 +0900] "GET //function/function.php HTTP/1.1" 404 995
172.182.200.96 - - [25/Aug/2026:00:08:43 +0900] "GET /wp-includes/blocks/post-comments-form/index.php HTTP/1.1" 404 1045
172.182.200.96 - - [25/Aug/2026:00:08:43 +0900] "GET /wp-includes/blocks/navigation-submenu/index.php HTTP/1.1" 404 1045
172.182.200.96 - - [25/Aug/2026:00:08:43 +0900] "GET /wp-includes/Requests/library/index.php HTTP/1.1" 404 1027
172.182.200.96 - - [25/Aug/2026:00:08:43 +0900] "GET /wp-includes/Ipv6.php HTTP/1.1" 404 991
172.182.200.96 - - [25/Aug/2026:00:08:43 +0900] "GET //info.php HTTP/1.1" 404 969
172.182.200.96 - - [25/Aug/2026:00:08:43 +0900] "GET /wp-includes/SimplePie/index.php HTTP/1.1" 404 1013
172.182.200.96 - - [25/Aug/2026:00:08:43 +0900] "GET /assets/admin/login/info.php HTTP/1.1" 404 1005
172.182.200.96 - - [25/Aug/2026:00:08:44 +0900] "GET /cgi-bin/index.php HTTP/1.1" 404 985
172.182.200.96 - - [25/Aug/2026:00:08:44 +0900] "GET /dropdown.php HTTP/1.1" 404 975
172.182.200.96 - - [25/Aug/2026:00:08:44 +0900] "GET /wp-content/uploads/Ipv6.php HTTP/1.1" 404 1005
172.182.200.96 - - [25/Aug/2026:00:08:44 +0900] "GET /1index.php HTTP/1.1" 404 971
172.182.200.96 - - [25/Aug/2026:00:08:44 +0900] "GET /.well-known/acme-challenge/local-access.php HTTP/1.1" 404 1037
172.182.200.96 - - [25/Aug/2026:00:08:44 +0900] "GET /wp-includes/blocks/missing/index.php HTTP/1.1" 404 1023
172.182.200.96 - - [25/Aug/2026:00:08:44 +0900] "GET /wp-content/upgrade/index.php HTTP/1.1" 404 1007
172.182.200.96 - - [25/Aug/2026:00:08:44 +0900] "GET /images/security.php HTTP/1.1" 404 989
172.182.200.96 - - [25/Aug/2026:00:08:45 +0900] "GET /uploadx.php HTTP/1.1" 404 973
172.182.200.96 - - [25/Aug/2026:00:08:45 +0900] "GET /browse.php HTTP/1.1" 404 971
172.182.200.96 - - [25/Aug/2026:00:08:45 +0900] "GET /wp-includes/js/crop/index.php HTTP/1.1" 404 1009
172.182.200.96 - - [25/Aug/2026:00:08:45 +0900] "GET /wp-content/upgrade-temp-backup/index.php HTTP/1.1" 404 1031
172.182.200.96 - - [25/Aug/2026:00:08:45 +0900] "GET /x.php HTTP/1.1" 404 961
172.182.200.96 - - [25/Aug/2026:00:08:46 +0900] "GET /wp-content/plugins/index.php HTTP/1.1" 404 1007
172.182.200.96 - - [25/Aug/2026:00:08:46 +0900] "GET /wp-includes/ID3/colour.php HTTP/1.1" 404 1003
172.182.200.96 - - [25/Aug/2026:00:08:46 +0900] "GET /.well-known/file.php HTTP/1.1" 404 991
172.182.200.96 - - [25/Aug/2026:00:08:46 +0900] "GET /wpupex.php HTTP/1.1" 404 971
172.182.200.96 - - [25/Aug/2026:00:08:46 +0900] "GET /wp-includes/blocks/buttons/index.php HTTP/1.1" 404 1023
172.182.200.96 - - [25/Aug/2026:00:08:46 +0900] "GET //wp-content/uploads/index.php HTTP/1.1" 404 1009
172.182.200.96 - - [25/Aug/2026:00:08:46 +0900] "GET /.cache/x.php HTTP/1.1" 404 975
172.182.200.96 - - [25/Aug/2026:00:08:47 +0900] "GET /wp-includes/assets/index.php HTTP/1.1" 404 1007
172.182.200.96 - - [25/Aug/2026:00:08:47 +0900] "GET /layout/438884/index.php HTTP/1.1" 404 997
172.182.200.96 - - [25/Aug/2026:00:08:47 +0900] "GET /wp-includes/blocks/paragraph/index.php HTTP/1.1" 404 1027
172.182.200.96 - - [25/Aug/2026:00:08:47 +0900] "GET /wp-content/plugins/hellopress/wp_filemanager.php HTTP/1.1" 404 1047
172.182.200.96 - - [25/Aug/2026:00:08:47 +0900] "GET /wp-includes/SimplePie/Content/Type/index.php HTTP/1.1" 404 1039
172.182.200.96 - - [25/Aug/2026:00:08:47 +0900] "GET /wp-includes/blocks/freeform/index.php HTTP/1.1" 404 1025
172.182.200.96 - - [25/Aug/2026:00:08:47 +0900] "GET //index/function.php HTTP/1.1" 404 989
172.182.200.96 - - [25/Aug/2026:00:08:48 +0900] "GET /wp-includes/blocks/post-author-biography/824476/index.php HTTP/1.1" 404 1065
172.182.200.96 - - [25/Aug/2026:00:08:48 +0900] "GET /wp-includes/PHPMailer/index.php HTTP/1.1" 404 1013
172.182.200.96 - - [25/Aug/2026:00:08:48 +0900] "GET /wp-includes/index.php HTTP/1.1" 404 993
172.182.200.96 - - [25/Aug/2026:00:08:48 +0900] "GET /2.php HTTP/1.1" 404 961
172.182.200.96 - - [25/Aug/2026:00:08:48 +0900] "GET /wp-content/themes/xss/about.php7 HTTP/1.1" 404 1015
172.182.200.96 - - [25/Aug/2026:00:08:48 +0900] "GET /first/function.php HTTP/1.1" 404 987
172.182.200.96 - - [25/Aug/2026:00:08:48 +0900] "GET /x/index.php HTTP/1.1" 404 973
172.182.200.96 - - [25/Aug/2026:00:08:49 +0900] "GET /wp-includes/blocks/post-terms/index.php HTTP/1.1" 404 1029
172.182.200.96 - - [25/Aug/2026:00:08:49 +0900] "GET /fonts/index.php HTTP/1.1" 404 981
172.182.200.96 - - [25/Aug/2026:00:08:49 +0900] "GET /wp-includes/sitemaps/about.php HTTP/1.1" 404 1011
172.182.200.96 - - [25/Aug/2026:00:08:49 +0900] "GET /wp-content/uploads/2023/index.php HTTP/1.1" 404 1017
172.182.200.96 - - [25/Aug/2026:00:08:49 +0900] "GET /wp-includes/rest-api/fields/index.php HTTP/1.1" 404 1025
172.182.200.96 - - [25/Aug/2026:00:08:49 +0900] "GET /wp-includes/blocks/details/index.php HTTP/1.1" 404 1023
172.182.200.96 - - [25/Aug/2026:00:08:49 +0900] "GET /well-known/index.php HTTP/1.1" 404 991
172.182.200.96 - - [25/Aug/2026:00:08:50 +0900] "GET /help/crnpwfiu.php HTTP/1.1" 404 985
172.182.200.96 - - [25/Aug/2026:00:08:50 +0900] "GET /wp-admin/css/colors/blue/admin.php HTTP/1.1" 404 1019
172.182.200.96 - - [25/Aug/2026:00:08:50 +0900] "GET /admin/680449/index.php HTTP/1.1" 404 995
172.182.200.96 - - [25/Aug/2026:00:08:50 +0900] "GET /update/bibil.php HTTP/1.1" 404 983
172.182.200.96 - - [25/Aug/2026:00:08:50 +0900] "GET /wordpress/wp-content/plugins/cvqvgfk/index.php HTTP/1.1" 404 1043
172.182.200.96 - - [25/Aug/2026:00:08:50 +0900] "GET /wp-includes/blocks/media-text/index.php HTTP/1.1" 404 1029
172.182.200.96 - - [25/Aug/2026:00:08:50 +0900] "GET /worksec.php HTTP/1.1" 404 973
172.182.200.96 - - [25/Aug/2026:00:08:51 +0900] "GET /wp-includes/IXR/Ipv6.php HTTP/1.1" 404 999
172.182.200.96 - - [25/Aug/2026:00:08:51 +0900] "GET /wp-admin/upgrade.php HTTP/1.1" 404 991
172.182.200.96 - - [25/Aug/2026:00:08:51 +0900] "GET /wp-content/plugins/cp-pro/js.php HTTP/1.1" 404 1015
172.182.200.96 - - [25/Aug/2026:00:08:51 +0900] "GET /shell20211028.php HTTP/1.1" 404 985
172.182.200.96 - - [25/Aug/2026:00:08:51 +0900] "GET /wp-content/wp-plugins/aspose-pdf-importer/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 1135
172.182.200.96 - - [25/Aug/2026:00:08:51 +0900] "GET /wp-includes/certificates/index.php HTTP/1.1" 404 1019
172.182.200.96 - - [25/Aug/2026:00:08:51 +0900] "GET /wp-admin/css/colors/coffee/index.php HTTP/1.1" 404 1023
172.182.200.96 - - [25/Aug/2026:00:08:52 +0900] "GET /info.php HTTP/1.1" 404 967
172.182.200.96 - - [25/Aug/2026:00:08:52 +0900] "GET /modules/ets_whatsapp/security.php HTTP/1.1" 404 1017
172.182.200.96 - - [25/Aug/2026:00:08:52 +0900] "GET /wp-includes/blocks/gallery/index.php HTTP/1.1" 404 1023
172.182.200.96 - - [25/Aug/2026:00:08:52 +0900] "GET /SzATuRit63g.php HTTP/1.1" 404 981
172.182.200.96 - - [25/Aug/2026:00:08:52 +0900] "GET //wp-includes/js/tinymce/index.php HTTP/1.1" 404 1017
172.182.200.96 - - [25/Aug/2026:00:08:52 +0900] "GET /wp-admin/gQ2zxmHJ3RF.php HTTP/1.1" 404 999
172.182.200.96 - - [25/Aug/2026:00:08:52 +0900] "GET /wp-includes/blocks/query-pagination-numbers/index.php HTTP/1.1" 404 1057
172.182.200.96 - - [25/Aug/2026:00:08:53 +0900] "GET /kgoc6awap3napxxxdCdefault.php HTTP/1.1" 404 1009
172.182.200.96 - - [25/Aug/2026:00:08:53 +0900] "GET /wp-content/themes/twentytwentytwo/index.php HTTP/1.1" 404 1037
172.182.200.96 - - [25/Aug/2026:00:08:53 +0900] "GET /test.php HTTP/1.1" 404 967
172.182.200.96 - - [25/Aug/2026:00:08:53 +0900] "GET /wp-load.php HTTP/1.1" 404 973
172.182.200.96 - - [25/Aug/2026:00:08:53 +0900] "GET //inputs.php HTTP/1.1" 404 973
172.182.200.96 - - [25/Aug/2026:00:08:53 +0900] "GET /wp-admin/css/wp-login.php HTTP/1.1" 404 1001
172.182.200.96 - - [25/Aug/2026:00:08:53 +0900] "GET /wp-includes/Requests/about.php HTTP/1.1" 404 1011
172.182.200.96 - - [25/Aug/2026:00:08:54 +0900] "GET /wp-includes/blocks/query-pagination-next/index.php HTTP/1.1" 404 1051
172.182.200.96 - - [25/Aug/2026:00:08:54 +0900] "GET /wp-includes/Text/index.php HTTP/1.1" 404 1003
172.182.200.96 - - [25/Aug/2026:00:08:54 +0900] "GET /wp-admin/index.php HTTP/1.1" 404 987
172.182.200.96 - - [25/Aug/2026:00:08:54 +0900] "GET //wp-content/plugins/index.php HTTP/1.1" 404 1009
172.182.200.96 - - [25/Aug/2026:00:08:54 +0900] "GET /wp-includes/blocks/list-item/index.php HTTP/1.1" 404 1027
172.182.200.96 - - [25/Aug/2026:00:08:54 +0900] "GET //wp-admin/network/index.php HTTP/1.1" 404 1005
172.182.200.96 - - [25/Aug/2026:00:08:54 +0900] "GET //dropdown.php HTTP/1.1" 404 977
43.134.68.29 - - [25/Aug/2026:00:40:51 +0900] "GET / HTTP/1.1" 200 11444
209.38.106.37 - - [25/Aug/2026:00:44:16 +0900] "GET / HTTP/1.1" 200 11444
20.48.163.91 - - [25/Aug/2026:00:55:36 +0900] "GET /wp-content/plugins/hellopress/wp_filemanager.php HTTP/1.1" 404 1047
20.48.163.91 - - [25/Aug/2026:00:55:36 +0900] "GET /this_is_a_new_hello_world.php HTTP/1.1" 404 1009
20.48.163.91 - - [25/Aug/2026:00:55:37 +0900] "GET /011i.php HTTP/1.1" 404 967
20.48.163.91 - - [25/Aug/2026:00:55:37 +0900] "GET /667.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:37 +0900] "GET /GA13.php HTTP/1.1" 404 967
20.48.163.91 - - [25/Aug/2026:00:55:37 +0900] "GET /jok3r.php HTTP/1.1" 404 969
20.48.163.91 - - [25/Aug/2026:00:55:37 +0900] "GET /zolando.php HTTP/1.1" 404 973
20.48.163.91 - - [25/Aug/2026:00:55:38 +0900] "GET /2x.php HTTP/1.1" 404 963
20.48.163.91 - - [25/Aug/2026:00:55:38 +0900] "GET /f22.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:38 +0900] "GET /file-manager-advanced.php HTTP/1.1" 404 1001
20.48.163.91 - - [25/Aug/2026:00:55:38 +0900] "GET /csa.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:39 +0900] "GET /jlex.php HTTP/1.1" 404 967
20.48.163.91 - - [25/Aug/2026:00:55:39 +0900] "GET /gk.php HTTP/1.1" 404 963
20.48.163.91 - - [25/Aug/2026:00:55:39 +0900] "GET /sta.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:39 +0900] "GET /ejrofgj.php HTTP/1.1" 404 973
20.48.163.91 - - [25/Aug/2026:00:55:39 +0900] "GET /jwrlvcp.php HTTP/1.1" 404 973
20.48.163.91 - - [25/Aug/2026:00:55:40 +0900] "GET /ykdyxlo.php HTTP/1.1" 404 973
20.48.163.91 - - [25/Aug/2026:00:55:40 +0900] "GET /ykewuql.php HTTP/1.1" 404 973
20.48.163.91 - - [25/Aug/2026:00:55:40 +0900] "GET /sukce.php HTTP/1.1" 404 969
20.48.163.91 - - [25/Aug/2026:00:55:40 +0900] "GET /xty.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:40 +0900] "GET /xwpg.php HTTP/1.1" 404 967
20.48.163.91 - - [25/Aug/2026:00:55:41 +0900] "GET /wp-mjfb.php HTTP/1.1" 404 973
20.48.163.91 - - [25/Aug/2026:00:55:41 +0900] "GET /wp-bxroot.php HTTP/1.1" 404 977
20.48.163.91 - - [25/Aug/2026:00:55:41 +0900] "GET /ola.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:41 +0900] "GET /5ed04.php HTTP/1.1" 404 969
20.48.163.91 - - [25/Aug/2026:00:55:41 +0900] "GET /sue.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:42 +0900] "GET /ioa.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:42 +0900] "GET /sww.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:42 +0900] "GET /xx.php HTTP/1.1" 404 963
20.48.163.91 - - [25/Aug/2026:00:55:42 +0900] "GET /mcs.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:42 +0900] "GET /2.php HTTP/1.1" 404 961
20.48.163.91 - - [25/Aug/2026:00:55:43 +0900] "GET /wpconf.php HTTP/1.1" 404 971
20.48.163.91 - - [25/Aug/2026:00:55:43 +0900] "GET /waso.php HTTP/1.1" 404 967
20.48.163.91 - - [25/Aug/2026:00:55:43 +0900] "GET /wp-admin/css/sOTYbUf.php HTTP/1.1" 404 999
20.48.163.91 - - [25/Aug/2026:00:55:43 +0900] "GET /t3.php HTTP/1.1" 404 963
20.48.163.91 - - [25/Aug/2026:00:55:43 +0900] "GET /file2.php HTTP/1.1" 404 969
20.48.163.91 - - [25/Aug/2026:00:55:44 +0900] "GET /hi.php HTTP/1.1" 404 963
20.48.163.91 - - [25/Aug/2026:00:55:44 +0900] "GET /nhd.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:44 +0900] "GET /sol.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:44 +0900] "GET /hah.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:44 +0900] "GET /msg.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:45 +0900] "GET /yee.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:45 +0900] "GET /ssk.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:45 +0900] "GET /koj.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:45 +0900] "GET /202d9.php HTTP/1.1" 404 969
20.48.163.91 - - [25/Aug/2026:00:55:46 +0900] "GET /sst.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:46 +0900] "GET /nng.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:46 +0900] "GET /pow.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:46 +0900] "GET /3f26d.php HTTP/1.1" 404 969
20.48.163.91 - - [25/Aug/2026:00:55:46 +0900] "GET /kj.php HTTP/1.1" 404 963
20.48.163.91 - - [25/Aug/2026:00:55:47 +0900] "GET /output.php HTTP/1.1" 404 971
20.48.163.91 - - [25/Aug/2026:00:55:47 +0900] "GET /wtu.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:47 +0900] "GET /blo.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:47 +0900] "GET /wwo.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:47 +0900] "GET /per.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:48 +0900] "GET /5ef60.php HTTP/1.1" 404 969
20.48.163.91 - - [25/Aug/2026:00:55:48 +0900] "GET /pages.php HTTP/1.1" 404 969
20.48.163.91 - - [25/Aug/2026:00:55:48 +0900] "GET /lock.php HTTP/1.1" 404 967
20.48.163.91 - - [25/Aug/2026:00:55:48 +0900] "GET /lufix.php HTTP/1.1" 404 969
20.48.163.91 - - [25/Aug/2026:00:55:48 +0900] "GET /sxo.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:49 +0900] "GET /elp.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:49 +0900] "GET /Njima.php HTTP/1.1" 404 969
20.48.163.91 - - [25/Aug/2026:00:55:49 +0900] "GET /baxa1.phP8 HTTP/1.1" 404 971
20.48.163.91 - - [25/Aug/2026:00:55:49 +0900] "GET /x.php HTTP/1.1" 404 961
20.48.163.91 - - [25/Aug/2026:00:55:50 +0900] "GET /user.php HTTP/1.1" 404 967
20.48.163.91 - - [25/Aug/2026:00:55:50 +0900] "GET /themes.php HTTP/1.1" 404 971
20.48.163.91 - - [25/Aug/2026:00:55:50 +0900] "GET /buy.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:50 +0900] "GET /BIBIL.php HTTP/1.1" 404 969
20.48.163.91 - - [25/Aug/2026:00:55:50 +0900] "GET /xleet.php HTTP/1.1" 404 969
20.48.163.91 - - [25/Aug/2026:00:55:51 +0900] "GET /dropdown.php HTTP/1.1" 404 975
20.48.163.91 - - [25/Aug/2026:00:55:51 +0900] "GET /h.php HTTP/1.1" 404 961
20.48.163.91 - - [25/Aug/2026:00:55:51 +0900] "GET /wp-login.php HTTP/1.1" 404 975
20.48.163.91 - - [25/Aug/2026:00:55:51 +0900] "GET /config.php HTTP/1.1" 404 971
20.48.163.91 - - [25/Aug/2026:00:55:51 +0900] "GET /1337.php HTTP/1.1" 404 967
20.48.163.91 - - [25/Aug/2026:00:55:51 +0900] "GET /w.php HTTP/1.1" 404 961
20.48.163.91 - - [25/Aug/2026:00:55:52 +0900] "GET /wso.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:52 +0900] "GET /content.php HTTP/1.1" 404 973
20.48.163.91 - - [25/Aug/2026:00:55:52 +0900] "GET /web.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:52 +0900] "GET /byp.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:53 +0900] "GET /fox.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:53 +0900] "GET /ss.php HTTP/1.1" 404 963
20.48.163.91 - - [25/Aug/2026:00:55:53 +0900] "GET /baxa1.phP7 HTTP/1.1" 404 971
20.48.163.91 - - [25/Aug/2026:00:55:53 +0900] "GET /json.php HTTP/1.1" 404 967
20.48.163.91 - - [25/Aug/2026:00:55:53 +0900] "GET /shh.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:54 +0900] "GET /oga.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:54 +0900] "GET /nng.phpp HTTP/1.1" 404 967
20.48.163.91 - - [25/Aug/2026:00:55:54 +0900] "GET /ava.php%22 HTTP/1.1" 404 971
20.48.163.91 - - [25/Aug/2026:00:55:54 +0900] "GET /wpsearch/wp-login.php HTTP/1.1" 404 993
20.48.163.91 - - [25/Aug/2026:00:55:55 +0900] "GET /sxp.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:55 +0900] "GET /27d28.php HTTP/1.1" 404 969
20.48.163.91 - - [25/Aug/2026:00:55:55 +0900] "GET /ps.php HTTP/1.1" 404 963
20.48.163.91 - - [25/Aug/2026:00:55:55 +0900] "GET /sa.php7 HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:56 +0900] "GET /shellv3.php HTTP/1.1" 404 973
20.48.163.91 - - [25/Aug/2026:00:55:56 +0900] "GET /villain.php HTTP/1.1" 404 973
20.48.163.91 - - [25/Aug/2026:00:55:56 +0900] "GET /shell_wso.php7 HTTP/1.1" 404 979
20.48.163.91 - - [25/Aug/2026:00:55:56 +0900] "GET /red.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:57 +0900] "GET /lupo.php HTTP/1.1" 404 967
20.48.163.91 - - [25/Aug/2026:00:55:57 +0900] "GET /jhdnZ.php HTTP/1.1" 404 969
20.48.163.91 - - [25/Aug/2026:00:55:57 +0900] "GET /gh.php HTTP/1.1" 404 963
20.48.163.91 - - [25/Aug/2026:00:55:57 +0900] "GET /new2.php HTTP/1.1" 404 967
20.48.163.91 - - [25/Aug/2026:00:55:58 +0900] "GET /wp-content/themes/hueman/404.php HTTP/1.1" 404 1015
20.48.163.91 - - [25/Aug/2026:00:55:58 +0900] "GET /404.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:58 +0900] "GET /lc.php HTTP/1.1" 404 963
20.48.163.91 - - [25/Aug/2026:00:55:58 +0900] "GET /bv3.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:59 +0900] "GET /ol.php HTTP/1.1" 404 963
20.48.163.91 - - [25/Aug/2026:00:55:59 +0900] "GET /nc4.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:59 +0900] "GET /co.php HTTP/1.1" 404 963
20.48.163.91 - - [25/Aug/2026:00:55:59 +0900] "GET /aua.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:55:59 +0900] "GET /Sanskrit.php HTTP/1.1" 404 975
20.48.163.91 - - [25/Aug/2026:00:56:00 +0900] "GET /great.php HTTP/1.1" 404 969
20.48.163.91 - - [25/Aug/2026:00:56:00 +0900] "GET /class9.php HTTP/1.1" 404 971
20.48.163.91 - - [25/Aug/2026:00:56:00 +0900] "GET /ot.php HTTP/1.1" 404 963
20.48.163.91 - - [25/Aug/2026:00:56:00 +0900] "GET /witmm.php HTTP/1.1" 404 969
20.48.163.91 - - [25/Aug/2026:00:56:00 +0900] "GET /lo.php HTTP/1.1" 404 963
20.48.163.91 - - [25/Aug/2026:00:56:01 +0900] "GET /new7.php HTTP/1.1" 404 967
20.48.163.91 - - [25/Aug/2026:00:56:01 +0900] "GET /new14.php HTTP/1.1" 404 969
20.48.163.91 - - [25/Aug/2026:00:56:01 +0900] "GET /new17.php HTTP/1.1" 404 969
20.48.163.91 - - [25/Aug/2026:00:56:01 +0900] "GET /class7.php HTTP/1.1" 404 971
20.48.163.91 - - [25/Aug/2026:00:56:01 +0900] "GET /file14.php HTTP/1.1" 404 971
20.48.163.91 - - [25/Aug/2026:00:56:02 +0900] "GET /z57.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:56:02 +0900] "GET /o2.php HTTP/1.1" 404 963
20.48.163.91 - - [25/Aug/2026:00:56:02 +0900] "GET /wsz.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:56:02 +0900] "GET /yyy.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:56:02 +0900] "GET /class-db.php HTTP/1.1" 404 975
20.48.163.91 - - [25/Aug/2026:00:56:03 +0900] "GET /set.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:56:03 +0900] "GET /155.php HTTP/1.1" 404 965
20.48.163.91 - - [25/Aug/2026:00:56:03 +0900] "GET /l.php HTTP/1.1" 404 961
20.48.163.91 - - [25/Aug/2026:00:56:03 +0900] "GET /n3.php HTTP/1.1" 404 963
20.48.163.91 - - [25/Aug/2026:00:56:03 +0900] "GET /1254.php HTTP/1.1" 404 967
20.48.163.91 - - [25/Aug/2026:00:56:04 +0900] "GET /twso.php HTTP/1.1" 404 967
20.48.163.91 - - [25/Aug/2026:00:56:04 +0900] "GET /file30.php HTTP/1.1" 404 971
20.48.163.91 - - [25/Aug/2026:00:56:04 +0900] "GET /kdrex.php HTTP/1.1" 404 969
20.48.163.91 - - [25/Aug/2026:00:56:04 +0900] "GET /awh77.php HTTP/1.1" 404 969
66.132.172.180 - - [25/Aug/2026:00:56:35 +0900] "GET / HTTP/1.1" 200 11444
34.79.30.146 - - [25/Aug/2026:00:56:44 +0900] "GET / HTTP/1.1" 200 11444
66.132.172.180 - - [25/Aug/2026:00:56:52 +0900] "GET /favicon.ico HTTP/1.1" 200 21630
64.226.120.165 - - [25/Aug/2026:01:11:33 +0900] "GET / HTTP/1.1" 200 11444
40.77.167.241 - - [25/Aug/2026:01:15:01 +0900] "GET / HTTP/1.1" 200 11444
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /@fs/root/.aws/credentials?raw?? HTTP/1.1" 404 1001
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /static../etc/passwd HTTP/1.1" 404 989
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /static../.aws/credentials HTTP/1.1" 404 1001
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /@fs/proc/self/environ?raw?? HTTP/1.1" 404 993
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /@fs/home/ec2-user/.aws/credentials?raw?? HTTP/1.1" 404 1019
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /@fs/proc/self/environ HTTP/1.1" 404 993
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /@fs/etc/passwd?raw?? HTTP/1.1" 404 979
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /@fs/../.env?raw?? HTTP/1.1" 404 973
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /static../.env HTTP/1.1" 404 977
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /@fs/etc/passwd?import&raw?? HTTP/1.1" 404 979
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /media../.env HTTP/1.1" 404 975
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /@fs/proc/1/environ?raw?? HTTP/1.1" 404 987
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /assets../../../etc/passwd HTTP/1.1" 400 -
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /files../etc/passwd HTTP/1.1" 404 987
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /.env HTTP/1.1" 404 959
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /media../etc/passwd HTTP/1.1" 404 987
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /.env.local HTTP/1.1" 404 971
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /app/.env HTTP/1.1" 404 967
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /.aws/credentials HTTP/1.1" 404 983
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /actuator/env HTTP/1.1" 404 975
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /api/config HTTP/1.1" 404 971
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /aws/credentials HTTP/1.1" 404 981
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /proc/self/environ HTTP/1.1" 404 985
34.77.180.82 - - [25/Aug/2026:01:55:59 +0900] "GET /.git/HEAD HTTP/1.1" 404 969
34.77.180.82 - - [25/Aug/2026:01:56:00 +0900] "GET /.mcp.json HTTP/1.1" 404 969
34.77.180.82 - - [25/Aug/2026:01:56:00 +0900] "GET /read?url=file:///proc/self/environ HTTP/1.1" 404 959
34.77.180.82 - - [25/Aug/2026:01:56:00 +0900] "GET /@vite/env HTTP/1.1" 404 969
34.77.180.82 - - [25/Aug/2026:01:56:00 +0900] "GET /?file=../../../../etc/passwd HTTP/1.1" 200 11444
124.156.179.141 - - [25/Aug/2026:02:54:05 +0900] "GET / HTTP/1.1" 200 11444
43.130.67.33 - - [25/Aug/2026:02:58:55 +0900] "GET /manager/html HTTP/1.1" 401 2550
43.130.139.177 - - [25/Aug/2026:03:08:05 +0900] "GET /docs/setup.html HTTP/1.1" 200 14292
43.153.135.208 - - [25/Aug/2026:03:17:15 +0900] "GET /docs/RELEASE-NOTES.txt HTTP/1.1" 200 9054
43.159.149.216 - - [25/Aug/2026:03:30:02 +0900] "GET /docs/jndi-datasource-examples-howto.html HTTP/1.1" 200 56153
43.155.195.141 - - [25/Aug/2026:03:40:31 +0900] "GET /docs/manager-howto.html HTTP/1.1" 200 117300
150.109.119.38 - - [25/Aug/2026:03:52:05 +0900] "GET /manager/status HTTP/1.1" 401 2550
43.152.72.247 - - [25/Aug/2026:03:57:02 +0900] "GET /docs/ HTTP/1.1" 200 15389
43.130.102.223 - - [25/Aug/2026:04:07:56 +0900] "GET /docs/balancer-howto.html HTTP/1.1" 200 6651
43.157.179.227 - - [25/Aug/2026:04:17:24 +0900] "GET /docs/manager-howto.html HTTP/1.1" 200 117300
81.19.216.90 - - [25/Aug/2026:04:21:21 +0900] "GET / HTTP/1.1" 200 11444
43.164.3.23 - - [25/Aug/2026:04:28:14 +0900] "GET /docs/cgi-howto.html HTTP/1.1" 200 8895
43.164.3.182 - - [25/Aug/2026:04:38:31 +0900] "GET /docs/manager-howto.html HTTP/1.1" 200 117300
20.102.116.214 - - [25/Aug/2026:04:56:31 +0900] "GET /portal/redlion HTTP/1.1" 404 979
47.89.228.142 - - [25/Aug/2026:05:26:47 +0900] "GET / HTTP/1.1" 200 11444
47.89.228.142 - - [25/Aug/2026:05:26:50 +0900] "GET / HTTP/1.1" 200 11444
43.135.139.165 - - [25/Aug/2026:07:13:19 +0900] "GET / HTTP/1.1" 200 11444
106.14.176.4 - - [25/Aug/2026:07:15:03 +0900] "GET / HTTP/1.1" 200 11444
20.169.16.7 - - [25/Aug/2026:07:34:54 +0900] "GET /wp-content/plugins/hellopress/wp_filemanager.php HTTP/1.1" 404 1047
20.169.16.7 - - [25/Aug/2026:07:34:55 +0900] "GET /this_is_a_new_hello_world.php HTTP/1.1" 404 1009
20.169.16.7 - - [25/Aug/2026:07:34:55 +0900] "GET /Capte.php HTTP/1.1" 404 969
20.169.16.7 - - [25/Aug/2026:07:34:55 +0900] "GET /beetle.php HTTP/1.1" 404 971
20.169.16.7 - - [25/Aug/2026:07:34:55 +0900] "GET /fin.php HTTP/1.1" 404 965
20.169.16.7 - - [25/Aug/2026:07:34:55 +0900] "GET /kurtlar.php HTTP/1.1" 404 973
20.169.16.7 - - [25/Aug/2026:07:34:55 +0900] "GET /m.php HTTP/1.1" 404 961
20.169.16.7 - - [25/Aug/2026:07:34:55 +0900] "GET /anon.php HTTP/1.1" 404 967
20.169.16.7 - - [25/Aug/2026:07:34:56 +0900] "GET /cmd.php HTTP/1.1" 404 965
20.169.16.7 - - [25/Aug/2026:07:34:56 +0900] "GET /4rbvp7.php HTTP/1.1" 404 971
20.169.16.7 - - [25/Aug/2026:07:34:56 +0900] "GET /0freg0a6xe.php HTTP/1.1" 404 979
20.169.16.7 - - [25/Aug/2026:07:34:56 +0900] "GET /6zl637u8kl.php HTTP/1.1" 404 979
20.169.16.7 - - [25/Aug/2026:07:34:56 +0900] "GET /ftde.php HTTP/1.1" 404 967
20.169.16.7 - - [25/Aug/2026:07:34:56 +0900] "GET //special.php HTTP/1.1" 404 975
20.169.16.7 - - [25/Aug/2026:07:34:56 +0900] "GET /fz.php HTTP/1.1" 404 963
20.169.16.7 - - [25/Aug/2026:07:34:57 +0900] "GET /v2.php HTTP/1.1" 404 963
20.169.16.7 - - [25/Aug/2026:07:34:57 +0900] "GET /cnsk.php HTTP/1.1" 404 967
20.169.16.7 - - [25/Aug/2026:07:34:57 +0900] "GET /sc.php HTTP/1.1" 404 963
20.169.16.7 - - [25/Aug/2026:07:34:57 +0900] "GET /xstelth.php HTTP/1.1" 404 973
20.169.16.7 - - [25/Aug/2026:07:34:57 +0900] "GET /themes.php HTTP/1.1" 404 971
20.169.16.7 - - [25/Aug/2026:07:34:57 +0900] "GET /coffe.php HTTP/1.1" 404 969
20.169.16.7 - - [25/Aug/2026:07:34:58 +0900] "GET /ans.php HTTP/1.1" 404 965
20.169.16.7 - - [25/Aug/2026:07:34:58 +0900] "GET /cns.php HTTP/1.1" 404 965
20.169.16.7 - - [25/Aug/2026:07:34:58 +0900] "GET /like.php HTTP/1.1" 404 967
20.169.16.7 - - [25/Aug/2026:07:34:58 +0900] "GET /xiugai.php HTTP/1.1" 404 971
43.153.123.4 - - [25/Aug/2026:09:14:06 +0900] "GET / HTTP/1.1" 200 11444
107.150.110.123 - - [25/Aug/2026:10:26:22 +0900] "GET / HTTP/1.1" 200 11444
107.150.110.123 - - [25/Aug/2026:10:26:25 +0900] "GET /favicon.ico HTTP/1.1" 200 21630
107.150.110.123 - - [25/Aug/2026:10:28:09 +0900] "GET /favicon.ico HTTP/1.1" 200 21630
172.202.118.46 - - [25/Aug/2026:11:12:42 +0900] "GET /manager/text/list HTTP/1.1" 401 2550
192.241.247.115 - - [25/Aug/2026:11:16:51 +0900] "GET / HTTP/1.1" 200 11444
192.241.247.115 - - [25/Aug/2026:11:16:58 +0900] "GET /favicon.ico HTTP/1.1" 200 21630
43.166.134.47 - - [25/Aug/2026:12:00:03 +0900] "GET / HTTP/1.1" 200 11444
20.151.9.151 - - [25/Aug/2026:12:03:25 +0900] "GET /wp-content/plugins/hellopress/wp_filemanager.php HTTP/1.1" 404 1047
20.151.9.151 - - [25/Aug/2026:12:03:25 +0900] "GET /this_is_a_new_hello_world.php HTTP/1.1" 404 1009
20.151.9.151 - - [25/Aug/2026:12:03:25 +0900] "GET /Capte.php HTTP/1.1" 404 969
20.151.9.151 - - [25/Aug/2026:12:03:25 +0900] "GET /beetle.php HTTP/1.1" 404 971
20.151.9.151 - - [25/Aug/2026:12:03:26 +0900] "GET /fin.php HTTP/1.1" 404 965
20.151.9.151 - - [25/Aug/2026:12:03:26 +0900] "GET /kurtlar.php HTTP/1.1" 404 973
20.151.9.151 - - [25/Aug/2026:12:03:26 +0900] "GET /m.php HTTP/1.1" 404 961
20.151.9.151 - - [25/Aug/2026:12:03:26 +0900] "GET /anon.php HTTP/1.1" 404 967
20.151.9.151 - - [25/Aug/2026:12:03:26 +0900] "GET /cmd.php HTTP/1.1" 404 965
20.151.9.151 - - [25/Aug/2026:12:03:26 +0900] "GET /4rbvp7.php HTTP/1.1" 404 971
20.151.9.151 - - [25/Aug/2026:12:03:27 +0900] "GET /0freg0a6xe.php HTTP/1.1" 404 979
20.151.9.151 - - [25/Aug/2026:12:03:27 +0900] "GET /6zl637u8kl.php HTTP/1.1" 404 979
20.151.9.151 - - [25/Aug/2026:12:03:27 +0900] "GET /ftde.php HTTP/1.1" 404 967
20.151.9.151 - - [25/Aug/2026:12:03:27 +0900] "GET //special.php HTTP/1.1" 404 975
20.151.9.151 - - [25/Aug/2026:12:03:27 +0900] "GET /fz.php HTTP/1.1" 404 963
20.151.9.151 - - [25/Aug/2026:12:03:28 +0900] "GET /v2.php HTTP/1.1" 404 963
20.151.9.151 - - [25/Aug/2026:12:03:28 +0900] "GET /cnsk.php HTTP/1.1" 404 967
20.151.9.151 - - [25/Aug/2026:12:03:28 +0900] "GET /sc.php HTTP/1.1" 404 963
20.151.9.151 - - [25/Aug/2026:12:03:28 +0900] "GET /xstelth.php HTTP/1.1" 404 973
20.151.9.151 - - [25/Aug/2026:12:03:28 +0900] "GET /themes.php HTTP/1.1" 404 971
20.151.9.151 - - [25/Aug/2026:12:03:29 +0900] "GET /coffe.php HTTP/1.1" 404 969
20.151.9.151 - - [25/Aug/2026:12:03:29 +0900] "GET /ans.php HTTP/1.1" 404 965
20.151.9.151 - - [25/Aug/2026:12:03:29 +0900] "GET /cns.php HTTP/1.1" 404 965
20.151.9.151 - - [25/Aug/2026:12:03:29 +0900] "GET /like.php HTTP/1.1" 404 967
20.151.9.151 - - [25/Aug/2026:12:03:29 +0900] "GET /xiugai.php HTTP/1.1" 404 971
43.156.232.154 - - [25/Aug/2026:13:34:22 +0900] "GET / HTTP/1.1" 200 11444
20.104.86.241 - - [25/Aug/2026:13:35:17 +0900] "GET /wp-content/plugins/hellopress/wp_filemanager.php HTTP/1.1" 404 1047
20.104.86.241 - - [25/Aug/2026:13:35:17 +0900] "GET /this_is_a_new_hello_world.php HTTP/1.1" 404 1009
20.104.86.241 - - [25/Aug/2026:13:35:18 +0900] "GET /domvf.php HTTP/1.1" 404 969
20.104.86.241 - - [25/Aug/2026:13:35:18 +0900] "GET /wp-0.php HTTP/1.1" 404 967
20.104.86.241 - - [25/Aug/2026:13:35:18 +0900] "GET /dyt8mjxc3yofbkoriukvgjaCdefault.php HTTP/1.1" 404 1021
20.104.86.241 - - [25/Aug/2026:13:35:18 +0900] "GET /gec.php HTTP/1.1" 404 965
20.104.86.241 - - [25/Aug/2026:13:35:18 +0900] "GET /robots.php HTTP/1.1" 404 971
20.104.86.241 - - [25/Aug/2026:13:35:19 +0900] "GET /sky.php HTTP/1.1" 404 965
20.104.86.241 - - [25/Aug/2026:13:35:19 +0900] "GET /sixxis.php HTTP/1.1" 404 971
20.104.86.241 - - [25/Aug/2026:13:35:19 +0900] "GET /yj09.php HTTP/1.1" 404 967
20.104.86.241 - - [25/Aug/2026:13:35:19 +0900] "GET /k.php HTTP/1.1" 404 961
20.104.86.241 - - [25/Aug/2026:13:35:19 +0900] "GET /w.php HTTP/1.1" 404 961
20.104.86.241 - - [25/Aug/2026:13:35:20 +0900] "GET /fpwch.php HTTP/1.1" 404 969
20.104.86.241 - - [25/Aug/2026:13:35:20 +0900] "GET /FWAZ.php HTTP/1.1" 404 967
20.104.86.241 - - [25/Aug/2026:13:35:20 +0900] "GET /blurbs.php HTTP/1.1" 404 971
20.104.86.241 - - [25/Aug/2026:13:35:20 +0900] "GET /100.php HTTP/1.1" 404 965
20.104.86.241 - - [25/Aug/2026:13:35:20 +0900] "GET /ccc.php?p= HTTP/1.1" 404 965
20.104.86.241 - - [25/Aug/2026:13:35:20 +0900] "GET /get.php HTTP/1.1" 404 965
20.104.86.241 - - [25/Aug/2026:13:35:21 +0900] "GET /images.php HTTP/1.1" 404 971
20.104.86.241 - - [25/Aug/2026:13:35:21 +0900] "GET /alls.php HTTP/1.1" 404 967
20.104.86.241 - - [25/Aug/2026:13:35:21 +0900] "GET /coffexium.php HTTP/1.1" 404 977
20.104.86.241 - - [25/Aug/2026:13:35:21 +0900] "GET /red.php HTTP/1.1" 404 965
20.104.86.241 - - [25/Aug/2026:13:35:21 +0900] "GET ///admin.php HTTP/1.1" 404 973
20.104.86.241 - - [25/Aug/2026:13:35:22 +0900] "GET /file52.php HTTP/1.1" 404 971
20.104.86.241 - - [25/Aug/2026:13:35:22 +0900] "GET /geck.php HTTP/1.1" 404 967
20.104.86.241 - - [25/Aug/2026:13:35:22 +0900] "GET /biufile.php HTTP/1.1" 404 973
20.104.86.241 - - [25/Aug/2026:13:35:22 +0900] "GET /dejavu.php HTTP/1.1" 404 971
20.104.86.241 - - [25/Aug/2026:13:35:22 +0900] "GET /aaf.php HTTP/1.1" 404 965
20.104.86.241 - - [25/Aug/2026:13:35:22 +0900] "GET /h02ugyh.php HTTP/1.1" 404 973
20.104.86.241 - - [25/Aug/2026:13:35:23 +0900] "GET /155.php HTTP/1.1" 404 965
20.104.86.241 - - [25/Aug/2026:13:35:23 +0900] "GET /ops.php HTTP/1.1" 404 965
20.104.86.241 - - [25/Aug/2026:13:35:23 +0900] "GET /mac.php HTTP/1.1" 404 965
20.104.86.241 - - [25/Aug/2026:13:35:23 +0900] "GET /makeasmtp.php?p= HTTP/1.1" 404 977
20.104.86.241 - - [25/Aug/2026:13:35:23 +0900] "GET /system_log.php HTTP/1.1" 404 979
20.104.86.241 - - [25/Aug/2026:13:35:24 +0900] "GET /pucci.php HTTP/1.1" 404 969
20.104.86.241 - - [25/Aug/2026:13:35:24 +0900] "GET /puc.php HTTP/1.1" 404 965
20.104.86.241 - - [25/Aug/2026:13:35:24 +0900] "GET /8.php HTTP/1.1" 404 961
20.104.86.241 - - [25/Aug/2026:13:35:24 +0900] "GET /1.php HTTP/1.1" 404 961
20.104.86.241 - - [25/Aug/2026:13:35:24 +0900] "GET /about.php HTTP/1.1" 404 969
20.104.86.241 - - [25/Aug/2026:13:35:25 +0900] "GET //admin.php HTTP/1.1" 404 971
20.104.86.241 - - [25/Aug/2026:13:35:25 +0900] "GET //edit.php HTTP/1.1" 404 969
20.104.86.241 - - [25/Aug/2026:13:35:25 +0900] "GET /inputs.php HTTP/1.1" 404 971
20.104.86.241 - - [25/Aug/2026:13:35:25 +0900] "GET //av.php HTTP/1.1" 404 965
20.104.86.241 - - [25/Aug/2026:13:35:25 +0900] "GET /classwithtostring.php?p= HTTP/1.1" 404 993
20.104.86.241 - - [25/Aug/2026:13:35:25 +0900] "GET //adminfuns.php HTTP/1.1" 404 979

 

 

공격자가 서버에 업로드된 웹쉘이나 취약한 스크립트가 있는지 무작위로 확인하는 패턴

  • 404 응답: 공격자가 찾는 파일이 없음 → 실제 서비스에는 영향 없음.
  • 200 응답: 정상 페이지 제공 중 → 서비스는 운영 중.

위에 대해 해야할 일

  • 방화벽/웹서버 설정으로 불필요한 PHP 요청 차단
  • WAF(Web Application Firewall) 적용 검토
  • 의심 IP(예: 20.104.86.241) 차단
  • 실제로 /ms-edit.php, /wp.php 같은 파일이 존재하는지 확인하여 혹시 모를 업로드 흔적 제거
And

네트워크 연결 안될때 의심해볼 포인트

|

 

  • 서버 로컬에서는 되는데 외부에서 안 되면 → 방화벽/보안 규칙 의심
  • 다른 포트는 되는데 특정 포트만 안 되면 → 그 포트만 규칙이 빠진 것
  • 클라우드 서버는 iptables/firewalld 뿐 아니라 클라우드 콘솔의 보안그룹도 같이 확인 필요

 

// telnet, traceroute 설치
sudo dnf install traceroute
sudo dnf install telnet

// traceroute
traceroute -p 8080 1.2.3.4

// telnet
telnet 1.2.3.4 8080

// netcat
nc -zv 1.2.3.4 8080

 

And

DMZ

|

What?

- 내부 네트워크에 존재하지만 외부에서 접근할 수 있는 특수한 네트워크 영역

- DeMilitarized Zone

- 외부 네트워크(인터넷) ↔ 방화벽A ↔ DMZ ↔ 방화벽B ↔ 내부 네트워크(인트라넷)

 

 

And

DB와 DB를 연결하는 방법(데이터베이스 연결방법)

|

1. DB Link / Linked Server (직접 연결)

같은 벤더거나 드라이버가 지원되는 경우, DB 안에서 다른 DB를 바로 쿼리하는 방식입니다.

 

Oracle DB Link

CREATE DATABASE LINK remote_db
CONNECT TO remote_user IDENTIFIED BY remote_pw
USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.10)(PORT=1521))
       (CONNECT_DATA=(SERVICE_NAME=orclpdb)))';

-- 예시1
SELECT * FROM employees@remote_db WHERE dept_id = 10;

-- 예시2 (FROM 테이블명@DB링크호출명)
SELECT * FROM SD_GI_DTL@ERPDEV

 

PostgreSQL dblink / postgres_fdw

-- postgres_fdw 확장 설치
CREATE EXTENSION postgres_fdw;

CREATE SERVER remote_server
  FOREIGN DATA WRAPPER postgres_fdw
  OPTIONS (host '192.168.0.20', dbname 'targetdb', port '5432');

CREATE USER MAPPING FOR current_user
  SERVER remote_server
  OPTIONS (user 'remote_user', password 'pw');

CREATE FOREIGN TABLE remote_orders (
  id int, amount numeric
) SERVER remote_server OPTIONS (schema_name 'public', table_name 'orders');

SELECT * FROM remote_orders;

 

SQL Server Linked Server

EXEC sp_addlinkedserver 
   @server='REMOTE_SVR', 
   @srvproduct='', 
   @provider='SQLNCLI', 
   @datasrc='192.168.0.30';

SELECT * FROM REMOTE_SVR.TargetDB.dbo.Orders;
  • 장점: 설정 즉시 실시간 조회 가능, 별도 인프라 불필요
  • 단점: 네트워크 지연에 취약, 대량 데이터 조인 시 성능 저하, DB 종류 다르면 이기종 FDW/드라이버 필요

 

2. 미들 테이블(Staging Table) 방식

중간에 별도의 저장소(테이블/DB)를 두고, 소스 → 미들 테이블 → 타겟 순으로 데이터를 흘려보내는 방식입니다. 배치 ETL의 한 패턴이지만, 실무에서 워낙 많이 쓰여서 따로 다룰 가치가 있습니다.

개념

Oracle(소스) → Staging Table(중간) → PostgreSQL(타겟)
  • 소스와 타겟이 직접 연결되지 않고, 중간 테이블을 버퍼처럼 사용
  • 장애 발생 시 재처리가 쉽고, 소스/타겟 스키마 변경에 서로 영향을 덜 받음
  • 이력 관리(언제 적재됐는지, 성공/실패 여부)가 쉬움

Oracle ↔ Oracle 미들 테이블 예시

1) 미들 테이블 설계 (보통 타겟 DB 또는 별도 DB에 생성)

CREATE TABLE stg_orders (
  id            NUMBER,
  amount        NUMBER,
  created_at    DATE,
  load_dt       DATE DEFAULT SYSDATE,
  process_flag  VARCHAR2(1) DEFAULT 'N'  -- N: 미처리, Y: 처리완료, E: 에러
);

2) 소스 → 미들 테이블 적재 (DB Link + Insert)

INSERT INTO stg_orders (id, amount, created_at)
SELECT id, amount, created_at
FROM orders@sales_link
WHERE created_at > SYSDATE - 1;
COMMIT;

3) 미들 테이블 → 타겟 반영 (검증/변환 후 적재)

MERGE INTO target_orders t
USING (SELECT * FROM stg_orders WHERE process_flag = 'N') s
ON (t.id = s.id)
WHEN MATCHED THEN
  UPDATE SET t.amount = s.amount, t.updated_at = SYSDATE
WHEN NOT MATCHED THEN
  INSERT (id, amount, created_at) VALUES (s.id, s.amount, s.created_at);

UPDATE stg_orders SET process_flag = 'Y' WHERE process_flag = 'N';
COMMIT;

4) 스케줄링 (Oracle Scheduler)

BEGIN
  DBMS_SCHEDULER.CREATE_JOB(
    job_name        => 'JOB_SYNC_ORDERS',
    job_type        => 'PLSQL_BLOCK',
    job_action      => 'BEGIN sp_sync_stg_to_target; END;',
    start_date      => SYSTIMESTAMP,
    repeat_interval => 'FREQ=HOURLY;INTERVAL=1',
    enabled         => TRUE
  );
END;
/

Oracle → PostgreSQL 미들 테이블 예시

이기종이면 미들 테이블을 파일(CSV/Parquet) 이나 별도의 스테이징 DB로 두는 경우가 많습니다.

python
import cx_Oracle, psycopg2, csv

# 1) Oracle -> 파일(미들 저장소)
ora_conn = cx_Oracle.connect('user/pw@oracle-host:1521/ORCLPDB')
cur = ora_conn.cursor()
cur.execute("SELECT id, amount, created_at FROM orders WHERE created_at > SYSDATE - 1")

with open('/staging/orders_stg.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerows(cur)

# 2) 파일(미들) -> PostgreSQL 적재 (COPY 명령이 훨씬 빠름)
pg_conn = psycopg2.connect(host='pg-host', dbname='dw', user='u', password='p')
pg_cur = pg_conn.cursor()
pg_cur.execute("CREATE TEMP TABLE stg_orders (id numeric, amount numeric, created_at timestamp)")
with open('/staging/orders_stg.csv', 'r') as f:
    pg_cur.copy_expert("COPY stg_orders FROM STDIN WITH CSV", f)

pg_cur.execute("""
    INSERT INTO orders (id, amount, created_at)
    SELECT id, amount, created_at FROM stg_orders
    ON CONFLICT (id) DO UPDATE SET amount = EXCLUDED.amount
""")
pg_conn.commit()
  • 장점: 소스 DB 부하 최소화(연결을 오래 안 물고 있음), 실패 시 미들 테이블만 재처리하면 됨, 이기종 간 타입 변환/정제를 중간 단계에서 처리 가능
  • 단점: 구조가 하나 더 늘어나 관리 포인트 증가, 실시간성은 떨어짐(배치 주기에 종속)
  • 클라우드 환경이면 S3/Object Storage를 미들 저장소로 쓰고 Glue, EMR 같은 도구로 적재하는 패턴도 흔합니다

3. API 방식

DB를 직접 연결하지 않고, 애플리케이션/API 서버가 중간에서 각 DB를 읽고 써주는 방식입니다. DB 커플링을 없애고 싶을 때, 혹은 보안상 DB를 직접 노출하고 싶지 않을 때 사용합니다.

개념

Oracle → (내부 API 서버가 조회) → REST/GraphQL API → 다른 시스템이 API 호출 → PostgreSQL에 저장

DB끼리 직접 통신하지 않고, 비즈니스 로직을 가진 API 계층을 거칩니다.

 

예시: Oracle 데이터를 API로 노출 → PostgreSQL 쓰는 서비스가 API 호출해서 동기화

1) 소스 쪽 API 서버 (Oracle 조회용, FastAPI 예시)

python
from fastapi import FastAPI
import cx_Oracle

app = FastAPI()

@app.get("/orders")
def get_orders(since: str):
    conn = cx_Oracle.connect('user/pw@oracle-host:1521/ORCLPDB')
    cur = conn.cursor()
    cur.execute("SELECT id, amount, created_at FROM orders WHERE created_at > :1", [since])
    rows = cur.fetchall()
    return [{"id": r[0], "amount": r[1], "created_at": str(r[2])} for r in rows]

2) 타겟 쪽에서 API 호출 후 PostgreSQL에 적재

python
import requests, psycopg2

resp = requests.get("http://oracle-api-host:8000/orders", params={"since": "2026-08-12"})
orders = resp.json()

pg_conn = psycopg2.connect(host='pg-host', dbname='dw', user='u', password='p')
pg_cur = pg_conn.cursor()
for o in orders:
    pg_cur.execute("""
        INSERT INTO orders (id, amount, created_at) VALUES (%s,%s,%s)
        ON CONFLICT (id) DO UPDATE SET amount = EXCLUDED.amount
    """, (o['id'], o['amount'], o['created_at']))
pg_conn.commit()

3) 반대로 쓰기 API를 노출하는 경우 (권장되는 패턴)

 
python
@app.post("/orders/sync")
def sync_order(order: OrderSchema):
    conn = get_pg_connection()
    cur = conn.cursor()
    cur.execute("""
        INSERT INTO orders (id, amount, created_at) VALUES (%s,%s,%s)
        ON CONFLICT (id) DO UPDATE SET amount = EXCLUDED.amount
    """, (order.id, order.amount, order.created_at))
    conn.commit()
    return {"status": "ok"}

실시간성을 높이고 싶다면: Webhook / Event API 결합

python
# Oracle 소스 쪽에서 트리거+잡으로 변경 감지 후 API 호출 (Webhook)
@app.post("/webhook/order-updated")
def order_updated(payload: dict):
    # 이 API가 호출되면 즉시 PostgreSQL에 반영
    save_to_postgres(payload)
  • Oracle 트리거 + UTL_HTTP 패키지로 변경 발생 시 바로 API 호출하는 구성도 가능
sql
CREATE OR REPLACE TRIGGER trg_orders_notify
AFTER INSERT OR UPDATE ON orders
FOR EACH ROW
DECLARE
  req UTL_HTTP.REQ;
  resp UTL_HTTP.RESP;
BEGIN
  req := UTL_HTTP.BEGIN_REQUEST('http://api-host:8000/webhook/order-updated', 'POST');
  UTL_HTTP.SET_HEADER(req, 'Content-Type', 'application/json');
  UTL_HTTP.WRITE_TEXT(req, '{"id":' || :NEW.id || ',"amount":' || :NEW.amount || '}');
  resp := UTL_HTTP.GET_RESPONSE(req);
  UTL_HTTP.END_RESPONSE(resp);
END;
  • 장점: DB 간 강결합 없음, 비즈니스 로직(검증/가공/권한체크)을 API 레벨에서 통제 가능, 보안(DB 직접 노출 안 함), MSA 환경에 자연스럽게 어울림
  • 단점: API 서버라는 중간 컴포넌트를 개발/운영해야 함, 대량 데이터 처리 시 오버헤드 큼(REST는 배치 대량 이관에 비효율적), 트리거+HTTP 호출은 DB 트랜잭션 성능에 영향

 

4. 이기종 연동: FDW / 데이터 가상화(페더레이션)

DB 종류가 다를 때(Oracle ↔ MySQL, PostgreSQL ↔ MongoDB 등) 쓰는 방식.

  • Trino(구 PrestoSQL): 여러 DB를 커넥터로 묶어 하나의 SQL로 조회
sql
-- Trino catalog 설정 (mysql.properties, postgresql.properties)
connector.name=mysql
connection-url=jdbc:mysql://host:3306
connection-user=user
connection-password=pw
 
sql
-- 서로 다른 DB 조인
SELECT a.*, b.* 
FROM mysql.sales.orders a 
JOIN postgresql.crm.customers b ON a.cust_id = b.id;
  • Denodo, Dremio 같은 데이터 가상화 솔루션도 동일한 개념

 

5. ETL/ELT (배치성 동기화)

정기적으로 데이터를 추출-변환-적재하는 방식. 실시간성이 필요 없을 때.

Airflow + Python 예시

python
from airflow import DAG
from airflow.operators.python import PythonOperator
import psycopg2, pymysql

def sync_data():
    src = pymysql.connect(host='src_host', user='u', password='p', db='sales')
    dst = psycopg2.connect(host='dst_host', user='u', password='p', dbname='dw')
    
    cur_src = src.cursor()
    cur_src.execute("SELECT id, amount, created_at FROM orders WHERE updated_at > NOW() - INTERVAL 1 DAY")
    rows = cur_src.fetchall()
    
    cur_dst = dst.cursor()
    for row in rows:
        cur_dst.execute("""
            INSERT INTO orders (id, amount, created_at) VALUES (%s,%s,%s)
            ON CONFLICT (id) DO UPDATE SET amount=EXCLUDED.amount
        """, row)
    dst.commit()

with DAG('db_sync', schedule_interval='@daily', start_date=..., catchup=False) as dag:
    PythonOperator(task_id='sync', python_callable=sync_data)
  • 상용/SaaS 도구: Fivetran, Airbyte, Talend, Informatica — 커넥터만 설정하면 자동 스케줄링
  • Airbyte는 오픈소스라 자체 구축 시 많이 씀 (Docker로 몇 분 내 구동 가능)

 

6. CDC (Change Data Capture) — 실시간 변경분 반영

원본 DB의 트랜잭션 로그(binlog, WAL, redo log)를 읽어서 변경분만 실시간 전파. ETL보다 지연이 훨씬 적음(초 단위).

Debezium + Kafka 구성

json
// MySQL 소스 커넥터 등록 (Kafka Connect REST API)
{
  "name": "mysql-source-connector",
  "config": {
    "connector.class": "io.debezium.connector.mysql.MySqlConnector",
    "database.hostname": "src-mysql",
    "database.port": "3306",
    "database.user": "debezium",
    "database.password": "pw",
    "database.server.id": "184054",
    "topic.prefix": "dbserver1",
    "database.include.list": "sales",
    "schema.history.internal.kafka.bootstrap.servers": "kafka:9092",
    "schema.history.internal.kafka.topic": "schema-changes.sales"
  }
}
 
json
// 타겟(PostgreSQL) Sink 커넥터
{
  "name": "pg-sink-connector",
  "config": {
    "connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
    "connection.url": "jdbc:postgresql://dst-pg:5432/dw",
    "topics": "dbserver1.sales.orders",
    "insert.mode": "upsert",
    "pk.fields": "id",
    "pk.mode": "record_key"
  }
}
  • MySQL은 binlog_format=ROW, log-bin 활성화 필요
  • Oracle의 경우 GoldenGate, AWS 환경이면 **DMS(Database Migration Service)**가 CDC 지원

AWS DMS 예시 (CDC 모드)

  • 소스: RDS Oracle, 타겟: Redshift/RDS 등
  • Migration Type을 "Ongoing replication (CDC only)" 또는 "Full load + CDC"로 설정
  • Task 생성 시 Table Mapping JSON으로 대상 스키마/테이블 지정

 

7. DB 자체 복제(Replication)

같은 종류 DB 간, 완전 동기화가 목적일 때(재해복구, 읽기 분산 등)

MySQL Master-Slave

sql
-- Master
CHANGE MASTER TO MASTER_HOST='master_ip', 
  MASTER_USER='repl', MASTER_PASSWORD='pw',
  MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;
START SLAVE;

PostgreSQL 논리 복제(Logical Replication)

sql
-- 발행(Publisher) 측
CREATE PUBLICATION my_pub FOR TABLE orders, customers;

-- 구독(Subscriber) 측
CREATE SUBSCRIPTION my_sub 
  CONNECTION 'host=src_host dbname=sales user=repl password=pw'
  PUBLICATION my_pub;
  • 장점: 거의 실시간, DB 엔진 기본 기능이라 신뢰성 높음
  • 단점: 보통 동일 DB 엔진 간에만 지원 (이기종은 CDC 툴 필요)

 

8. 메시지 큐/이벤트 기반 연동

애플리케이션 레벨에서 DB 변경을 이벤트로 발행하고, 다른 서비스가 구독해 자신의 DB에 반영하는 방식(MSA에서 흔함).

python
# 서비스 A: 주문 생성 후 이벤트 발행
producer.send('order-created', {'order_id': 123, 'amount': 5000})

# 서비스 B: 이벤트 구독 후 자기 DB에 반영
for msg in consumer:
    data = msg.value
    cursor.execute("INSERT INTO order_summary (order_id, amount) VALUES (%s,%s)",
                    (data['order_id'], data['amount']))
  • Kafka, RabbitMQ, AWS SQS/SNS 등 활용
  • "Outbox 패턴"과 함께 쓰면 트랜잭션 정합성 보장 가능

 

9. 파일 기반 벌크 전송 (External Table / SQL*Loader)

미들 테이블과 비슷해 보이지만, 미들 테이블은 "DB 안의 테이블"을 거치는 거고 이 방식은 파일 자체를 매개체로 씁니다. 대량 데이터 초기 적재나 이관에 특히 강합니다.

Oracle External Table (파일을 테이블처럼 읽기)

sql
-- 1) Oracle Directory 생성
CREATE OR REPLACE DIRECTORY ext_dir AS '/staging/data';

-- 2) 외부 테이블 정의 (파일을 SELECT로 바로 조회 가능)
CREATE TABLE ext_orders (
  id NUMBER, amount NUMBER, created_at DATE
)
ORGANIZATION EXTERNAL (
  TYPE ORACLE_LOADER
  DEFAULT DIRECTORY ext_dir
  ACCESS PARAMETERS (
    RECORDS DELIMITED BY NEWLINE
    FIELDS TERMINATED BY ','
  )
  LOCATION ('orders_export.csv')
);

-- 바로 쿼리 가능 (별도 로드 없이)
SELECT * FROM ext_orders;

-- 실제 테이블에 적재
INSERT INTO orders SELECT * FROM ext_orders;

SQL*Loader (대량 파일 → Oracle 적재)

bash
# control 파일 (orders.ctl)
cat <<EOF > orders.ctl
LOAD DATA
INFILE 'orders_export.csv'
INTO TABLE orders
FIELDS TERMINATED BY ','
(id, amount, created_at DATE "YYYY-MM-DD")
EOF

sqlldr userid=user/pw@orclpdb control=orders.ctl direct=true

PostgreSQL COPY (동일 개념)

sql
COPY orders FROM '/staging/orders_export.csv' WITH (FORMAT csv);
  • 장점: 초대량 데이터(수백만~수억 건)를 가장 빠르게 옮길 수 있음 (Direct Path Load 사용 시 특히)
  • 단점: 실시간성 없음, 파일 생성/전송 과정이 별도 필요(FTP/SCP/NFS)
  • 실무에서는 초기 마이그레이션(migration) 이나 대용량 배치 이관에 거의 항상 이 방식을 씁니다

10. 분산 트랜잭션 (Two-Phase Commit) — Oracle ↔ Oracle 전용

DB Link를 이용하되, 단순 조회가 아니라 두 DB에 걸친 트랜잭션을 원자적으로 커밋하고 싶을 때 씁니다. Oracle은 DB Link를 통한 분산 트랜잭션을 네이티브 지원합니다.

sql
-- 로컬 DB와 원격 DB(sales_link) 양쪽에 동시에 반영
BEGIN
  INSERT INTO local_orders VALUES (1, 5000, SYSDATE);
  INSERT INTO remote_orders@sales_link VALUES (1, 5000, SYSDATE);
  COMMIT;  -- Oracle이 내부적으로 2PC 수행: 둘 다 성공하거나 둘 다 롤백
EXCEPTION
  WHEN OTHERS THEN
    ROLLBACK;
    RAISE;
END;
/

-- 분산 트랜잭션에 문제가 생기면 확인
SELECT * FROM DBA_2PC_PENDING;

-- 수동 정리가 필요할 때
EXEC DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY('transaction_id');
  • 장점: 두 Oracle DB 간 데이터 정합성(원자성)을 DB 레벨에서 보장
  • 단점: 네트워크 장애 시 in-doubt 트랜잭션이 남을 수 있어 관리 부담, 성능 저하(락 유지 시간 증가), PostgreSQL과는 이 방식이 안 됨 (이기종 2PC는 지원 안 함)

11. 트리거 기반 CDC (로그 기반 아닌 방식)

Debezium/GoldenGate 같은 로그 기반 CDC 대신, 트리거로 변경 이력 테이블을 직접 쌓는 방식. 별도 인프라 없이 구현 가능해서 소규모 환경에서 씁니다.

sql
-- 변경 이력 테이블
CREATE TABLE orders_cdc_log (
  op_type VARCHAR2(1),  -- I, U, D
  id NUMBER, amount NUMBER,
  changed_at DATE DEFAULT SYSDATE,
  processed CHAR(1) DEFAULT 'N'
);

-- 트리거로 변경분 캡처
CREATE OR REPLACE TRIGGER trg_orders_cdc
AFTER INSERT OR UPDATE OR DELETE ON orders
FOR EACH ROW
BEGIN
  IF INSERTING THEN
    INSERT INTO orders_cdc_log(op_type, id, amount) VALUES ('I', :NEW.id, :NEW.amount);
  ELSIF UPDATING THEN
    INSERT INTO orders_cdc_log(op_type, id, amount) VALUES ('U', :NEW.id, :NEW.amount);
  ELSIF DELETING THEN
    INSERT INTO orders_cdc_log(op_type, id, amount) VALUES ('D', :OLD.id, :OLD.amount);
  END IF;
END;
/

타겟 쪽(Oracle이든 PostgreSQL이든)에서 이 로그 테이블을 주기적으로 폴링해서 반영하면 됩니다.

  • 장점: 아키텍처가 단순, 별도 서버(Kafka 등) 불필요
  • 단점: 트리거가 트랜잭션 성능에 부담을 줌, 대량 변경 시 로그 테이블이 급격히 커짐, 원본 DDL 변경에 취약

12. ESB / iPaaS 미들웨어

미들 테이블이나 커스텀 API를 직접 짜는 대신, 상용/오픈소스 통합 플랫폼이 커넥터·매핑·스케줄링·모니터링을 다 제공하는 방식입니다. 기업 환경에서 DB 연동이 여러 개일 때 표준화하려고 많이 씁니다.

  • MuleSoft: Oracle Connector + Database Connector로 플로우 설계 (드래그앤드롭)
  • Informatica PowerCenter/IICS: 대표적인 엔터프라이즈 ETL+통합 툴, Oracle/PostgreSQL 커넥터 기본 제공
  • Tibco BusinessWorks: 실시간 메시지 기반 통합
  • Boomi: 클라우드 기반 iPaaS, 코드 없이 매핑 정의
[예시 흐름 - MuleSoft 개념]
Database Connector(Oracle, polling query) 
  → DataWeave(필드 매핑/변환) 
  → Database Connector(PostgreSQL, insert/upsert)
  → Scheduler(5분마다 실행)
  • 장점: GUI 기반이라 개발 속도 빠름, 에러 핸들링/재시도/모니터링 내장, 여러 시스템(DB뿐 아니라 SaaS, 파일 등) 통합에 유리
  • 단점: 라이선스 비용, 벤더 종속성(lock-in), 대규모 트래픽에선 커스텀 코드보다 느릴 수 있음

전체 방식 최종 정리

1 DB Link/FDW 즉시 직접 연결
2 ETL/ELT 배치 정기 이관
3 미들 테이블 배치 재처리 용이
4 API 방식 즉시~준실시간 느슨한 결합
5 파일 벌크(External Table/SQL*Loader) 배치(초대량) 마이그레이션용
6 분산 트랜잭션(2PC) 즉시 Oracle-Oracle 전용
7 트리거 기반 CDC 준실시간 인프라 없이 구현
8 ESB/iPaaS 즉시~배치 엔터프라이즈 표준화
9 CDC(로그기반, Debezium/GoldenGate) 초 단위 앞서 설명
10 DB 복제/Data Guard 초 단위 HA/DR
11 메시지 큐 초 단위 MSA 정합성

 

'DATABASE(SQL)' 카테고리의 다른 글

[Oracle] Archive (Log) Mode  (0) 2026.08.12
[Oracle] DB 테이블 백업  (0) 2024.10.09
[MS- SQL] 날짜 관련  (0) 2024.06.18
[Oracle] Database 관리 관련 수행 쿼리 모음  (0) 2024.05.30
Outer apply  (0) 2024.05.29
And

[Oracle] Archive (Log) Mode

|

What?

- 오라클 인스턴스 장애를 대비해 redo log 파일을 별도의 디렉토리에 저장해 놓는 방식

- 오라클 설치 시, 기본 설정은 non-archive log mode 이다.

 

// cmd창
sqlplus 
enter user-name
enter password

// sql에서 아카이브 로그 모드 확인
SQL> archive log list
Database log mode           No Archive Mode
Automatic archival           Disabled
Archive destination           USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     12
Current log sequence           15

// 아카이브 로그 파일 저장위치
$ORACLE_BASE/fast_recovery_area 

// 파라미터 파일 수정
// log_archive_dest 디렉토리 지정여부 확인(value값 확인)
SQL> show parameter log_archive_dest_1;
NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_1             string
log_archive_dest_10             string
log_archive_dest_11             string
log_archive_dest_12             string
log_archive_dest_13             string
log_archive_dest_14             string
log_archive_dest_15             string
log_archive_dest_16             string
log_archive_dest_17             string
log_archive_dest_18             string
log_archive_dest_19             string

// 파라미터 유형 확인
SQL> show parameter log_archive_format;

// 아카이브 모드 적용
SQL> alter database archivelog;

// 아카이브 모드 해제
SQL> alter database noarchivelog;

// DB 종료
SQL> shutdown immediate;

// DB 마운트
SQL> startup mount;

// DB Open
SQL> alter database open;

 

 

아카이브 로그 생성 경로 변경방법

-- DB가 아카이브 모드로 설정되어 있는지 확인
SELECT log_mode FROM v$database;

-- 아카이브 경로 확인
SELECT DESTINATION, STATUS 
FROM V$ARCHIVE_DEST 
WHERE STATUS='VALID';
-- 운영 : /orabackup/arch
-- 개발 : /oracle/product/12.2.0/db_1/dbs/arch

-- 아래 질의로 경로가 나오므로 DBeaver 툴로 sql 실행 시 아카이브 로그 경로변경가능
SELECT value FROM v$parameter WHERE name='spfile';
-- 개발 : /oracle/product/12.2.0/db_1/dbs/spfileEHRBS.ora
-- 운영 : /oracle/product/12.2.0/db_1/dbs/spfileEHRBS.ora

-- 아카이브 로그 디렉토리 생성 
mkdir -p /home/oracle_backup/arch -- 운영 디렉토리 : /home/oracle_backup/arch
chown oracle:dba /home/oracle_backup/arch -- id oracle 확인시, dba 그룹에 속해있음
chmod 750 /home/oracle_backup/arch -- 권한부여

-- 경로변경
ALTER SYSTEM SET log_archive_dest_1='LOCATION=/home/oracle_backup/arch' SCOPE=BOTH;

-- 변경확인
SELECT name, value 
FROM v$parameter 
WHERE name LIKE 'log_archive_dest%';
And

Docker와 Kubernetes(Minikube) 환경을 구축

|

* 아래 내용은 [윈도우 호스트 -> VMware 리눅스 -> 도커 컨테이너(Minikube) -> 파드] 의 중첩된 환경의 특수성임을 참고바람

 

1. 패키지 목록 업데이트 및 필수 도구 설치

// 먼저 시스템을 최신 상태로 업데이트
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y ca-certificates curl apt-transport-https

 

2. Docker 설치

// 가장 먼저 컨테이너 실행 환경인 Docker를 설치)Docker 공식 저장소를 추가하고 설치하는 과정)
# Docker의 공식 GPG 키 추가
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Docker 저장소 설정
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Docker 설치
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 현재 사용자를 docker 그룹에 추가하여 sudo 없이 docker 명령어 사용 가능하게 설정
sudo usermod -aG docker $USER
newgrp docker
(참고: newgrp docker 명령어 이후 로그아웃 되었다고 느껴지거나 권한 문제가 계속된다면, 우분투를 재부팅하거나 해당 터미널을 나갔다가 다시 접속필요)


3. kubectl (쿠버네티스 제어 도구) 설치

// 쿠버네티스 클러스터와 통신하기 위한 커맨드라인 도구를 설치
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl


4. Minikube (로컬 쿠버네티스) 설치 및 실행

// 가볍게 쿠버네티스를 구축할 수 있는 Minikube를 설치하고 클러스터를 시작합니다.
# Minikube 다운로드 및 설치
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# Minikube 클러스터 시작 (Docker를 드라이버로 사용)
minikube start --driver=docker

 

5. 설치 확인

// 설치가 완료되면 다음 명령어로 쿠버네티스 노드가 잘 실행되고 있는지 확인
kubectl get nodes
// 위 명령어를 쳤을 때 상태가 Ready로 나오면 준비가 완벽하게 끝난 것

 

6. Docker 컨테이너 이미지 생성 &  Kubernetes에 배포하기 위한 명세서(YAML)를 작성

1) Dockerfile : React 앱 빌드 및 Nginx 이미지 생성용.

# 1단계: 빌드 환경 (Node.js) - 18일경우 에러남(vite 가 요구하는 최소보전 : 20.19+)
FROM node:20-alpine AS builder

WORKDIR /app

# 패키지 정보 복사 및 의존성 설치
COPY package.json package-lock.json ./
RUN npm install

# 소스코드 복사 및 빌드
COPY . .
RUN npm run build

# 2단계: 실행 환경 (Nginx)
FROM nginx:alpine

# Nginx 커스텀 설정 파일 복사
COPY --from=builder /app/nginx/nginx.conf /etc/nginx/conf.d/default.conf

# 빌드된 React 정적 파일들을 Nginx의 서빙 디렉토리로 복사
COPY --from=builder /app/dist /usr/share/nginx/html

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

2) nginx.conf : React의 클라이언트 사이드 라우팅을 Nginx가 이해할 수 있도록 하는 커스텀 설정.

server {
    listen 80;
    server_name localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        # React Router를 위해 경로를 찾지 못하면 index.html로 폴백되도록 설정
        try_files $uri $uri/ /index.html;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

3) board-app.yaml : Kubernetes에 2개의 복제본(Pod)과 접속용 NodePort(30080 포트) 서비스를 선언한 배포 문서.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: board-app-deployment
  labels:
    app: board-app
spec:
  replicas: 2 # 2개의 파드(컨테이너) 복제본을 실행하여 고가용성 보장
  selector:
    matchLabels:
      app: board-app
  template:
    metadata:
      labels:
        app: board-app
    spec:
      containers:
      - name: board-app-container
        # ⚠️ 중요: 사용할 이미지 이름 (DockerHub 등 레지스트리에 푸시된 이름)
        image: {도커허브ID}/board-app:v1.0.0
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: "100m"
            memory: "128Mi"
          limits:
            cpu: "200m"
            memory: "256Mi"

---
apiVersion: v1
kind: Service
metadata:
  name: board-app-service
spec:
  # 외부에서 접근 가능하게 NodePort 사용 (또는 프록시 통신을 위한 ClusterIP)
  type: NodePort 
  selector:
    app: board-app
  ports:
    - protocol: TCP
      port: 80 # 쿠버네티스 서비스가 열어둘 포트
      targetPort: 80 # Nginx 컨테이너 포트
      nodePort: 30080 # 호스트(VM)에서 접근할 포트 범위 (30000-32767)

 

7. 앱을 리눅스 K8s에 올리는 방법

1) 올릴 앱 경로 상에서 docker hub 로그인 

Docker Desktop 설치 (설치 후 재부팅 필요)
Docker Hub(hub.docker.com) 계정필요

docker login

2) 올릴 앱을 도커 이미지로 빌드

docker build -t {도커허브ID}/board-app:v1.0.0 .

3) 빌드한 이미지를 docker hub 원격 저장소로 밀어 넣음

docker push {도커허브ID}/board-app:v1.0.0

 

8. 컨테이너 이미지를 리눅스의 쿠버네티스로 댕겨와서 실행해야함

1) 리눅스 환경 터미널에 접속 > board-app.yaml 파일 내용 복사 > 리눅스 터미널에서 nano board-app.yaml 등의 에디터를 열고 코드를 붙여넣기 후 저장

# 1. 홈 디렉토리로 이동 (안전장치)
cd ~
# 2. workspace 폴더와 그 아래 board-app 폴더를 한 번에 생성
mkdir -p workspace/board-app
# 3. 방금 만든 폴더로 이동
cd workspace/board-app
# 4. 이곳에서 YAML 파일 편집 시작
nano board-app.yaml

# nano 편집기 모드
붙여넣기(vmware paste 활용) > ctrl+o > enter > ctrl+x


2) 작성한 YAML 파일을 쿠버네티스 클러스터에 적용(배포)

kubectl apply -f board-app.yaml // 위에서 작성한 yaml 파일 경로상에서 실행해야됨

// error validating 오류가 날 경우 minikube 실행상태 확인 필요
minikube status

// stopped 인 경우 실행 시켜줌
minikube start


3) 정상적으로 동작 중인지 확인. 팟(Pod) 상태와 서비스 포트 등을 확인

kubectl get pods
kubectl get service board-app-service


4) 외부(호스트 PC) 접속을 위한 포워딩 구성

Minikube 환경은 기본적으로 자체 가상 IP망을 쓰기 때문에, VMware 외부(윈도우 웹 브라우저)에서 바로 접속하려면 추가 포워딩 명령어가 필요.

minikube service board-app-service --url // 해당 명령어 실행 시 접속가능한 url 값이 나옴


* 위 url 값으로 접속이 안 될 경우(윈도우 호스트 PC에서 브라우저로 접속이 안되는 경우)

1)  kubectl 포트포워딩(Port-Forward) 사용하여 리눅스 터미널에서 해당 명령어 실행상태로 놔두어야함

// 쿠버네티스 내부의 80번 포트를 밖에서 접근 가능한 30080 포트로 연결해 주고, 0.0.0.0을 통해 윈도우에서도 접속을 허용하겠다는 뜻
kubectl port-forward --address 0.0.0.0 service/board-app-service 30080:80

 

2) ip a 명령어를 통하여 리눅스 자체의 IP 주소(예: 192.168.0.x 등)를 확인

// 1)을 실행한 상태에서 터미널을 하나 더 띄워서 진행 필요
// 아래 명령어로 같은 리눅스 터미널 안에서 세션 전환
ctrl + alt + F1
ctrl + alt + F2 

// 결과 중에 ens33 이나 eth0 등의 이름 밑에 적혀있는 inet 192.168.x.x (예: 192.168.150.128 등) 주소를 찾은 후

// 해당 주소 및 포트를 이용해 접속하면 됨

 

* 그 외 안될때 체크 필요한 사항

// 1. 파드 정상 실행중인지 확인
kubectl get pods

// 2. 방화벽 inactive 확인
# 방화벽이 켜져 있는지 확인 (inactive면 방화벽 문제는 아닙니다)
sudo ufw status

# 만약 방화벽이 켜져(active) 있다면 30080 포트 개방
sudo ufw allow 30080/tcp

// 3. vmware 에서 nat 모드 확인

// 4. 리눅스 내부에서 접속이 잘되는지 확인 - 리눅스 터미널 창을 하나 더 열어서 아래 명령어 실행
curl http://localhost:30080

 

* 리눅스 재부팅한 경우

// 리눅스 재시작한 경우 아래 명령어들 진행 후 
minikube status

minikube start

kubectl port-forward --address 0.0.0.0 service/board-app-service 30080:80

// 접속
http://192.168.19.128:30080/
And

[Ubuntu 24.04] swap 설정 ~ ssh server 설정

|

/  : 16GB

/boot :  1.7GB

/swap : 2GB

 

1. SWAP 설정이 필요한 경우 [custom storage layout] 선택

 

2. 위 화면에서

- 하단 네모 - boot 용량을 증가시킨 후

- 남은 용량에서 size 및 format 설정 - swap 을 선택

 

 

* free space 가 안남도록 설정이 가능

 

ssh server 설정

 

import 하려는 github 계정에 ssh key 가 셋팅 되어 있어야함

 

https://maeryo88.tistory.com/293 참고

And

Google Antigravity

|

https://antigravity.google/?app=antigravity 

 

[필수 초기셋팅]
- AGQ 익스텐션 설치 (사용량 확인용)
    1. 왼쪽 내비게이션바 → 익스텐션 아이콘 클릭
    2. 검색: "Antigravity Quota"
    3. Henrik에서 출시한 "AGQ" 선택
    4. Install 클릭 

- 한글 답변 설정
    1. 우측 상단 Additional Options ⋮ 클릭
    2. Customization 선택
    3. Rules 탭에서 "+ Global" 클릭
    4. 입력: "모든 답변은 한글로 해주세요"
    5. Ctrl + S로 저장

- 터미널 설정 (Turbo 옵션 해제해야하는데 1.20.5 버전에선 안보임)
    우측 상단 Editor-Specific Settings → Editor Settings → Antigravity Settings → Terminal 섹션

- 토큰 덜 사용하게 하는법
    fast / gemini 3/1 pro low 버전으로 사용

-----------------------------------------------------------------------------------

[효율적인 프롬프트 작성 방법]
- "블로그 웹사이트 만들어줘. 메인 페이지에 글 목록, 각 글 클릭하면 상세 페이지, 다크모드 지원"
→ 구체적인 요구사항 "로그인 버튼 클릭 시 'Cannot read property of undefined' 에러 발생. src/Login.js 22번째 줄 관련"
→ 정확한 문제 위치 "메인 배너를 - 높이: 화면의 60% - 배경: 그라데이션 (파랑→보라) - 텍스트: 가운데 정렬, 흰색"
→ 명확한 디자인 spec 

단계별 작업 흐름
1단계: 기본 구조
"리액트로 블로그 만들어줘. 헤더, 메인, 푸터 레이아웃만" 

2단계: 핵심 기능
"글 목록 보여주는 기능 추가. 더미 데이터 5개로 테스트" 

3단계: 디테일
"각 글에 좋아요 버튼 추가. 클릭하면 하트 색깔 변경" 

4단계: 스타일링
"반응형 디자인 적용. 모바일에서는 한 줄에 글 1개"

 

-----------------------------------------------------------------------------------

[git 에 소스 올리는 법]
(사전에 git 설치가 되어 있어야함)

# 1. 깃 저장소가 있는 프로젝트 폴더로 이동합니다.
cd board-app // 저장소(github)에 repository가 먼저 만들어져 있어야함

# 2. 원격 저장소(GitHub) 주소를 연결합니다.
git remote add origin https://github.com/truehunt/board-app-by-antigravity.git

# 3. 기본 브랜치 이름을 main으로 설정합니다.
git branch -M main

# 4. GitHub로 소스코드를 푸시합니다!
git push -u origin main

And

서브넷 마스크 및 2진수 IP를 10진수로 변환하는 방법을 인터넷으로 자동으로 계산해주는 사이트

|

https://cidr.xyz/

 

Interactive visual CIDR and IP range calculator

Instantly compute and visualize CIDR subnets, IP ranges and masks. Free online tool for accurate network design, planning and IT education.

cidr.xyz

 

 

And

[네트워크] 기본적인 네트워크 설정 & 외부 통신 확인

|

[네트워크 설정]

- 외부로 핑을 보내 통신이 되는지 확인한다.

- ping 8.8.8.8 // 구글 DNS 

- 이때 안되는 원인이 해외망 차단이 되어있을경우 안될수도 있다.

 

[게이트웨이 확인]

- ifconfig 입력하여 네트워크 설정파일  확인 (네트워크 파일 경로 : /etc/sysconfig/network-scripts)

- ip route 입력하여 default gateway 확인 (default via x.x.x.x 값 박혀있어야함)

- 게이트웨이 설정안되어 있을경우 잡아주어야함(route add default gw x.x.x.x)

 

[외부 통신 확인]

- ping www.google.com  이 안될 경우 → DNS 서버 설정 확인

- /etc/resolv.conf 파일에 search nameserver 명시되어있는지 확인

 

[통신 테스트 방법]

ncat -vz 1.2.3.4 8080

telnet x.x.x.x 8080

curl -v telnet://1.2.3.4 8080
/dev/tcp/1.2.3.4/8080
netstat -an | grep 8080

 

[port 리슨 확인]

netstat -tnlp | grep 1521
sudo lsof -i :1521

 

[방화벽 확인]
systemctl status firewalld

 

[포트 및 방화벽 모두 확인하였으나 원인파악 힘들경우 - traceroute 활용(네트워크 경로 추적) ]

traceroute -T -p 8080 210.111.11.11

 

[포트 및 방화벽 모두 확인하였으나 원인파악 힘들경우 - access.log 를 확인한다]

ex. 오라클 : /oracle/diag/tnslsnr/ehrbs/listener/trace/listener.log

 

And
prev | 1 | 2 | 3 | 4 | ··· | 41 | next