Страница 1 из 2

Настройка iptables

Добавлено: 2012-04-16 10:42:48
icb
Linux не использую вообще, но надо настроить простенькое правило в iptales: запретить все соеденения, разрешить только с моего IP.
Подскажите как сделать, а то даже протестировать негде :(

Re: Настройка iptables

Добавлено: 2012-04-16 12:37:05
Graf
icb писал(а):Linux не использую вообще, но надо настроить простенькое правило в iptales: запретить все соеденения, разрешить только с моего IP.
Подскажите как сделать, а то даже протестировать негде :(
из от куда и куда? все порты и протоколы?

Re: Настройка iptables

Добавлено: 2012-04-16 12:56:32
icb
из от куда и куда? все порты и протоколы?
Закрыть доступ от всех (по всем протоколам), кроме доступа с моего IP.

Нагуглил такое решение:

Код: Выделить всё

iptables -P INPUT DROP
iptables -A INPUT --source 192.168.1.2 -j ACCEPT
Корректно ли оно?

Re: Настройка iptables

Добавлено: 2012-04-16 14:20:58
Graf
вроде не жарко, но чет недопонимаю.... уж сорри :)
т.е. есть некий комп (допустим с IP - 192.168.1.1), выхода в инет с этого компа нет, надо разрешить IP - 192.168.1.2 доступ к этому компу(192.168.1.1), а все остальные идут лесом, так?
а сам комп (192.168.1.1) куданить ходить может (должен), или он только для 192.168.1.2 будет работать? Логи вести надо?

Re: Настройка iptables

Добавлено: 2012-04-16 15:08:08
icb
т.е. есть некий комп (допустим с IP - 192.168.1.1), выхода в инет с этого компа нет, надо разрешить IP - 192.168.1.2 доступ к этому компу(192.168.1.1), а все остальные идут лесом, так?
Почти. Наверное я зря использовал подсеть 192.168.x.x - она вводит в заблуждение.
Вот более развернуто: есть хост 111.111.111.111 (IP взят для примера), подключен к интернету (colocation). На нем запущено несколько сервисов (SSH, HTTP, VNC и т.п.).
Я хочу: чтобы с моего IP (222.222.222.222) я мог обращаться ко всем сервисам этого хоста, а другие IP не имели доступа к нему.
а сам комп (192.168.1.1) куданить ходить может (должен), или он только для 192.168.1.2 будет работать? Логи вести надо?
Сам хост (комп) ходить может. Логи нужны (если сложности - можно и без них).

P.S. Это я пытаюсь защитить IPMI.

Re: Настройка iptables

Добавлено: 2012-04-16 17:00:24
Graf
как-то так..., если я все правильно понял.

Код: Выделить всё

#!/bin/sh
 iptables --flush
 clear

INET_IP="111.111.111.111"
INET_IFACE="eth1"

# Какой IP смотрит в локалку, если есть
LAN_IP="192.168.1.1"
LAN_IP_RANGE="192.168.1.0/24"
LAN_IFACE="eth0"

LO_IFACE="lo"
LO_IP="127.0.0.1"

IPTABLES="iptables"

# Модули
   /sbin/depmod -a

   /sbin/modprobe ip_tables
   /sbin/modprobe ip_conntrack
   /sbin/modprobe iptable_filter
   /sbin/modprobe iptable_mangle
   /sbin/modprobe iptable_nat
   /sbin/modprobe ipt_LOG
   /sbin/modprobe ipt_limit
   /sbin/modprobe ipt_state
# 
# Не обязательные
# 
# /sbin/modprobe ipt_owner
   /sbin/modprobe ipt_REJECT
# /sbin/modprobe ipt_MASQUERADE
# /sbin/modprobe ip_conntrack_ftp #
# /sbin/modprobe ip_conntrack_irc
# /sbin/modprobe ip_nat_ftp #
# /sbin/modprobe ip_nat_irc

# Если будет форвард
#
   echo "1" > /proc/sys/net/ipv4/ip_forward
# Политики по умолчанию, т.е. не поддающие правилам уничтожаются
#
  $IPTABLES -P INPUT DROP
  $IPTABLES -P OUTPUT DROP
  $IPTABLES -P FORWARD DROP

  $IPTABLES -N bad_tcp_packets

  $IPTABLES -N allowed
  $IPTABLES -N tcp_packets
  $IPTABLES -N udp_packets
  $IPTABLES -N icmp_packets

  $IPTABLES -A bad_tcp_packets -p TCP --tcp-flags SYN,ACK SYN,ACK -m \
                 state --state NEW -j REJECT --reject-with tcp-reset

  $IPTABLES -A bad_tcp_packets -p TCP ! --syn -m state --state NEW -j \
                 LOG --log-prefix "New not syn:"

  $IPTABLES -A bad_tcp_packets -p TCP ! --syn -m state --state NEW -j DROP

  $IPTABLES -A allowed -p TCP --syn -j ACCEPT
  $IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
  $IPTABLES -A allowed -p TCP -j DROP

# тут пинги и прочие ICMP
  $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
  $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

# Открываем нужные порты, нужному IP
  $IPTABLES -A INPUT -p TCP -s 222.222.222.222  -m multiport --port 443,21,22,53 -j ACCEPT
  $IPTABLES -A INPUT -p UDP -s 222.222.222.222  -m multiport --port 80,53,123 -j ACCEPT

$IPTABLES -A INPUT -p TCP -m state --state RELATED -j ACCEPT

$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -s $LAN_IP_RANGE -d $LAN_IP -j ACCEPT

$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets

$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \                                                                                                                                                                        
           --log-level DEBUG --log-prefix "IPT INPUT packet died: "

# 
# если надо форвардить (FORWARD)
#
$IPTABLES -A FORWARD -p TCP -j bad_tcp_packets

# тут пишем кого куда и по каким портам.

$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG \
              --log-level DEBUG --log-prefix "IPT FORWARD packet died: "
#
# OUTPUT
#
$IPTABLES -A OUTPUT -p TCP -j bad_tcp_packets
$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT

$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
         --log-level DEBUG --log-prefix "IPT OUTPUT packet died: "

Re: Настройка iptables

Добавлено: 2012-04-17 8:40:51
icb
как-то так...
Сложновато и многовато для простой задачи.
Этими двумя строками я обойтись не смогу?

Код: Выделить всё

iptables -P INPUT DROP
iptables -A INPUT -s 222.222.222.222 -j ACCEPT
Столкнулся со сложностями при вызове некоторых команд:

Код: Выделить всё

# /sbin/modprobe ip_tables
modprobe: could not parse modules.dep

# iptables -A INPUT -s 222.222.222.222 -j ACCEPT
iptables v1.2.11: Couldn't load target `standard':/lib/iptables/libipt_standard.so: cannot open shared object file: No such file or directory
Как можно обойти эти ошибки?

Re: Настройка iptables

Добавлено: 2012-04-17 11:29:16
Graf
icb писал(а):Сложновато и многовато для простой задачи.
Это для более подробного разъяснения (или, чтоб больше напугать :) ) http://www.opennet.ru/docs/RUS/iptables
icb писал(а): Этими двумя строками я обойтись не смогу?

Код: Выделить всё

iptables -P INPUT DROP
iptables -A INPUT -s 222.222.222.222 -j ACCEPT
Судя по тому, что выдало, уже нет.
У тебя старое ядро со старым iptables, а уже 1.4.13 выложено http://www.netfilter.org/projects/iptab ... loads.html.
И скомпилировано оно у тебя без некоторых модулей.

Давай посмотрим на

Код: Выделить всё

# iptables -L

Re: Настройка iptables

Добавлено: 2012-04-17 11:36:20
Graf
P.S. Имхо, лучше правила составлять в скрипте, потомучто они в скрипте упорядочены как тебе надо и ты можешь проследить порядок прохождения пакета по цепочкам, а так как хочешь ты, ты просто добавляешь правило вконец цепочки, не отменяя и(или) удаляя старое. Искать где косяк, потом будет гораздо сложней.

Re: Настройка iptables

Добавлено: 2012-04-17 11:48:21
icb
У тебя старое ядро со старым iptables
Обновить его я не могу :(
Имхо, лучше правила составлять в скрипте, потомучто они в скрипте упорядочены как тебе надо и ты можешь проследить порядок прохождения пакета по цепочкам
Согласен, но кроме этих 2 строк особо ничего в файле и не будет. Если точнее, то

Код: Выделить всё

#!/bin/sh
iptables --flush
iptables -P INPUT DROP
iptables -A INPUT -s 222.222.222.222 -j ACCEPT
и вызов этого скрипта в кроне.

Re: Настройка iptables

Добавлено: 2012-04-17 11:59:14
Graf
icb писал(а):
У тебя старое ядро со старым iptables
Обновить его я не могу :(
И не надо, работает же без проблем.
icb писал(а):
Имхо, лучше правила составлять в скрипте, потомучто они в скрипте упорядочены как тебе надо и ты можешь проследить порядок прохождения пакета по цепочкам
Согласен, но кроме этих 2 строк особо ничего в файле и не будет. Если точнее, то

Код: Выделить всё

#!/bin/sh
iptables --flush
iptables -P INPUT DROP
iptables -A INPUT -s 222.222.222.222 -j ACCEPT
и вызов этого скрипта в кроне.
дык ошибку же выдало, значит не сработает.
Столкнулся со сложностями при вызове некоторых команд:

Код: Выделить всё

# iptables -A INPUT -s 222.222.222.222 -j ACCEPT
iptables v1.2.11: Couldn't load target `standard':/lib/iptables/libipt_standard.so: cannot open shared object file: No such file or directory
давай на iptables -L все же поглядим.

Re: Настройка iptables

Добавлено: 2012-04-18 8:49:46
icb

Код: Выделить всё

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Re: Настройка iptables

Добавлено: 2012-04-18 12:07:31
Graf
мдя...:)

двумя-тремя строками тут не обойтись.
запретить весь INPUT, кроме себя любимого нельзя.
да и для себя открывай только те порты, с которыми будешь работать, зачем тебе более 65 000 портов? :)

Re: Настройка iptables

Добавлено: 2012-04-18 12:43:02
icb
двумя-тремя строками тут не обойтись.
Что писать? ;)
да и для себя открывай только те порты, с которыми будешь работать, зачем тебе более 65 000 портов?
Думал так проще :)

Re: Настройка iptables

Добавлено: 2012-04-18 13:03:06
Graf
icb писал(а):
двумя-тремя строками тут не обойтись.
Что писать? ;)
запусти скрипт, тот, что я выше давал и смотри логи.

Re: Настройка iptables

Добавлено: 2012-04-18 13:36:31
icb
запусти скрипт, тот, что я выше давал и смотри логи.
Полностью скрипт запускать не решаюсь: если часть правил не отработает, то я не получу доступ к серверу.
Так уже было - отработали правила DROP, а ACCEPT не отработали.

Re: Настройка iptables

Добавлено: 2012-04-19 5:56:44
FiL
icb писал(а):
запусти скрипт, тот, что я выше давал и смотри логи.
Полностью скрипт запускать не решаюсь: если часть правил не отработает, то я не получу доступ к серверу.
Так уже было - отработали правила DROP, а ACCEPT не отработали.
Поэтому надо написать скрипт, который сбрасывает все правила и полиси устанавливает в ACCEPT.
И этот скрипт в крон раз в час.
И потом спокойно играть. Если что не так, то максимум через час правила сбросятся.

Ну а далее... далее двух строчек мало. Нужно минимум 3.

Код: Выделить всё

#!/bin/sh
iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 222.222.222.222 -j ACCEPT

Re: Настройка iptables

Добавлено: 2012-04-19 6:48:58
Graf
2icb
FiL писал(а): Поэтому надо написать скрипт, который сбрасывает все правила и полиси устанавливает в ACCEPT.
И этот скрипт в крон раз в час.
И потом спокойно играть. Если что не так, то максимум через час правила сбросятся.

Код: Выделить всё

#!/bin/sh

IPTABLES="/usr/sbin/iptables"

$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
$IPTABLES -t mangle -P PREROUTING ACCEPT
$IPTABLES -t mangle -P OUTPUT ACCEPT
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X

Re: Настройка iptables

Добавлено: 2012-04-19 8:55:30
icb
Поэтому надо написать скрипт, который сбрасывает все правила и полиси устанавливает в ACCEPT.
Так проблемы именно в том, что ACCEPT правила не работают (похоже не нравится аргумент -j).
Т.е. можно сколько угодно экспериментировать, но пока правила с ACCEPT не заработают - будет только отрубаться доступ (уже проверял пару раз).

Код: Выделить всё

$IPTABLES -P INPUT ACCEPT
.......
$IPTABLES -F
-F не отменит первое разрешение?

Re: Настройка iptables

Добавлено: 2012-04-19 9:22:01
Graf
icb писал(а):
Поэтому надо написать скрипт, который сбрасывает все правила и полиси устанавливает в ACCEPT.
Так проблемы именно в том, что ACCEPT правила не работают (похоже не нравится аргумент -j).
Т.е. можно сколько угодно экспериментировать, но пока правила с ACCEPT не заработают - будет только отрубаться доступ (уже проверял пару раз).
а из чего следует, что ACCEPT не срабатывает? т.е. есть некий вывод ошибки? можно взглянуть?
icb писал(а):

Код: Выделить всё

$IPTABLES -P INPUT ACCEPT
.......
$IPTABLES -F
-F не отменит первое разрешение?
нет.

Код: Выделить всё

# man iptables
..........
       -F, --flush [chain]
              Flush  the  selected  chain (all the chains in the table if none is given).  This is equivalent to deleting all the rules
              one by one.
..........
     -P, --policy chain target
              Set  the  policy  for the chain to the given target.  See the section TARGETS for the legal targets.  Only built-in (non-
              user-defined) chains can have policies, and neither built-in nor user-defined chains can be policy targets.
...........

Re: Настройка iptables

Добавлено: 2012-04-19 9:54:13
icb
а из чего следует, что ACCEPT не срабатывает? т.е. есть некий вывод ошибки? можно взглянуть?

Код: Выделить всё

# iptables -A INPUT -s 222.222.222.222 -j ACCEPT
iptables v1.2.11: Couldn't load target `standard':/lib/iptables/libipt_standard.so: cannot open shared object file: No such file or directory

Re: Настройка iptables

Добавлено: 2012-04-19 16:46:05
FiL
ты определись какую проблему мы тебе решаем - настройка правил фаера или сам факт, что у тебя фаер в принципе не работает?
Это две абсолютно разные, непересекающиеся проблемы. Судя по первому посту - мы тебе помогаем правила написать. А уж настроить систему, чтоб фаервол работал в принципе - это уже тема совершенно другого топика.

Re: Настройка iptables

Добавлено: 2012-04-19 16:58:58
Hrafn
ТС, конфиг фаера полностью покажите... а также если еще что-то касательно его настраивали

Re: Настройка iptables

Добавлено: 2012-04-20 9:03:24
icb
ты определись какую проблему мы тебе решаем - настройка правил фаера или сам факт, что у тебя фаер в принципе не работает?
Проблема одна - запретить все соеденения, разрешить только с моего IP.
Сказать что iptables не работает нельзя - общие правила отрабатывают корректно. И выше было сказано:
Graf писал(а):
icb писал(а):
У тебя старое ядро со старым iptables
Обновить его я не могу :(
И не надо, работает же без проблем.
Я сделал вывод, что в новой версии изменился формат правил
конфиг фаера полностью покажите... а также если еще что-то касательно его настраивали
Ничего не настраивал. Откуда оно взялось уже писал.
Конфига возможно вообще нет (не могу найти).

Re: Настройка iptables

Добавлено: 2012-04-20 9:42:52
Graf
Hrafn писал(а):ТС, конфиг фаера полностью покажите... а также если еще что-то касательно его настраивали
думаю, его вообще нет :), ибо
icb писал(а):

Код: Выделить всё

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
2icb
Покажи

Код: Выделить всё

# uname -a