Нужна помощь. я не так силен в Linux'е. Устроился администратором и тут начальство решеило перейти на Linux, после кончины предыдущего сервера Мастдая.Написал скрипт но нет уверенности что он правильный. А начальство наседает. помогите
Условие было такое:
набор создания таблицы маршрутов (используя пакет iproute2),
конфигурирования сетевых интерфейсов и правил для iptablesЛокальная сеть 10.0.0.0/16,
доступные внешние адреса 82.179.92.1/255.255.255.240
имеется интерфейс eth0 с провайдером интернет услуг на котором поднят канальный адрес/сеть
62.183.98.113/255.255.255.252
Локальная сеть подключена к интерфейсу eth1 в локальной сети сервер имеет адрес 10.0.0.1
Требования:
1) Траффик идущий в интернет не должен иметь адрес источника из сети канальных адресов
выданных провайдером 62.183.98.113/255.255.255.252
2) Сервер должен быть доступен из интернет по адресу 82.179.92.6
3) К интерфейсу eth1 подключены сервера с адресами 82.179.92.4 и 82.179.92.8 нужно обеспечить их
доступность из интернет по этим адресам.
4) Весь HTTP траффик от пользователей локальной сети завернуть
на проски сервер прозрачно настроенный и работающий на этом сервере на порту 3128
прокси сервер настроен так что пакеты исходящие от него имеют адрес источника 82.179.92.7
6) Сделать исключение для пользователей с адресами 10.0.1.62/255.255.255.240 с этих адресов должны быть
доступны напрямую все порты и хосты TCP пакеты от этих пользовтелей должны отправляться в интернет с
адресом источника 82.179.92.3
7) Для пользователей 10.0.3.1/28 сделать доступными порты ICQ,SSH (5190,22)
Вот скрипт:
#!/bin/bash
IPTABLES="/usr/sbin/iptables"
#IP_NET "82.179.92.1/28"
#INET_IFACE "eth0"
#IP_CANAL "62.183.98.113/30"
#LAN_IFACE "eth1"
#LAN_IP_RANGE "10.0.0.1/16"
#LAN_IP "10.0.0.1"
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -N network
$IPTABLES -N allowed
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets
# ОШИБОЧНЫЕ ПАКЕТЫ ТСР
$IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK \ -m state --state NEW -j REJECT --reject-with tcp-reset
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG \ --log-prefix "New not syn:"
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP
# ПРОВЕРКА ТСР
$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP
# TCP правила
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --sport 80 -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 --source-port 53 -j ACCEPT
# 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
# INPUT
# Проверка плохих пакетов
$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
# Локальная сеть
$IPTABLES -A INPUT -p ALL -i eth1 -s 10.0.0.1/16 -j ACCEPT
# Распределение IP по пакетам
$IPTABLES -A INPUT -p ALL -d 82.179.92.1/28 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p TCP -i eth0 -j tcp_packets
$IPTABLES -A INPUT -p UDP -i eth0 -j udp_packets
$IPTABLES -A INPUT -p ICMP -i eth0 -j icmp_packets
#log
$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT INPUT packet died: "
#END INPUT
#eth
$IPTABLES -A INPUT -p tcp -m multiport --dport 53,80 -i eth0 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 82.179.92.6 -m multiport --dport 53,80 -i eth0 -j ACCEPT
$IPTABLES -A INPUT -p tcp -m multiport --dport 53,80 -i eth1 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 82.179.92.4 -m multiport --dport 53,80 -i eth1 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 82.179.92.8 -m multiport --dport 53,80 -i eth1 -j ACCEPT
$IPTABLES -A FORWARD -i eth1 -o eth0 -m state --state NEW, ESTABLISHED -j ACCEPT
#FORWARD
#Проверка плохих пакетов
$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
#Правила
$IPTABLES -A FORWARD -i eth1 -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#log
$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT FORWARD packet died: "
#END FORWARD
#OUTPUT
#Плохие пакеты
$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets
# правила
$IPTABLES -A OUTPUT -p ALL -s 82.179.92.1/28 -j ACCEPT
# log
$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT OUTPUT packet died:"
#POSTROUTING
$IPTABLES -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 82.179.92.6
# ПРЕДОТВРАЩЕНИЕ ИСПОЛЬЗОВАНИЯ КАНАЛЬНЫХ АДРЕСОВ
$IPTABLES -t nat -A PREROUTING -p tcp -s 62.183.98.113/30 -j RETURN
$IPTABLES -A FORWARD -s 62.183.98.113/30 -j network
$IPTABLES -t nat -A POSTROUTING -s 62.183.98.113/30 -j SNAT --to-source 82.179.92.6
#Прозрачная прокся
$IPTABLES -t nat -A POSTROUTING -s 10.0.0.1/16 -d ! 82.179.92.3 -p tcp -m multiport --dports 80,53 -j SNAT --to-sourse 82.179.92.7:3128
#прямое подключение
$IPTABLES -t nat -A POSTROUTING -p tcp -m multiport --dport 80,53,22,5920 -s 10.0.1.62/28 -j SNAT --to-source 82.179.92.3
#ICQ, SSH
$IPTABLES -t nat -A POSTROUTING -s 10.0.3.1/28 -p tcp -m multiport --dport 22,5190 -j SNAT --to-source 82.179.92.6
#локальные сервера
$IPTABLES -t nat -A PREROUTING -p tcp -d 82.179.92.4 -m multiport -dport 80,53 -j DNAT --to-destination 10.0.0.1
$IPTABLES -t nat -A PREROUTING -p tcp -d 82.179.92.8 -m multiport -dport 80,53 -j DNAT --to-destination 10.0.0.1
$IPTABLES -A INPUT -j network
Оцените пожалуйста и помогите найти логические ошибки буду все выходные над ним сидеть за два дня сделать нужно.