Добрый день, форум. Я тут новенький. Уж очень понравилась идея сайта и форума по этой тематики.
К делу. Занимаюсь новым-старым проектом своим, создаю веб сервер на дому. Наваял тут небольшой конфиг iptables для веб сервера. Выставляю на всеобщее обозрение и жду замечаний и предложений, возможно по защите от ddos. Вообщем все по безопасности.
#!/bin/sh
# Защита от спуфинга (подмена адреса отправителя)
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
#Очистка всех фепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
export IPT="iptables"
# Разрешаем исходящий трафик и запрещаем весь входящий и транзитный:
$IPT -P INPUT DROP
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD DROP
# Разрешаем уже инициированные соединения, а также дочерние от них:
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#Отбрасываем все пакеты, которые не могут быть идентивицированы
#и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state --state INVALID -j DROP
# Запрет FIN-сканирования
$IPT -A INPUT –p tcp –m tcp --tcp-flags FIN,ACK FIN -j DROP
# Запрет X-сканирования
$IPT -A INPUT –p tcp –m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG –j DROP
# Запрет N-сканирования
$IPT -A INPUT –p tcp –m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE –j DROP
# Запрещаем сканирование NMAP-ом
$IPT -I INPUT -p tcp -m osf --genre NMAP -j DROP
#********************************************************************
# Защита ssh от перебора паролей
$IPT -N FAILLOG
$IPT -A FAILLOG -j LOG --log-prefix "iptables blocked: " --log-level 7
$IPT -A FAILLOG -j DROP
$IPT -A INPUT -p tcp -m tcp --dport 22222 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 --name DEFAULT --rsource -j FAILLOG
#********************************************************************
# Разрешаем ssh, dns, ldap, ftp и веб сервисы:
$IPT -A INPUT -p tcp --dport 22222 -i eth0 -j ACCEPT
$IPT -A INPUT -p tcp --dport 80 -i eth0 -j ACCEPT
# local loopback:
$IPT -A INPUT -i lo -j ACCEPT
# Разрешаем ping:
$IPT -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type source-quench -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
# Блокируем все остальное
$IPT -A INPUT -j DROP
#Вывод информации о состоянии таблиц
route -n
$IPT -L
$IPT -L -v -n
$IPT -L -v -n -t nat
К делу. Занимаюсь новым-старым проектом своим, создаю веб сервер на дому. Наваял тут небольшой конфиг iptables для веб сервера. Выставляю на всеобщее обозрение и жду замечаний и предложений, возможно по защите от ddos. Вообщем все по безопасности.
#!/bin/sh
# Защита от спуфинга (подмена адреса отправителя)
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
#Очистка всех фепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
export IPT="iptables"
# Разрешаем исходящий трафик и запрещаем весь входящий и транзитный:
$IPT -P INPUT DROP
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD DROP
# Разрешаем уже инициированные соединения, а также дочерние от них:
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#Отбрасываем все пакеты, которые не могут быть идентивицированы
#и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state --state INVALID -j DROP
# Запрет FIN-сканирования
$IPT -A INPUT –p tcp –m tcp --tcp-flags FIN,ACK FIN -j DROP
# Запрет X-сканирования
$IPT -A INPUT –p tcp –m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG –j DROP
# Запрет N-сканирования
$IPT -A INPUT –p tcp –m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE –j DROP
# Запрещаем сканирование NMAP-ом
$IPT -I INPUT -p tcp -m osf --genre NMAP -j DROP
#********************************************************************
# Защита ssh от перебора паролей
$IPT -N FAILLOG
$IPT -A FAILLOG -j LOG --log-prefix "iptables blocked: " --log-level 7
$IPT -A FAILLOG -j DROP
$IPT -A INPUT -p tcp -m tcp --dport 22222 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 --name DEFAULT --rsource -j FAILLOG
#********************************************************************
# Разрешаем ssh, dns, ldap, ftp и веб сервисы:
$IPT -A INPUT -p tcp --dport 22222 -i eth0 -j ACCEPT
$IPT -A INPUT -p tcp --dport 80 -i eth0 -j ACCEPT
# local loopback:
$IPT -A INPUT -i lo -j ACCEPT
# Разрешаем ping:
$IPT -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type source-quench -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
# Блокируем все остальное
$IPT -A INPUT -j DROP
#Вывод информации о состоянии таблиц
route -n
$IPT -L
$IPT -L -v -n
$IPT -L -v -n -t nat