题 如何在Ubuntu上启动/停止iptables?


如何在Ubuntu上启动/停止iptables服务?

我试过了

 service iptables stop

但它正在给予 “无法识别的服务”

它为什么这样做?还有其他方法吗?


81
2018-04-03 11:15




我认为一些混乱来自这样的文章: cyberciti.biz/faq/turn-on-turn-off-firewall-in-linux 这只适用于Fedora / Red Hat并声称你会发现它 /etc/init.d/ 它(un)有帮助的是你在google搜索'关闭iptables ubuntu'时获得的顶级链接。 - icc97


答案:


我不知道“Ubuntu”,但在Linux中一般来说,“iptables”不是服务 - 它是操纵netfilter内核防火墙的命令。您可以通过将所有标准链上的默认策略设置为“ACCEPT”并刷新规则来“禁用”(或停止)防火墙。

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

(您可能还需要刷新其他表,例如“nat”,如果您已经使用过它们)

Ubuntu网站上的以下文章描述了如何设置用于NetworkManager的iptables: https://help.ubuntu.com/community/IptablesHowTo


65
2018-04-03 17:36



这会不会永远抛弃所有现行规则?最好先用sudo iptables-save> / tmp / rules将它们保存在某个地方 - Jens Timmerman
这不会停止服务,但只允许一切通过。 - Frederik Nielsen
啊,谢谢。 iptables -F 是我失踪的:-) - Cameron
@JensTimmerman iptables-save > /tmp/rules 救了我的一天。谢谢 - blagus


你错了:-)

您正在寻找的命令是:

$ sudo ufw disable

44
2017-08-15 18:40



确定我们是否在谈论ufw,但这篇文章是关于iptables的 - webjay
好吧,我以为它是Ubuntu的默认安装,而且那个没有iptables,但有ufw。 - Frederik Nielsen
ufw只是iptables的前端:“Iptables是一个防火墙,默认安装在所有官方Ubuntu发行版(Ubuntu,Kubuntu,Xubuntu)上。当你安装Ubuntu时,iptables就在那里,但默认允许所有流量.Ubuntu 8.04来了使用ufw - 一个轻松管理iptables防火墙的程序。“ help.ubuntu.com/community/IptablesHowTo - benjaoming
可能是,但是在Ubuntu中ufw == iptables(或多或少),禁用ufw等于禁用iptables。 - Frederik Nielsen
sudo ufw status verbose; sudo iptables -L; - user27465


我会首先检查它是否已安装(可能是):

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安装上进行了测试。


29
2018-04-05 07:46



我不知道为什么会有这么多的upvotes,iptables是一个内核模块。它永远不是一个可以“停止”的“服务”。它们用于告诉内核如何处理连接。同样在生产环境中,您永远不应禁用防火墙。如果某些东西不起作用,找到正确的解决方案,而不是简单的解决方案。 - Broco


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 <ubuntu@james.crocker.name>
 # 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

您可以从shell添加新规则,这些规则将立即处于活动状态,并在服务停止时添加到/etc/iptables.conf(这意味着它们将在系统关闭时保存)。

我希望这对每个人都有帮助。


16
2017-10-17 07:53





因为iptables和ufw都是管理的方法 网络过滤器 Linux中的防火墙,并且由于两者在Ubuntu中都是默认可用的,因此您可以使用它们来启动和停止(以及管理)防火墙规则。

iptables更灵活,但因为ufw为简单和典型的函数提供了一个非常简单的界面语言,你可以使用:

sudo ufw disable #禁用防火墙

sudo ufw enable  #启用防火墙

要查看当前的防火墙设置 sudo ufw status verbose, 要么 iptables -L 。

Ubuntu社区的文档页面 iptables的UFW 有更多的信息。


6
2017-07-02 22:37





如果我没记错的话,在ubuntu指南中设置iptables的建议方法是将其设置为网络脚本的一部分。这意味着没有像BSD风格OS那样的/etc/init.d/iptables脚本。


3
2018-04-03 23:05



在Debian Woody中有(当时存在Ubuntu吗?),无论如何它今天仍由sysadmins实现。他们为什么改变这个想法?
我不是一个线索...但我似乎记得它是我设置ubuntu服务器9.10或其他什么时我必须弄清楚的烦人的事情之一...因为我想要一个最近有postgres的发行版发行版是服务器...否则我运行arch linux。 - xenoterracide


看起来有几种方法可以在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 执行加载防火墙规则。因此,在使用上述命令删除所有规则后执行相同的命令将导致您要求的“重新加载防火墙”。


3
2018-04-05 04:32