Настройка файрвола на рабочем компьютере [SOLVED]
Здраствуйте.
Возникла необходимость настроить сетевую защиту на рабочем компьютере.
Компьютер находится в городской сети, задачи стандартные: веб, почта, фтп, торрент.
Также нужен полный доступ с одного-двух адресов.
Сетевые интерфейсы eth0 и ppp0
Подскажите, пожалуйста, достаточно ли будет этих правил :
iptables -A INPUT -s <доверенный ип> -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 0:1023 -j DROP
iptables -A INPUT -i ppp0 -p tcp -m tcp --dport 0:1023 -j DROP
К сожалению,не разобрался ( в статье "Настройка iptables для начинающих" в пункте "Пример правил" ):
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Подскажите, пожалуйста, что означает это правило.
(То, что отклоняются входящие пакеты установки нового соединения я понял)
- Для комментирования войдите или зарегистрируйтесь

В качестве
В качестве примера.
Имеются две сетевые карты. Одна смотрит в локалку, другая служит для подключения ноута.
00:20 [pk_HOME:2][~]$ cat MyScript/firewall.sh #!/bin/sh IF="eth0" IF_DOP="eth1" ADR="192.168.6.14" ADR_DOP="10.10.10.1" ADR_ACCEPT="10.10.10.10" # Очищаем и удаляем все цепочки iptables -F iptables -F -t nat iptables -X # Создаём политики по-умолчанию iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP iptables -t nat -P POSTROUTING ACCEPT # Включаем форвардинг ip в ядре. echo "1" > /proc/sys/net/ipv4/ip_forward # Разрешаем вхождение пакетов по l0 интерфейсу (выход пакетов разрешён по-умолчанию) iptables -A INPUT -i lo -j ACCEPT # Разрешаем вход пакетов от ноута на дополнительный интерфейс, "форвардим" и "натим" их iptables -A INPUT -i $IF_DOP -s $ADR_ACCEPT -j ACCEPT iptables -A FORWARD -i $IF_DOP -s $ADR_ACCEPT -j ACCEPT iptables -A FORWARD -o $IF_DOP -d $ADR_ACCEPT -j ACCEPT iptables -t nat -A POSTROUTING -s $ADR_ACCEPT -j SNAT --to-source $ADR # Разрешаем вход пакетов с признаком установленной связи, т.е. ответы на свои запросы iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Разрешаем вход пакетов на свои запущенные сервисы # SMB iptables -A INPUT -p tcp --dport 137:139 -j ACCEPT iptables -A INPUT -p udp --dport 137:139 -j ACCEPT iptables -A INPUT -p tcp --dport 445 -j ACCEPT iptables -A INPUT -p udp --dport 445 -j ACCEPT # FTP iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT iptables -A INPUT -p tcp --dport 1024:1030 -j ACCEPT # Разрешаем вход по tcp с портов 20 и 21 для работы по FTP в качестве клиента в активном режиме iptables -A INPUT -p tcp --sport 20:21 -j ACCEPT #DC++ iptables -A INPUT -p tcp --dport 10100 -j ACCEPT iptables -A INPUT -p udp --dport 10100 -j ACCEPT # DNS iptables -A INPUT -p udp --sport 53 -j ACCEPT # DHCP iptables -A INPUT -p udp --sport 67 --dport 68 -j ACCEPT # Ответ на traceroute iptables -A INPUT -p udp --dport 33434:33437 -j ACCEPT # ICMP iptables -A INPUT -p icmp -d $ADR -j ACCEPT # Логируем (при необходимости) остальные пакеты #iptables -A INPUT -j LOG #iptables -A FORWARD -j LOGiptables 1.1.3 tutorial гласит
В пределах iptables, соединение может иметь одно из 4-х базовых состояний: NEW, ESTABLISHED, RELATED и INVALID....
Соединение получает статус RELATED если оно связано с другим соединением, имеющим признак ESTABLISHED. Это означает, что соединение получает признак RELATED тогда, когда оно инициировано из уже установленного соединения, имеющего признак ESTABLISHED. Хорошим примером соединения, которое может рассматриваться как RELATED, является соединение FTP-data, которое является связанным с портом FTP control, а так же DCC соединение, запущенное из IRC.
А правило означает, пакеты в цепочке INPUT с состоянием "НОВОЕ от УЖЕ УСТАНОВЛЕННОГО", "УСТАНОВЛЕННОЕ" разрешить
Cпасибо
Спасибо за пример.
Вопрос насчёт достаточности правил остаётся в силе.
Ну естественно
Ну естественно должна быть сначала политика по дефолту, а именно для рабочей станции это:
iptables -t filter -F
iptables -t filter -P INPUT DROP
iptables -t filter -A INPUT -s 127.0.0.1 -j ACCEPT (и так же для доверенных IP)
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
А потом уже впускешь только на определенные порты (те что хочешь открыть), я у себя делаю так:
iptables -t filter -A INPUT -m state --state NEW -p tcp -m multiport --dports 21,22,873 -j ACCEPT
естественно если не хочешь открывать портов, то не пишешь предудущей линейки.
Вот этого должно хватить.
Спасибо
Спасибо за ответы и особенно за примеры. Проблема решена.