Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: HOWTO: Iptables для новичков  (Прочитано 462778 раз)

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

Оффлайн zeus

  • Автор темы
  • Активист
  • *
  • Сообщений: 447
  • Fedora 8
    • Просмотр профиля
HOWTO: Iptables для новичков
« : 30 Января 2008, 12:41:35 »
http://easylinux.ru/node/190

Рассмотрены принципы работы. Основы защиты. Построение простейших роутеров.
« Последнее редактирование: 30 Января 2008, 17:22:28 от zeus »

Оффлайн Olstranger

  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1 : 01 Февраля 2008, 03:33:44 »
То что искал !!! Обратите внимание на дату выхода статьи: 28 января 2008 года !!!

Оффлайн denmmx

  • Новичок
  • *
  • Сообщений: 9
  • Ubuntu Linux 8.04 Hardy Heron
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #2 : 02 Февраля 2008, 13:11:04 »
Подскажите, нужно настроить iptables на Ubuntu 7.10 Server.

Ситуация такая: компьютер смотрит в интернет и в локальную сеть, весь трафик идет через интерфейс eth1. На этот компьютер нужно разрешить доступ через SSH и HTTP только подсетям 10.x.x.x/8 и 172.x.x.x/11, остальным, в т.ч. из интернета, запретить. Как это можно сделать?? Заранее благодарен.

З.Ы. По ссылке выше пробовал делать, ничего не получается...
« Последнее редактирование: 02 Февраля 2008, 13:13:44 от denmmx »

Оффлайн Gundos

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #3 : 02 Февраля 2008, 14:50:57 »
Уважаемый denmmx я конечно могу оказать помощь, однако, тогда получится, что зделаю всю работу за Вас.
Опиши подробнее проблемы и параметры подключения к internet (DHCP/static IP) и intranet.

А вообще, после тщательного прокуривания вот этого http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html
и вот этого http://www.k-max.name/linux/netfilter-iptables-v-linux/ вопросов остаться не должно.
« Последнее редактирование: 03 Апреля 2012, 17:09:39 от Gundos »

Оффлайн denmmx

  • Новичок
  • *
  • Сообщений: 9
  • Ubuntu Linux 8.04 Hardy Heron
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #4 : 02 Февраля 2008, 15:47:03 »
Вобщем iptables такой:

iptables -A INPUT -i eth1 -s 10.х.х.х/8 -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -i eth1 -s 10.х.х.х/8 -p tcp --dport http -j ACCEPT
iptables -A INPUT -i eth1 -s 172.х.х.х/11 -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -i eth1 -s 172.х.х.х/11 -p tcp --dport http -j ACCEPT
iptables -A INPUT -i eth1 -p ICMP -j ACCEPT
iptables -I INPUT -i eth1 -j DROP

при этих параметрах отрубается интранет и интернет. Подключен через DHCP, шлюз на инет и локалку 77.232.128.63

Оффлайн zeus

  • Автор темы
  • Активист
  • *
  • Сообщений: 447
  • Fedora 8
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #5 : 02 Февраля 2008, 17:48:07 »
Вобщем iptables такой:

iptables -A INPUT -i eth1 -s 10.х.х.х/8 -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -i eth1 -s 10.х.х.х/8 -p tcp --dport http -j ACCEPT
iptables -A INPUT -i eth1 -s 172.х.х.х/11 -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -i eth1 -s 172.х.х.х/11 -p tcp --dport http -j ACCEPT
iptables -A INPUT -i eth1 -p ICMP -j ACCEPT
iptables -I INPUT -i eth1 -j DROP

при этих параметрах отрубается интранет и интернет. Подключен через DHCP, шлюз на инет и локалку 77.232.128.63
скажите, а последнюю строку вы тоже по ссылке выше вычитали?

Оффлайн denmmx

  • Новичок
  • *
  • Сообщений: 9
  • Ubuntu Linux 8.04 Hardy Heron
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #6 : 02 Февраля 2008, 18:31:31 »
скажите, а последнюю строку вы тоже по ссылке выше вычитали?

Согласен, в последней строчке ошибка: запретил всё... Но как в таком случае запретить доступ на мой компьютер из интернета?

Оффлайн zeus

  • Автор темы
  • Активист
  • *
  • Сообщений: 447
  • Fedora 8
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #7 : 02 Февраля 2008, 18:40:32 »
скажите, а последнюю строку вы тоже по ссылке выше вычитали?

Согласен, в последней строчке ошибка: запретил всё... Но как в таком случае запретить доступ на мой компьютер из интернета?
нет никакой ошибки в запрете. просто -I подставило правило в начало цепочки. а вам нужно добавить в конец (-A)

Оффлайн Gundos

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #8 : 02 Февраля 2008, 19:06:26 »
Вобщем iptables такой:

iptables -A INPUT -i eth1 -s 10.х.х.х/8 -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -i eth1 -s 10.х.х.х/8 -p tcp --dport http -j ACCEPT
iptables -A INPUT -i eth1 -s 172.х.х.х/11 -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -i eth1 -s 172.х.х.х/11 -p tcp --dport http -j ACCEPT
iptables -A INPUT -i eth1 -p ICMP -j ACCEPT
iptables -I INPUT -i eth1 -j DROP

при этих параметрах отрубается интранет и интернет. Подключен через DHCP, шлюз на инет и локалку 77.232.128.63

Я так понимаю принято решение идти длинной дорогой через терни и ухабы, и строить более-менее надёжную защиту по принципу "что не разрешено, то запрещено".

Если это все правила, что у вас есть, то ничего работать и не должно, по крайней мере так как вы задумали.
Я попробовал кой чё набросать (код внизу) вставте это в текстовый редактор с подсветкой синтаксиса (Kate), будет понятнее. Ссылку на этот скрипт разместить в rc.local

Не знаю точно, но это должен быть хороший шаблон. Всё писалось в соответствии с FAQ из моего сообщения ранее.

# !bin/sh
###########################################################################
# 1. Конфигурационные настройки.
#

#
# 1.1 Конфигурация интернет.
#

INET_IFACE="eth1"


#
# 1.1.1 DHCP
#

#
# 1.1.2 PPPoE
#

#
# 1.2 Конфигурация локальной сети.
#

ALLOWED_IP_RANGE_1="10.x.x.x/8"
ALLOWED_IP_RANGE_2="172.x.x.x/11"

#
# 1.3 DMZ.
#




#
# 1.4 Конфигурация обратной петли Loopback.
#

LO_IFACE="lo"
LO_IP="127.0.0.1"
LO_IP_RANGE="127.0.0.0/8"

#
# 1.5 Настройка IPTables.
#

IPTABLES="/sbin/iptables"

#
# 1.6 Друзья
#


#
# 1.6 Порты
#

HTTP_PORT="80"
SSH_PORT="22"
###########################################################################
#
# 2. Module loading.
#

#
# Needed to initially load modules
#

#/sbin/depmod -a

#
# 2.1 Required modules
#

#/sbin/modprobe ip_tables
#/sbin/modprobe ip_conntrack
#/sbin/modprobe iptable_filter
#/sbin/modprobe iptable_mangle
#/sbin/modprobe iptable_nat
#/sbin/modprobe ipt_LOG
#/sbin/modprobe ipt_limit
#/sbin/modprobe ipt_state

#
# 2.2 Non-Required modules
#

#/sbin/modprobe ipt_owner
#/sbin/modprobe ipt_REJECT
#/sbin/modprobe ipt_MASQUERADE
#/sbin/modprobe ip_conntrack_ftp
#/sbin/modprobe ip_conntrack_irc
#/sbin/modprobe ip_nat_ftp
#/sbin/modprobe ip_nat_irc

###########################################################################
#
# 3. /proc set up.
#

#
# 3.1 Required proc configuration
#

#echo "1" > /proc/sys/net/ipv4/ip_forward

#
# 3.2 Non-Required proc configuration
#

#echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
#echo "1" > /proc/sys/net/ipv4/conf/all/proxy_arp
#echo "1" > /proc/sys/net/ipv4/ip_dynaddr

###########################################################################
#
# 4. Установка правил.
#

######
# 4.1 Таблица filter
#

#
# 4.1.1 Установка политик по умолчанию
#

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP

#
# 4.1.2 Создание пользовательских цепочек
#

#
# Создание цепочки для некорректных TCP пакетов
#

$IPTABLES -N bad_tcp_packets

#
# Создание раздельных цепочек для ICMP, TCP и UDP пакетов
#

$IPTABLES -N allowed
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets

#
# 4.1.3 Заполнение пользовательских цепочек
#

#
# bad_tcp_packets цепочка
#

$IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:"
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP


#
# Допускающая цепочка
#

$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP

#
# TCP правила
#

#$IPTABLES -A tcp_packets -p TCP --dport 21 -j allowed
#$IPTABLES -A tcp_packets -p TCP --dport 6881 -j allowed
$IPTABLES -A tcp_packets -p TCP -s $ALLOWED_IP_RANGE_1 --dport $HTTP_PORT -j allowed
$IPTABLES -A tcp_packets -p TCP -s $ALLOWED_IP_RANGE_1 --dport $SSH_PORT -j allowed
$IPTABLES -A tcp_packets -p TCP -s $ALLOWED_IP_RANGE_2 --dport $HTTP_PORT -j allowed
$IPTABLES -A tcp_packets -p TCP -s $ALLOWED_IP_RANGE_2 --dport $SSH_PORT -j allowed

#
# UDP правила
#

$IPTABLES -A udp_packets -p UDP --destination-port 123 -j ACCEPT # Точное время (NTP)

#
# In Microsoft Networks you will be swamped by broadcasts. These lines
# will prevent them from showing up in the logs.
#

$IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d 255.255.255.255 --dport 135:139 -j DROP

#
# If we get DHCP requests from the Outside of our network, our logs will
# be swamped as well. This rule will block them from getting logged.
#

$IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d 255.255.255.255 --destination-port 67:68 -j DROP

#
# ICMP правила
#

#$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p icmp -m icmp --icmp-type 8 -m limit --limit 30/min --limit-burst 1 -j DROP
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

#
# 4.1.4 INPUT цепочка
#

#
# Некорректные и допустимые пакеты не ждут
#

$IPTABLES -A INPUT -p tcp -j bad_tcp_packets

#
# Правила для безопасных маршрутов
#

$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP_RANGE -j ACCEPT


#
# Специальные правила для DHCP запросов из LAN, which are not caught properly
# otherwise.
#

#$IPTABLES -A INPUT -p UDP -i $LAN_IFACE --dport 67 --sport 68 -j ACCEPT

#
# Правила для входящих пакетив из локальной сети.
#



#
# Правила для входящих пакетив из интернета.
#




#
# If you have a Microsoft Network on the outside of your firewall, you may
# also get flooded by Multicasts. We drop them so we do not get flooded by
# logs
#

#$IPTABLES -A INPUT -i $INET_IFACE -d 224.0.0.0/8 -j DROP

#
# Журналируются сброшенные пакеты для отладки.
#

#$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT INPUT packet died: "

#
# 4.1.5 FORWARD цепочка
#

#
# Некорректные TCP пакеты не ждут
#

#$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets

#
# Пропускаются актуальные пакеты.
#



#
# Журналируются сброшенные пакеты для отладки.
#

#$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT FORWARD packet died: "

#
# 4.1.6 OUTPUT цепочка
#

#
# Некорректные TCP пакеты не ждут.
#

$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets

#
# Специальные OUTPUT правила разрешающие который IP's разрешены.
#

$IPTABLES -A OUTPUT -p ALL -s $LO_IP_RANGE -j ACCEPT


#
# Журналируются сброшенные пакеты для отладки.
#

$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT OUTPUT packet died: "

######
# 4.2 nat table
#

#
# 4.2.1 Установка политик
#

#
# 4.2.2 Создание пользовательских цепочек
#

#
# 4.2.3 Заполнение пользовательских цепочек
#

#
# 4.2.4 PREROUTING chain
#



#
# 4.2.5 POSTROUTING chain
#



#
# Enable simple IP Forwarding and Network Address Translation
#



#
# 4.2.6 OUTPUT chain
#



######
# 4.3 mangle table
#

#
# 4.3.1 Установка политик
#

#
# 4.3.2 Создание пользовательских цепочек
#

#
# 4.3.3 Заполнение пользовательских цепочек
#

#
# 4.3.4 PREROUTING chain
#

#
# 4.3.5 INPUT chain
#

#
# 4.3.6 FORWARD chain
#

#
# 4.3.7 OUTPUT chain
#

#
# 4.3.8 POSTROUTING chain
#



Оффлайн Stiff

  • Активист
  • *
  • Сообщений: 677
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #9 : 07 Февраля 2008, 21:33:00 »
Респект за статью. Как раз то что надо, собираюсь ставить сервак для инета

Оффлайн letsGo

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #10 : 16 Февраля 2008, 13:18:01 »
zeus,
Цитировать
Настроим простейший шлюз для раздачи интернета для дома или малого офиса (SOHO). Допустим, что внутрь сети смотрит интерфейс eth1 с ip адресом 192.168.1.1, а в интернет интерфейс eth0:

Разрешим пропуск трафика через шлюз (в противном случае трафик не проходит цепочку FORWARDING):

sysctl -w net.ipv4.ip_forward="1"
Добавим правило, для маскировки ip в цепочку POSTROUTING таблицы nat

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Теперь клиенты внутренней сети могут получить возможность доступа в интернет установив в качестве шлюза адрес 192.168.1.1

sysctl -w net.ipv4.ip_forward="1" - это /proc/sys/net/ipv4/ip_forward ??????
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Куда их вводить?)
« Последнее редактирование: 16 Февраля 2008, 14:53:47 от letsGo »

Оффлайн 12d3

  • Активист
  • *
  • Сообщений: 674
  • Ubuntu 10.04
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #11 : 16 Февраля 2008, 14:54:49 »
sysctl -w net.ipv4.ip_forward="1" - это /proc/sys/net/ipv4/ip_forward ??????
да, это оно самое.
а вводить все в терминал надо блин. от рута.
« Последнее редактирование: 16 Февраля 2008, 14:56:25 от 12d3 »

Оффлайн letsGo

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #12 : 16 Февраля 2008, 20:28:58 »
Цитировать
а вводить все в терминал надо блин. от рута.
Ввел, ничего не получилось  :(
Ситуация такая-же как в мануальчике...
У второго пк Windows XP, сомниваюсь, но может изза этого не получается?
Пинг есть, сеть работает...

Оффлайн 12d3

  • Активист
  • *
  • Сообщений: 674
  • Ubuntu 10.04
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #13 : 16 Февраля 2008, 20:34:22 »
а днс, gateway и т.д. в винде настроены?

Оффлайн letsGo

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #14 : 16 Февраля 2008, 21:11:18 »
да прописаны...

мне с самого начала показалось, что что-то не то чтоб в линуксе одной строкой
Цитировать
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
можно было "дать инет трафик" другому пк
« Последнее редактирование: 16 Февраля 2008, 21:25:03 от letsGo »

 

Страница сгенерирована за 0.06 секунд. Запросов: 26.