Как запустить /остановить iptables на Ubuntu?

Как запустить /остановить службу iptables на Ubuntu?

Я пробовал

 service iptables stop

, но он предоставляет "непризнанную услугу" .

Почему это так? Есть ли другой метод?

81 голос | спросил neha soni 3 PMpSat, 03 Apr 2010 15:15:41 +040015Saturday 2010, 15:15:41

11 ответов


65

Я не знаю о «Ubuntu», но в Linux обычно «iptables» не является сервисом - это команда для управления брандмауэром ядра netfilter. Вы можете «отключить» (или остановить) брандмауэр, установив политики по умолчанию для всех стандартных цепочек на «ПРИНЯТЬ» и сбросить правила.

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F

(Возможно, вам понадобится также очистить другие таблицы, например «nat», если вы их использовали)

В следующей статье на веб-сайте Ubuntu описывается настройка iptables для использования с NetworkManager: https: //help. ubuntu.com/community/IptablesHowTo

ответил JMusgrove 3 PMpSat, 03 Apr 2010 21:36:09 +040036Saturday 2010, 21:36:09
45

Вы все ошибаетесь: -)

Команда, которую вы ищете, это:

$ sudo ufw disable
ответил Frederik Nielsen 15 PM000000100000000031 2012, 22:40:00
28

Я бы сначала проверил, установлен ли он (возможно, это так):

dpkg -l | grep iptables

В Ubuntu iptables не является сервисом. Чтобы остановить его, вы должны сделать следующее:

sudo iptables-save > /root/firewall.rules
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

Чтобы восстановить прежние правила:

iptables-restore < /root/firewall.rules

Это было взято из http://www.cyberciti.biz/faq /turn-on-turn-off-firewall-in-linux / и был протестирован на многих Ubuntu 8.X & 9.10.

ответил Embreau 5 AMpMon, 05 Apr 2010 11:46:47 +040046Monday 2010, 11:46:47
16

Iptables - это команда, которая не является сервисом, поэтому обычно невозможно использовать команды типа

service iptables start

или

service iptables stop

, чтобы запустить и остановить брандмауэр, но некоторые дистрибутивы, такие как centos, установили службу под названием iptables для запуска и остановки брандмауэра и файла конфигурации для его настройки. Во всяком случае, можно сделать сервис для управления редактированием ipotables или установкой скрипта для этой области. Все службы в linux, ubuntu не являются исключением, являются исполняемыми скриптами внутри папки /etc/init.d, которая реализует стандартный интерфейс (запуск, остановка, перезапуск) Возможный сценарий выглядит следующим образом:

 #!/bin/sh -e
 ### BEGIN INIT INFO
 # Provides:          iptables
 # Required-Start:    mountvirtfs ifupdown $local_fs
 # Default-Start:     S
 # Default-Stop:      0 6
 ### END INIT INFO

 # July 9, 2007
 # James B. Crocker <[email protected]>
 # Creative Commons Attribution - Share Alike 3.0 License (BY,SA)
 # Script to load/unload/save iptables firewall settings.

 PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"

 IPTABLES=/sbin/iptables
 IPTABLES_SAVE=/sbin/iptables-save
 IPTABLES_RESTORE=/sbin/iptables-restore

 IPTABLES_CONFIG=/etc/iptables.conf

 [ -x $IPTABLES ] || exit 0

 . /lib/lsb/init-functions


 case "$1" in
 start)
    log_action_begin_msg "Starting firewall"
         type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 120" || true
    if $IPTABLES_RESTORE < $IPTABLES_CONFIG ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
         type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 15" || true
    ;;

 stop)
    log_action_begin_msg "Saving current firewall configuration"
    if $IPTABLES_SAVE > $IPTABLES_CONFIG ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    log_action_begin_msg "Flushing ALL firewall rules from chains!"
    if $IPTABLES -F ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    log_action_begin_msg "Deleting ALL firewall chains [Warning: ACCEPTING ALL PORT SERVICES!]"
    if $IPTABLES -X ; then
        $IPTABLES -P INPUT ACCEPT
        $IPTABLES -P FORWARD ACCEPT
        $IPTABLES -P OUTPUT ACCEPT
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    ;;

 save)
    log_action_begin_msg "Saving current firewall configuration"
    if $IPTABLES_SAVE > $IPTABLES_CONFIG ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    ;;

 force-reload|restart)
    log_action_begin_msg "Reloading firewall configuration [Warning: POTENTIAL NETWORK INSECURITY DURING RELOAD]"
    $IPTABLES -F
    $IPTABLES -X
    if $IPTABLES_RESTORE < $IPTABLES_CONFIG ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    ;;

 *)
    echo "Usage: /etc/init.d/iptables {start|stop|save|restart|force-reload}"
    exit 1
    ;;
 esac

 exit 0 

Этот скрипт является частью этого учебника , все команды для настройки брандмауэра должны быть вставлены , согласно сценарию выше, в файл /etc/iptables.conf. Этот скрипт должен быть вставлен в файл с именем iptables в /etc/init.d и сделать его исполняемым с помощью

chmod+x *iptables* 

и добавьте службу на уровни выполнения, используя

update-rc.d iptables defaults

Вы можете добавить новые правила из оболочки, эти правила будут незамедлительно активны и будут добавлены в /etc/iptables.conf, когда остановка обслуживания (это означает, что они будут сохранены точно при завершении работы системы).

Я надеюсь, что это будет полезно для всех.

ответил puzzle-it 17 +04002011-10-17T11:53:32+04:00312011bEurope/MoscowMon, 17 Oct 2011 11:53:32 +0400 2011, 11:53:32
6

Поскольку оба iptables и ufw - это способы управления файловым сервером netfilter в Linux и потому, что оба доступны по умолчанию в Ubuntu, вы можете использовать либо для запуска, либо для остановки (и управления) правил брандмауэра.

iptables более гибкий, но поскольку ufw обеспечивает очень простой язык интерфейса для простой и типичной функции, которую вы можете использовать:

sudo ufw disable # Чтобы отключить брандмауэр

sudo ufw enable # Чтобы включить брандмауэр

Чтобы увидеть текущие настройки брандмауэра, используйте sudo ufw status verbose или iptables -L.

Сообщество Ubuntu документирует страницы iptables и UFW имеют гораздо больше информации.

ответил belacqua 3 J000000Wednesday13 2013, 02:37:18
3

Если я правильно помню, предлагаемый способ установки iptables в руководствах ubuntu - это настроить его как часть сетевых сценариев. это означает, что скрипт /etc/init.d/iptables не существует, как в ОС BSD.

ответил xenoterracide 4 AMpSun, 04 Apr 2010 03:05:47 +040005Sunday 2010, 03:05:47
3

Похоже, существует несколько способов управления брандмауэром в Ubuntu, поэтому вам может быть интересно прочитать это: https://help.ubuntu.com/community/IptablesHowTo#Configuration%20on%20startup

Чтобы удалить все текущие правила, вы можете использовать эти команды (поместите их в некоторый скрипт):

iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
iptables -t mangle -F
iptables -t mangle -X
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -F
iptables -t filter -X

В обычном случае правила брандмауэра по умолчанию сохраняются в каком-либо файле (например, /etc/iptables.rules). При загрузке системной команды iptables-restore </etc/iptables.rules выполняется для загрузки правил брандмауэра. Таким образом, выполнение одной и той же команды после того, как вы сбросили все правила, используя приведенные выше команды, приведет к «перезагрузке брандмауэра», о котором вы просили.

ответил Powerman 5 AMpMon, 05 Apr 2010 08:32:28 +040032Monday 2010, 08:32:28
3

Создайте файл на /etc/init.d /

touch fw.rc

Сделайте исполняемый файл chmod + x

Сделать символическую ссылку на этот файл на /etc/rc2.d /

ln -s /etc/init.d/fw.rc S80firewall

Измените S80firewall и добавьте следующие

iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -F

Вы можете добавить все свои пользовательские правила iptables в этот файл

Теперь вы можете перезапустить брандмауэр (iptables), запустив /etc/rc2.d/S80firewall (должен быть root)

ответил jerichorivera 17 +04002011-10-17T12:37:25+04:00312011bEurope/MoscowMon, 17 Oct 2011 12:37:25 +0400 2011, 12:37:25
2

У меня была такая же проблема. На самом деле не было iptables-persistent в /etc/init.d

Итак, я создал файл iptables-persistent в /etc/init.d

nano /etc/init.d/iptables-persistent

и написал следующее внутри:

#!/bin/sh
#       Written by Simon Richter <[email protected]>
#       modified by Jonathan Wiltshire <[email protected]>
#       with help from Christoph Anton Mitterer
#

### BEGIN INIT INFO
# Provides:          iptables-persistent
# Required-Start:    mountkernfs $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# X-Start-Before:    $network
# X-Stop-After:      $network
# Short-Description: Set up iptables rules
# Description:       Loads/saves current iptables rules from/to /etc/iptables
#  to provide a persistent rule set during boot time
### END INIT INFO

. /lib/lsb/init-functions

rc=0

load_rules()
{
    log_action_begin_msg "Loading iptables rules"

    #load IPv4 rules
    if [ ! -f /etc/iptables/rules.v4 ]; then
        log_action_cont_msg " skipping IPv4 (no rules to load)"
    else
        log_action_cont_msg " IPv4"
        iptables-restore < /etc/iptables/rules.v4 2> /dev/null
        if [ $? -ne 0 ]; then
            rc=1
        fi
    fi

    #load IPv6 rules    
    if [ ! -f /etc/iptables/rules.v6 ]; then
        log_action_cont_msg " skipping IPv6 (no rules to load)"
    else
        log_action_cont_msg " IPv6"
        ip6tables-restore < /etc/iptables/rules.v6 2> /dev/null
        if [ $? -ne 0 ]; then
            rc=1
        fi
    fi

    log_action_end_msg $rc
}

save_rules()
{
    log_action_begin_msg "Saving rules"

    #save IPv4 rules
    #need at least iptable_filter loaded:
    /sbin/modprobe -q iptable_filter
    if [ ! -f /proc/net/ip_tables_names ]; then
        log_action_cont_msg " skipping IPv4 (no modules loaded)"
    elif [ -x /sbin/iptables-save ]; then
        log_action_cont_msg " IPv4"
        iptables-save > /etc/iptables/rules.v4
        if [ $? -ne 0 ]; then
            rc=1
        fi
    fi

    #save IPv6 rules
    #need at least ip6table_filter loaded:
    /sbin/modprobe -q ip6table_filter
    if [ ! -f /proc/net/ip6_tables_names ]; then
        log_action_cont_msg " skipping IPv6 (no modules loaded)"
    elif [ -x /sbin/ip6tables-save ]; then
        log_action_cont_msg " IPv6"
        ip6tables-save > /etc/iptables/rules.v6
        if [ $? -ne 0 ]; then
            rc=1
        fi
    fi

    log_action_end_msg $rc
}

flush_rules()
{
    log_action_begin_msg "Flushing rules"

    if [ ! -f /proc/net/ip_tables_names ]; then
        log_action_cont_msg " skipping IPv4 (no module loaded)"
    elif [ -x /sbin/iptables ]; then
        log_action_cont_msg " IPv4"
        for param in F Z X; do /sbin/iptables -$param; done
        for table in $(cat /proc/net/ip_tables_names)
        do
            /sbin/iptables -t $table -F
            /sbin/iptables -t $table -Z
            /sbin/iptables -t $table -X
        done
        for chain in INPUT FORWARD OUTPUT
        do
            /sbin/iptables -P $chain ACCEPT
        done
    fi

    if [ ! -f /proc/net/ip6_tables_names ]; then
        log_action_cont_msg " skipping IPv6 (no module loaded)"
    elif [ -x /sbin/ip6tables ]; then
        log_action_cont_msg " IPv6"
        for param in F Z X; do /sbin/ip6tables -$param; done
        for table in $(cat /proc/net/ip6_tables_names)
        do
            /sbin/ip6tables -t $table -F
            /sbin/ip6tables -t $table -Z
            /sbin/ip6tables -t $table -X
        done
        for chain in INPUT FORWARD OUTPUT
        do
            /sbin/ip6tables -P $chain ACCEPT
        done
    fi

    log_action_end_msg 0
}

case "$1" in
start|restart|reload|force-reload)
    load_rules
    ;;
save)
    save_rules
    ;;
stop)
    # Why? because if stop is used, the firewall gets flushed for a variable
    # amount of time during package upgrades, leaving the machine vulnerable
    # It's also not always desirable to flush during purge
    echo "Automatic flushing disabled, use \"flush\" instead of \"stop\""
    ;;
flush)
    flush_rules
    ;;
*)
    echo "Usage: $0 {start|restart|reload|force-reload|save|flush}" >&2
    exit 1
    ;;
esac

exit $rc

, а затем предоставил разрешение chmod 755.

chmod 755 /etc/init.d/iptables-persistent

Теперь он отлично работает! Надеюсь, это может помочь кому-то.

ответил capitainabloc 17 PMpFri, 17 Apr 2015 13:39:28 +030039Friday 2015, 13:39:28
2

Если вы используете сервер Ubuntu в качестве гостевой системы VM (например, в VirtualBox), то можно включить libvirt . Если libvirt содержит некоторые встроенные сетевые фильтры, которые используют iptables. Эти фильтры могут быть сконфигурированы так, как описано в разделе брандмауэра в nwfilters .

Чтобы отключить правила iptables, вам нужно будет либо удалить все правила нарушения из libvirt, либо вы можете просто отключить libvirt, если вы его не используете. установите конфигурацию ручного переопределения (затем перезагрузитесь):

sudo bash -c 'echo "manual" > /etc/init/libvirt-bin.override'
ответил Pierz 1 PMpFri, 01 Apr 2016 17:38:44 +030038Friday 2016, 17:38:44
1

Вы используете команду, подходящую для RedHat и CentOS, а не Ubuntu или Debian.

http://www.cyberciti.biz/faq/ubuntu- сервера отключить брандмауэр-/

ответил iconoclast 14 AM00000020000003031 2013, 02:59:30

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132