The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Скрипт для включения NAT в Gentoo Linux (gentoo linux script nat msquerade)"
Отправлено sabitov, 19-Мрт-07 10:02 
МММ, лучше все ж делать чуть-чуть не так :)))

~ # cat /etc/init.d/firewall
#!/sbin/runscript


opts="depend start stop status restart reload force-reload test"

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

COMMON=/usr/local/lib/firewall/firewall-common-rules
MAC=/usr/local/lib/firewall/MAC-allowed

NAME=firewall
DESC="firewall setup"
TESTDELAY=10

depend () {
    use logger
}

start () {
        echo "Starting $DESC"
        echo
        $COMMON
        $MAC
}

stop () {
        echo "Cleaning $DESC"

        iptables -P INPUT   ACCEPT
        iptables -P OUTPUT  ACCEPT
        iptables -P FORWARD ACCEPT

        for t in filter nat mangle; do
                iptables -t $t -F
                iptables -t $t -X
                iptables -t $t -Z
        done
}

status () {
        for t in filter nat mangle; do
                echo "============================================================= $t ======"
                iptables -t $t -L -n
        done
}

restart () {
        echo "Restarting $DESC"
        svc_stop
        sleep 1
        svc_start
}

reload () {
        restart
}

force-reload () {
        restart
}

test () {
        echo "Testing $DESC"
        start
        sleep $TESTDELAY
        stop
}

Тот что /usr/local/lib/firewall/firewall-common-rules содержит примерно такое (показываю только куски, что бы была понятна идея :))) ):

NET_L=172.16.0.0/16
NET_R=1.1.1.0/25
NET_Rold=2.2.2.0/24

black_file="/usr/local/lib/firewall/black-list"
white_file="/usr/local/lib/firewall/white-list"

#INPUT
#Список хостов с которых допустим ssh (только своя сетка)
accept_ssh="$NET_L $NET_R $NET_Rold"
#Список служб к которым открыт доступ всем (публичные)
accept_from_all_tcp="53 80 443 17000"
accept_from_all_udp="53 "

#Список служб к которым открыт доступ только из локальной сети (публичные)
accept_from_local_tcp="3128 137 138 139 445"
accept_from_local_udp="67 68 137 138 139 445"

# Разрешено из локальной сети
for a in $accept_from_local_tcp; do
    iptables -A tcp_packets -p TCP -s $NET_R    --dport  $a -j allowed_tcp
    iptables -A tcp_packets -p TCP -s $NET_L    --dport  $a -j allowed_tcp
    iptables -A tcp_packets -p TCP -s $NET_Rold --dport  $a -j allowed_tcp
done

# Разрешено всем
for a in $accept_from_all_tcp; do
    iptables -A tcp_packets -p TCP -s 0/0 --dport  $a -j allowed_tcp
done

iptables -A INPUT -p TCP  -j bad_tcp_packets
iptables -A INPUT -p ALL  -j mac_allowed

for a in $white_list; do
    iptables -A INPUT -p ALL -s $a -j ACCEPT
done

for a in $black_list; do
    iptables -A INPUT -p ALL -s $a -j DROP
done

iptables -A INPUT -p TCP  -j tcp_packets
iptables -A INPUT -p UDP  -j udp_packets
iptables -A INPUT -p ICMP -j icmp_packets

#Убиваем все входящие пакеты, дошедшие до этого места
iptables -A INPUT   -p ALL    -j LOG --log-prefix "INPUT died: "
iptables -A INPUT   -p ALL    -j DROP


iptables -t nat -A PREROUTING -p tcp -s 172.16.0.0/16 --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A PREROUTING -p tcp -s 172.16.0.0/16 --dport 8080 -j REDIRECT --to-ports 3128
iptables -t nat -A PREROUTING -p tcp -s 172.16.0.0/16 --dport 9080 -j REDIRECT --to-ports 3128

iptables -A POSTROUTING -t nat -s 172.16.0.0/16 -o $INET_IF -j SNAT --to-source $IP


/usr/local/lib/firewall/MAC-allowed заполняет цепочку такими правилами (создаютя автоматом):
iptables -A mac_allowed -s  172.16.2.72 -m mac --mac-source 08:00:09:ed:8b:80 -j RETURN
iptables -A mac_allowed -s  172.16.2.73 -m mac --mac-source 00:10:83:2e:c6:40 -j RETURN
iptables -A mac_allowed -s  172.16.2.74 -m mac --mac-source 00:30:c1:55:af:ec -j RETURN
iptables -A mac_allowed  -j LOG --log-prefix "MAC Dropped: "
iptables -A mac_allowed  -j DROP

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру