V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
win7pro
V2EX  ›  Linux

不熟 iptables,请 V 友帮我看看?

  •  
  •   win7pro · 2019-07-17 16:48:36 +08:00 · 4063 次点击
    这是一个创建于 1987 天前的主题,其中的信息可能已经有所发展或是发生改变。
    下面这段 iptable 设置,input 这组默认是 policy DROP,但最后一行“ ACCEPT all -- anywhere anywhere ”是不是意思就全部都允许通过了?等于上面的都白配置了是吗?
    不熟 iptables,求指教。

    ----------------------

    Chain INPUT (policy DROP)
    target prot opt source destination
    ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
    ACCEPT tcp -- anywhere anywhere tcp dpt:http
    ACCEPT tcp -- anywhere anywhere tcp dpt:https
    ACCEPT tcp -- anywhere anywhere tcp dpt:28888
    ACCEPT all -- anywhere anywhere

    Chain FORWARD (policy DROP)
    target prot opt source destination

    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination
    ACCEPT all -- anywhere anywhere
    第 1 条附言  ·  2019-07-17 17:40:08 +08:00
    抱歉,我没描述清楚,我的疑惑是:INPUT 这一组的最后一行 ACCEPT all -- anywhere anywhere 是不是实际上允许了外网所有请求过来的所有端口都允许访问了呢?
    19 条回复    2019-07-18 13:17:51 +08:00
    qbqbqbqb
        1
    qbqbqbqb  
       2019-07-17 17:16:21 +08:00
    后面还有“ state RELATED,ESTABLISHED ”的限定呢。这个是允许已经建立的连接的封包通过。比如防护墙内侧用户使用浏览器 HTTP ( tcp,客户端随机端口,服务端 80 端口)上网,服务器的回应包就会被这条规则放行。
    qbqbqbqb
        2
    qbqbqbqb  
       2019-07-17 17:24:10 +08:00
    如果没有这条规则的话,防火墙后面的机器就统统“上不了网”了,因为下面的几条规则只放行了 80,443,28888 三个端口,而一般客户端软件都是使用随机端口的。添加这条规则可以实现“由内向外发起的连接不受限制”的目的。
    tankren
        3
    tankren  
       2019-07-17 17:27:15 +08:00   ❤️ 1
    有规则顺序的
    qbqbqbqb
        4
    qbqbqbqb  
       2019-07-17 17:27:48 +08:00   ❤️ 1
    对不起,刚才看错了,说的是第一行

    最后一行还确实是全部允许通过,看起来确实像是配置错误。也可能是使用了某些 GUI 的防火墙配置软件,误将设置“默认规则”设为了“允许”,据我所知,某些配置软件的“默认规则”是加在最后的。
    win7pro
        5
    win7pro  
    OP
       2019-07-17 17:37:02 +08:00
    @qbqbqbqb 感谢,看来的确要把 input 的最后一行干掉~
    win7pro
        6
    win7pro  
    OP
       2019-07-17 17:38:29 +08:00
    @qbqbqbqb 抱歉,我没描述清楚,我的疑惑是:input 的最后一行 ACCEPT all -- anywhere anywhere 是不是等于外网访问进来的请求全部都放行了呢?
    defunct9
        7
    defunct9  
       2019-07-17 17:44:08 +08:00   ❤️ 1
    iptables -L -n
    julyclyde
        8
    julyclyde  
       2019-07-17 17:57:53 +08:00   ❤️ 1
    不要看 iptables -L,因为显示的内容不全
    要看 iptables-save (注意没有空格,是连续的)
    win7pro
        9
    win7pro  
    OP
       2019-07-17 18:05:39 +08:00
    @julyclyde 这个样子滴

    # Generated by iptables-save v1.4.7 on Wed Jul 17 06:04:28 2019
    *filter
    :INPUT DROP [253698:14633144]
    :FORWARD DROP [0:0]
    :OUTPUT ACCEPT [7431660:14180627739]
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 28888 -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A OUTPUT -o lo -j ACCEPT
    COMMIT
    # Completed on Wed Jul 17 06:04:28 2019
    razaura
        10
    razaura  
       2019-07-17 18:11:14 +08:00   ❤️ 1
    omph
        11
    omph  
       2019-07-17 18:13:25 +08:00   ❤️ 1
    iptables -vnL 才比较全
    最后一行是允许环回接口的,不要删
    win7pro
        12
    win7pro  
    OP
       2019-07-17 18:19:01 +08:00
    @omph

    Chain INPUT (policy DROP 254K packets, 15M bytes)
    pkts bytes target prot opt in out source destination
    13M 7554M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
    457K 26M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
    28971 1579K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
    508 30316 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:28888
    354K 21M ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0

    Chain FORWARD (policy DROP 0 packets, 0 bytes)
    pkts bytes target prot opt in out source destination

    Chain OUTPUT (policy ACCEPT 7438K packets, 14G bytes)
    pkts bytes target prot opt in out source destination
    4684K 6751M ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
    win7pro
        13
    win7pro  
    OP
       2019-07-17 18:20:28 +08:00
    感谢各位。我是希望外网访问服务器只保留端口 80,443,28888 ( ssh 用),其余外网访问进来的全部拒绝。
    tankren
        14
    tankren  
       2019-07-17 21:13:10 +08:00 via Android   ❤️ 1
    根据 pfsense 的情况 是先允许你这几个端口 然后别的全部阻止
    izoabr
        15
    izoabr  
       2019-07-18 00:00:55 +08:00   ❤️ 1
    先看默认策略,然后看最后一条策略。
    默认策略不允许通过,但是最后一条是所有都过了,相当于把默认策略给干了。
    所以 INPUT 链最后的结果是允许任何来源,任何协议,任何端口,去任何地方。
    omph
        16
    omph  
       2019-07-18 01:33:51 +08:00   ❤️ 1
    已经很清楚了

    Chain INPUT (policy DROP)
    ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0

    Chain OUTPUT (policy ACCEPT)
    ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0

    lo 就是环回接口( loopback ),这两条规则允许这个接口所有方向的流量
    win7pro
        17
    win7pro  
    OP
       2019-07-18 12:13:30 +08:00
    @omph 所以,我要把 -A INPUT -i lo -j ACCEPT 这一行删掉对吗:)

    # Generated by iptables-save on Wed Feb 13 14:01:07 2019
    *filter
    :INPUT DROP [8:632]
    :FORWARD DROP [0:0]
    :OUTPUT ACCEPT [4:416]
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 28888 -j ACCEPT
    #是下面这一行删掉就 O 了吗?#
    -A INPUT -i lo -j ACCEPT
    #是上面这一行删掉就 O 了吗?#
    -A OUTPUT -o lo -j ACCEPT
    COMMIT
    # Completed on Wed Feb 13 14:01:07 2019
    izoabr
        18
    izoabr  
       2019-07-18 12:31:54 +08:00   ❤️ 1
    @win7pro #17 不好意思,我也粗心看错了,最后一行的 any 是有 lo 限定的,-o lo 的意思是从 lo 端口出去的放行,所以还是有包能匹配到默认的 DROP 策略的。
    win7pro
        19
    win7pro  
    OP
       2019-07-18 13:17:51 +08:00
    @izoabr 谢谢,那这个 iptables 设置不用改了,哈哈
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5789 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 06:12 · PVG 14:12 · LAX 22:12 · JFK 01:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.