URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 4976
[ Назад ]

Исходное сообщение
"Правила iptables, этого достаточно?"

Отправлено Humy , 03-Дек-11 12:58 
Уважаемые гуру. Требуется ваш совет. Хочу поднять сервер на Slackware 13.37 На нем будет крутится только Samba (Предпологается в будующем вэб сервер поднять) Этих правил для максимальной безопасности будет достаточно или что подправить?

#!/bin/sh

#################################### Задаем некоторые переменные:
IPTABLES="/usr/sbin/iptables"      # Переменная, задающая путь к файлу запуска iptables
####################################

start_fw()
{
# Включить перенаправление пакетов через ядро
  echo 1 > /proc/sys/net/ipv4/ip_forward
  #
  $IPTABLES -P OUTPUT  DROP
  $IPTABLES -P INPUT   DROP
  $IPTABLES -P FORWARD DROP

  # ================ Таблица 'фильтр', автоматические правила
  # принимать устанвленные сессии
  $IPTABLES -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
  $IPTABLES -A OUTPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
  $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

    # ================ Таблица 'фильтр', политика набора правил
    #
    # Правило 0 (eth0)
    # правила антиспуфинга
    $IPTABLES -N In_RULE_0
    $IPTABLES -A INPUT -i eth0   -s 192.168.1.2   -m state --state NEW  -j In_RULE_0
    $IPTABLES -A FORWARD -i eth0   -s 192.168.1.2   -m state --state NEW  -j In_RULE_0
    $IPTABLES -A In_RULE_0  -j LOG  --log-level info --log-prefix "RULE 0 -- DENY "
    $IPTABLES -A In_RULE_0  -j DROP
    #
    # Правило 1 (lo)
    #
    $IPTABLES -A INPUT -i lo   -m state --state NEW  -j ACCEPT
    $IPTABLES -A OUTPUT -o lo   -m state --state NEW  -j ACCEPT
    #
    # Правило 2 (для всех)
    #
    # SSH доступ к хосту; полезно для ICMP
    # ping запросов
    $IPTABLES -N Cid4148X2782.0
    $IPTABLES -A OUTPUT  -d 192.168.1.2   -m state --state NEW  -j Cid4148X2782.0
    $IPTABLES -A Cid4148X2782.0 -p icmp  -m icmp  --icmp-type 3  -j ACCEPT
    $IPTABLES -A Cid4148X2782.0 -p icmp  -m icmp  --icmp-type 0/0   -j ACCEPT
    $IPTABLES -A Cid4148X2782.0 -p icmp  -m icmp  --icmp-type 8/0   -j ACCEPT
    $IPTABLES -A Cid4148X2782.0 -p icmp  -m icmp  --icmp-type 11/0   -j ACCEPT
    $IPTABLES -A Cid4148X2782.0 -p icmp  -m icmp  --icmp-type 11/1   -j ACCEPT
    $IPTABLES -A Cid4148X2782.0 -p tcp -m tcp  -m multiport  --dports 445,113,139,22  -j ACCEPT
    $IPTABLES -A Cid4148X2782.0 -p udp -m udp  -m multiport  --dports 138,137  -j ACCEPT
    $IPTABLES -A INPUT -p icmp  -m icmp  --icmp-type 3  -m state --state NEW  -j ACCEPT
    $IPTABLES -A INPUT -p icmp  -m icmp  --icmp-type 0/0   -m state --state NEW  -j ACCEPT
    $IPTABLES -A INPUT -p icmp  -m icmp  --icmp-type 8/0   -m state --state NEW  -j ACCEPT
    $IPTABLES -A INPUT -p icmp  -m icmp  --icmp-type 11/0   -m state --state NEW  -j ACCEPT
    $IPTABLES -A INPUT -p icmp  -m icmp  --icmp-type 11/1   -m state --state NEW  -j ACCEPT
    $IPTABLES -A INPUT -p tcp -m tcp  -m multiport  --dports 445,113,139,22  -m state --state NEW  -j ACCEPT
    $IPTABLES -A INPUT -p udp -m udp  -m multiport  --dports 138,137  -m state --state NEW  -j ACCEPT
    #
    # Правило 3 (для всех)
    #
    $IPTABLES -A INPUT  -s 192.168.1.2   -m state --state NEW  -j ACCEPT
    $IPTABLES -A OUTPUT  -m state --state NEW  -j ACCEPT
    #
    # Правило 4 (для всех)
    #
    $IPTABLES -N RULE_4
    $IPTABLES -A OUTPUT  -m state --state NEW  -j RULE_4
    $IPTABLES -A INPUT  -m state --state NEW  -j RULE_4
    $IPTABLES -A FORWARD  -m state --state NEW  -j RULE_4
    $IPTABLES -A RULE_4  -j LOG  --log-level info --log-prefix "RULE 4 -- DENY "
    $IPTABLES -A RULE_4  -j DROP

    $IPTABLES -P OUTPUT  ACCEPT
    $IPTABLES -P INPUT   ACCEPT
    $IPTABLES -P FORWARD ACCEPT
    
#############################################

}

case "$1" in
start)    echo -n "Starting firewall: iptables"
    start_fw
        echo "."
    ;;
stop)    echo -n "Stopping firewall: iptables"
    iptables -F
    iptables -X
        echo "."
        ;;
save)    echo -n "Saving firewall: iptables"
    iptables-save > /etc/rules-save
    echo "."
    ;;
restart) echo -n "Restarting firewall: iptables"
    iptables -F
    iptables -X
    cat /etc/rules-save | iptables-restore
        echo "."
        ;;
reload|force-reload) echo -n "Reloading configuration files for firewall: iptables"
        echo "."
        ;;
*)    echo "Usage: /etc/init.d/rc.iptables start|stop|restart|reload|force-reload"
        exit 1
        ;;
esac
exit 0




Содержание

Сообщения в этом обсуждении
"Правила iptables, этого достаточно?"
Отправлено PavelR , 03-Дек-11 20:01 

Да достаточно конечно, идите, идите...

.... к тому, кто это придумал, пусть он вам и объясняет, почему их достаточно, и зачем на сервере не маршрутизаторе включать ip_forward.



"Правила iptables, этого достаточно?"
Отправлено PavelR , 03-Дек-11 20:04 

> Да достаточно конечно, идите, идите...
> .... к тому, кто это придумал, пусть он вам и объясняет, почему
> их достаточно, и зачем на сервере не маршрутизаторе включать ip_forward.
> # Включить перенаправление пакетов через ядро
>   echo 1 > /proc/sys/net/ipv4/ip_forward

И еще пусть объяснят этот магический пасс:


>   $IPTABLES -P OUTPUT  DROP
>   $IPTABLES -P INPUT   DROP
>   $IPTABLES -P FORWARD DROP

[skipnuto]

>     $IPTABLES -P OUTPUT  ACCEPT
>     $IPTABLES -P INPUT   ACCEPT
>     $IPTABLES -P FORWARD ACCEPT


"Правила iptables, этого достаточно?"
Отправлено Andrew , 03-Дек-11 20:46 
Уважаемый ....
Где такую забористую траву брали ?

"Правила iptables, этого достаточно?"
Отправлено КуКУ , 04-Дек-11 00:24 
Бррр... ощущение что надергали с чужого конфига строчек не разбираясь что к чему.
Получился такой Франкеншней, у которого третья рука торчит из *опы, и кажется что оно так и должно быть.

К примеру, не поделитесь ли случайно мудростью, какую смысловую или логическую нагрузку несет данное имя цепочки?
> $IPTABLES -N Cid4148X2782.0


"Правила iptables, этого достаточно?"
Отправлено КуКУ , 04-Дек-11 00:33 
в слаке несилен, но для большинства linux-дистрибутивов для МАКСИМАЛЬНОЙ безопасности подойдет что-то вроде :

#!/bin/sh

####################################
IPTABLES="/usr/sbin/iptables"      #
####################################
$IPTABLES -P INPUT -j DROP
$IPTABLES -P OUTPUT -j DROP
$IPTABLES -P FORWARD -j DROP

$IPTABLES -A INPUT -p tcp -m multiport 22,21..137,139 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m multiport 22,21..137,139 -j ACCEPT

init 0


"Правила iptables, этого достаточно?"
Отправлено Дядя_Федор , 04-Дек-11 11:10 
> $IPTABLES -A INPUT -p tcp -m multiport 22,21..137,139 -j ACCEPT
> $IPTABLES -A OUTPUT -p tcp -m multiport 22,21..137,139 -j ACCEPT
> init 0

Ну, учитывая init 0 - да, безопасность будет действительно МАКСИМАЛЬНОЙ. :)))) Только непонятен тогда смысл предыдущих строчек. Сдается мне - Вы не только со слакой не дружите, а ее и с головой. Или это такой тонкий стеб был?  



"Правила iptables, этого достаточно?"
Отправлено КуКУ , 04-Дек-11 11:25 
>> $IPTABLES -A INPUT -p tcp -m multiport 22,21..137,139 -j ACCEPT
>> $IPTABLES -A OUTPUT -p tcp -m multiport 22,21..137,139 -j ACCEPT
>> init 0
>  Ну, учитывая init 0 - да, безопасность будет действительно МАКСИМАЛЬНОЙ. :))))
> Только непонятен тогда смысл предыдущих строчек. Сдается мне - Вы не
> только со слакой не дружите, а ее и с головой. Или
> это такой тонкий стеб был?

хм я вроде бы сделал акцент на слове "МАКСИМАЛЬНЫЙ"... В следующий раз придется комментарии оставлять.

Просто не смотрится как то
#!/bin/sh
/sbin/init 0

:)


"Правила iptables, этого достаточно?"
Отправлено Дядя_Федор , 04-Дек-11 12:59 
> Просто не смотрится как то
> #!/bin/sh
> /sbin/init 0
> :)

Понял. Прошу прощения за "голову". :)


"Правила iptables, этого достаточно?"
Отправлено Humy , 05-Дек-11 14:42 
Да не у кого я ничего не выдергивал. Правила создавались программой fwbuilder, это еще больше пол конфига сократил. Была вообще портянка:) Ну и недоглядел остался форвард. Поэтому и спрашивал достаточно или нет. Решил сделать пинги по проще,типа такого
$IPTABLES -A INPUT -p icmp -m icmp -i eth0 --icmp-type echo-reply -j ACCEPT
$IPTABLES -A OUTPUT -p icmp -m icmp -o eth0 --icmp-type echo-request -j ACCEPT


"Правила iptables, этого достаточно?"
Отправлено Andrey Mitrofanov , 05-Дек-11 14:54 
> Да не у кого я ничего не выдергивал. Правила создавались программой fwbuilder,
> это еще больше пол конфига сократил. Была вообще портянка:) Ну и
> недоглядел остался форвард. Поэтому и спрашивал достаточно или нет. Решил сделать
> пинги по проще,типа такого
>
$IPTABLES -A INPUT -p icmp -m icmp -i eth0 --icmp-type echo-reply -j 
> ACCEPT
> $IPTABLES -A OUTPUT -p icmp -m icmp -o eth0 --icmp-type echo-request -j
> ACCEPT

Слова request и reply смотреть в словаре.

# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
# Cmd Line : 1
# Command  : interface eth0 i

# Creating chain 'in_i' under 'INPUT' in table 'filter'
/sbin/iptables -t filter -N in_i
/sbin/iptables -t filter -A INPUT -i eth0 -j in_i

# Creating chain 'out_i' under 'OUTPUT' in table 'filter'
/sbin/iptables -t filter -N out_i
/sbin/iptables -t filter -A OUTPUT -o eth0 -j out_i

# > OK <
# FireHOL [interface:i] > server ping accept

# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
# Cmd Line : 2
# Command  : server ping accept

# Preparing for service 'ping' of type 'server' under interface 'i'

# Creating chain 'in_i_ping_s1' under 'in_i' in table 'filter'
/sbin/iptables -t filter -N in_i_ping_s1
/sbin/iptables -t filter -A in_i -j in_i_ping_s1

# Creating chain 'out_i_ping_s1' under 'out_i' in table 'filter'
/sbin/iptables -t filter -N out_i_ping_s1
/sbin/iptables -t filter -A out_i -j out_i_ping_s1

# Running complex rules function rules_ping() for server 'ping'
/sbin/iptables -t filter -A in_i_ping_s1 -p icmp -m state --state NEW\,ESTABLISHED --icmp-type echo-request -j ACCEPT
/sbin/iptables -t filter -A out_i_ping_s1 -p icmp -m state --state ESTABLISHED --icmp-type echo-reply -j ACCEPT

# > OK <
# FireHOL [interface:i] > quit

version 5

interface eth0 i
        server ping accept


"Правила iptables, этого достаточно?"
Отправлено КуКу , 05-Дек-11 15:58 
> Да не у кого я ничего не выдергивал. Правила создавались программой fwbuilder,
> это еще больше пол конфига сократил. Была вообще портянка:) Ну и
> недоглядел остался форвард. Поэтому и спрашивал достаточно или нет. Решил сделать
> пинги по проще,типа такого
>
$IPTABLES -A INPUT -p icmp -m icmp -i eth0 --icmp-type echo-reply -j 
> ACCEPT
> $IPTABLES -A OUTPUT -p icmp -m icmp -o eth0 --icmp-type echo-request -j
> ACCEPT

тогда советую потратить немного времени на прочтение основ iptables.
####  устанавливает политику по-умолчанию
$IPTABLES -P INPUT -j DROP
$IPTABLES -P OUTPUT -j DROP
$IPTABLES -P FORWARD -j DROP

####  и вот такими простыми правилами открываете нужные порты, можно и через -m multiport
$IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --sport 22 -j ACCEPT


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