www.wavebourn.com
http://www.wavebourn.com/forum/

iptables
http://www.wavebourn.com/forum/viewtopic.php?f=8&t=511
Page 1 of 1

Author:  doldonius [ Mon Nov 28, 2005 12:19 am ]
Post subject:  iptables

Вот, скриптец выстрогал. Критику и дополнения жду, использование приветствую (только свои значения в переменные впендюрьте!).

Code:
#!/bin/bash

export ipt=/sbin/iptables

#
#       These source addresses are trusted
#

admnet="1.2.3.0/26 3.4.5.6/30 6.7.8.1 6.7.8.2 9.10.11.12/27"
trusted="192.168.0.0/16 $admnet"

#
#       Only ssh is allowed even for the trusted sources
#

trustedports="22/tcp"

openports="53/tcp 53/udp"

reset()
{
#
#       Clean up.
#

$ipt -F
$ipt -X
$ipt -P INPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -P OUTPUT ACCEPT
}

if [[ ${1:-"NOPARAM"} = "NOPARAM" ]] ; then
        command=NOPARAM
else
        command=$1
fi

case $command in

        off)
                reset;
                /bin/rm -f /var/run/fw;
                exit;
        ;;

        test)
                export ipt="echo iptables";
                echo '# Test mode: no commands are actually executed!'
        ;;

        on)
                :
        ;;
        *)
                commands='off|on|test'
                echo $0 $commands
                exit;
esac

#
#       Now, the actual work (or printout)
#

reset

$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT

#
#       For now, just DROP forwards; other hosts may need to forward something
#

$ipt -P FORWARD DROP

#       Open ports from the openports list for everybody

for port in $openports; do
        {
        portnum=${port%%/*};
        proto=${port##*/};
        $ipt -A INPUT -s 0/0 -p $proto --dport $portnum -j ACCEPT;
        }
done

#       Open connections to trustedports from the trusted addresses

for addr in $trusted; do
        {
        for port in $trustedports; do
                {
                portnum=${port%%/*};
                proto=${port##*/};
                $ipt -A INPUT -s $addr -p $proto --dport $portnum -j ACCEPT;
                }
        done;
        }
done

#       Let established connections work

$ipt -A INPUT -m state -p ALL --state ESTABLISHED,RELATED -j ACCEPT;

#       Open up for all packets from localhost: it woulnd't help anyway

$ipt -A INPUT -s 127.0.0.1 -j ACCEPT

#       Finally, let all icmp packets be. Ping me, I dare you!

$ipt -A INPUT -s 0/0 -p icmp -j ACCEPT

echo on > /var/run/fw


Author:  pomorin [ Thu Dec 15, 2005 4:44 am ]
Post subject: 

53 порт по TCP открывть имеет смысл только на своего проавайдера - и на тех, кто твои ДНСы содержит. Это пересылка зоны по TCP идет, остальное - только по UDP
И, считается хорошим тоном закрыть все, а открывать только то, что необходимо. То есть, политика - REJECT, особенно на форвард. С INPUT и OUTPUT - проще. Это локальный трафик шлюза/маршрутизатора, поэтому ты уже в курсе, что тебе открыть, а что прикрыть и откуда, самое главное. Дальше ты дропаешь форвард, а это не совсем есть хорошо, лучше REJECT, особенно из локалки - а то будут непонятные тормоза при сетевой работе.
Если /bin/rm -f /var/run/fw;, то лучше echo off >/var/run/fw Тогда логичнее будет.
Это по содержанию.
ЗЫ Я тут на пограничной машине, озверев от спама, поставил фильтры - 50 кБ перечня сеток (с масками от 8 до 24) - на дропание трафика по 25 порту. (исходный файл - перечень релеев был за 200 кБ - масками укоротил).. Мало. Сегодня еще допишу туда килобайт 10...
Список айпишников релеев выщемляется простееьким парсером на sed'е.
ЗЗЫ Есть список резервных сетей IANA, которые официально никому не давались. Но, трафика с них прет... Где бы свежий список найти? Просто запретить трафик оттуда.

Author:  doldonius [ Thu Dec 15, 2005 10:04 pm ]
Post subject: 

pomorin wrote:
53 порт по TCP открывть имеет смысл только на своего проавайдера - и на тех, кто твои ДНСы содержит.


Я эту сетку еще только заселять начал, пока не определился, где точно будут остальные NS. А праздно любопытствующих BIND и сам посылать умеет.

Quote:
И, считается хорошим тоном закрыть все, а открывать только то, что необходимо.


Так и сделано (кроме OUTPUT -- если кто-то уже внутри, то всяко опаньки).

Quote:
Дальше ты дропаешь форвард, а это не совсем есть хорошо, лучше REJECT, особенно из локалки - а то будут непонятные тормоза при сетевой работе.


Хм. Если у тачки один интерфейс, а кто-то пытается через нее чего-то куда-то просунуть, это всяко странно и подозрительно. Стоит ли этому типу давать знать, что он вообще куда-то попал?

Quote:
Если /bin/rm -f /var/run/fw;, то лучше echo off >/var/run/fw Тогда логичнее будет.


Зато проверять проще: [[ -f /var/run/fw ]] -- и пофиг, что там внутри написано. Можно было бы просто /bin/touch /var/run/fw, но так вызовов внешних программ меньше получается.

Quote:
ЗЗЫ Есть список резервных сетей IANA, которые официально никому не давались. Но, трафика с них прет... Где бы свежий список найти? Просто запретить трафик оттуда.


На сервере IANA поискать не пробовал? Wink

Author:  pomorin [ Fri Dec 16, 2005 1:55 am ]
Post subject: 

doldonius wrote:
pomorin wrote:
53 порт по TCP открыть имеет смысл только на своего проавайдера - и на тех, кто твои ДНСы содержит.

Я эту сетку еще только заселять начал, пока не определился, где точно будут остальные NS. А праздно любопытствующих BIND и сам посылать умеет.
искренний совет - делай 2 зоны (view которые): internal и external, к примеру. Для internal recursion включай, а для external - опаньки. С двумя зонами вообще очень удобно. Меньше париться. Особенно для локальных доменов, которые в инет выхода не имеют.
Quote:
Quote:
И, считается хорошим тоном закрыть все, а открывать только то, что необходимо.

Так и сделано (кроме OUTPUT -- если кто-то уже внутри, то всяко опаньки).
iptables -P INPUT REJECT тогда уж. Smile Да я так просто, ворчу по мелочи...
Quote:
Quote:
Дальше ты дропаешь форвард, а это не совсем есть хорошо, лучше REJECT, особенно из локалки - а то будут непонятные тормоза при сетевой работе.

Хм. Если у тачки один интерфейс, а кто-то пытается через нее чего-то куда-то просунуть, это всяко странно и подозрительно. Стоит ли этому типу давать знать, что он вообще куда-то попал?
Один интерфейс? Я бы на вторую карточку разорился бы... 120 руб - не деньги, зато проблем на 1200 меньше будет. А насчет форварда... Ну, скажем, полезла локальная машина за антивирусными базами в инет или винду обновить... Хост - то через ДНС разресолвится. И сидит в непонятках, пока по тайм - ауту отвалится...
Quote:
Quote:
Если /bin/rm -f /var/run/fw;, то лучше echo off >/var/run/fw Тогда логичнее будет.

Зато проверять проще: [[ -f /var/run/fw ]] -- и пофиг, что там внутри написано. Можно было бы просто /bin/touch /var/run/fw, но так вызовов внешних программ меньше получается.
Хозяин - барин. Главное, самому не запутаться. Smile Я про стиль написания просто замечание сделал. Smile (if 'cat /var/run/fw` - в смысле проверять)
Quote:
Quote:
ЗЗЫ Есть список резервных сетей IANA, которые официально никому не давались. Но, трафика с них прет... Где бы свежий список найти? Просто запретить трафик оттуда.

На сервере IANA поискать не пробовал? Wink

Это слишком просто. Smile По whois - выдается, что такие сетки не делегированы, а реально - уже к Китаям да Бразилиям приписаны. Бардак, короче говоря. Или whois уже загнулся?
ЗЫ Я, будучи на арботе в Элсвязи, неписал скрыптик по ipchains еще, по поводу кому что куда мона и нельзя. Примерно 5 Кб без комментариев. Грандиозная работа была. Smile По новой писать - лень. Там из внешних файлов айпишники хулиганов подключались, и левые сетки отрубались... Думать много не надо было. Smile Но, стиль был примерно такой же, как и у тебя. (из iptables - HOWTO - если не видел, то рекомендую. Ссылку я тебе уже давал)

Author:  pomorin [ Fri Dec 16, 2005 3:43 am ]
Post subject: 

Короче говоря, из 200 Кб получилось 9 Кб - списки спаммерских и левых сетей, от которых я почту больше не принимаю. Маска 24 - самая узкая. Smile Посмотрим... Smile

Author:  pomorin [ Fri Dec 16, 2005 6:21 am ]
Post subject: 

pomorin wrote:
Короче говоря, из 200 Кб получилось 9 Кб - списки спаммерских и левых сетей, от которых я почту больше не принимаю. Маска 24 - самая узкая. Smile Посмотрим... Smile

Хм. Рекорд - за час ни одного письма не пришло! Embarassed В понедельник, чую, придется помаленьку открывать... Толь, 64 сетка закрыта с маской 8 - афигеть, сколько спама оттуда прет...

Page 1 of 1 All times are UTC - 8 hours [ DST ]
Powered by phpBB © 2002, 2006 phpBB Group
http://www.phpbb.com/