Страница 1 из 2
Настройка связки squid + sams + iptables
Добавлено: 04 сен 2011, 17:33
Wirrus
Подскажите, что я сделал не так: все работает (интернет раздается, снаружи все закрыто), но в обход squid, т.е. не могу порезать скорость и разграничить доступ.
Скорее всего проблема в настройке iptables...
[spoilerfw]Код: Выделить всё
#!/bin/sh
#
# Отчистка
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -t nat -F PREROUTING
iptables -t nat -F POSTROUTING
iptables -t mangle -F
#
INET_IP="62.76.117.182"
INET_IFACE="eth1"
INET_BROADCAST="62.76.117.177"
#
LAN_IP="172.17.2.49"
LAN_IP_PORT_PROXY="172.17.2.49:3128"
LAN_IP_RANGE="172.17.0.0/18"
LAN_IFACE="eth2"
#
LO_IFACE="lo"
LO_IP="127.0.0.1"
###########################################################################
#
# Используемые модули.
#
/sbin/depmod -a
#
/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
#/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
###########################################################################
#
#
echo "1" > /proc/sys/net/ipv4/ip_forward
###########################################################################
#
# Блокируем все
#
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#
# Создание цепочки для некорректных TCP протоколов
#
iptables -N bad_tcp_packets
#
# Создание цепочки для ICMP, TCP и UDP протоколов
#
iptables -N allowed
iptables -N tcp_packets
iptables -N udp_packets
iptables -N icmp_packets
###########################################################################
#
# Распределение трафика по цепочкам
#
#
# Некоректные TCP протоколы
#
iptables -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK \
-m state --state NEW -j REJECT --reject-with tcp-reset
iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG \
--log-prefix "New not syn:"
iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP
#
# Остальные известные протоколы
#
iptables -A allowed -p TCP --syn -j ACCEPT
iptables -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A allowed -p TCP -j DROP
#
# TCP протокол
#
iptables -A tcp_packets -p TCP -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
iptables -A tcp_packets -p TCP -s 0/0 --dport 3128 -j allowed
iptables -A tcp_packets -p TCP -s 0/0 --dport 8080 -j allowed
#
# UDP протокол
#
iptables -A udp_packets -p UDP -s 0/0 --destination-port 20 -j ACCEPT
iptables -A udp_packets -p UDP -s 0/0 --destination-port 21 -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
#
# Блокирование служебных излишних запросов.
#
iptables -A udp_packets -p UDP -i $INET_IFACE -d $INET_BROADCAST \
--destination-port 135:139 -j DROP
#
# Блокирование внешних DHCP.
#
iptables -A udp_packets -p UDP -i $INET_IFACE -d 255.255.255.255 \
--destination-port 67:68 -j DROP
#
# ICMP протокол
#
iptables -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
iptables -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
###########################################################################
#
# Обработка входящих протоколов
#
#
# Перенаправление некоректных пакетов
#
iptables -A INPUT -p tcp -j bad_tcp_packets
#
# Правила для специальных сетей не является частью Интернета
#
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
#
# Специальные правила для запросов DHCP из локальной сети.
#
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 ALL -i $INET_IFACE -j DROP
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: "
###########################################################################
#
# Перенаправление некоректных TCP пакетов
#
iptables -A FORWARD -p tcp -j bad_tcp_packets
#
# Перенаправление остальных пакетов из ловальной сети
#
iptables -A FORWARD -i $LAN_IFACE -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# Заворачивание портов на порт прокси-сервера
#
iptables -t nat -A PREROUTING -i $LAN_IFACE -p tcp -m multiport \
--dport 80,8080 -j DNAT --to $LAN_IP_PORT_PROXY
#
# Обработка "мертвых" пакетов из стандартных
#
iptables -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT FORWARD packet died: "
###########################################################################
#
# Перенаправление некоректных TCP пакетов
#
iptables -A OUTPUT -p tcp -j bad_tcp_packets
#
# Обработка пакетов на выход
#
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
#
# Обработка "мертвых" пакетов.
#
iptables -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT OUTPUT packet died: "
###########################################################################
#
# Включить простой пересылки IP и трансляции сетевых адресов
#
iptables -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP
#
# Подмена TTL подписи в пакетах
#
iptables -t mangle -A PREROUTING -i $INET_IFACE -j TTL --ttl-set 64
[/spoiler]
Re: Настройка связки squid + sams + iptables
Добавлено: 05 сен 2011, 00:59
Stranger_v_night
А в squid у вас задан порт прокси? И какой?
И что дает iptables -nL?
Код: Выделить всё
# Заворачивание портов на порт прокси-сервера
#
iptables -t nat -A PREROUTING -i $LAN_IFACE -p tcp -m multiport \
--dport 80,8080 -j DNAT --to $LAN_IP_PORT_PROXY
Просто интересно почему вы используете DNAT? а не просто REDIRECT?
DNAT обычно используется для порт-мапинга.
у меня вот такое правило для заворота на squid:
$IPT -t nat -A PREROUTING -i $IN_ETH -p tcp --dport 80 -j REDIRECT --to-port $PROXY_PORT
Re: Настройка связки squid + sams + iptables
Добавлено: 05 сен 2011, 09:11
Raven
Wirrus писал(а):iptables -t nat -A PREROUTING -i $LAN_IFACE -p tcp -m multiport \--dport 80,8080 -j DNAT --to $LAN_IP_PORT_PROXY
Не вижу определений последней переменной. Какой порт назначен сквиду для прозрачного проксирования и поддерживает ли вообще он его? squid.conf в студию!
Re: Настройка связки squid + sams + iptables
Добавлено: 05 сен 2011, 09:56
Stranger_v_night
Он его вроде как определяет:
LAN_IP="172.17.2.49"
LAN_IP_PORT_PROXY="172.17.2.49:3128"
LAN_IP_RANGE="172.17.0.0/18"
LAN_IFACE="eth2"
Только я не пойму, зачем он на своей же машине делает порт-мапинг.
Re: Настройка связки squid + sams + iptables
Добавлено: 05 сен 2011, 10:23
Raven
Stranger_v_night писал(а):Он его вроде как определяет:
LAN_IP="172.17.2.49"
LAN_IP_PORT_PROXY="172.17.2.49:3128"
LAN_IP_RANGE="172.17.0.0/18"
LAN_IFACE="eth2"
Ой, сори, проглядел
Stranger_v_night писал(а):Только я не пойму, зачем он на своей же машине делает порт-мапинг.
Это нормально, просто человеку нужен сквид для более гибкого управления пользователями, для реализации кэша. Только вот судя по
Stranger_v_night писал(а):LAN_IP_PORT_PROXY="172.17.2.49:3128"
сквид у него не настроен на прозрачность. Так что затор у него не в фаере а скорее всего именно в кальмаре.
Re: Настройка связки squid + sams + iptables
Добавлено: 05 сен 2011, 12:32
Wirrus
Способ перенаправления неважен, можно и так:
Stranger_v_night писал(а):А в squid у вас задан порт прокси? И какой?
И что дает iptables -nL?
Код: Выделить всё
# Заворачивание портов на порт прокси-сервера
#
iptables -t nat -A PREROUTING -i $LAN_IFACE -p tcp -m multiport \
--dport 80,8080 -j DNAT --to $LAN_IP_PORT_PROXY
Просто интересно почему вы используете DNAT? а не просто REDIRECT?
DNAT обычно используется для порт-мапинга.
у меня вот такое правило для заворота на squid:
$IPT -t nat -A PREROUTING -i $IN_ETH -p tcp --dport 80 -j REDIRECT --to-port $PROXY_PORT
Конфиг кальмара пока пуст... :
[spoiler]
Код: Выделить всё
# created by SAMS _sams_ 2011-9-5 9:48:53
#
# Recommended minimum configuration:
#
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl localhost src ::1/128
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl to_localhost dst ::1/128
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
#acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.17.0.0/16 # RFC1918 possible internal network
acl localadmin src 172.17.2.0/24 # RFC1918 possible internal network
#acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
#acl localnet src fc00::/7 # RFC 4193 local private network range
#acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
#
# Recommended minimum Access Permission configuration:
#
# Only allow cachemgr access from localhost
http_access allow localadmin
http_access allow localnet
http_access deny manager
# Deny requests to certain unsafe ports
http_access allow !Safe_ports
# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports
# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user
#http_access deny to_localhost
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet
http_access allow localhost
# And finally deny all other access to this proxy
http_access deny all
# Squid normally listens to port 3128
http_port 3128
# We recommend you to use at least the following line.
hierarchy_stoplist cgi-bin ?
# Uncomment and adjust the following to add a disk cache directory.
#cache_dir ufs /var/spool/squid 100 16 256
# Leave coredumps in the first cache dir
coredump_dir /var/spool/squid
forwarded_for off
# Add any of your own refresh_pattern entries above these.
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
visible_hostname proxy
[/spoiler]
настройки минимальны, авторизация по IP... проблема вскрылась: самс при реконфигурировании кальмара создает файлик с диапазонами ip пользователей, но в сам конфиги команду на разрешение с именем файлика не добавляет...
Закономерен вопрос: почему сейчас все работает? (в обход acl: работает с разных диапазонов вплоть до 128.128.128.0/24 - у одного из моих подразделений админ веселый)
Re: Настройка связки squid + sams + iptables
Добавлено: 05 сен 2011, 12:59
Raven
исходя из всего предполагаю что причина сабжа именно в конфиге сквиды.
под этими строчками надо добавить
и натить 80 и 8080 порты именно на него!
Re: Настройка связки squid + sams + iptables
Добавлено: 05 сен 2011, 13:24
Wirrus
Изменения не принесли результата...
Raven писал(а):исходя из всего предполагаю что причина сабжа именно в конфиге сквиды.
под этими строчками надо добавить
и натить 80 и 8080 порты именно на него!
Re: Настройка связки squid + sams + iptables
Добавлено: 05 сен 2011, 14:25
Gen1us2k
в кальмара:
http_port $LAN_IP:3128 transparent
в iptables
iptables -t nat -A PREROUTING -s $NET -d! $LAN_IP -p tcp -m tcp --dport 80 -j REDIRECT --to-port 3128
либо
iptables -t nat -A PREROUTING -s $NET -d! $LAN_IP -p tcp -m multiport --dport 80,8080 -j REDIRECT --to-port 3128
Где LAN_IP - серый ип сервака
$NET - серая сетка.
Re: Настройка связки squid + sams + iptables
Добавлено: 05 сен 2011, 14:29
Stranger_v_night
Вы определитесь на каком порту слушает кальмар?
на 3128 или 3129?
Потому что вы заворачиваете на 3128, в конфиге кальмара пишете, что прозрачные порт 3129.