LINUX.ORG.RU

А что, не нужен?

dikiy ★★☆☆☆
()

А к сети этот десктоп подключен?

Если нет, то не нужен. Если да, то нужен. В чем вопрос?

А сетевая карта на десктопе нужна?

anarquista ★★★★★
()

К примеру я сделал
iptables --flush
iptables --delete-chain
iptables --table nat --flush
iptables --table filter --flush
iptables --table nat --delete-chain
iptables --table filter --delete-chain
Как это повлияет на работу iptables?
Чем может быть чревато?

bsdfun ★★★★★
() автор топика

Вопрос спорный. Все зависит от требований к безопасности и модели угорзы. В данном посте принимается такая модель: через дыру в программе злоумышленники хотят превратить Вашу машину в зомби для рассылки спама. Задача админа - не допустить рассылки спама, даже если в программе есть дыра.

Рассмотрим сначала «классическое» введение ограничений по хостам и портам.

Сейчас на большинстве десктопов нет сервисов, которые слушают на 0.0.0.0. Даже если есть - не проблема перенастроить, чтобы слушали на 127.0.0.1. После перенастройки блокировать входящие соединения с помощью iptables уже не имеет смысла - соединяться просто не с чем. И можно сказать, что iptables с настройкой только блокирования входящего траффика по портам не нужен, т.к. с ним и без него до программ дошли бы одни и те же пакеты. Т.е. возможности для взлома путем прямого соединения с машины хакера до Вашей машины совпадают.

В то же время, есть мнение, что дублирование всего - это хорошая идея. Т.е. что, даже если сейчас ядро все равно не примет никаких внешних соединений, т.к. не с чем соединяться, все равно имеет смысл (согласно этой точке зрения) продублировать эту политику в iptables, чтобы защититься от соединений к программе, которая по ошибке слушает на 0.0.0.0 и которой по идее не должно быть.

Отдельно стоит вопрос контроля исходящего траффика. Ограничение по хостам и портам, как правило, не имеет смысла, т.к. никто не составил список разрешенных внешних узлов, с которыми можно устанавливать соединение. Можно, конечно, попробовать составить такой список для своей системы (например: «соединяться на порт 25 запрещено, соединяться на порт 465 можно только к smtp.gmail.com»), чтобы, даже если ее сломают и получат доступ к Вашей учетной записи, с нее не разослали спам.

Еще есть тема ограничения доступа к сети по uid'ам и программам. Сперва рассмотрим uid'ы. Можно, например, пользователю messagebus (от которого работает dbus) запретить все внешние соединения, и тем самым обезопаситься от определенного класса дыр в нем. Такое ограничение действительно можно сделать через iptables, но selinux - более универсальное решение.

Ограничение по программам не имеет смысла: если у пользователя есть хотя бы одна другая программа, то в нее можно внедрить свой код через ptrace, тем самым обдурив проверку. Например, пусть iptables запрещает выход в Интернет всем программам, кроме firefox и thunderbird. В них дыр нет, но есть дыра в evince. Тогда хакер может прислать Вам pdf-файл, эксплуатирующий дыру в evince, по электронной почте. Взломанный evince меняет на ходу код thunderbird'а в памяти и получает доступ в Интернет на рассылку спама.

AEP ★★★★★
()

Сразу собирай hlfs с последними патчами для ещё не вышедшей gcc-4.6.

wyldrodney
()

IPTABLES не нужен. PF — наше всё.

Поднят PF вот с такми правилами:

#PF:2010-08-22
#-------------------
#1/Macros
# Сетевой интерфейс
ext_if="net0"
# Разрешенные типы icmp сообщений
allowed_icmp_types="{ echoreq, unreach }"
# Разрешённые сервисы
# 1. разрешить запросы к серверу NFS и RPCBIND только из локальной сети
# 2. обеспечить запуск с флагами mountd -p 883, rpc.lockd -p 884, rpc.statd -p 885 в rc.conf
# 3. выделенные порты для torrent и http/https/ssh-серверов доступны всем
allowed_lan_tcp_services="{ ssh, www, http, https, ntp, nfsd, rpcbind, 883, 884, 885, 6881:6991, 8080 }"
allowed_lan_udp_services="{ ntp, nfsd, rpcbind, 883, 884, 885, 6881:6991 }"
allowed_wan_tcp_services="{ ssh, www, 6881:6991, 8080, 8081, 55822, 63952 }"
allowed_wan_udp_services="{ ntp, 5501, 6881:6991, 55822, 63952 }"
#-------------------
#2/Tables
#-------------------
#3/Options
# ведение лога
set loginterface $ext_if
# тем, кто лезет туда, куда не нужно, - бить по рукам
set block-policy drop
# на интерфейсах петли пакеты не фильтровать
set skip on { lo }
# укороченный таймаут для состояния установленного tcp соединения
set timeout { frag 10, tcp.established 7200, icmp.first 10, icmp.error 5 }
#-------------------
#4/Scrub
# Нормализовать все входящие пакеты
scrub in all
#-------------------
#5/Queueing
#-------------------
#6/Translations
# Перенаправить tcp трафик с порта 80 на порт 8080 для пользовательского Web-сервера
rdr proto tcp from any to any port http -> self port 8080
#-------------------
#7/Filter Rules
# Антиспуффинг
antispoof for $ext_if
# Блокировать всё, что не разрешено
block all
#-------------------
# Разрешить входящий ICMP (ping)
pass inet proto icmp all icmp-type $allowed_icmp_types
# Разрешать трафик IGMP для IP-TV
pass quick on $ext_if inet proto igmp from any to any allow-opts
# Разрешающий доступ откуда угодно (ограниченные службы)
pass in quick on $ext_if proto tcp to port $allowed_wan_tcp_services
pass in quick on $ext_if proto udp to port $allowed_wan_udp_services
# Разрешающий доступ из локальной сети (ограниченные службы)
pass in quick on $ext_if proto tcp from $ext_if:network to port $allowed_lan_tcp_services
pass in quick on $ext_if proto udp from $ext_if:network to port $allowed_lan_udp_services
# Разрешить исходящий трафик
pass out all

iZEN ★★★★★
()

Десктопы тоже разные бывают. Десктоп с белым ip и десктоп, допустим, за натом - немного разные вещи с точки зрения безопасности. Но, в любом случае, настройка iptables (пусть даже через gui) прививает полезные навыки и представления, по крайней мере мне так кажется.

ostin ★★★★★
()
Ответ на: комментарий от AEP

Зря старался, судя по дальнейшим вопросам, ТС врядли станет это читать (-;

ostin ★★★★★
()
Ответ на: комментарий от anon_666

> Вообще, по-дефолту все цепочки пусты.

По дефолту пытался законектиться к некому серверу - не было коннекта, сделал

iptables --flush
iptables --delete-chain
iptables --table nat --flush
iptables --table filter --flush
iptables --table nat --delete-chain
iptables --table filter --delete-chain

Заработало. Как я понял теперь цепочки пустые и по дефолту так и должно быть?

bsdfun ★★★★★
() автор топика
Ответ на: комментарий от bsdfun

Значит, что-то добавляет свои правила при загрузке.

anon_666
()
Ответ на: комментарий от bsdfun

Проще iptables -F, чтобы сразу очистить все цепочки.

HTaeD ★★★★
()

Если сидишь за NAT, то не нужен.

/thread

tx
()

Нет, не нужен.

А зачем закрывать порты, если они всё-равно пустые? А если не пустые и на них висят сервисы - значит они должны быть открыты.

Heretique
()
Ответ на: комментарий от ostin

Десктоп с белым ip и десктоп, допустим, за натом - немного разные вещи с точки зрения безопасности.

Можно с этого места поподробнее? Спасибо.

Trojan_Winlock
()
Ответ на: комментарий от AEP

>Например, пусть iptables запрещает выход в Интернет всем программам, кроме firefox и thunderbird.

Хренасе, не знал что такое возможно!

firestarter ★★★☆
()
Ответ на: комментарий от firestarter

> Хренасе, не знал что такое возможно!

Такое раньше было возможно, но глючило на SMP. Сейчас оторвали.

AEP ★★★★★
()
Ответ на: комментарий от Trojan_Winlock

Ну а куда подробнее-то? Наружу шлюзом торчать или своей машиной (-;

ostin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.