봇한테 스캔당함..ㄷㄷ
nextjs 프론트를 만들다가
npm run dev를 했을 뿐인데
알 수 없는 로그가 계속 띄워졌다.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
PS C:\Users\project> npm run dev
> frontend_re@0.1.0 dev
> cross-env NODE_ENV=development next dev -p 3001 --turbopack
▲ Next.js 15.3.3 (Turbopack)
- Local: http://localhost:3001
- Network: http://192.168.0.252:3001
- Environments: .env.local, .env.development
✓ Starting...
✓ Compiled middleware in 162ms
✓ Ready in 1472ms
○ Compiling /_not-found/page ...
✓ Compiled /_not-found/page in 2s
[GatewayAPI] 초기화: { baseUrl: 'https://api.blessflow.com', isApp: false }
[GatewayAPI] Axios 설정: {
baseURL: 'https://api.blessflow.com',
headers: { 'Content-Type': 'application/json' },
withCredentials: true,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN'
}
GET /.env.development.sample 404 in 2323ms
GET /.env.dist 404 in 90ms
GET /.env.docker 404 in 86ms
GET /.env.docker.dev 404 in 92ms
GET /.env.example 404 in 84ms
GET /.env.local 404 in 87ms
GET /.env.old 404 in 88ms
GET /.env.php 404 in 94ms
GET /.env.prod 404 in 90ms
GET /.env.prod.local 404 in 92ms
GET /.env.production 404 in 86ms
GET /.env.production.local 404 in 89ms
GET /.env.project 404 in 94ms
GET /.env.sample 404 in 85ms
GET /.env.save 404 in 88ms
GET /.env.stage 404 in 92ms
GET /.env.travis 404 in 90ms
GET /.env_archive 404 in 86ms
GET /.envrc 404 in 87ms
GET /.envs 404 in 94ms
GET /.env~ 404 in 91ms
GET /.git/config%3C/pre%3E 404 in 87ms
GET /.gitlab-ci/.env 404 in 89ms
GET /.local 404 in 93ms
GET /.production 404 in 92ms
GET /.profile 404 in 92ms
GET /.remote 404 in 89ms
GET /.ssh/sftp-config.json 404 in 85ms
GET /.vscode/.env 404 in 89ms
GET /.vscode/settings.json 404 in 84ms
GET /.vscode/sftp.json 404 in 88ms
○ Compiling / ...
✓ Compiled / in 619ms
GET /?phpinfo=1 200 in 749ms
GET /?pp=enable&pp=env 200 in 123ms
GET /?pp=env&pp=env 200 in 109ms
GET /?q=info 200 in 121ms
GET /?xdebuginfo 200 in 112ms
GET /Dockerfile 404 in 95ms
GET /Node.js/JavaScript 404 in 88ms
GET /Properties/launchSettings.json 404 in 90ms
GET /README.md 404 in 90ms
GET /__tests__/test-become/.env 404 in 91ms
GET /_profiler/phpinfo 404 in 91ms
GET /_profiler/phpinfo.php 404 in 88ms
GET /admin-app/.env 404 in 87ms
GET /admin/.env 404 in 117ms
GET /admin/config 404 in 91ms
GET /admin/test 404 in 92ms
GET /administrator/.env 404 in 93ms
GET /android_app/.env 404 in 103ms
GET /angular.json 404 in 88ms
GET /ansible.cfg 404 in 99ms
GET /ansible/.env 404 in 89ms
GET /api/.env 404 in 87ms
GET /api/.env.dev 404 in 101ms
GET /api/.env.local 404 in 85ms
GET /api/.env.prod 404 in 93ms
GET /api/config/tsconfig.json 404 in 107ms
GET /api/shared/config/config.env 404 in 88ms
GET /app.js 404 in 89ms
GET /app.py 404 in 99ms
GET /app/.env 404 in 93ms
GET /app/code/core.xml 404 in 88ms
GET /app/code/local.xml 404 in 95ms
GET /app/config.py 404 in 96ms
GET /app/etc/config.local.php 404 in 95ms
GET /app/etc/config.php 404 in 89ms
GET /app/etc/config/core.xml 404 in 97ms
GET /app/etc/config/local.xml 404 in 86ms
GET /app/etc/env.local.php 404 in 107ms
GET /app/etc/env.php 404 in 107ms
GET /app/etc/local.xml 404 in 101ms
GET /app/etc/settings.xml 404 in 94ms
GET /app/settings.py 404 in 98ms
GET /app_dev.php/_profiler/phpinfo 404 in 92ms
GET /application-dev.properties 404 in 97ms
GET /application.properties 404 in 96ms
GET /application/.env 404 in 101ms
GET /application/config/autoload.php 404 in 90ms
GET /application/config/config.php 404 in 100ms
GET /application/config/constants.php 404 in 87ms
...
다음과 같이 수정해서 localhost에서만 접속 가능하게 함.
하지만, 여전히 클라우드플레어 터널로 보안 스캐너들이 접속해옴.
따라서 미들웨어에서 의심스러운 요청을 차단해주기로 함.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
export function middleware(request: NextRequest) {
const host = request.headers.get("host");
const url = request.nextUrl.clone();
const pathname = url.pathname;
// 🛡️ 보안 스캔 요청 차단
const suspiciousPatterns = [
/^\/\.env/, // .env 파일들
/^\/\.git/, // git 설정 파일들
/^\/\.vscode/, // VSCode 설정 파일들
/^\/Dockerfile/, // Docker 설정
/^\/README\.md/, // README 파일
/^\/package\.json/, // 패키지 설정
/^\/(Properties|Node\.js)/, // 기타 설정 폴더들
/phpinfo|xdebuginfo/i, // PHP 디버그 요청
];
// 의심스러운 경로 접근 시 403 반환
if (suspiciousPatterns.some((pattern) => pattern.test(pathname))) {
console.log(`🚫 [Security] Blocked suspicious request: ${pathname}`);
return new NextResponse("Forbidden", { status: 403 });
}
...
}
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
31
32
export function middleware(request: NextRequest) {
const host = request.headers.get("host");
const url = request.nextUrl.clone();
const pathname = url.pathname;
// 🛡️ 보안 스캔 요청 차단
const suspiciousPatterns = [
/^\/\.env/, // .env 파일들 (.env.local, .env.development 등)
/^\/\.git/, // git 설정 파일들
/^\/\.vscode/, // VSCode 설정 파일들
/^\/\.(ssh|profile|local)/, // 시스템 설정 파일들
/^\/Dockerfile/, // Docker 설정
/^\/README\.md/, // README 파일
/^\/package(-lock)?\.json/, // package.json, package-lock.json
/^\/tsconfig\.json/, // TypeScript 설정
/^\/next\.config\.(js|ts|mjs)/, // Next.js 설정
/^\/tailwind\.config\.(js|ts)/, // Tailwind 설정
/^\/postcss\.config\.(js|mjs)/, // PostCSS 설정
/^\/.*\.(yml|yaml)$/, // YAML 설정 파일들
/^\/(Properties|Node\.js)/, // 기타 설정 폴더들
/phpinfo|xdebuginfo/i, // PHP 디버그 요청
/^\/__tests__/, // 테스트 파일들
/^\/cypress/, // Cypress 테스트
];
// 의심스러운 경로 접근 시 403 반환
if (suspiciousPatterns.some((pattern) => pattern.test(pathname))) {
console.log(`🚫 [Security] Blocked suspicious request: ${pathname}`);
return new NextResponse("Forbidden", { status: 403 });
}
...
}
“혹시나”하는 마음으로 정말 대놓고 대량스캔을 시도하는 봇들 ㄷㄷ
아무튼, nextjs는 public만 털리지만, 다른 프레임워크에서나 서비스에서 port를 클라우드터널에 연결할 시 자칫 조치가 미흡해 중요한 정보가 털리진 않는지 조심해야할 듯 함.
+추가) 만약, 미들웨어 구성에 에로사항이 있거나 더 강력한 방법을 사용하고 싶으시다면 백엔드 API 게이트웨이를 거치도록 하는 방법을 고려하실 수 있습니다. https://blog.naver.com/devramyun/223902326607
[20250617] Nextjs에서 미들웨어 대신 별도 프론트엔드 게이트웨이를 사용하면? Nextjs 15.3.3 에서는 turbopack을 사용했을 시 공식적으로 middleware 사용 불가인 점이 명시되어 있습니… Nextjs 15.3.3 에서는 turbopack을 사용했을 시 공식적으로 middleware 사용 불가인 점이 명시되어 있습니…
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.








