Каковы правила iptables для противодействия наиболее распространенным DoS-атакам? [закрыто]

В последнее время я получил много DoS-атак небольшого масштаба. Мне интересно, какие правила iptables я должен использовать для противодействия наиболее распространенным DoS-атакам и в целом для защиты моего веб-сервера.

Веб-сервер поддерживает Varnish -> nginx / php5 -> memcached -> mysql

Я пробовал несколько общих квитанций, но они также блокируют доступ к моему серверу базы данных, который находится на удаленном сервере, поэтому я просто сбросил предлагаемые правила. , и теперь я чувствую себя немного беспомощным и открытым, когда вижу только fail2ban на iptables.

Так что цените свои правила блокирования наиболее распространенных векторов атак.

7
задан 24 July 2012 в 15:07
3 ответа

Вот несколько правил, которые я использую:

# Reject spoofed packets
iptables -A INPUT -s 10.0.0.0/8 -j DROP
iptables -A INPUT -s 169.254.0.0/16 -j DROP
iptables -A INPUT -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i eth0 -s 127.0.0.0/8 -j DROP

iptables -A INPUT -s 224.0.0.0/4 -j DROP
iptables -A INPUT -d 224.0.0.0/4 -j DROP
iptables -A INPUT -s 240.0.0.0/5 -j DROP
iptables -A INPUT -d 240.0.0.0/5 -j DROP
iptables -A INPUT -s 0.0.0.0/8 -j DROP
iptables -A INPUT -d 0.0.0.0/8 -j DROP
iptables -A INPUT -d 239.255.255.0/24 -j DROP
iptables -A INPUT -d 255.255.255.255 -j DROP

# Stop smurf attacks
iptables -A INPUT -p icmp -m icmp --icmp-type address-mask-request -j DROP
iptables -A INPUT -p icmp -m icmp --icmp-type timestamp-request -j DROP
iptables -A INPUT -p icmp -m icmp -j DROP

# Drop all invalid packets
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP

# Drop excessive RST packets to avoid smurf attacks
iptables -A INPUT -p tcp -m tcp --tcp-flags RST RST -m limit --limit 2/second --limit-burst 2 -j ACCEPT

# Attempt to block portscans
# Anyone who tried to portscan us is locked out for an entire day.
iptables -A INPUT   -m recent --name portscan --rcheck --seconds 86400 -j DROP
iptables -A FORWARD -m recent --name portscan --rcheck --seconds 86400 -j DROP

# Once the day has passed, remove them from the portscan list
iptables -A INPUT   -m recent --name portscan --remove
iptables -A FORWARD -m recent --name portscan --remove

# These rules add scanners to the portscan list, and log the attempt.
iptables -A INPUT   -p tcp -m tcp --dport 139 -m recent --name portscan --set -j LOG --log-prefix "Portscan:"
iptables -A INPUT   -p tcp -m tcp --dport 139 -m recent --name portscan --set -j DROP

iptables -A FORWARD -p tcp -m tcp --dport 139 -m recent --name portscan --set -j LOG --log-prefix "Portscan:"
iptables -A FORWARD -p tcp -m tcp --dport 139 -m recent --name portscan --set -j DROP
20
ответ дан 2 December 2019 в 23:14

Я использую IPtables для ограничения доступа к FTP и SSH, я просто разрешаю IP-адресам моего компьютера подключаться к серверу. Я не могу сказать, что у меня были проблемы с DOS-атаками.

/sbin/iptables -A INPUT -p tcp --dport 22 -s 86.106.0.0/16 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 22 -s 89.122.0.0/16 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 22 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 21 -s 86.106.0.0/16 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 21 -s 89.122.0.0/16 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 21 -j DROP 

Эти правила разрешают доступ к портам 22 и 21 на двух разных IP-адресах. Вы, вероятно, можете добавить порт MySQL вашего сервера db и таким образом заблокировать доступ других клиентов напрямую к вашему серверу.

Изменить: когда сервер перегружен, я считаю полезным видеть статистику Apache "mod-status", вывод выглядит следующим образом примерно так: http://www.apache.org/server-status вы можете видеть всех посетителей сайта, пауков, запросы URL и т. д. Реализация занимает менее 1 минуты: http: // httpd .apache.org / docs / 2.2 / mod / mod_status.html

1
ответ дан 2 December 2019 в 23:14

Так что цените свои пуленепробиваемые правила.

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

Это единственный «пуленепробиваемый» способ.

3
ответ дан 2 December 2019 в 23:14

Теги

Похожие вопросы