Iptables (Постройка правил iptables исходя из парадигмы "блокировать все, о)
Модератор: Bizdelnick
-
moog
- Сообщения: 599
- ОС: Archlinux
Iptables
Строю цепочку iptables и не могу понять, как заставить sim работать ? Можно ли заставить его использовать не-рандомные порты ?
-
diesel
- Бывший модератор
- Сообщения: 5989
- ОС: OS X, openSuSE, ROSA, Debian
Re: Iptables
Есть состояние пакета 'RELATED' когда через другой порт открывается соединение связанное с уже разрешенным протоколом. Это похоже на Ваш случай, вот только как это конкретно применить - не знаю, пока что руководство по iptables до конца не осилил 
-
moog
- Сообщения: 599
- ОС: Archlinux
Re: Iptables
Тогда другой вопрос - насколько оправдан такой способ постоения защиты ?
-
diesel
- Бывший модератор
- Сообщения: 5989
- ОС: OS X, openSuSE, ROSA, Debian
-
moog
- Сообщения: 599
- ОС: Archlinux
Re: Iptables
Хочется поучится ). Так все-таки реально заставить sim работать только через определенный мной список портов ?
-
diesel
- Бывший модератор
- Сообщения: 5989
- ОС: OS X, openSuSE, ROSA, Debian
Re: Iptables
Кстати подумал, и не понял
-
moog
- Сообщения: 599
- ОС: Archlinux
Re: Iptables
Чет я не понял, цепочка INPUT - это исходящие от меня пакеты чтоли ?
-
diesel
- Бывший модератор
- Сообщения: 5989
- ОС: OS X, openSuSE, ROSA, Debian
-
little Jon
- Сообщения: 212
Re: Iptables
Вот это работает достаточно надежно. Заимствовано из "Запускаем LINUX" М.УЭЛША и др.
Для новичка я думаю в самый раз. Достаточно легко понять что и где нужно менять "под себя"
Но чтения HOWTO IPTABLES в переводе Киселева не заменяет.
#!/bin/sh
# Устанавливаем путь к iptables
IPTABLES="/sbin/iptables"
# Устанавливаем политику по умолчанию запретить все что не разрешено
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
# Разрешаем все пакеты поступившие от кольцевого интерфейса
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT
# Создаем новую цепочку, определенную пользователем. Она будет содержать
# правила для INPUT и FORWARD, поэтому , объединив их в одной цепочке,
# мы избегаем их дублирования.
$IPTABLES -N allowfwdin
# все последующие правила будут помещаться в эту цепочку
# Разрешим пакеты придлежащие существующему соединению.
$IPTABLES -A allowfwdin -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешим новые запросы соединений от машин во внутренней сети.
# Это позволит машинам внутренней сети соединяться с Интернетом, но не наоборот
# обратим внимание на -i ! eth0 для задания пакетов поступающих с других интерфейсов. eth0 интерфейс подключенный к интернету
$IPTABLES -A allowfwdin -m state --state NEW -i ! eth0 -j ACCEPT
# разрешим новые запросы на порт 20 21 (ftp подключим попозже)
# $IPTABLES -A allowfwdin -m state --state NEW -m tsp -p tsp --dport 21 -j ACCEPT
# Ко всем пакетам, прошедшим, цепочку определенную пользователем, теперь
# применяется действие LOG, которое их регистрирует. Регистрация ограничена Limit
# что бы она не проходила слишком быстро (это возможно на будущее)
# $IPTABLES -A allowfwdin -m limit --limit 2/sec LOG
# Устанавливаем по умолчанию действие DROP для цепочки
# определенной пользователем как allowfwdin
$IPTABLES -A allowfwdin -j DROP
# Направляем пакеты из цепочек INPUT и OUTPUT в нашу цепочку allowfwdin
$IPTABLES -A INPUT -j allowfwdin
$IPTABLES -A OUTPUT -j allowfwdin
# Скрываем адреса для маршрутеризируемых соединений поддерживаемых устройством eth0
# используя специальный модуль IPTABLES nat "ключ-t подключение через таблицу NAT" 271.70.ххх.ххх адрес который дал нам провайдер или
# $IPTABLES -t nat -A POSTROUTING -p eth0 -j MASQURADE в случае DHCP адресации
$IPTABLES -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 217.70.xxx.xxx
# Включаем маршрутеризацию
echo 1 > /proc/sys/net/ipv4/ip_forward
Для новичка я думаю в самый раз. Достаточно легко понять что и где нужно менять "под себя"
Но чтения HOWTO IPTABLES в переводе Киселева не заменяет.
#!/bin/sh
# Устанавливаем путь к iptables
IPTABLES="/sbin/iptables"
# Устанавливаем политику по умолчанию запретить все что не разрешено
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
# Разрешаем все пакеты поступившие от кольцевого интерфейса
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT
# Создаем новую цепочку, определенную пользователем. Она будет содержать
# правила для INPUT и FORWARD, поэтому , объединив их в одной цепочке,
# мы избегаем их дублирования.
$IPTABLES -N allowfwdin
# все последующие правила будут помещаться в эту цепочку
# Разрешим пакеты придлежащие существующему соединению.
$IPTABLES -A allowfwdin -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешим новые запросы соединений от машин во внутренней сети.
# Это позволит машинам внутренней сети соединяться с Интернетом, но не наоборот
# обратим внимание на -i ! eth0 для задания пакетов поступающих с других интерфейсов. eth0 интерфейс подключенный к интернету
$IPTABLES -A allowfwdin -m state --state NEW -i ! eth0 -j ACCEPT
# разрешим новые запросы на порт 20 21 (ftp подключим попозже)
# $IPTABLES -A allowfwdin -m state --state NEW -m tsp -p tsp --dport 21 -j ACCEPT
# Ко всем пакетам, прошедшим, цепочку определенную пользователем, теперь
# применяется действие LOG, которое их регистрирует. Регистрация ограничена Limit
# что бы она не проходила слишком быстро (это возможно на будущее)
# $IPTABLES -A allowfwdin -m limit --limit 2/sec LOG
# Устанавливаем по умолчанию действие DROP для цепочки
# определенной пользователем как allowfwdin
$IPTABLES -A allowfwdin -j DROP
# Направляем пакеты из цепочек INPUT и OUTPUT в нашу цепочку allowfwdin
$IPTABLES -A INPUT -j allowfwdin
$IPTABLES -A OUTPUT -j allowfwdin
# Скрываем адреса для маршрутеризируемых соединений поддерживаемых устройством eth0
# используя специальный модуль IPTABLES nat "ключ-t подключение через таблицу NAT" 271.70.ххх.ххх адрес который дал нам провайдер или
# $IPTABLES -t nat -A POSTROUTING -p eth0 -j MASQURADE в случае DHCP адресации
$IPTABLES -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 217.70.xxx.xxx
# Включаем маршрутеризацию
echo 1 > /proc/sys/net/ipv4/ip_forward
Linuxforum@conference.jabber.ru