feroom

Пример правил iptables для защиты вебсервера

1 сообщение в этой теме

Пример простых но надежных правил, для защиты Вашего вебсервера!

 

Набор собран для записи в файл .sh
При выполнении которого, данные правила будут устанавливаться в Ваш iptables.

 

#!/bin/sh
### BEGIN INIT INFO
# Provides:          iptables
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#
##eth0 - Замените на имя своего адаптера
iptables -A INPUT -i eth0 -j DROP
iptables -A OUTPUT -o eth0 -j ACCEPT
#
iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
#
iptables -A 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
# REL, ESTB allow
iptables -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
#
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
##SSL
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
##SSH and log
#ssh for all IP
#iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#SSH secure
iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m hashlimit --hashlimit 1/hour --hashlimit-burst 5 --hashlimit-mode srcip --hashlimit-name SSH --hashlimit-htable-expire 60000 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -j DROP
#SSH Secure end
#Лог только для отладки
#iptables -I INPUT -p tcp --dport 22 -j LOG --log-prefix " ssh_to_me "
##END SSH and log
#MySQL rule accept
iptables -I INPUT -p tcp --dport 3306 -s 192.168.222.222 -j ACCEPT
#
#Log (для отладки, в боевом режиме советую закомментировать)
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LOGGING -m limit --limit 5/min -j LOG --log-prefix "IPTABLES-Dropped: " --log-level 4
iptables -A LOGGING -j DROP
#####MAC BAN####  (Пример)
#iptables -A INPUT -m mac --mac-source 00:0у:бA:99:44:28 -j DROP
#####IPBAN##### (Пример)
#iptables -I INPUT -p tcp --dport 80 -s 192.168.111.111 -j DROP

 

Немного поясню сегмент #SSH secure
hashlimit-burst 5
Значение 5, описывает количество попыток коннекта на порт до его блокировки за период hashlimit-htable-expire 60000
на время hashlimit 1/hour

В данном примере установлено 5 соединений за 60000 миллисекунд, если ИП совершит 6-ю попытку, он будет отправлен в DROP на 1 час. Если таймер 1 час не истек и совершена попытка коннекта на порт с этого ИП, таймер возвращается снова на 1 час.

Т.е. брутер сам себя будет загонять в вечный бан )

Остальное, интуитивно понятно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах