当前位置 主页 > 服务器问题 > Linux/apache问题 >

    Linux防火墙iptables入门教程(2)

    栏目:Linux/apache问题 时间:2018-11-18 14:07


    如果你想默认情况下拒绝所有的网络连接,然后在其基础上添加允许的IP地址或端口号,你可以将默认配置中的ACCEPT变成DROP,如下图所示。这对于一些含有敏感数据的服务器来说是极其有用的。通常这些服务器只允许特定的IP地址访问它们。

    复制代码 代码如下:
    iptables --policy INPUT DROP

    iptables --policy OUTPUT DROP
    iptables --policy FORWARD DROP

    四、对特定连接的配置
    下面来看看如何对特定的IP地址或端口作出设定。本文主要介绍三种最基本和常见的设定。
    Accept – 接收所有的数据。
    Drop – 丢弃数据。应用场景:当你不想让数据的来源地址意识到你的系统的存在(最好的处理方法)。
    Reject – 不允许建立连接,但是返回一个错误回应。应用场景:当你不想让某个IP地址访问你的系统,但又想让它们知道你的防火墙阻止了其访问。
    为了直观的区分上述三种情况,我们使用一台PC来ping一台配置了iptables的Linux电脑:

    允许访问



    丢弃访问



    拒绝访问

    五、允许或阻止特定的连接

    在配置完基本的规则链之后,你就可以配置iptables来允许或者阻止特定的IP地址或者端口。
    注意:在这些例子中,我们使用iptables -A将额外的规则添加到现存的链中。Iptables在执行匹配的时候,会从列表的顶端开始搜索。你可以使用iptables -I [chain] [number]将新的规则插入到列表的指定位置。

    来自同一IP地址的连接
    下面这个例子展示了如何阻止来自IP地址为10.10.10.10的所有连接。
    复制代码 代码如下:iptables -A INPUT -s 10.10.10.10 -j DROP
    来自一组IP地址的连接
    下面这个例子展示了如何阻止来自子网10.10.10.0/24内的任意IP地址的连接。你可以使用子网掩码或者标准的/符号来标示一个子网:
    复制代码 代码如下:iptables -A INPUT -s 10.10.10.0/24 -j DROP

    复制代码 代码如下:iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP
    特定端口的连接
    这个例子展示了如何阻止来自10.10.10.10的SSH连接。
    复制代码 代码如下:iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP
    你可以将“ssh”替换成其它任何协议或者端口号。上述命令中的-p tcp告诉iptables连接使用的是何种协议。
    下面这个例子展示了如何阻止来自任意IP地址的SSH连接。
    复制代码 代码如下:iptables -A INPUT -p tcp --dport ssh -j DROP

    六、连接状态

    我们之前提到过,许多协议均需要双向通信。例如,如果你打算允许SSH连接,你必须同时配置输入和输出链。但是,如果你只想允许来自外部的SSH请求,那该怎么做?
    下面这个例子展示了如何允许源IP地址为10.10.10.10同时阻止目的地址为10.10.10.10的SSH连接:
    复制代码 代码如下:
    iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 22 -d 10.10.10.10 -m state --state ESTABLISHED -j ACCEPT

    七、保存更改
    上述方法对iptables规则作出的改变是临时的。如果你想永久保存这些更改,你需要运行额外的命令(不同Linux发行版下的保存命令也不相同):