www.wavebourn.com

We create creativity!
It is currently Thu Jan 18, 2018 4:55 am

All times are UTC - 8 hours [ DST ]




Post new topic Reply to topic  [ 6 posts ] 
Author Message
 Post subject: iptables
PostPosted: Mon Nov 28, 2005 12:19 am 
Offline
Guru

Joined: Mon Mar 29, 2004 11:31 pm
Posts: 2130
Location: 192.168.1.15
Вот, скриптец выстрогал. Критику и дополнения жду, использование приветствую (только свои значения в переменные впендюрьте!).

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


_________________
Stay on target. Stay on target.


 
 Profile  
 
 Post subject:
PostPosted: Thu Dec 15, 2005 4:44 am 
Offline
Бывший администратор

Joined: Sun Mar 28, 2004 12:19 pm
Posts: 4366
Location: оттуда
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, которые официально никому не давались. Но, трафика с них прет... Где бы свежий список найти? Просто запретить трафик оттуда.

_________________
Как - то так...


 
 Profile  
 
 Post subject:
PostPosted: Thu Dec 15, 2005 10:04 pm 
Offline
Guru

Joined: Mon Mar 29, 2004 11:31 pm
Posts: 2130
Location: 192.168.1.15
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

_________________
Stay on target. Stay on target.


 
 Profile  
 
 Post subject:
PostPosted: Fri Dec 16, 2005 1:55 am 
Offline
Бывший администратор

Joined: Sun Mar 28, 2004 12:19 pm
Posts: 4366
Location: оттуда
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 - если не видел, то рекомендую. Ссылку я тебе уже давал)

_________________
Как - то так...


 
 Profile  
 
 Post subject:
PostPosted: Fri Dec 16, 2005 3:43 am 
Offline
Бывший администратор

Joined: Sun Mar 28, 2004 12:19 pm
Posts: 4366
Location: оттуда
Короче говоря, из 200 Кб получилось 9 Кб - списки спаммерских и левых сетей, от которых я почту больше не принимаю. Маска 24 - самая узкая. Smile Посмотрим... Smile

_________________
Как - то так...


 
 Profile  
 
 Post subject:
PostPosted: Fri Dec 16, 2005 6:21 am 
Offline
Бывший администратор

Joined: Sun Mar 28, 2004 12:19 pm
Posts: 4366
Location: оттуда
pomorin wrote:
Короче говоря, из 200 Кб получилось 9 Кб - списки спаммерских и левых сетей, от которых я почту больше не принимаю. Маска 24 - самая узкая. Smile Посмотрим... Smile

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

_________________
Как - то так...


 
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 6 posts ] 

All times are UTC - 8 hours [ DST ]


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2002, 2006 phpBB Group
[ Time : 0.227s | 16 Queries | GZIP : Off ]