iptables и индексация поисковиками

mihavxc
На сайте с 22.08.2009
Offline
109
739

Имеется VPS(2GB оперативы, Hetzner) с Ubuntu,lighttpd,mysql,php и парочкой сайтов с общим онлайном до 5к уников в сутки.

Решил набросать примитивную защиту от DDOS на уровне iptables. И задумался, а не попадут ли у меня поисковые роботы под эти ограничения? Кто-нибудь может сказать насколько активно они индексируют сайт? Может и по самим настройкам, что подскажите? Спасибо.

iptables -A INPUT -i eth0 -p tcp --sport 22 -j ACCEPT

iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -m recent --rcheck --seconds 60 -m limit --limit 50/second -j DROP
iptables -I INPUT -m conntrack --ctstate NEW,INVALID -p tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT --reject-with tcp-reset
iptables -I INPUT -m conntrack --ctstate NEW -p tcp ! --syn -j DROP
iptables -I INPUT -p icmp -f -j DROP
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 85 -j LOG --log-prefix "WWW: "
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 85 -j DROP

iptables -t filter -A FORWARD -p icmp -m limit --limit 250/sec --limit-burst 500 -j QUEUE
iptables -t filter -A FORWARD -p icmp -j DROP

iptables -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT

# FTP
iptables -A INPUT -i eth0 -p tcp --dport 21 -j ACCEPT
# SMTP
iptables -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT
# DNS
iptables -A INPUT -i eth0 -p udp --sport 53 -j ACCEPT
# HTTP
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
# POP
iptables -A INPUT -i eth0 -p tcp --dport 110 -j ACCEPT
# IMAP
iptables -A INPUT -i eth0 -p tcp --dport 143 -j ACCEPT

iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 6 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 6 -j ACCEPT

iptables -A INPUT -p tcp --syn --dport 22 -m recent --name radiator --set
iptables -A INPUT -p tcp --syn --dport 22 -m recent --name radiator --update --seconds 30 --hitcount 3 -j DROP


net.ipv4.icmp_echo_ignore_broadcasts=1
net.core.somaxconn=1024
net.ipv4.tcp_syncookies=1
net.ipv4.conf.default.rp_filter=1
net.ipv4.ip_forward=0
net.ipv4.tcp_rmem = 4096 8388608 16777216
net.ipv4.tcp_wmem = 4096 4194394 16777216
net.ipv4.tcp_max_tw_buckets=720000
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_keepalive_time=1800
net.ipv4.tcp_keepalive_probes=7
net.ipv4.tcp_keepalive_intvl=30
net.ipv4.tcp_max_syn_backlog=1024
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.eth0.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
Andreyka
На сайте с 19.02.2005
Offline
822
#1

Эта защита от DDOS не поможет, разве что от школьного флуда, когда всем классом заходят на сайт и жмут F5

Не стоит плодить сущности без необходимости
mihavxc
На сайте с 22.08.2009
Offline
109
#2
Andreyka:
Эта защита от DDOS не поможет, разве что от школьного флуда, когда всем классом заходят на сайт и жмут F5

На большее и не рассчитываю, хотя бы от F5 и siege http://host.com -c 300 защититься бы пока:)

Я в больше степени переживаю не забанятся ли у меня поисковики таким образом.

zexis
На сайте с 09.08.2005
Offline
388
#3

Правил, которые ограничат работу поисковиков я здесь не вижу.

Но и полезность многих ваших правил сомнительна.

Например, не ясна цель

iptables -A INPUT -i eth0 -p tcp --sport 22 -j ACCEPT

Это правило при ддосе переполнит системный лог, если начнет срабатывать.

iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 85 -j LOG --log-prefix "WWW: "

к тому же 85 слишком высокое значение для ограничения ддоса, лучше поставить около 30.

Не ясно зачем вы заносите правила в цепочку FORWARD

iptables -t filter -A FORWARD -p icmp -m limit --limit 250/sec --limit-burst 500 -j QUEUE

iptables -t filter -A FORWARD -p icmp -j DROP

По моему опыту намного лучшие результаты для программной защиты от ддос дает, если обнаружить IP ботов в логах и в netstat и забанить флудящие IP занеся их все в отдельную цепочку iptables. Атаку до 500-1000 ботов таким способом вполне можно отбить.

mihavxc
На сайте с 22.08.2009
Offline
109
#4
zexis:

Например, не ясна цель
iptables -A INPUT -i eth0 -p tcp --sport 22 -j ACCEPT

Сам сижу по SSH, чтобы не закрыть себе доступ прописал это правило, разве не так нужно?:)

zexis:

Это правило при ддосе переполнит системный лог, если начнет срабатывать.
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 85 -j LOG --log-prefix "WWW: "
к тому же 85 слишком высокое значение для ограничения ддоса, лучше поставить около 30.

Сейчас включено, чтобы тестить, что запросы действительно блокируются. Да и на логротатор надеюсь. А 30 не мало будет? Боюсь, что поисковые боты могут сразу много сессий открывать или люди, которые сидят за NAT.

zexis:

iptables -t filter -A FORWARD -p icmp -m limit --limit 250/sec --limit-burst 500 -j QUEUE
iptables -t filter -A FORWARD -p icmp -j DROP

А как бы вы посоветовали поступить в этом случае?

zexis:

По моему опыту намного лучшие результаты для программной защиты от ддос дает, если обнаружить IP ботов в логах и в netstat и забанить флудящие IP занеся их все в отдельную цепочку iptables. Атаку до 500-1000 ботов таким способом вполне можно отбить.

Ну мониторить логи тоже планировал? А нет ли какой утилиты для "детектирования" ддосеров по логам?

На самом деле хотелось защититься хотя бы от банального siege с одной машины. А то сам проводил исследование у себя в области - 80% крупных порталов не выдержали и 1 минуты запросов siege host -c 300 -b с VPS в Германии на 100Мб

zexis
На сайте с 09.08.2005
Offline
388
#5

Для открытия доступа по SSH это правило

iptables -A INPUT -i eth0 -p tcp --sport 22 -j ACCEPT

не подойдет

Его нужно изменить на

iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

22 - это порт назначения у входящих на сервер SSH пакетов, а не источника.

---------- Добавлено 28.03.2012 в 18:29 ----------

Цепочка FORWARD используется для фильтрации транцитного трафика. Его вообще можно полностью запретить

echo '0' >/proc/sys/net/ipv4/ip_forward

смысла заносить что то в цепочку

iptables -t filter -A FORWARD

я не вижу.


---------- Добавлено 28.03.2012 в 18:40 ----------

mihavxc:

А нет ли какой утилиты для "детектирования" ддосеров по логам?

Готовых утилит для мониторинга логов есть много.

Это различные скрипты на shell.

Правда в большинстве случаев они дают много ложных срабатываний и против ддоса от них мало пользы, что бы они стали эффективными их нужно очень основательно доводить до ума.

mihavxc
На сайте с 22.08.2009
Offline
109
#6

Спасибо, поправил.

Есть еще что-то, что нужно добавить, на Ваш взгляд?

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