首页 » VPS 知识 » 浏览内容

iptables防火墙的基本应用


2011-11-30 22:54:27 3,867 0 发表评论 字体: 作者:C.K.
标签: iptables防火墙

体验版 88 元,个人版 128 元,多用户版 288元个人版160元升级到多用户版。

iptables是Linux下不错的防火墙软件,本文主要给大家介绍下iptables的安装、规则增加和清除、开放指定端口、屏蔽指定ip和ip段等CentOS下iptables的基本应用。
一、iptables的安装

yum install iptables

如果CentOS没有默认安装iptables,则执行上述命令。如何知道系统是否有iptables呢?执行以下命令

service iptables status

如果提示 iptables:unrecognized service 则表示系统尚未安装。

二、iptables所在目录与配置文件(IP4)

安装完iptables后,配置文件默认在/etc/sysconfig/iptables

图为iptables默认的配置

三、先清除已有的规则,在SSH中执行下列命令(“#”号和“#”号后的无需填写)

iptables -F #清空所选链。这等于把所有规则一个个的删除。
  • iptables -X #删除指定的用户自定义链。
  • iptables -Z #把所有链的包及字节的计数器清空。
  • 四、开放指定的端口

    这个一般用于服务器,如允许常用的80(http端口),20、21(FTP端口),22(SSH端口),3306(MYSQL端口等)

    1、编辑/etc/sysconfig/iptables文件,推荐使用WINCAP

    2、把默认的规则清除并添加下列字段

    # 允许已建立的或相关连的通行
  • -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  • #允许本地回环接口
  • -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
  • #允许本机对外访问
  • -A OUTPUT -j ACCEPT
  • # 允许访问SSH端口,如果端口修改了可以更改相应端口号
  • -A INPUT -p tcp --dport 22 -j ACCEPT
  • #允许访问80(HTTP)端口
  • -A INPUT -p tcp --dport 80 -j ACCEPT
  • #允许访问FTP端口:21、20
  • -A INPUT -p tcp --dport 21 -j ACCEPT
  • -A INPUT -p tcp --dport 20 -j ACCEPT
  • #允许访问161(SNMP)端口:
  • -A INPUT -p udp --dport 161 -j ACCEPT
  • #禁止其他未允许的规则访问
  • -A INPUT -j REJECT
  • -A FORWARD -j REJECT
  • #使用XEN、OPENVZ的VPS用户注意!!!如果在文件中加上了最后一条“禁止其他
  • 未允许的规则访问”,则必须加上第一条“允许已建立的或相关连的通行”。如果
  • 没加上第一条,则无法通过指定的端口号(如SSH)连接VPS。
  • 3、保存并使用以下命令重启iptables。

    service iptables restart

    五、屏蔽指定IP、IP段

    1、屏蔽单个IP

    在/etc/sysconfig/iptables中添加以下规则,即可将IP123.45.67.89永久BAN(封)掉。

    -A INPUT -s 123.45.67.89 -j DROP

    添加多条单个IP也很简单,直接回车另起一行,将以上规则稍作修改即可。

    2、屏蔽IP段

    有时候需要屏蔽一个地区、一个国家或一个网段的IP时,我们可以通过以下方式屏蔽

    #屏蔽整个段(A类地址)即从192.0.0.1到192.255.255.254,则添加以下规则。
  • -I INPUT -s 192.0.0.0/8 -j DROP
  • #封IP段(B类地址)即从192.168.0.1到192.168.255.254,则添加以下规则。
  • -I INPUT -s 192.168.0.0/16 -j DROP
  • #封IP段(C类地址)即从192.168.200.1到192.168.200.254,则添加以下规则。
  • -I INPUT -s 192.168.200.0/24 -j DROP
  • 以上操作保存后,重启iptables即可。

    六、查询已经添加了的iptables规则

    iptables -L -n

    在SSH中执行以上语句,其中后面的参数用法是:

    v:显示详细信息,包括每条规则的匹配包数量和匹配字节数
    x:在 v 的基础上,禁止自动单位换算(K、M)
    n:只显示IP地址和端口号,不将ip解析为域名

    七、删除已经添加了的iptables规则

    我们可以通过SSH命令快速删除规则,首先执行以下命令,把iptables规则以数字序号的形式显示。

    iptables -L -n --line-numbers

    如果我们要删除第5条规则,则执行以下命令即可。

    iptables -D INPUT 5

    八、将iptables设置为开机自动启动

    iptables默认开机不启动的,如有需要请设置为开机自动启动,在SSH中执行以下代码即可。

    反操作请把“on”改为“off”

    chkconfig iptables on

    —————————————————  亲,这是分割线  —————————————————

    自定义规则
    阻止IP:

    # iptables -A INPUT -s 213.10.10.13 -j DROP
    这条规则表示阻止从IP213.10.10.13传进来的数据包。

    # iptables -A INPUT -d 192.168.1.15 -j REJECT
    这条规则表示阻止从局域网IP192.168.1.15来的数据包。
    允许IP:

    # iptables -A INPUT -s 213.10.10.13 -d 192.168.1.4 -p tcp –dport 21
    这条规则表示接受来自IP 213.10.10.13到目标地址FTP服务器192.168.1.4的数据包。
    当你配置来必要的规则之后,到时候在最后增加拒绝所有的规则了:

    # iptables -A INPUT -j REJECT
    # iptables -A FORWARD -j REJECT
    这些规则必须在最后添加。
    要删除一个规则,只需把”-A”替换成”-D”即可。

    保存规则
    为了保存Iptables规则,只需执行以下命令:

    # /etc/init.d/iptables save
    停止Iptables来刷新所有规则:

    # /etc/init.d/iptables stop
    重新启动Iptables从/etc/sysconfig/iptables加载最新规则:

    # /etc/init.d/iptables start
    这只是一个基础的Iptables教程,适合配置比较简单的规则,如果需要配置复杂的规则,还需要深入的学习。

    1 2

      网站统计 Statistics

      • 创建时间: 2005年1月3日 距今4973 天
      • 日志总数: 2461
      • 评论总数: 630
      • 标签总数: 654
      • 链接总数: 273
      • 最后更新: 2017-7-1 18:16:33
      • 您是本站第 13808092 位访客

      广告区 Guǎng Gào