Добрый день. Поднял iptables, написал правила, но доступа к машине извне нет, (ни с ssh, ни с http (apache 80)) правила следующие: | Код | Chain INPUT (policy DROP 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 2 11796 1395K DROP all -- !lo * 0.0.0.0/0 0.0.0.0/0 state NEW 3 0 0 DROP all -- !lo * 127.0.0.0/8 0.0.0.0/0 4 36259 2840K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 5 0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW 6 0 0 DROP udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:138 7 0 0 REJECT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:113 reject-with icmp-port-unreachable 8 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68 9 0 0 RETURN udp -- * * 0.0.0.0/0 0.0.0.0/0 10 0 0 DROP icmp -f * * 0.0.0.0/0 0.0.0.0/0 11 0 0 ACCEPT icmp -- eth1 * 0.0.0.0/0 0.0.0.0/0 icmp type 4 12 0 0 ACCEPT icmp -- eth1 * 0.0.0.0/0 0.0.0.0/0 icmp type 0 13 0 0 DROP tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp multiport dports 783 14 0 0 DROP tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp multiport dports 3310 15 0 0 DROP tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp multiport dports 10000 16 0 0 ACCEPT udp -- eth1 * 0.0.0.0/0 0.0.0.0/0 udp spt:53 dpts:1024:65535 17 0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp spt:53 dpts:1024:65353 18 0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp spt:113 dpts:1024:65535 flags:!0x17/0x02 19 0 0 DROP tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:113 20 0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp spt:22 dpts:1024:65535 flags:!0x17/0x02 21 0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp spt:22 dpts:1024:65535 flags:!0x17/0x02 22 0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp spt:21 dpts:1024:65535 flags:!0x17/0x02 23 0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpts:1024:65535 flags:!0x17/0x02 multiport sports 80,443 24 0 0 ACCEPT tcp -- eth0_rename * 0.0.0.0/0 0.0.0.0/0 tcp dpts:1024:65535 flags:!0x17/0x02 multiport sports 80,443 25 0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp spt:20 dpts:1024:65535 26 0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp spts:1024:65535 dpts:1024:65535 flags:!0x17/0x02 27 0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp spt:23 dpts:1024:65535 flags:!0x17/0x02 28 0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp spt:79 dpts:1024:65535 flags:!0x17/0x02 29 0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp spt:43 dpts:1024:65535 flags:!0x17/0x02 30 0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp spt:70 dpts:1024:65535 flags:!0x17/0x02 31 0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp spt:210 dpts:1024:65535 flags:!0x17/0x02 32 0 0 ACCEPT udp -- eth0_rename * 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68 33 0 0 ACCEPT udp -- eth1 * 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
Chain OUTPUT (policy DROP 4336 packets, 260K bytes) num pkts bytes target prot opt in out source destination 1 0 0 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0 2 0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW 3 35353 1927K ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 4 0 0 DROP icmp -f * * 0.0.0.0/0 0.0.0.0/0 5 0 0 ACCEPT icmp -- * eth1 0.0.0.0/0 0.0.0.0/0 icmp type 4 6 0 0 ACCEPT icmp -- * eth1 0.0.0.0/0 0.0.0.0/0 icmp type 8 7 0 0 ACCEPT udp -- * eth1 0.0.0.0/0 0.0.0.0/0 udp spts:1024:65535 dpt:53 8 0 0 ACCEPT tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp spts:1024:65535 dpt:53 9 0 0 ACCEPT tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp spts:1024:65535 dpt:113 10 0 0 ACCEPT tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp spts:1024:65535 dpt:22 11 0 0 ACCEPT tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp spts:1020:1023 dpt:22 12 0 0 ACCEPT tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp spts:1024:65535 dpt:21 13 0 0 ACCEPT tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp spts:1024:65535 multiport dports 80,443 14 1107 339K ACCEPT tcp -- * eth0_rename 0.0.0.0/0 0.0.0.0/0 tcp spts:1024:65535 multiport dports 80,443 15 0 0 ACCEPT tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp spts:1024:65535 dpt:20 flags:!0x17/0x02 16 0 0 ACCEPT tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp spts:1024:65535 dpts:1024:65535 17 0 0 ACCEPT tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp spts:1024:65535 dpt:23 18 0 0 ACCEPT tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp spt:23 dpts:1024:65535 19 0 0 ACCEPT tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp spts:1024:65535 dpt:79 20 0 0 ACCEPT tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp spts:1024:65535 dpt:43 21 0 0 ACCEPT tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp spts:1024:65535 dpt:70 22 0 0 ACCEPT tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp spts:1024:65535 dpt:210 23 0 0 ACCEPT udp -- * eth1 0.0.0.0/0 0.0.0.0/0 udp spts:32769:65535 dpts:33434:33523 24 0 0 ACCEPT udp -- * eth0_rename 0.0.0.0/0 0.0.0.0/0 udp spt:68 dpt:67 25 0 0 ACCEPT udp -- * eth1 0.0.0.0/0 0.0.0.0/0 udp spt:68 dpt:67
|
вот что в скрипте автозапуска: | Код | #!/bin/sh
# Задаём некоторые переменные
# Исполняемый файл IPT="/sbin/iptables"
# Сетевые интерфейсы INET_IFACE="eth1" #интерфейс, смотрящий в WAN (gateway 192.168.10.1) INET_IFACE_INTERNAL="eth0_rename" #интерфейс, смотрящий в LAN (192.168.10.*)
UNPRIPORTS="1024:65535"
start_fw() { # Включить перенаправление пакетов через ядро. echo 1 > /proc/sys/net/ipv4/ip_forward
# Сбросить правила и удалить цепочки. $IPT -F $IPT -X
# Политики по умолчанию. $IPT -P INPUT DROP $IPT -P FORWARD ACCEPT $IPT -P OUTPUT DROP
# Разрешаем прохождение любого трафика по интерфейсу обратной петли. $IPT -A INPUT -i lo -j ACCEPT $IPT -A OUTPUT -o lo -j ACCEPT $IPT -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE # Запрещаем любые новые подключения с любых интерфейсов, кроме lo к компьютеру $IPT -A INPUT -m state ! -i lo --state NEW -j DROP
# Если интерфейс не lo, то запрещаем входить в список его адресов $IPT -A INPUT -s 127.0.0.1/255.0.0.0 ! -i lo -j DROP
# Принимать все пакеты, которые ининциализированы из уже установленного соединения, и имеющим признак ESTABLISHED. # Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении. $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Эти правила предохраняют от некоторых типов атак: # SYN наводнение. # Приводит к связыванию системных ресурсов, так что реальный обмен данными становится невозможным. $IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP $IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
# UDP наводненние # Службы, использующие UDP, очень часто становятся мишенью для атак с целью вывода системы из строя. $IPT -A INPUT -p UDP -s 0/0 --destination-port 138 -j DROP $IPT -A INPUT -p UDP -s 0/0 --destination-port 113 -j REJECT $IPT -A INPUT -p UDP -s 0/0 --source-port 67 --destination-port 68 -j ACCEPT $IPT -A INPUT -p UDP -j RETURN $IPT -A OUTPUT -p UDP -s 0/0 -j ACCEPT
# ICMP - перенаправление # ICMP - сообщение указывает системе изменить содержимое таблиц маршрутизации с тем, чтобы направлять пакеты по более короткому маршруту. Может быть использовано взломщиком для перенаправления вашего трафика через свою машину. $IPT -A INPUT --fragment -p ICMP -j DROP $IPT -A OUTPUT --fragment -p ICMP -j DROP
# Разрешаем ICMP соединение. Значительная часть ICMP используется для передачи сообщений о том, что происходит с тем или иным UDP или TCP соединением. $IPT -A INPUT -p icmp -m icmp -i $INET_IFACE --icmp-type source-quench -j ACCEPT $IPT -A OUTPUT -p icmp -m icmp -o $INET_IFACE --icmp-type source-quench -j ACCEPT
# Разрешаем себе ping наружу $IPT -A INPUT -p icmp -m icmp -i $INET_IFACE --icmp-type echo-reply -j ACCEPT $IPT -A OUTPUT -p icmp -m icmp -o $INET_IFACE --icmp-type echo-request -j ACCEPT
# Прописываем порты, которые открыты в системе, но которые не должны быть открыты на сетевых интерфейсах $IPT -A INPUT -p tcp -m tcp -m multiport -i $INET_IFACE -j DROP --dports 783 $IPT -A INPUT -p tcp -m tcp -m multiport -i $INET_IFACE -j DROP --dports 3310 $IPT -A INPUT -p tcp -m tcp -m multiport -i $INET_IFACE -j DROP --dports 10000
# Разрешаем сервер имён DNS $IPT -A OUTPUT -p udp -m udp -o $INET_IFACE --dport 53 --sport $UNPRIPORTS -j ACCEPT $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 53 --sport $UNPRIPORTS -j ACCEPT $IPT -A INPUT -p udp -m udp -i $INET_IFACE --dport $UNPRIPORTS --sport 53 -j ACCEPT $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport 1024:65353 --sport 53 -j ACCEPT
# Разрешаем AUTH-запросы на удалённые сервера, на свой же компьютер - запрещаем $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 113 --sport $UNPRIPORTS -j ACCEPT $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 113 -j ACCEPT ! --syn $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport 113 -j DROP
# Открываем некоторые порты # SSH клиент (22) $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 22 --sport $UNPRIPORTS -j ACCEPT $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 22 -j ACCEPT ! --syn $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 22 --sport 1020:1023 -j ACCEPT $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 22 -j ACCEPT ! --syn
# FTP клиент $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 21 --sport $UNPRIPORTS -j ACCEPT $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 21 -j ACCEPT ! --syn # HTTP/HTTPS клиент $IPT -A OUTPUT -p tcp -m tcp -m multiport -o $INET_IFACE --sport $UNPRIPORTS -j ACCEPT --dports 80,443 $IPT -A INPUT -p tcp -m tcp -m multiport -i $INET_IFACE --dport $UNPRIPORTS -j ACCEPT --sports 80,443 ! --syn # HTTP/HTTPS клиент $IPT -A OUTPUT -p tcp -m tcp -m multiport -o $INET_IFACE_INTERNAL --sport $UNPRIPORTS -j ACCEPT --dports 80,443 $IPT -A INPUT -p tcp -m tcp -m multiport -i $INET_IFACE_INTERNAL --dport $UNPRIPORTS -j ACCEPT --sports 80,443 ! --syn
# Разрешаем finger, whois, gorper, wais. Traceroute - разрешаем себе, к нам не проломятся - запрещено. Telnet - запретил, чтобы соблазна не было передавать пароли открытым текстом. $IPT -A INPUT -p tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 20 -j ACCEPT $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 20 --sport $UNPRIPORTS -j ACCEPT ! --syn $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport $UNPRIPORTS --sport $UNPRIPORTS -j ACCEPT $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport $UNPRIPORTS -j ACCEPT ! --syn $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 23 --sport $UNPRIPORTS -j ACCEPT $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 23 -j ACCEPT ! --syn $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport $UNPRIPORTS --sport 23 -j ACCEPT $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 79 --sport $UNPRIPORTS -j ACCEPT $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 79 -j ACCEPT ! --syn $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 43 --sport $UNPRIPORTS -j ACCEPT $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 43 -j ACCEPT ! --syn $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 70 --sport $UNPRIPORTS -j ACCEPT $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 70 -j ACCEPT ! --syn $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 210 --sport $UNPRIPORTS -j ACCEPT $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 210 -j ACCEPT ! --syn $IPT -A OUTPUT -p udp -m udp -o $INET_IFACE --dport 33434:33523 --sport 32769:65535 -j ACCEPT
# Разрешаем прохождение DHCP запросов через iptables. Нужно, если IP адрес динамический $IPT -A OUTPUT -p udp -m udp -o eth0_rename --dport 67 --sport 68 -j ACCEPT $IPT -A INPUT -p udp -m udp -i eth0_rename --dport 68 --sport 67 -j ACCEPT # Разрешаем прохождение DHCP запросов через iptables. Нужно, если IP адрес динамический $IPT -A OUTPUT -p udp -m udp -o eth1 --dport 67 --sport 68 -j ACCEPT $IPT -A INPUT -p udp -m udp -i eth1 --dport 68 --sport 67 -j 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
|
P.S. Если сделать: | Код | iptables -F iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT
|
то всё работает, и запросы к apache, и ssh  В чём же дело? Это сообщение отредактировал(а) ZeeLax - 6.6.2009, 08:52
|