iptables не стартует автоматом
Welmar 15 мая, 2012 - 18:05
Делаю все стандартно
Система
#uname -a
Linux localhost 3.2.11-hardened #2 SMP Tue May 8 19:41:23 i686 Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz GenuineIntel GNU/Linux
создал скрипт запуска iptables обозвал rc.fw
сделал его запускающимся при загрузке
#rc-update add rc.fw default
Таблицы сохранял
#/etc/init.d/rc.fw save
Сохраняются стандартно в /var/lib/iptables/rules-save
После перезагрузки - пустые таблицы
Из командной строки скрипт стартует - все нормально.
Почему не стартует автоматом - непонятно...
»
- Для комментирования войдите или зарегистрируйтесь

/etc/init.d/rc.fw в
/etc/init.d/rc.fw в студию
Чем стандартный не устраивает?
тело
тело скрипта
rc.fw
#!/bin/sh # # IPTables Configuration. # IPTABLES="/sbin/iptables " # Internet interface Configuration, t.e device config - aka netcard # # # WAN config # WAN_IP="192.168.1.163" WAN_IP_RANGE="192.168.1.0/24" INET_IFACE="eth1" # # Local Area Network configuration. # LAN_IP="192.168.0.1" LAN_IP_RANGE="192.168.0.0/24" LAN_IFACE="eth0" # # Localhost Configuration. # LO_IFACE="lo" LO_IP="127.0.0.1" start_fw() { # Включить перенаправление пакетов через ядро. echo 1 > /proc/sys/net/ipv4/ip_forward # Сбросить правила и удалить цепочки. $IPTABLES -F $IPTABLES -X $IPTABLES -F -t nat $IPTABLES -X -t nat $IPTABLES -F -t mangle $IPTABLES -X -t mangle # Политики по умолчанию. $IPTABLES -P INPUT DROP $IPTABLES -P FORWARD DROP $IPTABLES -P OUTPUT DROP # # Create chain for bad tcp packets # $IPTABLES -N bad_tcp_packets $IPTABLES -N bad_tcp_packets # # Create separate chains for ICMP, TCP and UDP to traverse # $IPTABLES -N allowed $IPTABLES -N tcp_packets $IPTABLES -N udp_packets $IPTABLES -N icmp_packets # # bad_tcp_packets chain # $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 # # allowed chain # $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 # # TCP rules # $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed # пока не вырубаем ssh $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 25 -j allowed $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 110 -j allowed # проверить этот порт $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 113 -j allowed $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 143 -j allowed $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 443 -j allowed $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 993 -j allowed $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 995 -j allowed # # UDP ports # $IPTABLES -A udp_packets -p UDP -s 0/0 --source-port 53 -j ACCEPT $IPTABLES -A udp_packets -p UDP -s 0/0 --source-port 123 -j ACCEPT $IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d 255.255.255.255 --destination-port 67:68 -j DROP # # ICMP rules # # ICMP - перенаправление # ICMP - сообщение указывает системе изменить содержимое таблиц маршрутизации с тем, что бы нап$ # пакеты по более короткому маршруту. Может быть использовано взломщиком для перенаправления ва$ $IPTABLES -A icmp_packets --fragment -p ICMP -j DROP #$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 0 -j ACCEPT $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 # Разрешаем ICMP соединение. Значительная часть ICMP используется для передачи сообщений о # том, что происходит с тем или иным UDP или TCP соединением. $IPTABLES -A icmp_packets -p icmp --icmp-type source-quench -j ACCEPT #INPUT chain # # # Bad TCP packets we don't want. # $IPTABLES -A INPUT -p tcp -j bad_tcp_packets # # Rules for special networks not part of the Internet # $IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT $IPTABLES -A INPUT -p ALL -i $LO_IFACE -j ACCEPT # # Rules for incoming packets from the internet. # $IPTABLES -A INPUT -p ALL -i $INET_IFACE -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 # # If you have a Microsoft Network on the outside of your firewall, you may # also get flooded by Multicasts. We drop them so we do not get flooded by # logs # $IPTABLES -A INPUT -i $INET_IFACE -d 224.0.0.0/8 -j DROP # # FORWARD chain # # # Bad TCP packets we don't want # $IPTABLES -A FORWARD -p tcp -j bad_tcp_packets # # Accept the packets we actually want to forward # $IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # OUTPUT chain # # Bad TCP packets we don't want. # $IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets # # Special OUTPUT rules to decide which IP's to allow. # $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 -o $INET_IFACE -j ACCEPT ###### # nat table # $IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE } 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.fw start|stop|restart|reload|force-reload" exit 1 ;; esac exit 0Не знаю на сколько это
Не знаю на сколько это критично, но инит скрипты выполняются с помощью #!/sbin/runscript
Вопрос, чем же вас стандартный скрипт не устраивает остается: ваш умеет меньше стандартного, да еще и не работает. Может не стоит возиться с велосипедом?
> создал скрипт запуска
> создал скрипт запуска iptables обозвал rc.fw
Так есть же
Не исполользуй свой инит,
Не исполользуй свой инит, используй системный. Для сохранения правил в удобочитаемом виде сохрани где-нибудь .sh-файл и запускай при изменении.
Не грусти, товарищ! Всё хорошо, beautiful good!