Оптимизация сервера

P3
На сайте с 09.05.2012
Offline
5
1049

Есть сервер с 768мб оперативки и 1500 Mhz. OC - CentOS
Нужно как-то защитить его от ддос атак.... Кладётся с 1 пк....
На нём стоит связка нджиникса и апача. Стоит скрипт DoS Deflate.
Можете подсказать что исправить/добавить в конфигах:laugh:

Вот конфиги:

nginx

user nginx;
worker_processes 1;
worker_rlimit_nofile 80000;

error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
worker_connections 50000;
use epoll;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
server_tokens off;
gzip on;
gzip_static on;
gzip_comp_level 5;
gzip_min_length 1024;
keepalive_timeout 30;
limit_req_zone $binary_remote_addr zone=one:3m rate=3r/s;
include /etc/nginx/conf.d/*.conf;


client_max_body_size 15m;
log_format isp '$bytes_sent $request_length';
server {
listen 93.183.203.48:80;
server_name drelatus-net www.drelatus-net;
rewrite ^(/mymanager/.*)$ https://$host$1 permanent;

location / {
limit_req zone=one burst=10;
proxy_pass http://127.0.0.1:8081;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
location ~* ^.+\.(jpg|jpeg|gif|png|svg|css|mp3|ogg|mpe?g|avi|zip|bz2?|rar)$ {
root /var/*****/*****/****/www/*************;
limit_req zone=one burst=10;
}
}
}


Апач

ServerRoot "/etc/httpd"PidFile run/httpd.pid
Timeout 15
KeepAlive Off
MaxKeepAliveRequests 50
KeepAliveTimeout 60


<IfModule worker.c>
StartServers 2
MinSpareServers 2
MaxSpareServers 10
MaxClients 15
MaxRequestsPerChild 2000 #после 200 запросов перезапускать процесс


</IfModule>

*****************************
Ниже много ненужной инфы

*****************************

iptables


# Furtive port scanner.
# Защита от скрытого сканирования портов.
-A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
-A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT


# Ping of death.
# Защита от Ping of death.
-A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
-A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT




-A ISPMGR -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT
-A ISPMGR -p tcp --dport 3306 -j REJECT
-A ISPMGR -p tcp -s 127.0.0.1 --dport 53 -j ACCEPT
-A ISPMGR -p tcp --dport 53 -j REJECT
-A ISPMGR -p tcp -s ***.**.1.1/16 --dport 22 -j ACCEPT
-A ISPMGR -p tcp -s ***.***.1.1/16 --dport 22 -j ACCEPT
-A ISPMGR -p tcp -s ***.***.1.1/16 --dport 22 -j ACCEPT
-A ISPMGR -p tcp -s ***.***.1.1/16 --dport 22 -j ACCEPT
-A ISPMGR -p tcp -s ***.***.1.1/16 --dport 443 -j ACCEPT
-A ISPMGR -p tcp -s ***.***.1.1/16 --dport 443 -j ACCEPT
-A ISPMGR -p tcp -s ***.***.1.1/16 --dport 443 -j ACCEPT
-A ISPMGR -p tcp -s ***.***.1.1/16 --dport 443 -j ACCEPT
-A ISPMGR -p tcp -s 127.0.0.1 --dport 22 -j ACCEPT
-A ISPMGR -p tcp --dport 22 -j REJECT
-A ISPMGR -p tcp --dport 443 -j REJECT
-A ISPMGR -p tcp -s 127.0.0.1 --dport 21 -j ACCEPT
-A ISPMGR -p tcp --dport 21 -j REJECT

sysctl

net.ipv4.tcp_syncookies = 1


# Disable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0


kern.maxfiles=90000
kern.maxfilesperproc=80000
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
kern.polling.burst_max=1000
kern.polling.each_burst=50
kern.ipc.somaxconn=32768
net.inet.tcp.msl=3000
net.inet.tcp.maxtcptw=40960
net.inet.tcp.nolocaltimewait=1
net.inet.ip.portrange.first=1024
net.inet.ip.portrange.last=65535
net.inet.ip.portrange.randomized=0
Andreyka
На сайте с 19.02.2005
Offline
822
#1

Что значит - кладется?

Не стоит плодить сущности без необходимости
zexis
На сайте с 09.08.2005
Offline
388
#2

Синтаксис sysctl у вас взят из freeBSD

в centOS он другой.

Вот такие параметры я ставлю.

net.ipv4.tcp_max_syn_backlog = 4096

net.ipv4.tcp_syncookies=1

net.ipv4.tcp_synack_retries=1

net.ipv4.tcp_keepalive_time=60

net.ipv4.tcp_keepalive_intvl=10

net.ipv4.tcp_keepalive_probes=2

net.ipv4.tcp_fin_timeout=15

В nginx

1) поставить ограничение на количество коннектов

limit_zone limz $binary_remote_addr 10m;

limit_conn limz 10;

2) лимит

limit_req_zone $binary_remote_addr zone=one:3m rate=3r/s;

Уменьшить до

limit_req_zone $binary_remote_addr zone=one:3m rate=1r/s;

3) из локешена статики

location ~* ^.+\.(jpg|jpeg|gif|png|svg|css|mp3|ogg|mpe?g|avi|zip|bz2?|rar)$

убрать лимит

limit_req zone=one burst=10;

Так как у вас картинки не будут грузится из за него.

Посмотреть количество уникальных IP атакующих ботов в логе access.log

Если их до 300 то шанс победить ддос на VPS есть.

Если ботов больше, то настраивать VPS бесполезно, нужно брать мощный выделенный сервер и настраивать защиту на нем.

P3
На сайте с 09.05.2012
Offline
5
#3
zexis:
Синтаксис sysctl у вас взят из freeBSD
в centOS он другой.
Вот такие параметры я ставлю.
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_synack_retries=1
net.ipv4.tcp_keepalive_time=60
net.ipv4.tcp_keepalive_intvl=10
net.ipv4.tcp_keepalive_probes=2
net.ipv4.tcp_fin_timeout=15


В nginx

1) поставить ограничение на количество коннектов
limit_zone limz $binary_remote_addr 10m;
limit_conn limz 10;

2) лимит
limit_req_zone $binary_remote_addr zone=one:3m rate=3r/s;
Уменьшить до
limit_req_zone $binary_remote_addr zone=one:3m rate=1r/s;

3) из локешена статики
location ~* ^.+\.(jpg|jpeg|gif|png|svg|css|mp3|ogg|mpe?g|avi|zip|bz2?|rar)$
убрать лимит
limit_req zone=one burst=10;
Так как у вас картинки не будут грузится из за него.

Посмотреть количество уникальных IP атакующих ботов в логе access.log
Если их до 300 то шанс победить ддос на VPS есть.
Если ботов больше, то настраивать VPS бесполезно, нужно брать мощный выделенный сервер и настраивать защиту на нем.

Рекорд одновременного пребывания 1,468, это было Сегодня в 17:51.

Обычно пользователей под 100-200....

Значит надо брать хостинг с антиддосом.... Есть на примете?

Спасибо за советы!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий