Подскажите как сделать, а то даже протестировать негде

Модератор: weec
из от куда и куда? все порты и протоколы?icb писал(а):Linux не использую вообще, но надо настроить простенькое правило в iptales: запретить все соеденения, разрешить только с моего IP.
Подскажите как сделать, а то даже протестировать негде
Закрыть доступ от всех (по всем протоколам), кроме доступа с моего IP.из от куда и куда? все порты и протоколы?
Код: Выделить всё
iptables -P INPUT DROP
iptables -A INPUT --source 192.168.1.2 -j ACCEPT
Почти. Наверное я зря использовал подсеть 192.168.x.x - она вводит в заблуждение.т.е. есть некий комп (допустим с IP - 192.168.1.1), выхода в инет с этого компа нет, надо разрешить IP - 192.168.1.2 доступ к этому компу(192.168.1.1), а все остальные идут лесом, так?
Сам хост (комп) ходить может. Логи нужны (если сложности - можно и без них).а сам комп (192.168.1.1) куданить ходить может (должен), или он только для 192.168.1.2 будет работать? Логи вести надо?
Код: Выделить всё
#!/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: "
Сложновато и многовато для простой задачи.как-то так...
Код: Выделить всё
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
Это для более подробного разъяснения (или, чтоб больше напугатьicb писал(а):Сложновато и многовато для простой задачи.
Судя по тому, что выдало, уже нет.icb писал(а): Этими двумя строками я обойтись не смогу?Код: Выделить всё
iptables -P INPUT DROP iptables -A INPUT -s 222.222.222.222 -j ACCEPT
Код: Выделить всё
# iptables -L
Обновить его я не могуУ тебя старое ядро со старым iptables
Согласен, но кроме этих 2 строк особо ничего в файле и не будет. Если точнее, тоИмхо, лучше правила составлять в скрипте, потомучто они в скрипте упорядочены как тебе надо и ты можешь проследить порядок прохождения пакета по цепочкам
Код: Выделить всё
#!/bin/sh
iptables --flush
iptables -P INPUT DROP
iptables -A INPUT -s 222.222.222.222 -j ACCEPT
И не надо, работает же без проблем.icb писал(а):Обновить его я не могуУ тебя старое ядро со старым iptables![]()
дык ошибку же выдало, значит не сработает.icb писал(а):Согласен, но кроме этих 2 строк особо ничего в файле и не будет. Если точнее, тоИмхо, лучше правила составлять в скрипте, потомучто они в скрипте упорядочены как тебе надо и ты можешь проследить порядок прохождения пакета по цепочками вызов этого скрипта в кроне.Код: Выделить всё
#!/bin/sh iptables --flush iptables -P INPUT DROP iptables -A INPUT -s 222.222.222.222 -j ACCEPT
давай на iptables -L все же поглядим.Столкнулся со сложностями при вызове некоторых команд:Код: Выделить всё
# 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
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
Что писать?двумя-тремя строками тут не обойтись.
Думал так прощеда и для себя открывай только те порты, с которыми будешь работать, зачем тебе более 65 000 портов?
запусти скрипт, тот, что я выше давал и смотри логи.icb писал(а):Что писать?двумя-тремя строками тут не обойтись.![]()
Полностью скрипт запускать не решаюсь: если часть правил не отработает, то я не получу доступ к серверу.запусти скрипт, тот, что я выше давал и смотри логи.
Поэтому надо написать скрипт, который сбрасывает все правила и полиси устанавливает в ACCEPT.icb писал(а):Полностью скрипт запускать не решаюсь: если часть правил не отработает, то я не получу доступ к серверу.запусти скрипт, тот, что я выше давал и смотри логи.
Так уже было - отработали правила DROP, а ACCEPT не отработали.
Код: Выделить всё
#!/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
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
Так проблемы именно в том, что ACCEPT правила не работают (похоже не нравится аргумент -j).Поэтому надо написать скрипт, который сбрасывает все правила и полиси устанавливает в ACCEPT.
Код: Выделить всё
$IPTABLES -P INPUT ACCEPT
.......
$IPTABLES -F
а из чего следует, что ACCEPT не срабатывает? т.е. есть некий вывод ошибки? можно взглянуть?icb писал(а):Так проблемы именно в том, что ACCEPT правила не работают (похоже не нравится аргумент -j).Поэтому надо написать скрипт, который сбрасывает все правила и полиси устанавливает в ACCEPT.
Т.е. можно сколько угодно экспериментировать, но пока правила с ACCEPT не заработают - будет только отрубаться доступ (уже проверял пару раз).
нет.icb писал(а):-F не отменит первое разрешение?Код: Выделить всё
$IPTABLES -P INPUT ACCEPT ....... $IPTABLES -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.
...........
а из чего следует, что 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
Проблема одна - запретить все соеденения, разрешить только с моего IP.ты определись какую проблему мы тебе решаем - настройка правил фаера или сам факт, что у тебя фаер в принципе не работает?
Я сделал вывод, что в новой версии изменился формат правилGraf писал(а):И не надо, работает же без проблем.icb писал(а):Обновить его я не могуУ тебя старое ядро со старым iptables![]()
Ничего не настраивал. Откуда оно взялось уже писал.конфиг фаера полностью покажите... а также если еще что-то касательно его настраивали
думаю, его вообще нетHrafn писал(а):ТС, конфиг фаера полностью покажите... а также если еще что-то касательно его настраивали
2icbicb писал(а):Код: Выделить всё
# 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
Код: Выделить всё
# uname -a