iptable хелп

Есть и такой ОС.

Модератор: weec

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
ttys
*BSD
Сообщения: 402
Зарегистрирован: 2009-06-26 8:37:11
Откуда: Ростов-на-Дону
Контактная информация:

iptable хелп

Непрочитанное сообщение ttys » 2010-09-01 10:52:49

появилась необходимость добавить ещё одну подсеть 192.168.2.0/24 немного подправил имеющиеся правила, в ходе работы возникли некоторые вопросы.
1)правильно ли будет форвардить на интерфейс а не на внешний ип адрес?
интересует вот этот кусок:
старый вариант

Код: Выделить всё

######################################################
#$IPTABLES -A FORWARD -s $LAN_IP_RANGE_2 -d ! $LAN_IP_RANGE -j ACCEPT
#$IPTABLES -A FORWARD -s $LAN_IP_RANGE_3 -d ! $LAN_IP_RANGE -j ACCEPT
новый вариант

Код: Выделить всё

######################################################
#$IPTABLES -A FORWARD -s $LAN_IP_RANGE_2 -d $LAN_IP_RANGE -j ACCEPT
#$IPTABLES -A FORWARD -s $LAN_IP_RANGE_3 -d $LAN_IP_RANGE -j ACCEPT

#$IPTABLES -A FORWARD -s $LAN_IP_RANGE_2 -d $INET_IP -j ACCEPT
#$IPTABLES -A FORWARD -s $LAN_IP_RANGE_3 -d $INET_IP -j ACCEPT
$IPTABLES -A FORWARD -s $LAN_IP_RANGE_2 -o $INET_IFACE -j ACCEPT
$IPTABLES -A FORWARD -s $LAN_IP_RANGE_3 -o $INET_IFACE -j ACCEPT
#######################################################
2) в куда запхать это?, дабы не получилось чтобы они сработали после accept тоесть не сработали вообще
$IPTABLES -A INPUT -i $INET_IFACE -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name SSH --rsource
$IPTABLES -A INPUT -i $INET_IFACE -p tcp -m tcp --dport 22 -m recent --update --seconds 60 --hitcount 3 --rttl --name SSH --rsource -j LOG --log-prefix "IPTABLES: SSH_BRUTFORCE: "
$IPTABLES -A INPUT -i $INET_IFACE -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH --rsource -j DROP
3) как дропнуть все исходяшие соединения на 25 порт кроме "ххх.ххх.ххх.ххх" "ххх.ххх.ххх.ххх" "малру", и тд.)
тоесть тоже куда именно вставить строчки

Код: Выделить всё

$IPTABLES -A FORWARD -p tcp -s $LAN_IP_RANGE -d xxx.xxx.xxx.xxx --dport 25 -j ACCEPT
$IPTABLES -A FORWARD -p tcp -s $LAN_IP_RANGE --dport 25 -j DROP
вот сами правила:

Код: Выделить всё

#!/bin/sh
#
# Internet Configuration.
#

INET_IP="xxx.xxx.xxx.xxx"
INET_IFACE="eth0"
INET_BROADCAST="xxx.xxx.xxx.xxx"

#
# Local Area Network configuration.
#

LAN_IP="192.168.1.254"
LAN_IP_RANGE="192.168.1.0/255.255.255.0"
LAN_IFACE="eth1"

LAN_IP_1="192.168.2.254"
LAN_IP_RANGE_1="192.168.2.0/255.255.255.0"
LAN_IFACE_1="eth1"

LAN_IP_2="10.1.1.254"
LAN_IP_RANGE_2="10.1.1.0/255.255.255.0"
LAN_IFACE_2="eth1"

LAN_IP_3="10.2.1.254"
LAN_IP_RANGE_3="10.2.1.0/255.255.255.0"
LAN_IFACE_3="eth1"

#
# Localhost Configuration.
#

LO_IFACE="lo"
LO_IP="127.0.0.1"

#
# IPTables Configuration.
#

IPTABLES=/sbin/iptables

#
# Module loading.
#

#
# Needed to initially load modules
#

/sbin/depmod -a

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

# Need for netams accounting
/sbin/modprobe ip_queue

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

#
# /proc set up.
#

#
# Required proc configuration
#

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

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

#
# Set policies
#

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

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

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

#
# Rules
#


#ftp from anywhere
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 20 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed
##for ftp-passive mode
#$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 1025:65535 -j allowed

#smtp from anywhere
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 25 -j allowed

#ssh from anywhere
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed

#http from anywhere
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed

#pop3 from anywhere
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 110 -j allowed

#domain from anywhere
$IPTABLES -A tcp_packets -p TCP -s  0/0 --dport 53 -j allowed

#nntp from anywhere
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 119 -j allowed

#imap2 from anywhere
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 143 -j allowed

#https from anywhere
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 443 -j allowed

#imaps from anywhere
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 993 -j allowed

#pop3s from anywhere
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 995 -j allowed

#squid from our nets
$IPTABLES -A tcp_packets -p TCP -s $LAN_IP_RANGE --dport 3128 -j allowed
$IPTABLES -A tcp_packets -p TCP -s $LAN_IP_RANGE_1 --dport 3128 -j allowed
$IPTABLES -A tcp_packets -p TCP -s $LAN_IP_RANGE_2 --dport 3128 -j allowed
$IPTABLES -A tcp_packets -p TCP -s $LAN_IP_RANGE_3 --dport 3128 -j allowed

#
# UDP ports
#

#domain from anywhere
$IPTABLES -A udp_packets -p UDP -s 0/0 --dport 53 -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 -d $INET_BROADCAST --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 packets
#
$IPTABLES -A icmp_packets --fragment -p ICMP -j LOG \
--log-level debug --log-prefix "Fragmented ICMP: "
$IPTABLES -A icmp_packets --fragment -p ICMP -j DROP
$IPTABLES -A icmp_packets -p ICMP -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s $LAN_IP_RANGE_1 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s $LAN_IP_RANGE_2 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s $LAN_IP_RANGE_3 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP --icmp-type echo-request -m limit --limit 1/s \
-s 0/0 -j ACCEPT

#
# 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 -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -s $LAN_IP_RANGE_1 -j ACCEPT
$IPTABLES -A INPUT -p ALL -s $LAN_IP_RANGE_2 -j ACCEPT
$IPTABLES -A INPUT -p ALL -s $LAN_IP_RANGE_3 -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 $LAN_IP_1 -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP_2 -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP_3 -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: "

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

#Forward for LAN

#block UltraSurf on students PCs
$IPTABLES -A FORWARD -p tcp -s $LAN_IP_RANGE_2 --dport 443 -j DROP
$IPTABLES -A FORWARD -p udp -s $LAN_IP_RANGE_2 --dport 443 -j DROP
$IPTABLES -A FORWARD -p tcp -s $LAN_IP_RANGE_3 --dport 443 -j DROP
$IPTABLES -A FORWARD -p udp -s $LAN_IP_RANGE_3 --dport 443 -j DROP

$IPTABLES -A FORWARD -p tcp -s $LAN_IP_RANGE --dport 25 -j LOG \
--log-level debug --log-prefix "SMTP FORWARD from admin: "
$IPTABLES -A FORWARD -p udp -s $LAN_IP_RANGE --dport 25 -j LOG \
--log-level debug --log-prefix "SMTP FORWARD from admin: "
$IPTABLES -A FORWARD -p tcp -s $LAN_IP_RANGE_1 --dport 25 -j LOG \
--log-level debug --log-prefix "SMTP FORWARD from buh: "
$IPTABLES -A FORWARD -p udp -s $LAN_IP_RANGE_1 --dport 25 -j LOG \
--log-level debug --log-prefix "SMTP FORWARD from buh: "

$IPTABLES -A FORWARD -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A FORWARD -s $LAN_IP_RANGE_1 -j ACCEPT

#Drop mail traffic from student's nets
$IPTABLES -A FORWARD -p tcp -s $LAN_IP_RANGE_2 --dport 25 -j LOG \
--log-level debug --log-prefix "SMTP FORWARD died: "
$IPTABLES -A FORWARD -p tcp -s $LAN_IP_RANGE_3 --dport 25 -j LOG \
--log-level debug --log-prefix "SMTP FORWARD died: "
$IPTABLES -A FORWARD -p udp -s $LAN_IP_RANGE_2 --dport 25 -j LOG \
--log-level debug --log-prefix "SMTP FORWARD died: "
$IPTABLES -A FORWARD -p udp -s $LAN_IP_RANGE_3 --dport 25 -j LOG \
--log-level debug --log-prefix "SMTP FORWARD died: "
$IPTABLES -A FORWARD -p tcp -s $LAN_IP_RANGE_2 --dport 25 -j DROP
$IPTABLES -A FORWARD -p tcp -s $LAN_IP_RANGE_3 --dport 25 -j DROP
$IPTABLES -A FORWARD -p udp -s $LAN_IP_RANGE_2 --dport 25 -j DROP
$IPTABLES -A FORWARD -p udp -s $LAN_IP_RANGE_3 --dport 25 -j DROP
######################################################
#old forward
#$IPTABLES -A FORWARD -s $LAN_IP_RANGE_2 -d ! $LAN_IP_RANGE -j ACCEPT
#$IPTABLES -A FORWARD -s $LAN_IP_RANGE_3 -d ! $LAN_IP_RANGE -j ACCEPT
######################################################
#new forward
#$IPTABLES -A FORWARD -s $LAN_IP_RANGE_2 -d $LAN_IP_RANGE -j ACCEPT
#$IPTABLES -A FORWARD -s $LAN_IP_RANGE_3 -d $LAN_IP_RANGE -j ACCEPT

#$IPTABLES -A FORWARD -s $LAN_IP_RANGE_2 -d $INET_IP -j ACCEPT
#$IPTABLES -A FORWARD -s $LAN_IP_RANGE_3 -d $INET_IP -j ACCEPT
$IPTABLES -A FORWARD -s $LAN_IP_RANGE_2 -o $INET_IFACE -j ACCEPT
$IPTABLES -A FORWARD -s $LAN_IP_RANGE_3 -o $INET_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: "


# Transparent proxy 
$IPTABLES -t nat -A PREROUTING -s $LAN_IP_RANGE -p tcp -m multiport \
--dport 80,8080,443 -j REDIRECT --to-ports 3128
$IPTABLES -t nat -A PREROUTING -s $LAN_IP_RANGE_1 -p tcp -m multiport \
--dport 80,8080,443 -j REDIRECT --to-ports 3128
$IPTABLES -t nat -A PREROUTING -s $LAN_IP_RANGE_2 -p tcp -m multiport \
--dport 80,8080,443 -j REDIRECT --to-ports 3128
$IPTABLES -t nat -A PREROUTING -s $LAN_IP_RANGE_3 -p tcp -m multiport \
--dport 80,8080,443 -j REDIRECT --to-ports 3128


#
# Enable simple IP Forwarding and Network Address Translation
#

$IPTABLES -t nat -A POSTROUTING -s $LAN_IP_RANGE -d ! $LAN_IP_RANGE \
-j SNAT --to-source $INET_IP
$IPTABLES -t nat -A POSTROUTING -s $LAN_IP_RANGE_1 -d ! $LAN_IP_RANGE_1 \
-j SNAT --to-source $INET_IP
$IPTABLES -t nat -A POSTROUTING -s $LAN_IP_RANGE_2 -d ! $LAN_IP_RANGE_2 \
-j SNAT --to-source $INET_IP
$IPTABLES -t nat -A POSTROUTING -s $LAN_IP_RANGE_3 -d ! $LAN_IP_RANGE_3 \
-j SNAT --to-source $INET_IP

#
# OUTPUT Rules
#

#Reject to some nets
$IPTABLES -A OUTPUT -s 172.16.0.0/255.240.0.0 -j REJECT
$IPTABLES -A OUTPUT -d 172.16.0.0/255.240.0.0 -j REJECT
$IPTABLES -A OUTPUT -s 224.0.0.0/255.0.0.0 -j REJECT

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
BlackCat
прапорщик
Сообщения: 469
Зарегистрирован: 2007-10-16 22:40:42

Re: iptable хелп

Непрочитанное сообщение BlackCat » 2010-09-01 23:48:17

iptables конечно гибкий, но замороченный firewall построенный на подсистеме netfilter. Вот одна из достаточно подробных схем, прохождения пакетов:
Netfilter-packet-flow.png
Прохождение пакетов, через netfilter.
взято с http://commons.wikimedia.org/wiki/File: ... t-flow.svg Вот ещё одна полезная схема, дана в более общем виде:
dport-routing-02.png
Общий вид схемы расположения точек, прохождения пакета.
dport-routing-02.png (6.56 КБ) 2503 просмотра
взято с http://www.sysresccd.org/Sysresccd-Netw ... g-connmark материал по ссылке не очень интересен, а схема отличная. Изучать лучше совместно с man iptables - всё подробно описано.
=====
Для просмотра правил загруженных в iptables есть опция -L. Дополнительно, возможно указать таблицу с помощью опции -t. Например: =====
Вам нужен готовый рецепт или есть желание разобраться?

Аватара пользователя
ttys
*BSD
Сообщения: 402
Зарегистрирован: 2009-06-26 8:37:11
Откуда: Ростов-на-Дону
Контактная информация:

Re: iptable хелп

Непрочитанное сообщение ttys » 2010-09-02 9:45:09

спс уже разобрался :smile:
ЗЫ: это не мой конфиг, я вот неделю как столкнулся с иптабле некогда было маны дочитать :oops:

Аватара пользователя
BlackCat
прапорщик
Сообщения: 469
Зарегистрирован: 2007-10-16 22:40:42

Re: iptable хелп

Непрочитанное сообщение BlackCat » 2010-09-02 10:19:50

ttys писал(а):некогда было маны дочитать :oops:
Я его сам не осилил.

Аватара пользователя
ttys
*BSD
Сообщения: 402
Зарегистрирован: 2009-06-26 8:37:11
Откуда: Ростов-на-Дону
Контактная информация:

Re: iptable хелп

Непрочитанное сообщение ttys » 2010-09-02 10:54:37

сделал так

Код: Выделить всё

$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 $LAN_IP_1 -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP_2 -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP_3 -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
$IPTABLES -A INPUT -p UDP -i $LAN_IFACE --dport 67 --sport 68 -j ACCEPT
$IPTABLES -A INPUT -i $INET_IFACE -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name SSH --rsource
$IPTABLES -A INPUT -i $INET_IFACE -p tcp -m tcp --dport 22 -m recent --update --seconds 60 --hitcount 3 --rttl --name SSH --rsource -j LOG --log-prefix "IPTABLES: SSH_BRUTFORCE: "
$IPTABLES -A INPUT -i $INET_IFACE -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH --rsource -j DROP
$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 -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: "
$IPTABLES -A FORWARD -s $LAN_IP_RANGE_2 --dport 443 -j DROP
$IPTABLES -A FORWARD -s $LAN_IP_RANGE_3 --dport 443 -j DROP
$IPTABLES -A FORWARD -s $LAN_IP_RANGE --dport 25 -j LOG --log-level debug --log-prefix "SMTP FORWARD from admin: "
$IPTABLES -A FORWARD -s $LAN_IP_RANGE_1 --dport 25 -j LOG --log-level debug --log-prefix "SMTP FORWARD from buh: "
$IPTABLES -A FORWARD -s $LAN_IP_RANGE_2 --dport 25 -j LOG --log-level debug --log-prefix "SMTP FORWARD died: "
$IPTABLES -A FORWARD -s $LAN_IP_RANGE_3 --dport 25 -j LOG --log-level debug --log-prefix "SMTP FORWARD died: "
$IPTABLES -A FORWARD -s $LAN_IP_RANGE_2 --dport 25 -j DROP
$IPTABLES -A FORWARD -s $LAN_IP_RANGE_3 --dport 25 -j DROP
$IPTABLES -A FORWARD -s $LAN_IP_RANGE -d ! $INET_IP --dport  25 -j DROP
$IPTABLES -A FORWARD -s $LAN_IP_RANGE_1 -d ! $INET_IP --dport  25 -j DROP
$IPTABLES -A FORWARD -s $LAN_IP_RANGE_2 -o $INET_IFACE -j ACCEPT
$IPTABLES -A FORWARD -s $LAN_IP_RANGE_3 -o $INET_IFACE -j ACCEPT
$IPTABLES -A FORWARD -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A FORWARD -s $LAN_IP_RANGE_1 -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level debug --log-prefix "IPT FORWARD packet died: "
$IPTABLES -t nat -A PREROUTING -s $LAN_IP_RANGE -p tcp -m multiport --dport 80,8080,443 -j REDIRECT --to-ports 3128
$IPTABLES -t nat -A PREROUTING -s $LAN_IP_RANGE_1 -p tcp -m multiport --dport 80,8080,443 -j REDIRECT --to-ports 3128
$IPTABLES -t nat -A PREROUTING -s $LAN_IP_RANGE_2 -p tcp -m multiport --dport 80,8080,443 -j REDIRECT --to-ports 3128
$IPTABLES -t nat -A PREROUTING -s $LAN_IP_RANGE_3 -p tcp -m multiport --dport 80,8080,443 -j REDIRECT --to-ports 3128
$IPTABLES -t nat -A POSTROUTING -s $LAN_IP_RANGE -d ! $LAN_IP_RANGE -j SNAT --to-source $INET_IP
$IPTABLES -t nat -A POSTROUTING -s $LAN_IP_RANGE_1 -d ! $LAN_IP_RANGE_1 -j SNAT --to-source $INET_IP
$IPTABLES -t nat -A POSTROUTING -s $LAN_IP_RANGE_2 -d ! $LAN_IP_RANGE_2 -j SNAT --to-source $INET_IP
$IPTABLES -t nat -A POSTROUTING -s $LAN_IP_RANGE_3 -d ! $LAN_IP_RANGE_3 -j SNAT --to-source $INET_IP
$IPTABLES -A OUTPUT -s 172.16.0.0/255.240.0.0 -j REJECT
$IPTABLES -A OUTPUT -d 172.16.0.0/255.240.0.0 -j REJECT
$IPTABLES -A OUTPUT -s 224.0.0.0/255.0.0.0 -j REJECT
вопрос можно ли с "!" указать список?
тоесть запрет на всё кроме тех кто в списке

Код: Выделить всё

IP_MAIL="свойип, xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx"
$IPTABLES -A FORWARD -s $LAN_IP_RANGE -d ! $IP_MAIL --dport  25 -j DROP

Аватара пользователя
BlackCat
прапорщик
Сообщения: 469
Зарегистрирован: 2007-10-16 22:40:42

Re: iptable хелп

Непрочитанное сообщение BlackCat » 2010-09-02 18:38:53

ttys писал(а):вопрос можно ли с "!" указать список?
тоесть запрет на всё кроме тех кто в списке

Код: Выделить всё

IP_MAIL="свойип, xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx"
$IPTABLES -A FORWARD -s $LAN_IP_RANGE -d ! $IP_MAIL --dport  25 -j DROP
Судя по документации указать адреса назначения списком не получится. Для группировки правил и сокращения числа проверок используют цепочки, созданые пользователем. Например так:

Код: Выделить всё

# Create new chain
$IPTABLES -N smtp
$IPTABLES -P smtp DROP
# Add filter rules to the smtp chain
$IPTABLES -A smtp -d smtp_host_1 -j RETURN
$IPTABLES -A smtp -d smtp_host_2 -j RETURN
$IPTABLES -A smtp -d smtp_host_3 -j RETURN
# Pass SMTP trafic through special chain
$IPTABLES -A FORWARD -s $LAN_IP_RANGE --dport 25 -j smtp
Здесь создаётся отдельная цепочка, со списком разрешённых узлов, если совпадения не было найдено, то пакет отбрасывается, если совпадение имеет место быть, то продолжается дальнейшая обработка пакета. Вместо RETURN иногда допустимо использовать ACCEPT, что бы не выполнять больше никаких проверок.

Аватара пользователя
ttys
*BSD
Сообщения: 402
Зарегистрирован: 2009-06-26 8:37:11
Откуда: Ростов-на-Дону
Контактная информация:

Re: iptable хелп

Непрочитанное сообщение ttys » 2010-09-03 8:01:10

хз кто сказал :smile:
самый короткий путь - тот который знаешь (с)
дабы не увязнуть в цепочках и правилах сделаю так:

Код: Выделить всё

$IPTABLES -A FORWARD -s $LAN_IP_RANGE -d  ххх.ххх.ххх.хх1 --dport  25 -j ACCEPT
$IPTABLES -A FORWARD -s $LAN_IP_RANGE -d  ххх.ххх.ххх.хх2 --dport  25 -j ACCEPT
$IPTABLES -A FORWARD -s $LAN_IP_RANGE -d  ххх.ххх.ххх.хх3 --dport  25 -j ACCEPT
$IPTABLES -A FORWARD -s $LAN_IP_RANGE --dport  25 -j DROP

Аватара пользователя
pithagora
ефрейтор
Сообщения: 51
Зарегистрирован: 2009-03-11 0:11:19
Контактная информация:

Re: iptable хелп

Непрочитанное сообщение pithagora » 2010-09-09 17:55:49

# Transparent proxy
$IPTABLES -t nat -A PREROUTING -s $LAN_IP_RANGE -p tcp -m multiport \
--dport 80,8080,443 -j REDIRECT --to-ports 3128
$IPTABLES -t nat -A PREROUTING -s $LAN_IP_RANGE_1 -p tcp -m multiport \
--dport 80,8080,443 -j REDIRECT --to-ports 3128
$IPTABLES -t nat -A PREROUTING -s $LAN_IP_RANGE_2 -p tcp -m multiport \
--dport 80,8080,443 -j REDIRECT --to-ports 3128
$IPTABLES -t nat -A PREROUTING -s $LAN_IP_RANGE_3 -p tcp -m multiport \
--dport 80,8080,443 -j REDIRECT --to-ports 3128

прерутинг редирект порта 443 на 3128 у меня не работает. По документации он вопще не работает в целях безопасности.
http://www.linuxhomenetworking.com/wiki ... with_Squid
тут говорится об этом. У кого какой опыт делать эту операцию методом маскарадинга, так как советуют в статье?

Аватара пользователя
BlackCat
прапорщик
Сообщения: 469
Зарегистрирован: 2007-10-16 22:40:42

Re: iptable хелп

Непрочитанное сообщение BlackCat » 2010-09-09 19:12:42

pithagora писал(а):прерутинг редирект порта 443 на 3128 у меня не работает. По документации он вопще не работает в целях безопасности.
HTTPS трафик несколько бессмысленно гонять через прозрачный прокси-сервер, т.к. прокси будет работать, как обычный NAT. Первая ссылка из googl'а (запрос "transparent proxy HTTPS") со мной согласна: http://www.faqs.org/docs/Linux-mini/Tra ... html#ss2.3 Если интересуют продробности - создайте отдельную тему в форуме NETWORKS.
=====
pithagora писал(а):http://www.linuxhomenetworking.com/wiki ... with_Squid
тут говорится об этом. У кого какой опыт делать эту операцию методом маскарадинга, так как советуют в статье?
В статье говорится о том, что если вы используете прозрачный HTTP-прокси, то весь остальной трафик (в т.ч. и HTTPS) вам придётся просто маршрутизировать в интернет (не пропуская через прокси) и при необходимости воспользоваться т.н. маскарадингом.
Т.е. если у вас сетка с серыми адресами и вы хотите использовать прозрачный HTTP-прокси, то HTTP-трафик переадресовываете на squid, а всё остальное пропускаете через обычный NAT.

Аватара пользователя
ttys
*BSD
Сообщения: 402
Зарегистрирован: 2009-06-26 8:37:11
Откуда: Ростов-на-Дону
Контактная информация:

Re: iptable хелп

Непрочитанное сообщение ttys » 2010-09-10 7:23:19

в freebsd 8.0 squid 3.1 работает редирект порта 443
а вот в дебиан 4 со squid-ом 2.6 чёто ни как :(
наверное плюну и сделаю всё на фре

Аватара пользователя
BlackCat
прапорщик
Сообщения: 469
Зарегистрирован: 2007-10-16 22:40:42

Re: iptable хелп

Непрочитанное сообщение BlackCat » 2010-09-10 8:24:34

ttys писал(а):в freebsd 8.0 squid 3.1 работает редирект порта 443
Если вас не затруднит, дайте ссылку на описание настройки данного счастья.

Аватара пользователя
pithagora
ефрейтор
Сообщения: 51
Зарегистрирован: 2009-03-11 0:11:19
Контактная информация:

Re: iptable хелп

Непрочитанное сообщение pithagora » 2010-09-10 10:28:47

BlackCat писал(а):
pithagora писал(а):прерутинг редирект порта 443 на 3128 у меня не работает. По документации он вопще не работает в целях безопасности.
HTTPS трафик несколько бессмысленно гонять через прозрачный прокси-сервер, т.к. прокси будет работать, как обычный NAT. Первая ссылка из googl'а (запрос "transparent proxy HTTPS") со мной согласна: http://www.faqs.org/docs/Linux-mini/Tra ... html#ss2.3 Если интересуют продробности - создайте отдельную тему в форуме NETWORKS.
=====
Раскажу подробную схему прокси.
Прозрачный прокси, используется external_acl_type, эта опция передает сквиду результаты хелпера в виде OK (дополнительные опции) - сквид пропускает или ERR - сквид режет . В качестве хелпера у меня работает ПХП скрипт смысл которово давать сквиду ссылки из БД которые он должен пропускать, плюс .png, .jif итд, а все остольное что связано с этим конкретным доменом - резать. Сам домен работает как на http так и на https. Так вот http режутся при iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 а как делать с 443 портом надо разобратся. Вот и попросил совета у знатаков iptables.

Аватара пользователя
pithagora
ефрейтор
Сообщения: 51
Зарегистрирован: 2009-03-11 0:11:19
Контактная информация:

Re: iptable хелп

Непрочитанное сообщение pithagora » 2010-09-10 10:30:59

ttys писал(а):в freebsd 8.0 squid 3.1 работает редирект порта 443
а вот в дебиан 4 со squid-ом 2.6 чёто ни как :(
наверное плюну и сделаю всё на фре
А мой шеф немец даже не хочет слышать ни о чем кроме ебанту сервер. Я бы с радостью сделал все на FreeBSD.

Аватара пользователя
BlackCat
прапорщик
Сообщения: 469
Зарегистрирован: 2007-10-16 22:40:42

Re: iptable хелп

Непрочитанное сообщение BlackCat » 2010-09-10 11:29:45

HTTPS, даже если вы пропустите его через прокси-сервер, разобрать затруднительно, т.к. все данные передаются в зашифрованном виде, в т.ч. HTTP-заголовки по которым ориентируется squid. Попробуйте вообще заблокировать HTTPS или заблокировать его только для интересующих узлов (по IP-адресу).

Аватара пользователя
pithagora
ефрейтор
Сообщения: 51
Зарегистрирован: 2009-03-11 0:11:19
Контактная информация:

Re: iptable хелп

Непрочитанное сообщение pithagora » 2010-09-10 12:29:58

BlackCat писал(а):HTTPS, даже если вы пропустите его через прокси-сервер, разобрать затруднительно, т.к. все данные передаются в зашифрованном виде, в т.ч. HTTP-заголовки по которым ориентируется squid. Попробуйте вообще заблокировать HTTPS или заблокировать его только для интересующих узлов (по IP-адресу).
Сама проблема ведь не состоит в сквиде а в iptables https forwarding. Единственое решение насколько я понял это маскарадинг.

Аватара пользователя
ttys
*BSD
Сообщения: 402
Зарегистрирован: 2009-06-26 8:37:11
Откуда: Ростов-на-Дону
Контактная информация:

Re: iptable хелп

Непрочитанное сообщение ttys » 2010-09-13 8:28:28

BlackCat писал(а):
ttys писал(а):в freebsd 8.0 squid 3.1 работает редирект порта 443
Если вас не затруднит, дайте ссылку на описание настройки данного счастья.
да нет каких то особенностей всё стандартно
freebsd 8.0 + squid 3.1 + pf
в конфиге pf указываешь:

Код: Выделить всё

rdr on $int_if proto tcp from $internal_net to any port { https, www } -> 127.0.0.1 port 3128
и всё работает :smile:

Аватара пользователя
ttys
*BSD
Сообщения: 402
Зарегистрирован: 2009-06-26 8:37:11
Откуда: Ростов-на-Дону
Контактная информация:

Re: iptable хелп

Непрочитанное сообщение ttys » 2010-09-13 8:29:58

pithagora писал(а): Сама проблема ведь не состоит в сквиде а в iptables https forwarding. Единственое решение насколько я понял это маскарадинг.
да и через snat тоже работает

Аватара пользователя
ttys
*BSD
Сообщения: 402
Зарегистрирован: 2009-06-26 8:37:11
Откуда: Ростов-на-Дону
Контактная информация:

Re: iptable хелп

Непрочитанное сообщение ttys » 2010-09-13 8:34:22

BlackCat писал(а):HTTPS, даже если вы пропустите его через прокси-сервер, разобрать затруднительно, т.к. все данные передаются в зашифрованном виде, в т.ч. HTTP-заголовки по которым ориентируется squid. Попробуйте вообще заблокировать HTTPS или заблокировать его только для интересующих узлов (по IP-адресу).
нужен клиентбанк и прочая хрень работающая через 443 порт
а когда завернуть на сквид то мона скайп заблочить
http://wiki.opennet.ru/SquidSkype

Код: Выделить всё

# skype
acl numeric_IPs url_regex ^(([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)|(\[(0-9af]+)?:([0-9af:]+)?:([0-9af]+)?\])):443
acl Skype_UA browser ^skype^

# skype
http_access deny numeric_IPS
http_access deny Skype_UA

Аватара пользователя
BlackCat
прапорщик
Сообщения: 469
Зарегистрирован: 2007-10-16 22:40:42

Re: iptable хелп

Непрочитанное сообщение BlackCat » 2010-09-13 9:49:53

pithagora сформулируйте, пожалуйста, задачу. В начале вы писали:
pithagora писал(а):Раскажу подробную схему прокси.
Прозрачный прокси, используется external_acl_type, эта опция передает сквиду результаты хелпера в виде OK (дополнительные опции) - сквид пропускает или ERR - сквид режет . В качестве хелпера у меня работает ПХП скрипт смысл которово давать сквиду ссылки из БД которые он должен пропускать, плюс .png, .jif итд, а все остольное что связано с этим конкретным доменом - резать. Сам домен работает как на http так и на https. Так вот http режутся при iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 а как делать с 443 портом надо разобратся. Вот и попросил совета у знатаков iptables.
Откуда следует, что вам необходимо фильтровать HTTPS-трафик (по URL) наравне с HTTP-трафиком на прозрачном прокси-сервере.
Далее вы писали:
pithagora писал(а):Сама проблема ведь не состоит в сквиде а в iptables https forwarding. Единственое решение насколько я понял это маскарадинг.
Откуда следует, что вам просто необходимо перебросить HTTPS-трафик через шлюз не фильтруя его.

Так вам надо фильтровать HTTPS-трафик или нет? И если трафик должен быть отфильрован, то по каким критериям?

Аватара пользователя
BlackCat
прапорщик
Сообщения: 469
Зарегистрирован: 2007-10-16 22:40:42

Re: iptable хелп

Непрочитанное сообщение BlackCat » 2010-09-13 10:05:03

ttys писал(а):
BlackCat писал(а):HTTPS, даже если вы пропустите его через прокси-сервер, разобрать затруднительно, т.к. все данные передаются в зашифрованном виде, в т.ч. HTTP-заголовки по которым ориентируется squid. Попробуйте вообще заблокировать HTTPS или заблокировать его только для интересующих узлов (по IP-адресу).
нужен клиентбанк и прочая хрень работающая через 443 порт
а когда завернуть на сквид то мона скайп заблочить
http://wiki.opennet.ru/SquidSkype

Код: Выделить всё

# skype
acl numeric_IPs url_regex ^(([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)|(\[(0-9af]+)?:([0-9af:]+)?:([0-9af]+)?\])):443
acl Skype_UA browser ^skype^

# skype
http_access deny numeric_IPS
http_access deny Skype_UA
О каком типе прокси мы говорим?
  • Если традиционный HTTP(s)-прокси, то да, для HTTPS-трафика имеется доступ к полям Host и User-Agent. Плюс ко всему, в самом запросе CONNECT будут присутствовать адрес назначения и, возможно, порт. Полный URL не доступен.
  • Если же используется прозрачный прокси, то запроса CONNECT вообще не будет, а вместе с ним исчезнут поля User-agent и Host. Остаётся только IP-адрес назначения и крохи информации установления SSL-соединения.
=====
ttys, такое ощущение, что мы просто упускаем какое-то "при условии" и друг друга недопонимаем. Или я чего-то не понимаю в работе прокси-сервера, т.к. никогда всерьёз их не использовал.

Аватара пользователя
pithagora
ефрейтор
Сообщения: 51
Зарегистрирован: 2009-03-11 0:11:19
Контактная информация:

Re: iptable хелп

Непрочитанное сообщение pithagora » 2010-09-13 10:32:23

BlackCat писал(а):pithagora сформулируйте, пожалуйста, задачу. В начале вы писали:
Надо блокировать и http и https. Сценарий подачи блокируемых адресов - external_acl_type helper - ПХП скрипт дает сквиду ссылки которые должны открыватся. Остольные ссылки с адреса X не должны открыватся. Сам Х адрес работает и на http и на https. http блокируется приведеным выше правилом. а https не понимает такое.

Аватара пользователя
BlackCat
прапорщик
Сообщения: 469
Зарегистрирован: 2007-10-16 22:40:42

Re: iptable хелп

Непрочитанное сообщение BlackCat » 2010-09-13 11:41:54

pithagora писал(а):Сам Х адрес работает и на http и на https. http блокируется приведеным выше правилом. а https не понимает такое.
Вам не получить из HTTPS запроса URI, по-этому работать и не будет.
Если узел X может работать, как на HTTP так и на HTTPS (независимо), то заблокируйте вообще HTTPS-доступ к этому узлу и фильтруйте оставшиейся HTTP-запросы. Если HTTPS обязателен, то ответа я не знаю. Не исключено, что его вообще не существует.

hexkey
проходил мимо
Сообщения: 1
Зарегистрирован: 2010-09-21 23:38:21

Re: iptable хелп

Непрочитанное сообщение hexkey » 2010-09-21 23:45:18

pithagora писал(а):
ttys писал(а):в freebsd 8.0 squid 3.1 работает редирект порта 443
а вот в дебиан 4 со squid-ом 2.6 чёто ни как :(
наверное плюну и сделаю всё на фре
А мой шеф немец даже не хочет слышать ни о чем кроме ебанту сервер. Я бы с радостью сделал все на FreeBSD.
Сам вешаюсь с этой проблемы... Поначитаются в интернетах, что убунта впереди планеты всей, и требуют сервер именно на ней... ;[ До нормальных то сайтов руки не доходят у них...

FiL
ст. лейтенант
Сообщения: 1374
Зарегистрирован: 2010-02-05 0:21:40

Re: iptable хелп

Непрочитанное сообщение FiL » 2010-09-23 19:36:11

BlackCat писал(а):
ttys писал(а):вопрос можно ли с "!" указать список?
тоесть запрет на всё кроме тех кто в списке

Код: Выделить всё

IP_MAIL="свойип, xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx"
$IPTABLES -A FORWARD -s $LAN_IP_RANGE -d ! $IP_MAIL --dport  25 -j DROP
Судя по документации указать адреса назначения списком не получится. Для группировки правил и сокращения числа проверок используют цепочки, созданые пользователем.
Судя по всему документацию читали по-диагонали.

Читайте внимательнее на предмет

Код: Выделить всё

-m iprange --dst-range

Аватара пользователя
BlackCat
прапорщик
Сообщения: 469
Зарегистрирован: 2007-10-16 22:40:42

Re: iptable хелп

Непрочитанное сообщение BlackCat » 2010-09-23 23:05:10

FiL писал(а):Читайте внимательнее на предмет

Код: Выделить всё

-m iprange --dst-range
Спасибо, упустил этот момент.