Отправляет email-рассылки с помощью сервиса Sendsay

настройка iptables

Доброго времени суток.

Добрался я наконец до iptables... Ну, как всегда, самое важное делается в последнюю
очередь:(.

Имеется комп, подключенный к локальной сети и иногда к инету (диалап). Задача
- закрыть доступ ко всем сервисам из инета, дать полную свободу локальным клиентским
приложениям во всех сетях, обеспечить доступ к samba и http из локалки. Прочитал
несколько статей, пробежался по iptables-tutorial... Вот чего получилось:

$ nmap 127.0.0.1

Starting nmap 3.30 ( http://www.insecure.org/nmap/ ) at 2004-11-14 12:59 EET
Interesting ports on localhost (127.0.0.1):
(The 1637 ports scanned but not shown below are in state: closed)
Port State Service
21/tcp open ftp
53/tcp open domain
80/tcp open http
111/tcp open sunrpc
139/tcp open netbios-ssn
443/tcp open https
6000/tcp open X11

Nmap run completed -- 1 IP address (1 host up) scanned in 0.517 seconds
$ sudo iptables-save
# Generated by iptables-save v1.2.8 on Sun Nov 14 12:59:51 2004
*filter
:INPUT ACCEPT [30882:1566091]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [20679:1066452]
-A INPUT -i ppp+ -p tcp -m tcp --dport 21 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -i ppp+ -p tcp -m tcp --dport 53 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -i ppp+ -p tcp -m tcp --dport 80 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -i ppp+ -p tcp -m tcp --dport 111 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -i ppp+ -p tcp -m tcp --dport 139 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -i ppp+ -p tcp -m tcp --dport 443 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -i ppp+ -p tcp -m tcp --dport 6000 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -i eth+ -p tcp -m tcp --dport 21 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -i eth+ -p tcp -m tcp --dport 53 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -i eth+ -p tcp -m tcp --dport 443 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -i eth+ -p tcp -m tcp --dport 6000 -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Sun Nov 14 12:59:51 2004
$

Так вот чем-то мне такая конфигурация не нравится... Например, если я установлю
какой-нибудь новый сервис, то до явного запрещения iptables он будет незащищен.
Логичнее было бы в конце цепочки указать полный запрет на все пакекты, а в начале
- указать правила для всех разрешенных пакетов. Однако нигде не нашел сведений,
какие пакеты нужно пропускать, чтобы разрешить доступ клиентам с моего компа
к стандартным сервисам в сети (http, ftp, smtp, pop3, icq и т.п.). Может кто-нибудь
что-нибудь посоветует на этот счет? Просьба только не посылать на англоязычные
ресурсы:).

И еще - я так понимаю, что для нормальной работы samba порты 111 и 139 нужно
держать открытыми? А какие конкретно функции выполняют протоколы sunrpc и netbios-ssn?

Ответить   Sun, 14 Nov 2004 13:14:15 +0200 (#263829)

 

Ответы:

На часах было Sun, 14 Nov 2004 13:14:15 +0200,
когда Rygoravich <rygoravi***@o*****.info> написал следующее:

/////////////

наверно так:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

samba пользует 137, 138 и 139-й порты:
(из /etc/services)
netbios-ns 137/tcp #NETBIOS Name Service
netbios-ns 137/udp #NETBIOS Name Service
netbios-dgm 138/tcp #NETBIOS Datagram Service
netbios-dgm 138/udp #NETBIOS Datagram Service
netbios-ssn 139/tcp #NETBIOS Session Service
netbios-ssn 139/udp #NETBIOS Session Service

Ответить   Sun, 14 Nov 2004 19:52:57 +0300 (#264027)

 

Доброго времени суток.

On Sun, 14 Nov 2004 19:52:57 +0300
Nick (iMp) Mikhaylov <m4@m*****.ru> wrote:

Посмотрел соответствующий раздел iptables-tutorial, но, понадеявшись, что неправильно
его понял, все же попробовал... Дело в том, что при таком раскладе запрещаются
все пакеты, т.е. все равно, что вытянуть шнуры из сетевой карточки и модема...
Конечно, я могу дополнительно разрешить сетевые службы, порты которых мне известны,
но какие пакеты нужно разрешить, чтобы работали браузеры, ftp-клиенты, почтовые
клиенты?

Интересно, а каким образом у меня samba работает, если из перечисленных открыт
только 139? И что за протокол sunrpc (порт 111), какой службой используется?

Ответить   Tue, 16 Nov 2004 08:37:16 +0200 (#265201)

 

Hello Rygoravich,

Tuesday, November 16, 2004, 8:37:16 AM, you wrote:

неправильно

известны,

нужно разрешить все исходящие пакеты на нужные тебе порты по
соответствующим протоколам и разрешить входящие из инета пакеты
по state RELATED,ESTABLISHED

для примера
iptables -A FORWARD -i eth0 -o ppp0 -p all -dport 21 -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp0 -p all -dport 80 -j ACCEPT
это ты разрешаеш убегать ftp и http пакетам
iptables -A FORWARD -i ppp0 -o eth0 -p all -m state --state ESTABLISHED,RELATED
-j ACCEPT
это ты разрешаеш прием пакетов которые к тебе возвращаются
и т.д. (или я не правильно понял вопрос ?)

Ответить   Tue, 16 Nov 2004 11:02:04 +0200 (#265251)

 

да, правильно. и в конце даешь приказ: начать маскарад!

Тольк портов будет побольше, и пакеты нужно пропускать служебные -
ICMP и т.д.

Ответить   Tue, 16 Nov 2004 12:12:42 +0200 (#265330)

 

Доброго времени суток.

On Tue, 16 Nov 2004 12:12:42 +0200
Майоров И.Е. <electron***@m*****.ru> wrote:

Ээ, я так понимаю, маскарадинг - это один из способов раздачи инета на сеть?
Мне это ни к чему, скорее наоборот - не хватало еще, чтобы за мои бабки порнуху
качали:(.

А почему нельзя блокировать icmp?

Ответить   Thu, 18 Nov 2004 05:41:34 +0200 (#266547)

 

Здравствуйте, Rygoravich.

ICMP пакеты важны. Например destination address unreachable -
представь ты его зарезал. И пошел браузером на какой-то ай-пи шник, а
тебе раутер сообщает icmp пакетом это состояние, а ты его зарезал...
И "висит" твой клиент, ждет данных от удаленного сервера, не
подозревая что его та и нету, вываливаясь по тайм-ауту...

Ответить   Thu, 18 Nov 2004 08:39:43 +0200 (#266603)

 

Доброго времени суток.

On Tue, 16 Nov 2004 11:02:04 +0200
romik <rom***@t*****.ua> wrote:

Спасибо, принцип понял. Сражаюсь, методом проб и ошибок, почитывая tutorial:).

Ответить   Thu, 18 Nov 2004 05:28:58 +0200 (#266538)

 

Здравствуйте, Rygoravich.

неправильно

iptables-tutorial лучше напечатать и положить в папку! Еще не раз
придется к нему возвращаться!!!

известны,

На самом деле ты прав. Такая схема сначала все запрети, а потом
разреши то что нужно - пользуется успехом, и это преимущество.

Но если ты не знаешь какие порты и зачем открывать - поступай по
другому:
iptables -P FORWARD DROP
а остальные два - акцепт.
Потом внимательно изучи сервисы которые на твоей машине
предоставляются и настрой их тщательно, ненужные просто останови.
Есть два пути предоставления сервисов - как демоны и через суперсервер
XINETD...
Так всех тех, кто ходит через суперсервер можно прибиндить _только_ ко
внутреннему интерфейсу (в настройке сервера укажи bind = 192.168.1.1)
через суперсервер ходит pop3 imap.

А демонам также укажи к каким интерфейсам вязаться: это можно
сказать: самбе, постфиксу, miniserv-у webmin-а, сквиду! и т.д.

потом сделай работу над ошибками - просканируй свои открытые порты
снаружи и внутри. внутри - на оффтопной машине сканером xspider(очень
советую). снаружи - чем хочешь.

Если ты не обнаружил того чего не ожидал - поздравляю - ты сделал
безопасную систему.

Если уж чего-то выпустил наружу - можно "схалтурить" и "подчистить"
этот порт:
iptables -A INPUT -s 0.0.0.0/0 -p tcp -d 111.222.333.444 --dport 80 -j DROP

на самом деле все зависит от реализации в оффтопе... должны быть
137,138,139!

137 - именной сервис - это дает тебе возможность писать в оффтопе
\\linux вместо \\192.168.1.1

138 - служебные сообщения (кто-где умер, включился, вылетел из сети,
обмен брауз-листами...)

139 - собственно сессии. Здесь и передаются файлы!

На эту тему есть оччень хорошая книга(полурусская/полуанглицкая):
"Using Samba" когда я ее прочел - то я прозрел! И тебе того же желаю!
Инфа, выложенная в этой книге позволит тебе лучше понимать оффтоп в
разрезе SMB протокола!

rpc. Вон его из автозагрузки.(по крайней мере я убрал и у меня все
работает:) )

Ответить   Tue, 16 Nov 2004 11:35:06 +0200 (#265294)

 

Доброго времени суток.

On Tue, 16 Nov 2004 11:35:06 +0200
Майоров И.Е. <electron***@m*****.ru> wrote:

Да ладно уж, я привык с монитора читать... В принципе, он у меня на локальном
http-сервере лежит, но если перемудрю и закрою самому себе доступ, то могу и
в файловой системе найти:).

А почему "схалтурить"? Я так понимаю, это вполне нормально - закрыть файрволом
порт для пакетов из сети, если сервис нужен для локального использования? Или
я не прав?

Спасибо, поищу...

Выяснилось, что это сервис portmap, который в автозагрузке отключен... А запускается
посредством autofs, видимо для автоматического монтирования nfs... Некрасиво
с его стороны:(.

Ответить   Wed, 17 Nov 2004 19:33:33 +0200 (#266535)

 

Здравствуйте, Rygoravich.

Или

Просто, как видишь, нужно указывать внешний IP. А если он меняется?
или сервис стартует раньше, чем применяются правила iptables при
загрузке...
В принципе такой путь приемлем, но лучше законфигурить сервис так, чтоб
он не открывал сокет наружу. "Схалтурить" - значит не разбираться как
его конфигурить и "прикрыть" таким правилом:)

Ответить   Thu, 18 Nov 2004 08:29:47 +0200 (#266595)

 

Лучше бы наоборот. Пробежались по "нескольким" статьям и прочитали
iptables-tutorial. Там есть ответы на ВСЕ ваши вопросы!

Ответить   Bogdanovich Andrey Tue, 16 Nov 2004 00:27:30 +0200 (#264997)

 

Доброго времени суток.

On Tue, 16 Nov 2004 00:27:30 +0200
Bogdanovich Andrey <peresvet-kiev@u*****.net> wrote:

Проблема в том, что там огромная куча ответов на не мои вопросы...

Ответить   Tue, 16 Nov 2004 09:59:46 +0200 (#265205)

 

А вы всё, и внимательно прочитали?

Там очень много рекомендаций, относительно того, как "правильно"
настроить файерволл. И по о что политику лучше ставить DROP, а нужным
сервисам (точнее пакетам идущим на порт, на котором работает этот
сервис) говорить ACCEPT. И много других советов. В конце концов там даже
есть пример конфига, с описанием той или иной хитрости.

Хотя в принципе тот пример мне понравился не очень. Пришлось МНОГО чего
доделывать самому, конкретно под поставленную задачу.

Теперь хоть чувствую себя защищённым. ;)

Ответить   Bogdanovich Andrey Wed, 17 Nov 2004 00:03:59 +0200 (#265810)

 

Доброго времени суток.

On Wed, 17 Nov 2004 00:03:59 +0200
Bogdanovich Andrey <peresvet-kiev@u*****.net> wrote:

Нет... Я о том и говорю, что все читать - слишком долго, при том, что там куча
информации, мне не нужной... К тому же прежде чем читать полностью (а я пытался)
мне необходимо прочесть еще пару-тройку книг о сетевых протоколах...

Ответить   Thu, 18 Nov 2004 05:26:49 +0200 (#266537)