URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 81486
[ Назад ]

Исходное сообщение
"iptables для малого офиса."

Отправлено t0xas , 07-Авг-08 10:33 
Я только начинаю путь в linux. Прочел http://www.opennet.me/docs/RUS/iptables/
взял за осного из него rc.firewall http://www.opennet.me/docs/RUS/iptables/misc/iptables-tutori...
И подредактировал в самом начале настройки интерфейса.
Проблема что на клиентских машинах так и не появилсяю
вот мой
iptables -L -v
Chain INPUT (policy DROP 33 packets, 4722 bytes)
pkts bytes target     prot opt in     out     source               destination        
1298 1073K bad_tcp_packets  tcp  --  any    any     anywhere             anywhere            
  239 28262 ACCEPT     all  --  eth1   any     192.168.10.0/24      anywhere            
    0     0 ACCEPT     all  --  lo     any     localhost            anywhere            
    0     0 ACCEPT     all  --  lo     any     server-inet.local    anywhere            
    0     0 ACCEPT     all  --  lo     any     192.168.1.2          anywhere            
  318  104K ACCEPT     udp  --  eth1   any     anywhere             anywhere            udp spt:bootpc dpt:bootps
1206 1064K ACCEPT     all  --  any    any     anywhere             192.168.1.2         state RELATED,ESTABLISHED
    0     0 tcp_packets  tcp  --  eth0   any     anywhere             anywhere            
   33  4722 udp_packets  udp  --  eth0   any     anywhere             anywhere            
    0     0 icmp_packets  icmp --  eth0   any     anywhere             anywhere            
   23  4020 LOG        all  --  any    any     anywhere             anywhere            limit: avg 3/min burst 3 LOG level debug prefix `IPT INPUT packet died: '

Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination        
  254 32761 bad_tcp_packets  tcp  --  any    any     anywhere             anywhere            
1471 86449 ACCEPT     all  --  eth1   any     anywhere             anywhere            
  254 46186 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED
    0     0 LOG        all  --  any    any     anywhere             anywhere            limit: avg 3/min burst 3 LOG level debug prefix `IPT FORWARD packet died: '

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination        
1171  114K bad_tcp_packets  tcp  --  any    any     anywhere             anywhere            
    0     0 ACCEPT     all  --  any    any     localhost            anywhere            
  265 28518 ACCEPT     all  --  any    any     server-inet.local    anywhere            
1119  107K ACCEPT     all  --  any    any     192.168.1.2          anywhere            
    0     0 LOG        all  --  any    any     anywhere             anywhere            limit: avg 3/min burst 3 LOG level debug prefix `IPT OUTPUT packet died: '

Chain allowed (4 references)
pkts bytes target     prot opt in     out     source               destination        
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp flags:FIN,SYN,RST,ACK/SYN
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED
    0     0 DROP       tcp  --  any    any     anywhere             anywhere            

Chain bad_tcp_packets (3 references)
pkts bytes target     prot opt in     out     source               destination        
    0     0 REJECT     tcp  --  any    any     anywhere             anywhere            tcp flags:SYN,ACK/SYN,ACK state NEW reject-with tcp-reset
    0     0 LOG        tcp  --  any    any     anywhere             anywhere            tcp flags:!FIN,SYN,RST,ACK/SYN state NEW LOG level warning prefix `New not syn:'
    0     0 DROP       tcp  --  any    any     anywhere             anywhere            tcp flags:!FIN,SYN,RST,ACK/SYN state NEW

Chain icmp_packets (1 references)
pkts bytes target     prot opt in     out     source               destination        
    0     0 ACCEPT     icmp --  any    any     anywhere             anywhere            icmp echo-request
    0     0 ACCEPT     icmp --  any    any     anywhere             anywhere            icmp time-exceeded

Chain tcp_packets (1 references)
pkts bytes target     prot opt in     out     source               destination        
    0     0 allowed    tcp  --  any    any     anywhere             anywhere            tcp dpt:ftp
    0     0 allowed    tcp  --  any    any     anywhere             anywhere            tcp dpt:ssh
    0     0 allowed    tcp  --  any    any     anywhere             anywhere            tcp dpt:www
    0     0 allowed    tcp  --  any    any     anywhere             anywhere            tcp dpt:auth

Chain udp_packets (1 references)
pkts bytes target     prot opt in     out     source               destination        
    0     0 ACCEPT     udp  --  any    any     anywhere             anywhere            udp dpt:2074
    0     0 ACCEPT     udp  --  any    any     anywhere             anywhere            udp dpt:4000


и вот мой отредактированный скрипт
#!/bin/sh
#
# rc.firewall - Initial SIMPLE IP 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="192.168.1.2"
INET_IFACE="eth0"
INET_BROADCAST="192.168.1.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.10.2"
LAN_IP_RANGE="192.168.10.0/24"
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="/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 --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

#
# 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 $LAN_IFACE -s $LAN_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 $INET_IP -j ACCEPT

#
# Special rule for DHCP requests from LAN, which are not caught properly
# otherwise.
#

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

#
# Rules for incoming packets from the internet.
#

$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

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

Хочу очень сильно разобраться в iptables

А и при запуски скрипта я обнулил iptables -F после запуска скрипта
выводиться такое сообщение

iptables: Chain already exists
iptables: Chain already exists
iptables: Chain already exists
iptables: Chain already exists
iptables: Chain already exists


Содержание

Сообщения в этом обсуждении
"iptables для малого офиса."
Отправлено Deneb , 07-Авг-08 10:48 
>Я только начинаю путь в linux. Прочел http://www.opennet.me/docs/RUS/iptables/
>взял за осного из него rc.firewall http://www.opennet.me/docs/RUS/iptables/misc/iptables-tutori...
>И подредактировал в самом начале настройки интерфейса.
>Проблема что на клиентских машинах так и не появилсяю
>

Мой скрипт для init.d Debian. A.B.C.D - внешний адрес торчащий в интернет

#!/bin/sh
#n

IPFW=/sbin/iptables

case "$1" in
    start)
    echo -n "Configuring firewall... "
    
    # общий сброс
    $IPFW -F
    $IPFW -X
    $IPFW -Z
    $IPFW -F -t nat
    $IPFW -X -t nat
    $IPFW -Z -t nat
    # РТБЧЙМБ РП-ХНПМЮБОЙА
    $IPFW -P INPUT ACCEPT
    $IPFW -P FORWARD ACCEPT
    $IPFW -P OUTPUT ACCEPT
    # запрет пингов
    $IPFW -A INPUT -p icmp -s x.y.z.0/24 -j ACCEPT
    $IPFW -A INPUT -p icmp -s 192.168.1.0/24 -j ACCEPT
    $IPFW -A INPUT -p icmp -s 192.168.3.0/24 -j ACCEPT
    $IPFW -A INPUT -p icmp -s 192.168.254.0/24 -j ACCEPT
        $IPFW -A INPUT -p icmp -j DROP
    
    #  доступ на 22 порт
    $IPFW -A INPUT -p tcp --dport 22 -s 192.168.3.0/24 -j ACCEPT
    $IPFW -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
    $IPFW -A INPUT -p tcp --dport 22 -j LOG
    $IPFW -A INPUT -p tcp --dport 22 -j DROP
    # прокси-сервер для внутренних сетей и разрешение хождения серверов туда и обратно.
    $IPFW -A INPUT -s 192.168.1.0/24 -p tcp --dport 8128 -j ACCEPT
    $IPFW -A INPUT -s 192.168.3.0/24 -p tcp --dport 8128 -j ACCEPT
    $IPFW -A INPUT -p tcp --dport 8128 -j DROP
    $IPFW -A FORWARD -s 192.168.1.0/24 -j ACCEPT
    $IPFW -A FORWARD -d 192.168.3.0/24 -j ACCEPT
    $IPFW -A FORWARD -s 192.168.1.2 -j ACCEPT
    $IPFW -A FORWARD -d 192.168.1.2 -j ACCEPT
    $IPFW -A FORWARD -s 192.168.1.200 -j ACCEPT
    $IPFW -A FORWARD -d 192.168.1.200 -j ACCEPT

    # NAT
    $IPFW -t nat -A POSTROUTING -o eth2 -j SNAT --to A.B.C.D
        #собственно и есть нат. Строчки ниже - проброс портов. Я прокинул впн соединение  #во внутреннюю сеть.
    $IPFW -t nat -A PREROUTING -p 47 -d A.B.C.D -j DNAT --to-destination 192.168.1.2
    $IPFW -t nat -A PREROUTING -p tcp -d A.B.C.D --dport 1723 -j DNAT --to 192.168.1.2
    $IPFW -t nat -A PREROUTING -p udp -d A.B.C.D --dport 1723 -j DNAT --to 192.168.1.2
    $IPFW -t nat -A PREROUTING -p tcp -d A.B.C.D --dport 3389 -j DNAT --to 192.168.1.2
    
    # Проброс почты.
    $IPFW -t nat -A PREROUTING -p tcp -d 192.168.1.200 --dport 25 -j DNAT --to ip-smtp
    $IPFW -t nat -A PREROUTING -p tcp -d 192.168.1.200 --dport 110 -j DNAT --to ip-pop3
    
    echo "done."
    ;;
    stop)
    echo -n "Deconfiguring firewall... "
        echo "done."
        ;;
    *)
    echo "Usage: /etc/init.d/firewall {start|stop}"
        exit 1
        ;;
esac

exit 0


"iptables для малого офиса."
Отправлено reader , 07-Авг-08 11:17 
>[оверквотинг удален]
>
> $IPFW -A INPUT -s 192.168.3.0/24 -p tcp --dport 8128 -j ACCEPT
>
> $IPFW -A INPUT -p tcp --dport 8128 -j DROP
> $IPFW -A FORWARD -s 192.168.1.0/24 -j ACCEPT
> $IPFW -A FORWARD -d 192.168.3.0/24 -j ACCEPT
> $IPFW -A FORWARD -s 192.168.1.2 -j ACCEPT
> $IPFW -A FORWARD -d 192.168.1.2 -j ACCEPT
> $IPFW -A FORWARD -s 192.168.1.200 -j ACCEPT
> $IPFW -A FORWARD -d 192.168.1.200 -j ACCEPT

ограничение только по входящим на icmp, tcp порты 8128, 22. остальное все разрешено :) .
>[оверквотинг удален]
> echo -n "Deconfiguring firewall... "
>        echo "done."
>        ;;
>    *)
> echo "Usage: /etc/init.d/firewall {start|stop}"
>        exit 1
>        ;;
>esac
>
>exit 0


"iptables для малого офиса."
Отправлено Deneb , 07-Авг-08 11:27 
>[оверквотинг удален]
>> echo -n "Deconfiguring firewall... "
>>        echo "done."
>>        ;;
>>    *)
>> echo "Usage: /etc/init.d/firewall {start|stop}"
>>        exit 1
>>        ;;
>>esac
>>
>>exit 0

Сети общаются через опенвпн для них и разрешено. В данном случае Дебиан у меня пыхтит как раздатчик инета для двух подсетей, заодно как маршрутизатор между подсетями.
В обычном случае, разумеется строчек с разрешением на сетки быть не должно.


"firehol? для малого офиса."
Отправлено Andrey Mitrofanov , 07-Авг-08 17:09 
>Проблема что на клиентских машинах так и не появилсяю
>вот мой
>iptables -L -v

iptables-save может быть удобнее для чтения (быстрее ответят?) - короче, форматирование не "едет" и пр.
http://www.opennet.me/openforum/vsluhforumID1/80355.html
http://www.opennet.me/openforum/vsluhforumID10/3764.html#11

>Хочу очень сильно разобраться в iptables

Разобраться и писать длиннющие скушнейшие скрипты - две большие разницы...

"Я так и не достиг "высот" написания собственного "готового" скрипта, но проблему построения файервола на iptables решил. Я использую "компилятор правил iptables" [...] - FireHOL."
http://www.opennet.me/openforum/vsluhforumID10/3764.html#2

"При этом я не говорю, что _знание_ iptables не нужно. Совсем наоборот: знание, куда какие пакеты "ходят" и когда, очень способствует и в firehol."
http://www.opennet.me/openforum/vsluhforumID1/81413.html#7

И далее - везде:
google.ru
firehol "Andrey Mitrofanov" проще site:opennet.ru
ENTER

> и вот мой отредактированный скрипт

Вот так короче будет (и на iptables-save "похоже"; _читать_ удобнее) -
$ sed '/^\(#\|$\)\|\/sbin\//d;s/^\$IPTABLES //'<rc-fw |cat -n|sed 's/^    \(..\)\t/|\1\. /'

| 1. INET_IP="192.168.1.2"
| 2. INET_IFACE="eth0"
| 3. INET_BROADCAST="192.168.1.255"
| 4. LAN_IP="192.168.10.2"
| 5. LAN_IP_RANGE="192.168.10.0/24"
| 6. LAN_IFACE="eth1"
| 7. LO_IFACE="lo"
| 8. LO_IP="127.0.0.1"
| 9. echo "1" > /proc/sys/net/ipv4/ip_forward
|10. -P INPUT DROP
|11. -P OUTPUT DROP
|12. -P FORWARD DROP
|13. -N bad_tcp_packets
|14. -N allowed
|15. -N tcp_packets
|16. -N udp_packets
|17. -N icmp_packets
|18. -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK
-m state --state NEW -j REJECT --reject-with tcp-reset
|19. -A bad_tcp_packets -p tcp ! --syn -m state --state NEW
-j LOG --log-prefix "New not syn:"
|20. -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP
|21. -A allowed -p TCP --syn -j ACCEPT
|22. -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
|23. -A allowed -p TCP -j DROP
|24. -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed
|25. -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed
|26. -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed
|27. -A tcp_packets -p TCP -s 0/0 --dport 113 -j allowed
|28. -A udp_packets -p UDP -s 0/0 --destination-port 2074 -j ACCEPT
|29. -A udp_packets -p UDP -s 0/0 --destination-port 4000 -j ACCEPT
|30. -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
|31. -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
|32. -A INPUT -p tcp -j bad_tcp_packets
|33. -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
|34. -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
|35. -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
|36. -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
|37. -A INPUT -p UDP -i $LAN_IFACE --dport 67 --sport 68 -j ACCEPT
|38. -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED
-j ACCEPT
|39. -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
|40. -A INPUT -p UDP -i $INET_IFACE -j udp_packets
|41. -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets
|42. -A INPUT -m limit --limit 3/minute --limit-burst 3
-j LOG --log-level DEBUG --log-prefix "IPT INPUT packet died: "
|43. -A FORWARD -p tcp -j bad_tcp_packets
|44. -A FORWARD -i $LAN_IFACE -j ACCEPT
|45. -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
|46. -A FORWARD -m limit --limit 3/minute --limit-burst 3
-j LOG --log-level DEBUG --log-prefix "IPT FORWARD packet died: "
|47. -A OUTPUT -p tcp -j bad_tcp_packets
|48. -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
|49. -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
|50. -A OUTPUT -p ALL -s $INET_IP -j ACCEPT
|51. -A OUTPUT -m limit --limit 3/minute --limit-burst 3
-j LOG --log-level DEBUG --log-prefix "IPT OUTPUT packet died: "
|52. -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP

$ _

А на firehol будет ещё раза в 3 или в 5 короче. И проще для понимания/исправления... [После изучения самого firehol, конечно.]

>А и при запуски скрипта я обнулил iptables -F после запуска скрипта
>
>выводиться такое сообщение
>
>iptables: Chain already exists
>iptables: Chain already exists
>iptables: Chain already exists
>iptables: Chain already exists
>iptables: Chain already exists

А надо было делать `iptables -X`. И `iptables -t nat -X`, кстати.

-F "очистил" содержимое цепочек, но не удалил их, и команды:
> 13. -N bad_tcp_packets
> 14. -N allowed
> 15. -N tcp_packets
> 16. -N udp_packets
> 17. -N icmp_packets

- тебе именно это и говорят: _создать_ не могу, цепочка уже существует.


"firehol, бесплатные образцы"
Отправлено Andrey Mitrofanov , 08-Авг-08 00:06 
>>Проблема что на клиентских машинах так и не появилсяю

Кстати, странно. В FORWARD, вроде, разрешающие правила есть. ip_forward=1 есть.
Может очепятка где-нибудь? Или defaul gateway на клиентах не прописан на этот роутер?

>|52. -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP

Исходная "конфигурация": 52 строки, 2.6Кб - даже в "упрощённом" виде.

>А на firehol будет ещё раза в 3 или в 5 короче.
>И проще для понимания/исправления... [После изучения самого firehol, конечно.]

---8<--- firehol.free.sample.conf
version 5

INET_IP="192.168.1.2"
INET_IFACE="eth0"
LAN_IP_RANGE="192.168.10.0/24"
LAN_IFACE="eth1"

FIREHOL_LOG_LEVEL=DEBUG
FIREHOL_LOG_FREQUENCY="3/minute"
FIREHOL_LOG_BURST=3

snat to "$INET_IP" outface "$INET_IFACE"

interface "$LAN_IFACE" lan
  protection full
  protection reverse full
  client all accept
  server all accept src "$LAN_IP_RANGE"
  server dhcp accept

interface "$INET_IFACE" inet
  protection full
  protection reverse full
  client all accept
  server "ftp ssh http ident ping" accept
  server custom unknown1 udp/2074 default accept
  server custom unknown2 udp/4000 default accept

router all
  protection full
  server all accept inface "$LAN_IFACE"
--->8---

Конфигурация на firehol: 25 непустых строк и ~670 байт...

Продолжение :) осмотра --> http://www.opennet.me/openforum/vsluhforumID10/3881.html#2


"firehol, бесплатные образцы"
Отправлено Gennadi , 08-Авг-08 22:06 

http://gennadi.dyndns.org/21.html


"firehol? для малого офиса."
Отправлено PavelR , 10-Авг-08 09:56 
>[оверквотинг удален]
>>вот мой
>>iptables -L -v
>
>iptables-save может быть удобнее для чтения (быстрее ответят?) - короче, форматирование не
>"едет" и пр.
>http://www.opennet.me/openforum/vsluhforumID1/80355.html
>http://www.opennet.me/openforum/vsluhforumID10/3764.html#11
>
>>Хочу очень сильно разобраться в iptables
>

Да нафиг это FireHol и прочие поделки-надстройки. Мусор это всё. Если понимаешь как работает iptables - ничего кроме iptables и не надо.

После того, как поработаешь с iptables все надстройки - только лишний промежуточный слой, которому нужно научиться доверять, и который потенциально нужно будет контролировать, "то ли оно нагенерило".


"firehol? для малого офиса."
Отправлено reader , 10-Авг-08 14:45 
При начальном знакомстве можно и воспользоваться разными генераторами правил, но смотреть какие они формируют правила лучше с помощью iptables-save, тем более что можно отправить вывод в файл и потом грузить эти правила прям из файла по iptables-restore, или подправив и дописав несколько букв в начале строки получить свой скрипт. Но в последующем лучше писать правила руками, а уж через скрипт, service RH-подобных или в командной строке , это уже дело вкуса и обстоятельств.


"firehol? для малого офиса."
Отправлено PavelR , 10-Авг-08 17:48 
>При начальном знакомстве можно и воспользоваться разными генераторами правил, но смотреть какие
>они формируют правила лучше с помощью iptables-save, тем более что можно
>отправить вывод в файл и потом грузить эти правила прям из
>файла по iptables-restore, или подправив и дописав несколько букв в начале
>строки получить свой скрипт. Но в последующем лучше писать правила руками,
>а уж через скрипт, service RH-подобных или в командной строке ,
>это уже дело вкуса и обстоятельств.

http://debian.nikolas.ru/debian/ RH-подобный сервис для debian.