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


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

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

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

Оффлайн rj45

  • Участник
  • *
  • Сообщений: 105
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #60 : 23 Июля 2008, 23:25:39 »
http://easylinux.ru/node/190

Рассмотрены принципы работы. Основы защиты. Построение простейших роутеров.

Спасибо за статью - помогла.

Оффлайн gavru

  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
    • Traffic and Protection Учёт трафика, файрвол, учёт телефонных звонков Мини АТС
Re: HOWTO: Iptables для новичков
« Ответ #61 : 28 Июля 2008, 22:46:40 »
http://www.traffpro.ru
ПО для шлюза, защита, учёт, пробросы и всё такое в автомате
Кто сказал, что писать учёт трафика это скучно? :)
TraffPro рулим интернетом, учёт трафика.

Оффлайн vktRus

  • Участник
  • *
  • Сообщений: 224
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #62 : 10 Августа 2008, 20:59:14 »
Интересно, а почему никто не советует новичкам Firestarter, как отличное средство с графическим интерфейсом по настройке iptables и установке интернет-шлюза? Ведь новички приходят из Windows, а там всё делается с помощью GUI.
Ведь листинги с правилами для iptables на 2-3 страницы как раз и отпугивают пользователей от Ubuntu.
Потом уже, по мере накопления знаний, можно постепенно вникать в iptables, но никак не сразу.

Оффлайн Tokh

  • Активист
  • *
  • Сообщений: 705
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #63 : 10 Августа 2008, 23:35:58 »
Интересно, а почему никто не советует новичкам Firestarter, как отличное средство с графическим интерфейсом по настройке iptables и установке интернет-шлюза? Ведь новички приходят из Windows, а там всё делается с помощью GUI.

Видимо тема про iptables, а firestarter всего-то только построен на основе iptables?..
А может в этом что-то есть? Раз _никто_ не советует.  ; )

Операционный язык командной строки быстрее и эффективнее описывает настройки программ.
StarDict и Mueller помогут против английского мануала.

Оффлайн lecas

  • Новичок
  • *
  • Сообщений: 41
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #64 : 15 Августа 2008, 14:11:50 »
Как составленные команды для iptables поставить в автозагрузку

Оффлайн Stiff

  • Активист
  • *
  • Сообщений: 677
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #65 : 15 Августа 2008, 20:11:42 »
Как составленные команды для iptables поставить в автозагрузку
выполни iptables-save > [/.../file]
далее в /etc/rc.local добавь строку (до exit 0):
iptables-restore < [/.../file]

путь к файлу должен быть полный. Выбирай произвольно

Оффлайн incokeeper

  • Новичок
  • *
  • Сообщений: 40
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #66 : 18 Августа 2008, 02:22:09 »
Доброй ночи!
Взываю о помощи к вам! :-[ так, как самостоятельно тележка не разруливается.
Проблема состоит в том, что при установке биллинга Сake у меня возникла ситуация - трафик считается, но странички не грузятся.

Опишу ситуацию. Сервер с Убунтой 8.04 (голая консоль). Два сетевушки, первая eth0 - сотрит в инет (айпишник белый, статический), вторая eth1 - в локалку (айпи: 192.168.0.250)
Загвоздка заключается вот в чём, биллинг юзает базу постежа и пптп.
В настройках пптп указано, что  localip 192.168.0.250, пул для впн-клиентов взят из диапазона 192.168.0.100 - 192.168.0.249
Прикол в том, что при подключении юзера к ВПН-серву ему выделяется айпи из диапазона 192.168.2.2 - 192.168.2.254, поскольку это заложено в базе постежа.

Насколько я понимаю надо разрулить тему через NAT.

Форвардинг включен.
« Последнее редактирование: 18 Августа 2008, 04:56:54 от incokeeper »

Оффлайн arayakao

  • Любитель
  • *
  • Сообщений: 70
    • Просмотр профиля
    • Пошаговые настройки сервера на Linux и FreeBSD
Re: HOWTO: Iptables для новичков
« Ответ #67 : 05 Сентября 2008, 22:47:14 »
В руководстве есть конфиг iptables  rc.UTIN.firewall
#!/bin/sh
#
# rc.firewall - UTIN Firewall script for Linux 2.4.x and iptables
#
# Copyright (C) 2001  Oskar Andreasson <bluefluxATkoffeinDOTnet>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program or from the site that you downloaded it
# from; if not, write to the Free Software Foundation, Inc., 59 Temple
# Place, Suite 330, Boston, MA  02111-1307   USA
#

###########################################################################
#
# 1. Configuration options.
#

#
# 1.1 Internet Configuration.
#

INET_IP="194.236.50.155"
INET_IFACE="eth0"
INET_BROADCAST="194.236.50.255"

#
# 1.1.1 DHCP
#

#
# 1.1.2 PPPoE
#

#
# 1.2 Local Area Network configuration.
#
# your LAN's IP range and localhost IP. /24 means to only use the first 24
# bits of the 32 bit IP address. the same as netmask 255.255.255.0
#

LAN_IP="192.168.0.2"
LAN_IP_RANGE="192.168.0.0/16"
LAN_IFACE="eth1"

#
# 1.3 DMZ Configuration.
#

#
# 1.4 Localhost Configuration.
#

LO_IFACE="lo"
LO_IP="127.0.0.1"

#
# 1.5 IPTables Configuration.
#

IPTABLES="/usr/sbin/iptables"

#
# 1.6 Other Configuration.
#

###########################################################################
#
# 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. rules set up.
#

######
# 4.1 Filter table
#

#
# 4.1.1 Set policies
#

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

#
# 4.1.2 Create userspecified chains
#

#
# Create chain for bad tcp packets
#

$IPTABLES -N bad_tcp_packets

#
# Create separate chains for ICMP, TCP and UDP to traverse
#

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

#
# 4.1.3 Create content in userspecified chains
#

#
# bad_tcp_packets chain
#

$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

#
# allowed chain
#

$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 rules
#

$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 113 -j allowed

#
# UDP ports
#

#$IPTABLES -A udp_packets -p UDP -s 0/0 --source-port 53 -j ACCEPT
#$IPTABLES -A udp_packets -p UDP -s 0/0 --source-port 123 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s 0/0 --source-port 2074 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s 0/0 --source-port 4000 -j ACCEPT

#
# 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 $INET_BROADCAST \
#--destination-port 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 rules
#

$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

#
# 4.1.4 INPUT chain
#

#
# Bad TCP packets we don't want.
#

$IPTABLES -A INPUT -p tcp -j bad_tcp_packets

#
# Rules for special networks not part of the Internet
#

$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT

#
# Rules for incoming packets from anywhere.
#

$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED \
-j ACCEPT
$IPTABLES -A INPUT -p TCP -j tcp_packets
$IPTABLES -A INPUT -p UDP -j udp_packets
$IPTABLES -A INPUT -p ICMP -j icmp_packets

#
# 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

#
# Log weird packets that don't match the above.
#

$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 chain
#

#
# Bad TCP packets we don't want
#

$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets

#
# Accept the packets we actually want to forward
#

$IPTABLES -A FORWARD -p tcp --dport 21 -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport 80 -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport 110 -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#
# Log weird packets that don't match the above.
#

$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 chain
#

#
# Bad TCP packets we don't want.
#

$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets

#
# Special OUTPUT rules to decide which IP's to allow.
#

$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT

#
# Log weird packets that don't match the above.
#

$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 Set policies
#

#
# 4.2.2 Create user specified chains
#

#
# 4.2.3 Create content in user specified chains
#

#
# 4.2.4 PREROUTING chain
#

#
# 4.2.5 POSTROUTING chain
#

#
# Enable simple IP Forwarding and Network Address Translation
#

$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP

#
# 4.2.6 OUTPUT chain
#

######
# 4.3 mangle table
#

#
# 4.3.1 Set policies
#

#
# 4.3.2 Create user specified chains
#

#
# 4.3.3 Create content in user specified chains
#

#
# 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
#

Там всей локальной сети разрешены выход в инет 80, 21, 110 порты. Вопрос, а как сделать для каждого IP адреса доступ по этим портам отдельно ?

Оффлайн Heroin

  • Любитель
  • *
  • Сообщений: 62
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #68 : 08 Сентября 2008, 13:20:58 »
Вывалились ошибки при старте ИПтэйблс



там где стерто это мой внешний ИП который прописан только тут
INET_IP="мой ИП"
INET_IFACE="eth0"

порты 3389 и 1194 тож енпонятно почему. что за бед аргумент.
конфиг выкладывать не буду т.е большой. если понадобится то выложу. помогите!

Оффлайн InkVisitor

  • Участник
  • *
  • Сообщений: 190
  • Nikopol, Ukraine
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #69 : 08 Сентября 2008, 21:39:36 »
А где ж, кроме конфига искать?

grep "1194" "/etc/init.d/mynat"
grep "3389" "/etc/init.d/mynat"
grep "де_там_твой_ИП" "/etc/init.d/mynat"

и т. д.

Оффлайн Heroin

  • Любитель
  • *
  • Сообщений: 62
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #70 : 09 Сентября 2008, 07:17:47 »
вот такие ответы! ;D

root@sobes24g:~# grep "1194" "/etc/init.d/mynat"
#$IPTABLES -A udp_packets -p UDP -s $KG --dport 1194 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s $MEZHD --dport 1194 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s $VARL --dport 1194 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s $BAL --dport 1194 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s $COMSERV --dport 1194 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s $RADUGA --dport 1194 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s $ADSL --dport 1194 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -p UDP -i eth0 -d $INET_IP --dport 1194 -j DNAT --to-destination $ORA_IP:1194


root@sobes24g:~# grep "3389" "/etc/init.d/mynat"
#$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $VARL -d $INET_IP --dport 3389 -j DNAT --to-destination $term:3389
iptables -t nat -A PREROUTING -p TCP -s $ADSL --dport 3389 -j DNAT --to-destination $term
iptables -t nat -A POSTROUTING -p TCP -d $term --dport 3389 -j SNAT --to-source $LAN_IP
iptables -t nat -A OUTPUT -d $INET_IP -p TCP --dport 3389 -j DNAT --to-destination $term
iptables -t nat -A PREROUTING -p TCP -s $BAL --dport 3389 -j DNAT --to-destination $term
iptables -t nat -A POSTROUTING -p TCP -d $term --dport 3389 -j SNAT --to-source $LAN_IP
iptables -t nat -A OUTPUT -d $INET_IP -p TCP --dport 3389 -j DNAT --to-destination $term
iptables -t nat -A PREROUTING -p TCP -s $MEZHD --dport 3389 -j DNAT --to-destination $term
iptables -t nat -A POSTROUTING -p TCP -d $term --dport 3389 -j SNAT --to-source $LAN_IP
iptables -t nat -A OUTPUT -d $INET_IP -p TCP --dport 3389 -j DNAT --to-destination $term
iptables -t nat -A PREROUTING -p TCP -s $VARL --dport 3389 -j DNAT --to-destination $term
iptables -t nat -A POSTROUTING -p TCP -d $term --dport 3389 -j SNAT --to-source $LAN_IP
iptables -t nat -A OUTPUT -d $INET_IP -p TCP --dport 3389 -j DNAT --to-destination $term
iptables -t nat -A PREROUTING -p TCP -s $RADUGA --dport 3389 -j DNAT --to-destination $term
iptables -t nat -A POSTROUTING -p TCP -d $term --dport 3389 -j SNAT --to-source $LAN_IP
iptables -t nat -A OUTPUT -d $INET_IP -p TCP --dport 3389 -j DNAT --to-destination $term


root@sobes24g:~# grep "мой ИП" "/etc/init.d/mynat"
INET_IP="мой ИП"


# !bin/sh
###########################################################################

#
# Очистка таблиц, установка политик в значения "по умолчанию"
#
#IPTABLES="/sbin/iptables"

#
# Установка стандартных политик в таблице filter.
#
#$IPTABLES -P INPUT ACCEPT
#$IPTABLES -P FORWARD ACCEPT
#$IPTABLES -P OUTPUT ACCEPT

#
# Установка стандартных политик в таблице nat.
#
#$IPTABLES -t nat -P PREROUTING ACCEPT
#$IPTABLES -t nat -P POSTROUTING ACCEPT
#$IPTABLES -t nat -P OUTPUT ACCEPT

#
# Установка стандартных политик в таблице mangle.
#
#$IPTABLES -t mangle -P PREROUTING ACCEPT
#$IPTABLES -t mangle -P OUTPUT ACCEPT

#
# Удаление всех правил во всех таблицах.
#
#$IPTABLES -F
#$IPTABLES -t nat -F
#$IPTABLES -t mangle -F
#
# Удаление пользовательских правил во всех таблицах.
#
#$IPTABLES -X
#$IPTABLES -t nat -X
#$IPTABLES -t mangle -X

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

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

INET_IP="Мой ИП"
INET_IFACE="eth0"
INET_BROADCAST="Все мое"

# Очевидно, что это интернет ip адрес и интерфейс через который осуществляется доступ в интернет.
# Если у Вас динамически изменяющийся интернет ip адрес, в этом случае переменная INET_IP не устанавливается.

#
# 1.1.1 DHCP
#

#
# 1.1.2 PPPoE
#

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

LAN_IP="200.1.80.254"
LAN_IP_RANGE="200.1.80.0/24"
LAN_BROADCAST_ADDRESS="200.1.80.255"
LAN_IFACE="eth1"

# Здесь добавилась переменная LAN_IP_RANGE это диапазон ip адресов относящихся к сети LOCAL, (Некий районный провайдер), заданный новомодным способом, могло быть и так  10.0.0.0/255.0.0.0

#
# 1.3 DMZ.
#
#
# ORACLE Hosts
#
ORA_IP="200.1.80.1"
#
# Trusted Hosts
#
ADSL="0.0.0.0/0.0.0.0"
COMSERV="ИП"
VIDEO="ИП"
MEZHD="ИП"
VARL="ИП"
BAL="ИП"
term="ИП"


# Всё ясно, конфигурация маленькой сетки на 14 машин. Видно, что http/ftp/game/mysql-сервер это один и тот же хост. Разумеется ip адреса и размер сети вы определяете самостоятельно. (Это ваша квартирная сеть)

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

LO_IFACE="lo"
LO_IP="127.0.0.1"


# Без комментариев.

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

IPTABLES="/sbin/iptables"

#Это путь до iptables, проверьте и исправьте если он иной.

#
# 1.6 Друзья
#

#FRIEND_1="10.2.10.146" # Вася

#Это адреса друзей или доверенных хостов, список можно и не создавать.

#
# 1.6 Порты
#
#SSH="22"
#MYSQL_PORT="3306"
#HTTP_PORT="80"
#HTTPS_PORT="443"
#FTP_PORT="21"
#TORRENT_PORT="6881"
#potp="8080"
# Это список портов которые используются вашими сетевыми приложениями. При написании правил эти переменные можно и не использовать.

###########################################################################
#
# 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

#echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Игнорируются широковещательные пинги.

#echo "128" > /proc/sys/net/ipv4/ip_default_ttl
# Здесь можно изменить TTL по умоглчанию

# Второй и третий разделы посвящены тонкой настройке и загружаемым модулям, их описание несколько выходит за рамки тематики этой статьи, хотя при необходимости будут ссылки и на эти разделы.




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

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

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

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

# Этим мы зададим политики «по умолчанию» для цепочек в таблице filter, выполняющиеся если пакет данных не подойдёт ни под одно из правил в цепочке. Если цепочка и таблица не указаны специально то используется таблица filter и цепочка input.

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

# Никто не говорил, что нельзя создать свои цепочки для правил и рулить пакеты  для проверки в них.

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

#$IPTABLES -N bad_tcp_packets

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

#$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

# Этими правилами отсекаются некорректные tcp пакеты. В неё они попадут в первую очередь.

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

#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.

#
# TCP правила
#
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 1720 -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 25 -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 110 -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -s $ADSL --dport 22 -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 1720 -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -s $LAN_IP_RANGE --dport 23 -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 53 -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -s $LAN_IP_RANGE --dport 137 -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -s $LAN_IP_RANGE --dport 138 -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -s $LAN_IP_RANGE --dport 139 -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -s $COMSERV --dport 137 -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -s $COMSERV --dport 138 -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -s $COMSERV --dport 139 -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -s $LAN_IP_RANGE --dport 3128 -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 113 -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -s $COMSERV --dport 22 -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -s $COMSERV --dport 10000 -j ACCEPT

# Добавте сюда аналогичные правила для разрешения соединения с вашими сетевыми приложениями по протоколу TCP.

#
# UDP порты
#

#$IPTABLES -A udp_packets -p UDP -s $KG --dport 1194 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s $MEZHD --dport 1194 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s $VARL --dport 1194 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s $BAL --dport 1194 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s $COMSERV --dport 1194 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s $RADUGA --dport 1194 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s $ADSL --dport 1194 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s $LAN_IP_RANGE --destination-port 137 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s $LAN_IP_RANGE --destination-port 138 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s $LAN_IP_RANGE --destination-port 139 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s $COMSERV --destination-port 137 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s $COMSERV --destination-port 138 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s $COMSERV --destination-port 139 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 53 -j ACCEPT
#$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 123 -j ACCEPT
#$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 2074 -j ACCEPT
#$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 4000 -j ACCEPT


# Это правило позволяет получать информацию от служб точного времени. Добавте сюда аналогичные правила для разрешения соединения с вашими сетевыми приложениями по протоколу UDP.

#
# 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
#IPTABLES -A udp_packets -p UDP -i $LAN_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
#IPTABLES -A udp_packets -p UDP -i $LAN_IFACE -d 255.255.255.255 --destination-port 67:68 -j DROP

# Эти правила отсекают широковешательные запросы к DHCP серверу, если у вас функционирует служба DHCP закомментируйте эти правила.

#
# ICMP правила
#

$IPTABLES -A icmp_packets -p ICMP --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP --icmp-type 11 -j ACCEPT

# Здесь указываем какие типы ICMP пакетов пропустит сетевой экран.

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

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

#IPTABLES -A INPUT -p tcp -j bad_tcp_packets

# Это правило заруливает все пакеты на проверку корректности в цепочку bad_tcp_packets, созданную ранее, затем они попадут на проверку соответсвия портов назначения (tcp_packets) и если на запрашиваемый порт соединение разрешено происходит заключительная проверка корректности (allowed).

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

$IPTABLES -A INPUT -p ALL -s $LO_IP -d 0/0 -j ACCEPT
$IPTABLES -A INPUT -p ALL -s $LAN_IP -d 0/0 -j ACCEPT
#$IPTABLES -A INPUT -p ALL -s $DMZ_IP -d 0/0 -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
#$IPTABLES -A INPUT -p ALL -i $DMZ_IFACE -s $DMZ_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
#$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $DMZ_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $LAN_BROADCAST_ADDRESS -j ACCEPT
#$IPTABLES -A INPUT -p ALL -i $DMZ_IFACE -d $DMZ_BROADCAST_ADDRESS -j ACCEPT

# Здесь укажем направления по которому движется безопасный траффик.

$IPTABLES -A INPUT -p UDP -i $LAN_IFACE --dport 67 --sport 68 -j ACCEPT
# Правила для входящих пакетив из локальной сети.
#

$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets
$IPTABLES -A INPUT -p TCP -i $LAN_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $LAN_IFACE -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $LAN_IFACE -j icmp_packets
#$IPTABLES -A INPUT -p TCP -i $DMZ_IFACE -j tcp_packets
#$IPTABLES -A INPUT -p UDP -i $DMZ_IFACE -j udp_packets
#$IPTABLES -A INPUT -p ICMP -i $DMZ_IFACE -j icmp_packets

# Этими правилами разруливаем пакеты по цепочкам в зависимости от протокола для траффика из сети LOCAL и пропустим траффик относящийся к уже открытым соединениям (первое правило)

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

$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets

# Этими правилами разруливаем пакеты по цепочкам в зависимости от протокола для траффика из сети INET и пропустим траффик относящийся к уже открытым соединениям (первое правило)


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

#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 цепочка
#

# В цепочку FORWARD попадают только те пакеты, которые адресованы не нашему хосту, либо они переадресованы нами принудительно, здесь я ограничиваюсь проверкой на корректность и разрешаю прохождение всего траффика, ограничившись некоторой проверкой по принципу "что не запрещено, то разрешено".


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

#IPTABLES -A FORWARD -p tcp -j bad_tcp_packets

# Это правило заруливает все пакеты на проверку корректности в цепочку bad_tcp_packets, созданную ранее, затем они попадут на проверку соответсвия портов назначения (tcp_packets) и если на запрашиваемый порт соединение разрешено происходит заключительная проверка корректности (allowed).

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

#$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
#$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#$IPTABLES -A FORWARD -p TCP -s $LAN_IP_RANGE -d 0/0 --dport 80 -j DROP
$IPTABLES -A FORWARD -p TCP -s $LAN_IP_RANGE -d 0/0 --dport 80 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -d 0/0 -j ACCEPT


# Из правил видно, что если к MySQL серверу и FTP серверу обращаются с ip отличного от $DMZ_IP то соединение запрещается.

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

#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

# Это правило заруливает все пакеты на проверку корректности в цепочку bad_tcp_packets, созданную ранее, затем они попадут на проверку соответсвия портов назначения (tcp_packets) и если на запрашиваемый порт соединение разрешено происходит заключительная проверка корректности (allowed)

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

$IPTABLES -A OUTPUT -p ALL -s $LO_IP -d 0/0 -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -d 0/0 -j ACCEPT
#$IPTABLES -A OUTPUT -p ALL -s $DMZ_IP -d 0/0 -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP -d 0/0 -j ACCEPT

# Разрешаем уходить с нашего сетевого экрана только траффику с указанными ip адресами или их диапазоном.

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

#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
#

#$IPTABLES -t nat -A PREROUTING -d $LAN_IP -p tcp -m tcp --dport $HTTP_PORT -j DNAT --to-destination $DMZ_HTTP_IP
#$IPTABLES -t nat -A PREROUTING -d $LAN_IP -p tcp -m tcp --dport $FTP_PORT -j DNAT --to-destination $DMZ_FTP_IP

# Это правило заменит адрес получателя в запросе к HTTP сервру с адреса $LAN_IP на адрес $DMZ_HTTP_IP, перебросив этим соединение в вашу домашнюю сеть, обратная подстановка будет осуществляться автоматически. Раскомментируйте второе правило если у вас есть в домашней сети ftp сервер, к которому вы хотите разрешить доступ из сети LOCAL, добавляйте свои правила при необходимости. Аналогично будут выглядеть правила для переброса траффика из интернета (INET), только переменная $LAN_IP меняется на $INET_IP.

#
# 4.2.5 POSTROUTING chain
#

$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP
$IPTABLES -t nat -A POSTROUTING -s $LAN_IP_RANGE -j SNAT --to-source $INET_IP

# Эти правила нужны для того что бы на машинах в вашей домашней сети (DMZ) были доступны сеть LOCAL и INET. Если у вас в сети LOCAL есть друзья и ваш компьютер работает круглосуточно вы можете существенно сэкономить на оплате интернета грамотно использовав эту цепочку ;)
#
# 4.2.6 OUTPUT chain
#

#IPTABLES -t nat -A OUTPUT -d $LAN_IP -p tcp -m tcp --dport 80 -j DNAT --to-destination $DMZ_HTTP_IP
#IPTABLES -t nat -A OUTPUT -d $INET_IP -p tcp -m tcp --dport 80 -j DNAT --to-destination $DMZ_HTTP_IP

# Эти правила нужны для корректной связи с вашим HTTPсервером в сети DMZ при соединениях исходящих с брандмауэра

######
# 4.3 mangle table
#

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

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

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

#
# 4.3.4 PREROUTING chain
#
# 4.3.4 PREROUTING chain
#
# OpenVPN #####
$IPTABLES -t nat -A PREROUTING -p UDP -i eth0 -d $INET_IP --dport 1194 -j DNAT --to-destination $ORA_IP:1194
################
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $COMSERV -d $INET_IP --dport 10000 -j DNAT --to-destination $ORA_IP:1526
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $COMSERV -d $INET_IP --dport 1521 -j DNAT --to-destination $ORA_IP:1521
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $COMSERV -d $INET_IP --dport 137 -j DNAT --to-destination $ORA_IP:137
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $COMSERV -d $INET_IP --dport 138 -j DNAT --to-destination $ORA_IP:138
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $COMSERV -d $INET_IP --dport 139 -j DNAT --to-destination $ORA_IP:139
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $MEZHD -d $INET_IP --dport 1526 -j DNAT --to-destination $ORA_IP:1526
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $MEZHD -d $INET_IP --dport 1521 -j DNAT --to-destination $ORA_IP:1521
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $MEZHD -d $INET_IP --dport 137 -j DNAT --to-destination $ORA_IP:137
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $MEZHD -d $INET_IP --dport 138 -j DNAT --to-destination $ORA_IP:138
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $MEZHD -d $INET_IP --dport 139 -j DNAT --to-destination $ORA_IP:139
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $RADUGA -d $INET_IP --dport 1526 -j DNAT --to-destination $ORA_IP:1526
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $RADUGA -d $INET_IP --dport 1521 -j DNAT --to-destination $ORA_IP:1521
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $RADUGA -d $INET_IP --dport 137 -j DNAT --to-destination $ORA_IP:137
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $RADUGA -d $INET_IP --dport 138 -j DNAT --to-destination $ORA_IP:138
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $RADUGA -d $INET_IP --dport 139 -j DNAT --to-destination $ORA_IP:139
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $ADSL -d $INET_IP --dport 1526 -j DNAT --to-destination $ORA_IP:1526
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $ADSL -d $INET_IP --dport 1521 -j DNAT --to-destination $ORA_IP:1521
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $ADSL -d $INET_IP --dport 137 -j DNAT --to-destination $ORA_IP:137
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $ADSL -d $INET_IP --dport 138 -j DNAT --to-destination $ORA_IP:138
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $ADSL -d $INET_IP --dport 139 -j DNAT --to-destination $ORA_IP:139
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $VARL -d $INET_IP --dport 1526 -j DNAT --to-destination $ORA_IP:1526
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $VARL -d $INET_IP --dport 1521 -j DNAT --to-destination $ORA_IP:1521
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $VARL -d $INET_IP --dport 137 -j DNAT --to-destination $ORA_IP:137
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $VARL -d $INET_IP --dport 138 -j DNAT --to-destination $ORA_IP:138
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $VARL -d $INET_IP --dport 139 -j DNAT --to-destination $ORA_IP:139
#$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $VARL -d $INET_IP --dport 3389 -j DNAT --to-destination $term:3389
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $BAL -d $INET_IP --dport 1526 -j DNAT --to-destination $ORA_IP:1526
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $BAL -d $INET_IP --dport 1521 -j DNAT --to-destination $ORA_IP:1521
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $BAL -d $INET_IP --dport 137 -j DNAT --to-destination $ORA_IP:137
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $BAL -d $INET_IP --dport 138 -j DNAT --to-destination $ORA_IP:138
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $BAL -d $INET_IP --dport 139 -j DNAT --to-destination $ORA_IP:139
#$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $MEZHD -d $INET_IP --dport 1526 -j DNAT --to-destination $ORA_IP:1526
#$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $MEZHD -d $INET_IP --dport 1521 -j DNAT --to-destination $ORA_IP:1521
#$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $VOL -d $INET_IP --dport 1526 -j DNAT --to-destination $ORA_IP:1526
#$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $VOL -d $INET_IP --dport 1521 -j DNAT --to-destination $ORA_IP:1521
#$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $VOL -d $INET_IP --dport 137 -j DNAT --to-destination $ORA_IP:137
#$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $VOL -d $INET_IP --dport 138 -j DNAT --to-destination $ORA_IP:138
#$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $VOL -d $INET_IP --dport 139 -j DNAT --to-destination $ORA_IP:139
#$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $VOLG -d $INET_IP --dport 1526 -j DNAT --to-destination $ORA_IP:1526
#$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $VOLG -d $INET_IP --dport 1521 -j DNAT --to-destination $ORA_IP:1521
#$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $VOLG -d $INET_IP --dport 137 -j DNAT --to-destination $ORA_IP:137
#$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $VOLG -d $INET_IP --dport 138 -j DNAT --to-destination $ORA_IP:138
#$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $VOLG -d $INET_IP --dport 139 -j DNAT --to-destination $ORA_IP:139
#$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $MIR -d $INET_IP --dport 137 -j DNAT --to-destination $ORA_IP:137
#$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $MIR -d $INET_IP --dport 138 -j DNAT --to-destination $ORA_IP:138
#$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $MIR -d $INET_IP --dport 139 -j DNAT --to-destination $ORA_IP:139
#$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $COMSERV -d $INET_IP --dport 137 -j DNAT --to-destination $ORA_IP:137
#$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $COMSERV -d $INET_IP --dport 138 -j DNAT --to-destination $ORA_IP:138
#$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $COMSERV -d $INET_IP --dport 139 -j DNAT --to-destination $ORA_IP:139
#

#
# 4.3.5 INPUT chain
#

#
# 4.3.6 FORWARD chain
#

#
# 4.3.7 OUTPUT chain
#

#
# 4.3.8 POSTROUTING chain
#


# 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



#home

iptables -t nat -A PREROUTING -p TCP -s $ADSL --dport 3389 -j DNAT --to-destination $term
iptables -t nat -A POSTROUTING -p TCP -d $term --dport 3389 -j SNAT --to-source $LAN_IP
iptables -t nat -A OUTPUT -d $INET_IP -p TCP --dport 3389 -j DNAT --to-destination $term

#video
iptables -t nat -A PREROUTING -p TCP -s $COMSERV --dport 3230:3237 -j DNAT --to-destination $VIDEO
iptables -t nat -A POSTROUTING -p TCP -d $VIDEO --dport 3230:3237 -j SNAT --to-source $LAN_IP
iptables -t nat -A OUTPUT -d $INET_IP -p TCP --dport 3230:3237 -j DNAT --to-destination $VIDEO

iptables -t nat -A PREROUTING -p TCP -s $COMSERV --dport 1720 -j DNAT --to-destination $VIDEO
iptables -t nat -A POSTROUTING -p TCP -d $VIDEO --dport 1720 -j SNAT --to-source $LAN_IP
iptables -t nat -A OUTPUT -d $INET_IP -p TCP --dport 1720 -j DNAT --to-destination $VIDEO


#term 1
iptables -t nat -A PREROUTING -p TCP -s $BAL --dport 3389 -j DNAT --to-destination $term
iptables -t nat -A POSTROUTING -p TCP -d $term --dport 3389 -j SNAT --to-source $LAN_IP
iptables -t nat -A OUTPUT -d $INET_IP -p TCP --dport 3389 -j DNAT --to-destination $term

#term 2

iptables -t nat -A PREROUTING -p TCP -s $MEZHD --dport 3389 -j DNAT --to-destination $term
iptables -t nat -A POSTROUTING -p TCP -d $term --dport 3389 -j SNAT --to-source $LAN_IP
iptables -t nat -A OUTPUT -d $INET_IP -p TCP --dport 3389 -j DNAT --to-destination $term


#term 3
iptables -t nat -A PREROUTING -p TCP -s $VARL --dport 3389 -j DNAT --to-destination $term
iptables -t nat -A POSTROUTING -p TCP -d $term --dport 3389 -j SNAT --to-source $LAN_IP
iptables -t nat -A OUTPUT -d $INET_IP -p TCP --dport 3389 -j DNAT --to-destination $term

#term 4
iptables -t nat -A PREROUTING -p TCP -s $RADUGA --dport 3389 -j DNAT --to-destination $term
iptables -t nat -A POSTROUTING -p TCP -d $term --dport 3389 -j SNAT --to-source $LAN_IP
iptables -t nat -A OUTPUT -d $INET_IP -p TCP --dport 3389 -j DNAT --to-destination $term
#squid
iptables -t nat -A PREROUTING -i eth1 -d ! 200.1.80.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 200.1.80.254:3128

« Последнее редактирование: 09 Сентября 2008, 07:19:30 от Heroin »

Оффлайн InkVisitor

  • Участник
  • *
  • Сообщений: 190
  • Nikopol, Ukraine
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #71 : 10 Сентября 2008, 16:29:27 »
$IPTABLES -t nat -A PREROUTING -p UDP -i eth0 -d $INET_IP --dport 1194 -j DNAT --to-destination $ORA_IP:1194

Возможно тут ошибка...

Насчёт 3389 вообще никаких мнений нет... ИП неизвестно, и ориентироваться тяжело...

Кроме того, никто здесь искать ошибку за тебя не будет. Посоветовать могут. Но скрипты править - самим.
Могу посоветовать для вылавливания капризной строки юзать печатные пометки (echo "пометка 1")
Например:
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $COMSERV -d $INET_IP --dport 10000 -j DNAT --to-destination $ORA_IP:1526
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $COMSERV -d $INET_IP --dport 1521 -j DNAT --to-destination $ORA_IP:1521
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $COMSERV -d $INET_IP --dport 137 -j DNAT --to-destination $ORA_IP:137
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $COMSERV -d $INET_IP --dport 138 -j DNAT --to-destination $ORA_IP:138
echo "Проверяю отсюда..."
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $COMSERV -d $INET_IP --dport 139 -j DNAT --to-destination $ORA_IP:139
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $MEZHD -d $INET_IP --dport 1526 -j DNAT --to-destination $ORA_IP:1526
echo "... и сюда"
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $MEZHD -d $INET_IP --dport 1521 -j DNAT --to-destination $ORA_IP:1521
$IPTABLES -t nat -A PREROUTING -p TCP -i eth0 -s $MEZHD -d $INET_IP --dport 137 -j DNAT --to-destination $ORA_IP:137

При загрузке скрипта будет видно, ошибка до-, после-, или между метками.
« Последнее редактирование: 10 Сентября 2008, 16:31:07 от InkVisitor »

Оффлайн TrEK

  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: HOWTO: Iptables для новичков
« Ответ #72 : 15 Сентября 2008, 01:49:36 »
Люди, обьяснити вот мне .. ни как не могу полностью образумить айпитейблз.. :idiot2:

вот если я хочу закрыть доступ на сервер по 80 порту.. потом скажем для одной айпишки диапазон 20-25 портов, и для диапазона айпишек закрыть один порт... правлиьно ли будет следующие:

1) -A OUTPUT -p tcp -s 80 -j DROP (траффик который будет идти от сервера в мир по 80 порту)
2) -A FORWARD -s $ip_lan -p tcp -m multiport --dport 20:25 -j DROP (или надо указывать --sport?)
3) -A FORWARD -s $ip_lan1 : $ip_lan5 -p tcp --dport 25 -j DROP

Подскажите правильно ли? :idiot2:
На счет 1-го и 2-го я уверен.. но вот с 3-им думаю что полный бред... понимаю что можна запретить для сети, указываю маску, но возможно ли  по айпишкам указать диапазон... и если выборочно будут айпишки.. то необходимо ли для каждой айпишки писать новое правило.. или их можна совместить в одно? :coolsmiley:
спс.
« Последнее редактирование: 15 Сентября 2008, 01:51:19 от TrEK »

Оффлайн Vetal_krot

  • Новичок
  • *
  • Сообщений: 37
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #73 : 01 Октября 2008, 18:27:14 »
 Приветствую!
 Имеется Ubuntu-Server 8.04 на котором поднял шлюз и настроил шейпер HTB, в шейпере задействована некая часть диапазонов айпи (ххх.ххх.ххх.2-56), нужно закрыть доступ в инет с остальных айпи (которые не входять в тот диапазан для которых созданы правила в HTB) - закрыть инет для ххх.ххх.ххх.57-255 и всех остальных подсетей.
 Может быть возможно сделать привязку МАК к айпи, и сделать так чтоб: если мак и айпи соответствуют заданным то розрешаем доступ в интернет, если нет то инет не даем.
 Тоесть проблема следующая - юзеры меняют свой ип (на тот которого нету в HTB) и получают не шейпеный нет.

 Помогите пожалуйста мне в даной ситуации, потому что сам я с етой проблемой справится не могу.
kubuntu desctop 8.04, ubuntu server 8.04

Оффлайн Stiff

  • Активист
  • *
  • Сообщений: 677
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #74 : 01 Октября 2008, 20:10:13 »
Приветствую!
 Имеется Ubuntu-Server 8.04 на котором поднял шлюз и настроил шейпер HTB, в шейпере задействована некая часть диапазонов айпи (ххх.ххх.ххх.2-56), нужно закрыть доступ в инет с остальных айпи (которые не входять в тот диапазан для которых созданы правила в HTB) - закрыть инет для ххх.ххх.ххх.57-255 и всех остальных подсетей.
 Может быть возможно сделать привязку МАК к айпи, и сделать так чтоб: если мак и айпи соответствуют заданным то розрешаем доступ в интернет, если нет то инет не даем.
 Тоесть проблема следующая - юзеры меняют свой ип (на тот которого нету в HTB) и получают не шейпеный нет.
Помогите пожалуйста мне в даной ситуации, потому что сам я с етой проблемой справится не могу.

Для привязки мак к ip добавьте к правилам iptables след. параметры:  -m mac --mac-source $MAC, где $MAC - мак адрес клиента в виде XX:XX:XX:XX:XX:XX
к примеру iptables -A FORWARD -s $IP -i eth0 -m mac --mac-source $MAC -j ACCEPT

 

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