Selamın Aleyküm
-Ben ByFelez-
Konumuza geçelim ;
Bu Node.js programı, gelen isteklere karşı bir güvenlik katmanı eklemek amacıyla örnek olarak bu konu için foruma içerik olması için kodladım. IP ve User-Agent kontrolleri, kötü niyetli istekleri sınırlar. Tor ağı kontrolü ile Tor ağından gelen istekler engellenir. Güvenlik başlıkları, CORS kontrolü ve HTTPS zorunluluğu gibi önlemlerle temel bir koruma sağlanır. Gelişmiş günlükleme özellikleri ve çoklu iş parçacığı desteği de içerir.
Adım Adım Gidelim ;
Projemiz için gerekli modülleri ekleyelim
İP Sınırlarını ve engelleme süresi
Aynı anda 5 istek sınırına ulaşan İP adresleri 1 dakika engellenir. (milisaniye cinsinde belirttim kodda)
Express uygulamasını oluşturma
Middleware'lerin kullanılması
İP ve User-Agent bilgilerini kaydetme
İP bilgilerini kontrol etme
Belirli bir İP'den gelen istek sayısı limiti kontrolü
İP engelleme
Eğer İP engellenmişse yönlendirme
Tor ağından gelen istekleri engelleme
Tor Ağı Kontrolü
Eğer gelen IP Tor ağına aitse engelle
Güvenlik başlıkları için Helmet
CORS Kontrolü eklemek için Cors kullanımı
Gzip sıkıştırma eklemek için Compression kullanımı
Ana sayfa endpoint
Engellenen kullanıcı sayfası endpoint
Tor ağından gelen istekleri engellenen sayfasına yönlendirme
SSL/TLS sertifikası ve anahtarı
Sunucu başlatma
İş parçacıklarını oluşturma
İş Parçacığı Çalıştırma
Gelelim Özelliklere ;
-Ben ByFelez-
Konumuza geçelim ;
Bu Node.js programı, gelen isteklere karşı bir güvenlik katmanı eklemek amacıyla örnek olarak bu konu için foruma içerik olması için kodladım. IP ve User-Agent kontrolleri, kötü niyetli istekleri sınırlar. Tor ağı kontrolü ile Tor ağından gelen istekler engellenir. Güvenlik başlıkları, CORS kontrolü ve HTTPS zorunluluğu gibi önlemlerle temel bir koruma sağlanır. Gelişmiş günlükleme özellikleri ve çoklu iş parçacığı desteği de içerir.
Adım Adım Gidelim ;
Projemiz için gerekli modülleri ekleyelim
JavaScript:
const express = require('express');
const bodyParser = require('body-parser');
const compression = require('compression');
const helmet = require('helmet');
const cors = require('cors');
const axios = require('axios');
const fs = require('fs');
const https = require('https');
const cluster = require('cluster');
const os = require('os');
İP Sınırlarını ve engelleme süresi
JavaScript:
const IP_LIMIT = 5;
const BLOCK_TIME = 60000; // 1 dakika
const ipRequests = {};
Aynı anda 5 istek sınırına ulaşan İP adresleri 1 dakika engellenir. (milisaniye cinsinde belirttim kodda)
Express uygulamasını oluşturma
JavaScript:
const app = express();
Middleware'lerin kullanılması
JavaScript:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
İP ve User-Agent bilgilerini kaydetme
JavaScript:
app.use((req, res, next) => {
const ip = req.ip || req.connection.remoteAddress;
const userAgent = req.get('User-Agent');
İP bilgilerini kontrol etme
JavaScript:
if (ipRequests[ip]) {
ipRequests[ip].count += 1;
ipRequests[ip].userAgents.add(userAgent);
Belirli bir İP'den gelen istek sayısı limiti kontrolü
JavaScript:
if (ipRequests[ip].count > IP_LIMIT) {
ipRequests[ip].blockedUntil = Date.now() + BLOCK_TIME;
return res.redirect('/blocked-user.html');
}
} else {
ipRequests[ip] = {
count: 1,
userAgents: new Set([userAgent]),
blockedUntil: 0,
};
}
next();
});
İP engelleme
JavaScript:
app.use((req, res, next) => {
const ip = req.ip || req.connection.remoteAddress;
Eğer İP engellenmişse yönlendirme
JavaScript:
if (ipRequests[ip].blockedUntil > Date.now()) {
return res.redirect('/blocked-user.html');
}
next();
});
Tor ağından gelen istekleri engelleme
JavaScript:
app.use(async (req, res, next) => {
const ip = req.ip || req.connection.remoteAddress;
try {
Tor Ağı Kontrolü
JavaScript:
const torCheckResponse = await axios.get(`https://check.torproject.org/torbulkexitlist?ip=${ip}`);
Eğer gelen IP Tor ağına aitse engelle
JavaScript:
if (torCheckResponse.data && torCheckResponse.data.includes(ip)) {
return res.redirect('/tor-blocked.html');
}
} catch (error) {
console.error('Tor check failed:', error);
}
next();
});
Güvenlik başlıkları için Helmet
JavaScript:
app.use(helmet());
CORS Kontrolü eklemek için Cors kullanımı
JavaScript:
app.use(cors());
Gzip sıkıştırma eklemek için Compression kullanımı
JavaScript:
app.use(compression());
Ana sayfa endpoint
JavaScript:
app.get('/', (req, res) => {
res.send('Ana Sayfa');
});
Engellenen kullanıcı sayfası endpoint
JavaScript:
app.get('/blocked-user.html', (req, res) => {
res.send('Engellenen Kullanıcı Sayfası');
});
Tor ağından gelen istekleri engellenen sayfasına yönlendirme
JavaScript:
app.get('/tor-blocked.html', (req, res) => {
res.send('Tor Ağından Gelen İstekler Engellendi');
});
SSL/TLS sertifikası ve anahtarı
JavaScript:
const privateKey = fs.readFileSync('/path/to/private-key.pem', 'utf8');
const certificate = fs.readFileSync('/path/to/certificate.pem', 'utf8');
const credentials = { key: privateKey, cert: certificate };
Sunucu başlatma
JavaScript:
if (cluster.isMaster) {
İş parçacıklarını oluşturma
JavaScript:
for (let i = 0; i < os.cpus().length; i++) {
cluster.fork();
}
} else {
İş Parçacığı Çalıştırma
JavaScript:
const port = 443; // HTTPS için 443 portu
const httpsServer = https.createServer(credentials, app);
httpsServer.listen(port, () => {
console.log(`Sunucu ${port} portunda çalışıyor (HTTPS)`);
});
}
Gelelim Özelliklere ;
- IP ve User-Agent Kontrolü
- Tor Ağı Kontrolü
- Güvenlik Başlıkları
- CORS Kontrolü
- HSTS (Strict Transport Security)
- HPKP (HTTP Public Key Pinning)
- Gzip Sıkıştırma
- Loglama
- Cluster ve İş Parçacıkları
Saygılarımla >>