Настройка Iptables с нуля

У меня вот такая проблема - я хочу настроить iptables
Перечитал гору литературы, слегка запутался - сами понимаете это не outpost

Ввожу

genni root # iptables -P INPUT DROP
genni root # iptables -P OUTPUT DROP
genni root # iptables -P FORWARD DROP

Проверяю

genni root # iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy DROP)
target     prot opt source               destination
genni root #

Делаю разрешение работы с loopback

genni root # iptables -A INPUT -i lo -j ACCEPT
genni root # iptables -A OUTPUT -o lo -j ACCEPT
genni root # iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

Как я понял теоретически мой комп должен быть полностью отгорожен от сети???
Я работаю в gnomе - там есть апплет МОНИТОР СЕТИ - и меня вот что волнует - когда я на него смотрю я вижу как eth0 принимает какието пакеты , и что то отссылает ( правда очень немного) - и возиникает вот такой вопрос - Я ЧТО ТО СДЕЛАЛ НИПРАВИЛЬНО?? - ведь по умолчанию ко мне ничего на этот интерфейс не должно приходить??

Попрежнему разбираюсь с iptables

В продолжение предыдущей темы - ввожу команду iptables -L -v
Выводиться

Chain INPUT (policy DROP 6808 packets, 1840K bytes)
 pkts bytes target     prot opt in     out     source               destination
 4009 1327K ACCEPT     udp  --  eth0   any     anywhere             anywhere            udp spts:bootps:bootpc dpts:bootps:bootpc
 6106  310K ACCEPT     all  --  lo     any     anywhere             anywhere

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy DROP 2355 packets, 152K bytes)
 pkts bytes target     prot opt in     out     source               destination
 6106  310K ACCEPT     all  --  any    lo      anywhere             anywhere

Вот недавно вывел - и мне непонятно полностью ли меня защищают эти правила которые я установил по умолчанию. Пожалуйста посоветуйте а то я не понимаю.

Мне также непонятен вот такой вопрос - я недавно нашел такой документ iptables-tutorial-1.1.19 - в нем приведено большое количество примеров, но мне непонятно одно, там часто встречаються примеры цепочек - IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP

и вот мне не понятно, а где в gentoo надо задавать эти переменные - вот нпример - $INET_IFACE и прочие?????

На Опен нете есть хороший мануал по настройке IPTABLES. Рекомендую ознакомиться с ним и делать по нему :)

$INET_IFACE задается в файле /etc/rc.firewall, туда же рекомендую прописывать команды для правил.

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

Еще в русском Вики есть пара мануалов по настройке всего этого хохяйства в генте. Их тоже рекомендую к прочтению.

Удачи!

Спасибо за ответ

dish написал(а):

$INET_IFACE задается в файле /etc/rc.firewall, туда же рекомендую прописывать команды для правил.

А у меня нет такого файла - его надо просто создать или еще поставить какуюнибуть прогу??

dish написал(а):
Еще в русском Вики есть пара мануалов по настройке всего этого хохяйства в генте. Их тоже рекомендую к прочтению.

Спасибо за ссылку - их я уже прочитал - но все это + много других доков = легкая каша в голове.
Сейчас думаю.
Моя задача настроить iptables так что бы я мог получать доступ к сайтам ( как в локальной реутовской сети так и в интернете), работать с ftp, ssh, получать почту по протокулу pop3 - щас думаю??
Проблема в том что меня смущают переменные которые есть во многих примерах - где их задавать??

Цитата:
А у меня нет такого файла - его надо просто создать или еще поставить какуюнибуть прогу??

поставь редхэтобразный дистр заместо Gentoo Linux, тогда появится... иначе никак =)
_________________
GNU/Wonderland -- GNU/Страна чудес, страна, в которой вы часто бываете, но, в которую, что примечательно, не надо оформлять визу.

v12aml написал(а):
поставь редхэтобразный дистр заместо Gentoo Linux, тогда появится... иначе никак =)

Тогда вопрос - а как задавать эти переменные именно в gentoo.

Не обязательно ставить шапкоподобный дистриб.
Как я уже писал, на опеннете есть мануал, а в нем пример этого файла.

Я в генте его создавал, вставлял туда пример с опеннета и правил в соответствии с моими нуждами

и работало? сильно сомневаюсь... этот файл должен "считываться" инит скриптами, кои в Генту и в РедХэтообразных ооооочень сильно различаются легче самому заменить эти переменные их значениями.
_________________
GNU/Wonderland -- GNU/Страна чудес, страна, в которой вы часто бываете, но, в которую, что примечательно, не надо оформлять визу.

рц.фаерволл -- это же обычный бэш-скрипт и в принципе к этим переменным потом доступ не нужен.
Я же говорил, что все настройки фаервола храню в этом файле. В нем же и задаю переменные :)

Запускаю этот (/etc/rc.firewall) файл и все :)

Но v12aml прав, можно и в инит-скриптах задавать их, а, ИМХО, gentoo-way -- это задать их в файле типа /etc/env.d/01network :)
_________________
Contrary to popular belief, UNIX is user-friendly. It just happens to be very selective about who it decides to make friends with. A. Haiut.

Ребята, опомнитесь! Какой в ж. редхэтобразный дистр. Он и рядом с gentoo не валяется!
Совсем парня с этим /etc/rc.firewall с толку сбили.. Сейчас по делу.
Пиши скрипт примерно такого содержания:

#!/bin/bash

# местонахождение iptables (which iptables)
IPTABLES=/sbin/iptables

# сбрасываем все правила
$IPTABLES -F
$IPTABLES -t nat -F

# дропим input и forward. output дропить не надо (или ты своей машине не доверяешь?:)
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP

# пишем разрешающие правила
$IPTABLES -A INPUT -i lo -j ACCEPT
# это для ответов (уже установленного соединения)
$IPTABLES -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
# разрешим входящие udp и icmp
$IPTABLES -A INPUT -p udp -j ACCEPT
$IPTABLES -A INPUT -p icmp -j ACCEPT
# теперь осталось открыть нужные tcp порты
# Но учти - это обращения извне к твоей машине а не наоборот. 
$IPTABLES -A INPUT -p tcp -m multiport --destination-port 139,22,80

Т.е смысл в следующем. Через правило $IPTABLES -P OUTPUT ACCEPT ты шлёш запрос куда угодно. Ответы по udp проходят через
$IPTABLES -A INPUT -p udp -j ACCEPT
а по tcp
$IPTABLES -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
далее отрываем порты (напр 139,22,80) для входящих (ещё не установленных) соединений.

Делаешь этот скрипт исполняемым (chmod 777 скрипт) и запускаешь ./скрипт
смотрим что получильсь iptables-save
проверяем, если чтот-то надо поменять, редактируем скрипт и снова его запускаем.

Когда все заработает делаем
/etc/init.d/iptables save
эта команда запишет вывод iptables-save в /var/lib/iptables/rules-save
который будет подхватываться при загрузке, ессно для этого надо сделать
rc-update add iptables default
Все, теперь свой скрипт спрячь подальше до того момента, пока не захочешь че нить поменять, он уже не нужен.

все конечно хорошо...

все, конечно, хорошо и правильно... но какой смысл в этом скрипте то?
_________________
GNU/Wonderland -- GNU/Страна чудес, страна, в которой вы часто бываете, но, в которую, что примечательно, не надо оформлять визу.

Re: все конечно хорошо...

v12aml написал(а):
все, конечно, хорошо и правильно... но какой смысл в этом скрипте то?
_________________
GNU/Wonderland -- GNU/Страна чудес, страна, в которой вы часто бываете, но, в которую, что примечательно, не надо оформлять визу.

В смысле зачем он нужен? Ну можно конечно и вручную вбивать в консоль подобные правила, а потом сделать /etc/init.d/iptables save, или например сразу напрямую отредактировать /var/lib/iptables/rules-save.
Кому как нравиться. Но если что-то надо будет поменять, то IMXO проще отредактировать и выполнить этот скрипт.

спасибо, теперь и мне даже понятно, кстати на всякий случай что-б пионеры пингом трафик не нагнали где критично делаю
$IPTABLES -A OUTPUT -o $ваша_внешняя_карточка -p icmp -j DROP
$IPTABLES -A FORWARD -o $ваша_внешняя_карточка -p icmp -j DROP

ИМХО, проще будет /var/lib/iptables/rules-save редактировать... бэкап только не забыть сделать ;)
А скрипт - это просто лишный шаг
_________________
GNU/Wonderland -- GNU/Страна чудес, страна, в которой вы часто бываете, но, в которую, что примечательно, не надо оформлять визу.

Большое спасибо всем кто ответил

Я недавно поднимал такой вопрос в рассылке comp.soft.linux.discuss, мне один из читалелей прислал вот этот скрипт

#!/sbin/runscript
IPTABLES=/sbin/iptables
IPTABLESSAVE=/sbin/iptables-save
IPTABLESRESTORE=/sbin/iptables-restore
FIREWALL=/etc/firewall.rules
DNS1=195.5.39.5
DNS2=195.5.39.9
#inside
IIP=10.19.2.10
IINTERFACE=eth0
LOCAL_NETWORK=10.19.2.0/24
#outside
OIP=172.16.0.9
OINTERFACE=eth1

opts="${opts} showstatus panic save restore showoptions rules"

depend() {
  need net procparam
}

rules() {
  stop
  ebegin "Setting internal rules"

  einfo "Setting default rule to drop"
  $IPTABLES -P FORWARD DROP
  $IPTABLES -P INPUT   DROP
  $IPTABLES -P OUTPUT  DROP

  #default rule
  einfo "Creating states chain"
  $IPTABLES -N allowed-connection
  $IPTABLES -F allowed-connection
  $IPTABLES -A allowed-connection -m state --state ESTABLISHED,RELATED -j ACCEPT
  $IPTABLES -A allowed-connection -i $IINTERFACE -m limit -j LOG --log-prefix "Bad packet from ${IINTERFACE}:"
  $IPTABLES -A allowed-connection -j DROP

  #ICMP traffic
  einfo "Creating icmp chain"
  $IPTABLES -N icmp_allowed
  $IPTABLES -F icmp_allowed
#  $IPTABLES -A icmp_allowed -m state --state NEW -p icmp --icmp-type time-exceeded -j ACCEPT
#  $IPTABLES -A icmp_allowed -m state --state NEW -p icmp --icmp-type destination-unreachable -j ACCEPT
  $IPTABLES -A icmp_allowed -p icmp --icmp-type 4   -j ACCEPT
  $IPTABLES -A icmp_allowed -p icmp --icmp-type 12  -j ACCEPT
  $IPTABLES -A icmp_allowed -p icmp --icmp-type 3   -j ACCEPT
  $IPTABLES -A icmp_allowed -p icmp --icmp-type 11  -j ACCEPT
  $IPTABLES -A icmp_allowed -p icmp --icmp-type 8  -j ACCEPT
  $IPTABLES -A icmp_allowed -p icmp --icmp-type 0  -j ACCEPT
  $IPTABLES -A icmp_allowed -p icmp -j LOG --log-prefix "Bad ICMP traffic:"
  $IPTABLES -A icmp_allowed -p icmp -j DROP

  #Incoming traffic
  einfo "Creating incoming ssh traffic chain"
  $IPTABLES -N allow-ssh-traffic-in
  $IPTABLES -F allow-ssh-traffic-in
  #Flood protection
  $IPTABLES -A allow-ssh-traffic-in -m limit --limit 1/second -p tcp --tcp-flags ALL RST --dport ssh -j ACCEPT
  $IPTABLES -A allow-ssh-traffic-in -m limit --limit 1/second -p tcp --tcp-flags ALL FIN --dport ssh -j ACCEPT
  $IPTABLES -A allow-ssh-traffic-in -m limit --limit 1/second -p tcp --tcp-flags ALL SYN --dport ssh -j ACCEPT
  $IPTABLES -A allow-ssh-traffic-in -m state --state RELATED,ESTABLISHED -p tcp --dport ssh -j ACCEPT

  einfo "Creating incoming http traffic chain"
  $IPTABLES -N allow-www-traffic-in
  $IPTABLES -F allow-www-traffic-in
  #Flood protection
  $IPTABLES -A allow-www-traffic-in -m limit --limit 1/second -p tcp --tcp-flags ALL RST --dport www -j ACCEPT
  $IPTABLES -A allow-www-traffic-in -m limit --limit 1/second -p tcp --tcp-flags ALL FIN --dport www -j ACCEPT
  $IPTABLES -A allow-www-traffic-in -m limit --limit 1/second -p tcp --tcp-flags ALL SYN --dport www -j ACCEPT
  $IPTABLES -A allow-www-traffic-in -m state --state RELATED,ESTABLISHED -p tcp --dport www -j ACCEPT

  einfo "Creating incoming ftp traffic chain"
  $IPTABLES -N allow-ftp-traffic-in
  $IPTABLES -F allow-ftp-traffic-in
  #Flood protection
  $IPTABLES -A allow-ftp-traffic-in -m limit --limit 5/second -p tcp --tcp-flags ALL RST -s 10.19.2.0/24 --sport ftp -j ACCEPT
  $IPTABLES -A allow-ftp-traffic-in -m limit --limit 5/second -p tcp --tcp-flags ALL FIN -s 10.19.2.0/24 --sport ftp -j ACCEPT
  $IPTABLES -A allow-ftp-traffic-in -m limit --limit 5/second -p tcp --tcp-flags ALL SYN -s 10.19.2.0/24 --sport ftp -j ACCEPT
  $IPTABLES -A allow-ftp-traffic-in -m state --state RELATED,ESTABLISHED -p tcp -s 10.19.2.0/24 --sport ftp -j ACCEPT
  $IPTABLES -A allow-ftp-traffic-in -m limit --limit 5/second -p tcp --tcp-flags ALL RST -s 10.19.2.0/24 --sport 1024:65365 -j ACCEPT
  $IPTABLES -A allow-ftp-traffic-in -m limit --limit 5/second -p tcp --tcp-flags ALL FIN -s 10.19.2.0/24 --sport 1024:65365 -j ACCEPT
  $IPTABLES -A allow-ftp-traffic-in -m limit --limit 5/second -p tcp --tcp-flags ALL SYN -s 10.19.2.0/24 --sport 1024:65365 -j ACCEPT
  $IPTABLES -A allow-ftp-traffic-in -m state --state RELATED,ESTABLISHED -p tcp -s 10.19.2.0/24 --sport 1024:65365 -j ACCEPT
  
  $IPTABLES -A allow-ftp-traffic-in -m limit --limit 5/second -p tcp --tcp-flags ALL RST -s 172.16.0.0/24 --sport ftp -j ACCEPT
  $IPTABLES -A allow-ftp-traffic-in -m limit --limit 5/second -p tcp --tcp-flags ALL FIN -s 172.16.0.0/24 --sport ftp -j ACCEPT
  $IPTABLES -A allow-ftp-traffic-in -m limit --limit 5/second -p tcp --tcp-flags ALL SYN -s 172.16.0.0/24 --sport ftp -j ACCEPT
  $IPTABLES -A allow-ftp-traffic-in -m state --state RELATED,ESTABLISHED -p tcp -s 172.16.0.0/24 --sport ftp -j ACCEPT
  $IPTABLES -A allow-ftp-traffic-in -m limit --limit 5/second -p tcp --tcp-flags ALL RST -s 172.16.0.0/24 --sport 1024:65365 -j ACCEPT
  $IPTABLES -A allow-ftp-traffic-in -m limit --limit 5/second -p tcp --tcp-flags ALL FIN -s 172.16.0.0/24 --sport 1024:65365 -j ACCEPT
  $IPTABLES -A allow-ftp-traffic-in -m limit --limit 5/second -p tcp --tcp-flags ALL SYN -s 172.16.0.0/24 --sport 1024:65365 -j ACCEPT
  $IPTABLES -A allow-ftp-traffic-in -m state --state RELATED,ESTABLISHED -p tcp -s 172.16.0.0/24 --sport 1024:65365 -j ACCEPT
    
  #Music
  $IPTABLES -A allow-ftp-traffic-in -m limit --limit 1/second -p tcp --tcp-flags ALL RST --dport 8020 -j ACCEPT
  $IPTABLES -A allow-ftp-traffic-in -m limit --limit 1/second -p tcp --tcp-flags ALL FIN --dport 8020 -j ACCEPT
  $IPTABLES -A allow-ftp-traffic-in -m limit --limit 1/second -p tcp --tcp-flags ALL SYN --dport 8020 -j ACCEPT
  $IPTABLES -A allow-ftp-traffic-in -m state --state RELATED,ESTABLISHED -p tcp -m tcp --dport 8020 -j ACCEPT

  einfo "Creating incoming smb traffic chain"
  $IPTABLES -N allow-smb-traffic-in
  $IPTABLES -F allow-smb-traffic-in
  $IPTABLES -A allow-smb-traffic-in -p tcp --tcp-flags ALL SYN -s 10.19.20.0/24 --dport netbios-ssn -j ACCEPT
  $IPTABLES -A allow-smb-traffic-in -m state --state RELATED,ESTABLISHED -p tcp -s 10.19.20.0/24 --dport netbios-ssn -j ACCEPT
  $IPTABLES -A allow-smb-traffic-in -p udp -s 10.19.20.0/24 --dport netbios-ns -j ACCEPT
  $IPTABLES -A allow-smb-traffic-in -p udp -s 10.19.20.0/24 --dport netbios-dgm -j ACCEPT
  $IPTABLES -A allow-smb-traffic-in -p udp -s 10.19.20.0/24 --dport 445 -j ACCEPT

  einfo "Creating incoming ntp traffic chain"
  $IPTABLES -N allow-time-traffic-in
  $IPTABLES -F allow-time-traffic-in
  $IPTABLES -A allow-time-traffic-in -p udp --dport ntp -j ACCEPT

  #Outgoing traffic
  einfo "Creating outgoing ssh traffic chain"
  $IPTABLES -N allow-ssh-traffic-out
  $IPTABLES -F allow-ssh-traffic-out
  $IPTABLES -A allow-ssh-traffic-out -p tcp --dport ssh -j ACCEPT

  einfo "Creating outgoing dns traffic chain"
  $IPTABLES -N allow-dns-traffic-out
  $IPTABLES -F allow-dns-traffic-out
  $IPTABLES -A allow-dns-traffic-out -p udp -d $DNS1 --dport domain -j ACCEPT
  $IPTABLES -A allow-dns-traffic-out -p udp -d $DNS2 --dport domain -j ACCEPT

  einfo "Creating outgoing http/https traffic chain"
  $IPTABLES -N allow-www-traffic-out
  $IPTABLES -F allow-www-traffic-out
  $IPTABLES -A allow-www-traffic-out -p tcp --dport www -j ACCEPT
  $IPTABLES -A allow-www-traffic-out -p tcp --dport https -j ACCEPT

  einfo "Creating outgoing mail traffic chain"
  $IPTABLES -N allow-mail-traffic-out
  $IPTABLES -F allow-mail-traffic-out
  $IPTABLES -A allow-mail-traffic-out -p tcp --dport smtp  -j ACCEPT
  $IPTABLES -A allow-mail-traffic-out -p tcp --dport pop3  -j ACCEPT
  $IPTABLES -A allow-mail-traffic-out -p tcp --dport imap2 -j ACCEPT
  
  einfo "Creating outgoing ftp traffic chain"
  $IPTABLES -N allow-ftp-traffic-out
  $IPTABLES -F allow-ftp-traffic-out
  $IPTABLES -A allow-ftp-traffic-out -p tcp --dport 1024:65365 -j ACCEPT
  $IPTABLES -A allow-ftp-traffic-out -p tcp --dport ftp -j ACCEPT
  $IPTABLES -A allow-ftp-traffic-out -p tcp --dport ftp-data -j ACCEPT

  einfo "Creating outgoing smb traffic chain"
  $IPTABLES -N allow-smb-traffic-out
  $IPTABLES -F allow-smb-traffic-out
  $IPTABLES -A allow-smb-traffic-out -p tcp --dport netbios-ssn -j ACCEPT
  $IPTABLES -A allow-smb-traffic-out -p udp --dport netbios-ns  -j ACCEPT
  $IPTABLES -A allow-smb-traffic-out -p udp --dport netbios-dgm -j ACCEPT
  $IPTABLES -A allow-smb-traffic-out -p tcp --dport 445 -j ACCEPT

  einfo "Creating outgoing krab/terminal traffic chain"
  $IPTABLES -N allow-krab-term-traffic-out
  $IPTABLES -F allow-krab-term-traffic-out
  $IPTABLES -A allow-krab-term-traffic-out -p tcp --dport 3050 -j ACCEPT
  $IPTABLES -A allow-krab-term-traffic-out -p tcp --dport 3389 -j ACCEPT

  einfo "Creating outgoing ntp traffic chain"
  $IPTABLES -N allow-time-traffic-out
  $IPTABLES -F allow-time-traffic-out
  $IPTABLES -A allow-time-traffic-out -p udp --dport ntp -j ACCEPT
  $IPTABLES -A allow-time-traffic-out -p udp --dport ntp -j ACCEPT

  #Catch portscanners
  einfo "Creating portscan detection chain"
  $IPTABLES -N check-flags
  $IPTABLES -F check-flags
  $IPTABLES -A check-flags -p tcp --tcp-flags ALL FIN,URG,PSH -m limit --limit 5/minute -j LOG --log-level alert --log-prefix "NMAP-XMAS:" 
  $IPTABLES -A check-flags -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
  $IPTABLES -A check-flags -p tcp --tcp-flags ALL ALL -m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "XMAS:"
  $IPTABLES -A check-flags -p tcp --tcp-flags ALL ALL -j DROP
  $IPTABLES -A check-flags -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "XMAS-PSH:"
  $IPTABLES -A check-flags -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
  $IPTABLES -A check-flags -p tcp --tcp-flags ALL NONE -m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "NULL_SCAN:"
  $IPTABLES -A check-flags -p tcp --tcp-flags ALL NONE -j DROP 
  $IPTABLES -A check-flags -p tcp --tcp-flags SYN,RST SYN,RST -m limit --limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/RST:"
  $IPTABLES -A check-flags -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
  $IPTABLES -A check-flags -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit --limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/FIN:"
  $IPTABLES -A check-flags -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

  # Apply and add invalid states to the chains
  einfo "Applying chains to INPUT"
  $IPTABLES -A INPUT -m state --state INVALID -j DROP
  $IPTABLES -A INPUT -j icmp_allowed 
  $IPTABLES -A INPUT -j check-flags
  $IPTABLES -A INPUT -i lo -j ACCEPT
  $IPTABLES -A INPUT -j allow-ssh-traffic-in
  $IPTABLES -A INPUT -j allow-www-traffic-in
  $IPTABLES -A INPUT -j allow-ftp-traffic-in
  $IPTABLES -A INPUT -j allow-smb-traffic-in
  $IPTABLES -A INPUT -j allow-time-traffic-in
  $IPTABLES -A INPUT -j allowed-connection

  einfo "Applying chains to FORWARD"
  $IPTABLES -A FORWARD -m state --state INVALID -j DROP
  $IPTABLES -A FORWARD -j icmp_allowed 
  $IPTABLES -A FORWARD -j check-flags
  $IPTABLES -A FORWARD -o lo -j ACCEPT
#  $IPTABLES -A FORWARD -j allow-ssh-traffic-in
#  $IPTABLES -A FORWARD -j allow-time-traffic-in
#  $IPTABLES -A FORWARD -j allow-ftp-traffic-in
#  $IPTABLES -A FORWARD -j allow-www-traffic-in
#  $IPTABLES -A FORWARD -j allow-www-traffic-out
  $IPTABLES -A FORWARD -j allowed-connection

  einfo "Applying chains to OUTPUT"
  $IPTABLES -A OUTPUT -m state --state INVALID -j DROP
  $IPTABLES -A OUTPUT -j icmp_allowed
  $IPTABLES -A OUTPUT -j check-flags
  $IPTABLES -A OUTPUT -o lo -j ACCEPT
  $IPTABLES -A OUTPUT -j allow-ssh-traffic-out
  $IPTABLES -A OUTPUT -j allow-dns-traffic-out
  $IPTABLES -A OUTPUT -j allow-www-traffic-out
  $IPTABLES -A OUTPUT -j allow-mail-traffic-out
  $IPTABLES -A OUTPUT -j allow-ftp-traffic-out
  $IPTABLES -A OUTPUT -j allow-smb-traffic-out
  $IPTABLES -A OUTPUT -j allow-krab-term-traffic-out
  $IPTABLES -A OUTPUT -j allow-time-traffic-out
  $IPTABLES -A OUTPUT -j allowed-connection

  #Allow client to route through via NAT (Network Address Translation)
  $IPTABLES -t nat -A POSTROUTING -o $IINTERFACE -j MASQUERADE 
  eend $?
}

start() {
  ebegin "Starting firewall"
  if [ -e "${FIREWALL}" ]; then
    restore
  else
    einfo "${FIREWALL} does not exists. Using default rules."
    rules
  fi
  eend $?
}

stop() {
  ebegin "Stopping firewall"
  $IPTABLES -F
  $IPTABLES -t nat -F
  $IPTABLES -X
  $IPTABLES -P FORWARD ACCEPT
  $IPTABLES -P INPUT   ACCEPT
  $IPTABLES -P OUTPUT  ACCEPT
  eend $?
}

showstatus() {
  ebegin "Status"
  $IPTABLES -L -n -v --line-numbers
  einfo "NAT status"
  $IPTABLES -L -n -v --line-numbers -t nat
  eend $?
}

panic() {
  ebegin "Setting panic rules"
  $IPTABLES -F
  $IPTABLES -X
  $IPTABLES -t nat -F
  $IPTABLES -P FORWARD DROP
  $IPTABLES -P INPUT   DROP
  $IPTABLES -P OUTPUT  DROP
  $IPTABLES -A INPUT -i lo -j ACCEPT
  $IPTABLES -A OUTPUT -o lo -j ACCEPT
  eend $?
}

save() {
  ebegin "Saving Firewall rules"
  $IPTABLESSAVE > $FIREWALL
  eend $?
}

restore() {
  ebegin "Restoring Firewall rules"
  $IPTABLESRESTORE < $FIREWALL
  eend $?
}

restart() {
  svc_stop; svc_start
}

showoptions() {
  echo "Usage: $0 {start|save|restore|panic|stop|restart|showstatus}"
  echo "start)      will restore setting if exists else force rules"
  echo "stop)       delete all rules and set all to accept"
  echo "rules)      force settings of new rules"
  echo "save)       will store settings in ${FIREWALL}"
  echo "restore)    will restore settings from ${FIREWALL}"
  echo "showstatus) Shows the status" 
}

Поэтому скрипту мне многое непонятно

Правильно ли я понял
1.
В этот файл записываеться местонахождение правил
FIREWALL=/etc/firewall.rules
а у сеья я должен записать в /var/lib/iptables/rules-save (ну где они у меня храняться)

2.

DNS1=195.5.39.5
DNS2=195.5.39.9

Моя конфигурация на данный момент такая - есть только eth0 - ip адрес
я получаю при момощи dhcp сервера локальной реутовской сети - его адрес
10.0.0.1 (этот адрес я узнал звоня в службу поддержки) - т.е. я должен
указать его в этой графе.
3.
В будущем я собираюсь подключаться к интернету по выделенной линии
- т.е. будет интерфейс pptp0 - нужно ли для него что нибуть резервировать?
4.
IIP=10.19.2.10
Это к чему относиться?
5.
LOCAL_NETWORK=10.19.2.0/24
Что писать мне заместо этого, как определить?
6.
OIP=172.16.0.9
Что это за адрес и что писать мне заместо него?

И еще самый главный вопрос - безопасен ли сам скрипт, а то я не хочу запускать у себя на компе не очень мне понятные скрипты.

P.S.
Мне советуют guarddog - она являеться надстройкой над iptables - имеет ли ее смысл использовать.

Это действительно не очено понятный скрипт :)
Он помимо создания правил, выполняет функции, которые должен выполнять /etc/init.d/iptables (start, stop и т.д.)
1. Да, в этот файл он записывает правила в формате iptables-save.
Если будешь использовать подобный скрипт, убери из default уровня /etc/init.d/iptables. А путь к этому файлу правил не суть важно. Просто отредактируй переменную
FIREWALL=/var/lib/iptables/rules-save
2. Да, написать надо

DNS1=10.0.0.1

3. А вот тут надо будет весь скрипт редактировать, удалять/добавлять правила, в общем без знания что в нём как работает будет трудно :)
4. input ip. Наверное этот скрипт работал на шлюзе, и имелось в виду ну может быть input ip - ip, присвоенный сетевой, которая смотрит во внутреннюю сеть, а OIP - соответственно во внешнюю...
5. У, как всё запущено...
Наверное это указывается адрес локальной сети :)
Эта запись равносильна 10.19.2.0/255.255.255.0
у тебя видимо будет 10.0.0.0/8 если не ошибаюсь, к какому классу сети относится этот диапазон адресов, по моему к А. В общем маску подсети узнай.
6. У тебя же одна сетевая :)
И последний ответ на вопрос.
Этот скрипт очень опасен, в первую очередь для мозгов :). Кроме того он тебе совершенно не подходит. Зато в нем есть много чего интересного :)

PS. На счет guarddog ничего сказать не могу, но я наверное не ошибусь, если посоветую поставить webmin, там ты точно разберёшся как что настроить, к тому же я считаю, что разработчикам удалось сохранить гибкость конфигурации firewall. Webmin - это web интерфейс ко многим настройкам системы. Хотя я не сторонник такого подхода к изучению и настройке unix-подобных систем.
Гораздо полезнее будет распечатать и прочитать хотябы пару раз вот это -
http://www.opennet.ru/docs/RUS/iptables/
Очень толковая штука. Я правда с первого раза не всё переварил, пришлось второй раз перечитывать, но зато потом всё стало на свои места.

IPTABLES

Не знаю как там у тебя но я мутил все по - вот этой ссылки ))
http://www.posix.ru/network/iptables/
есть много вариаций, но вроде тут должно быть все понятно.
У меня шлюз на RH9 - так что обезопасить машинку мне удалось.

а система

а система обнаружения вторжений стоит???

Re:

Rinus написал(а):
Гораздо полезнее будет распечатать и прочитать хотябы пару раз вот это -
http://www.opennet.ru/docs/RUS/iptables/
Очень толковая штука. Я правда с первого раза не всё переварил, пришлось второй раз перечитывать, но зато потом всё стало на свои места.

Приведу цитату из "толковой штуки"
"Данное руководство предполагает наличие у читателя начальных сведений о Linux/Unix, языке сценариев командной оболочки. Кроме того, вы должны знать - как пересобрать ядро операционной системы и иметь некоторое представление о его внутреннем устройстве."
А где можно почитать чайнику толковую инструкцию написанную кухонным языком, да еще с примерами, которые были бы понятны даже домохозяйке, а не только продвинутому юзеру?

Это типа

Это типа "нажмите такую-то кнопку и всё будет хорошо"?

проблема в том

проблема в том что если расчитывать на уровень ниже, то тогда нужно будет включить курс по ведру/скриптам/и т.п. в эту статью, а таках много и захламлять ненужно

Добавить

В последней строке скрипта от Rinus'a (Rinus в 19 Июнь, 2005 - 11:42) нужно добавить еще "-j ACCEPT".

Подключение к mysql

Пытаюсь подключится к mysql удалённо но видима iptables не даёт, как это исправить?

Заранее спасибо.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".