Настройка iptables на домашнем сервере.

Непонятный глюк и после ребута всё поднимается без сбоев. Через некоторое время валятся демоны (ssh, ftp, apache, verlihub и прочие) SNAT маршрутизацию же пропускает без проблем, хоть полчаса в инете сиди (видимо из-за того, что ядрёным модулем делается) пинг от сервера естественно отдаётся.

Syn наводнение - первое, что пришло в голову. Причесал все фильтры, дополнив старый скрипт (где-то в инетах подобрал) с комментариями на будущие.

Мониторится вся байда так:

iptables -L -nv

iptables -t nat -L -nv

#!/bin/sh
# Задаем некоторые переменные:
# Переменная, задающая путь к файлу запуска iptables.
IPT="/sbin/iptables"
# Номера непривилегированных портов.
PORTS="1024:65535"
# Интерфейсы.
LAN="eth0" # внешний
LAN_IP="10.16.16.1" # статичный внешний ип
WAN1="eth1" # локалка
WAN_NET="192.168.0.0/24" # внутренняя сеть
WAN2=""
# Порт для ssh, лучше задать отличный от стандартного.
SSHPORT="22"
# Очистить все правила.
$IPT -F
$IPT -X
$IPT -t nat -F
# Политики по умолчанию.
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
# Разрешаем прохождение любого трафика по интерфейсу обратной петли.
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
# Разрешаем прохождение любого трафика по локальному интерфейсу.
$IPT -A INPUT -i $LAN -j ACCEPT
$IPT -A OUTPUT -o $LAN -j ACCEPT
# Отбрасывать все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP
# Принимать все пакеты, которые инициированы из уже установленного соединения, и имеющим признак ESTABLISHED.
# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# SYN наводнение.
# Приводит к связыванию системных ресурсов, так что реальных обмен данными становится не возможным.
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP

# Сервисы, убрать ненужное
# ftp
$IPT -A INPUT -p tcp -m tcp --dport 21 -m state --state NEW -j ACCEPT
# ssh + защита от брута
$IPT -A INPUT -p tcp --dport $SSHPORT -m state --state NEW -m recent --update --seconds 60 --hitcount 3 --name SSH -j DROP
$IPT -A INPUT -p tcp --dport $SSHPORT -m state --state NEW -m recent --set --name SSH -j ACCEPT
# http
$IPT -A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
# dchub
$IPT -A INPUT -p tcp -m tcp --dport 411 -m state --state NEW -j ACCEPT

# SNAT маршрутизация
$IPT -A POSTROUTING -s $WAN_NET -o $WAN -j SNAT --to-source $LAN_IP

# ICMP - перенаправление
# ICMP - сообщение указывает системе изменить содержимое таблиц маршрутизации с тем, что бы направлять
# пакеты по более короткому маршруту. Может быть использовано взломщиком для перенаправления вашего трафика через свою машину.
$IPT -A INPUT --fragment -p ICMP -j DROP
$IPT -A OUTPUT --fragment -p ICMP -j DROP

# save для генту
/etc/init.d/iptables save

← Предыдущая заметка
Запись образа из консоли с помощью cdrecord или wodim
Следующая заметка →
Logitech C910 HD Webcam
17 августа 2011, 14:17    Иван Linux 0    3796 0

Вы можете авторизоваться на сайте через:


       

Комментарии ()

    Вы должны авторизоваться, чтобы оставлять комментарии.