Iptables

Автор Utility, 04 января 2015, 11:31:04

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Utility

О, да!
Топик стартер решил сделать howto по настройке.
Интрументы: офиц док-ы и рецепты пользователей.
В перспективе nmap для проверки "извне"

Буду дописывать и сводить в один. Удачи!

https://wiki.debian.org/iptables

iptables позволяет фильтровать пакеты, NAT (преобразование сетевых адресов) и прочие преобразования пакетов.
Наиболее общее использование iptables в виде предоставления firewall и NAT.
Настройка iptables вручную считается сложной задачей для непосвящённых. К счастью, существует много доступных вспомогательных инструментов для настройки (wizards): т.е., fwbuilder, bastille, ferm, ufw.

ПРОСМОТР ТЕКУЩЕЙ КОНФИГУРАЦИИ

Посмотрите уже настроенные правила. Используйте следующую команду:


# iptables -L

Результат, скорее всего, будет похож на этот:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Что говорит разрешено кому угодно получить доступ хоть откуда.

ПРАВИЛА IPTABLES ХРАНЯТСЯ в ФАЙЛЕ

ПРИМЕЧАНИЕ: ЕСТЬ СПЕЦИАЛЬНЫЙ ПАКЕТ, ДЛЯ ПОМОЩИ: iptables-persistent

https://packages.debian.org/jessie/all/iptables-persistent/filelist

Забегая вперед, создадим тестовый файл для iptables. По пути


editor /etc/iptables.test.rules


В этом файле укажем наиболее основные правила:


*filter

# Разрешить весь трафик loopback (lo0) и отбрасывать весь трафик с 127/8, который не используется для lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

# Принимать все установленные входящие подключения
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Разрешить весь исходящий трафик
# Вы можете изменить, чтобы указать что-то определённое
-A OUTPUT -j ACCEPT
# Разрешить HTTP и HTTPS откуда либо (стандартные порты для web-сайтов
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

# Разрешить SSH подключния
# Указать --dport номер порта такое же как и в /etc/ssh/sshd_config
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

# Ознакомтесь с правилами iptables и рассмотрите вопросы связанные с доступом по ssh
# Это важно и необходимо. Скорее всего, вы укажете доступ с определённых IP

# Разрешить ping
# Обратите внимание, что отбросить прочие icmp-пакеты не всегда приемлемо
# Можно удалить  -m icmp --icmp-type 8 что бы разрешить все  icmp-пакеты:
#  https://security.stackexchange.com/questions/22711
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# Журнал iptables игнорирует запросы (доступ с помощью команды dmesg)
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

# отключить все прочие вызовы - по умолчанию отбросить, если явно разрешены политики:
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT


Может показаться сложным, но ознакомтесь с каждым разделом хотя бы раз.
В увидете, что просто закрываете порты, кроме тех что мы разрешили, - в нашем случае порт 80 и 443 (стандартные для работы web-браузера) и SSH-порт, указанный ранее.

Что бы применить новые правила:


iptables-restore < /etc/iptables.test.rules


И посмотреть изменения:


iptables -L


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


iptables-save > /etc/iptables.up.rules


И добавьте, в начало, такие строки:


#!/bin/sh
/sbin/iptables-restore < /etc/iptables.up.rules


Сделаем файл исполняемым, так:


chmod +x /etc/network/if-pre-up.d/iptables


ПРИМЕЧАНИЕ: данный документ был предоставлен пользователем GeeJay по адресу  wiki.openvz.org, в качестве HOWTO настроек для  установки контейнера

Сижу и соствляю, по http://www.debian.org/doc/manuals/securing-debian-howto/ch-sec-services.en.html#s-firewall-setup
Дальше пойдут рецепты

Сообщение объединено: 04 января 2015, 21:56:41

Так и знал, всё написано до нас.
Если будут вопросы, пишите (см. профиль)
Стационар = MB: ASRock N68-gs4 FX R2.0 ; CPU: Athlon II x3 460 => Phenom B60; RAM: 2x Kingston KVR1333D3N9/4G; VGA: zotac gt630 4G
Ноутбук = ASUS x55a = MB: chipset HM70; CPU: Celeron B820; RAM: 2G: VGA: intel3000; audio VT1802

gardarea51

Для debian есть пакет Iptables-persistent, можно создать скрипт для описания правил, выполнить его и сделать service iptables-persistent save Это сохранит правила и не придется лезть в /etc/network/if-up...

Vlad

Здравствуйте! Есть такое правило (абстрактное):
iptables -A INPUT -p tcp --dport 80 -m limit --limit 1/sec --limit-burst 2 -j ACCEPT
Пакеты движутся со скоростью 1 в секунду. Эквивалентна ли эта запись такой:
iptables -A INPUT -p tcp --dport 80 -m limit --limit 60/min --limit-burst 2 -j ACCEPT
Как указать ещё меньше? Например 1 за 5 секунд? 12/min?