zoukankan      html  css  js  c++  java
  • iptables配置详解

    iptables 的历史以及工作原理

      iptables的前身叫ipfirewall (内核1.x时代),这是一个作者从freeBSD上移植过来的,能够工作在内核当中的,对数据包进行检测的一款简易访问控制工具。但是ipfirewall工作功能极其有限(它需要将所有的规则都放进内核当中,这样规则才能够运行起来,而放进内核,这个做法一般是极其困难的)。当内核发展到2.x系列的时候,软件更名为ipchains,它可以定义多条规则,将他们串起来,共同发挥作用,而现在,它叫做iptables,可以将规则组成一个列表,实现绝对详细的访问控制功能。

      他们都是工作在用户空间中,定义规则的工具,本身并不算是防火墙。它们定义的规则,可以让在内核空间当中的netfilter来读取,并且实现让防火墙工作。而放入内核的地方必须要是特定的位置,必须是tcp/ip的协议栈经过的地方。而这个tcp/ip协议栈必须经过的地方,可以实现读取规则的地方就叫做 netfilter.(网络过滤器),也就是说firewalld和 iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结 构以及使用方法不一样罢了

    规则的写法

    iptables定义规则的方式:
      格式:iptables [-t table] COMMAND chain CRETIRIA -j ACTION
         -t table :3个filter nat mangle
         COMMAND:定义如何对规则进行管理
         chain:指定你接下来的规则到底是在哪个链上操作的,当定义策略的时候,是可以省略的
         CRETIRIA:指定匹配标准
         **-j ACTION **:指定如何进行处理

    链管理命令(立即生效)

      -P :设置默认策略的(设定默认门是关着的还是开着的)
        默认策略一般只有两种
        iptables -P INPUT (DROP|ACCEPT) ** 默认是关的/默认是开的
        比如:
        
    iptables -P INPUT DROP** 这就把默认规则给拒绝了。并且没有定义哪个动作,所以关于外界连接的所有规则包括Xshell连接之类的,远程连接都被拒绝了。
      -F: FLASH,清空规则链的(注意每个链的管理权限)
        iptables -t nat -F PREROUTING
        iptables -t nat -F 清空nat表的所有链
      -N:NEW 支持用户新建一个链
        iptables -N inbound_tcp_web 表示附在tcp表上用于检查web的。
      -X: 用于删除用户自定义的空链
        使用方法跟-N相同,但是在删除之前必须要将里面的链给清空了
      -E:用来Rename chain主要是用来给用户自定义的链重命名
        -E oldname newname
      -Z:清空链,及链中默认规则的计数器的(有两个计数器,被匹配到多少个数据包,多少个字节)
        iptables -Z :清空

    规则管理命令

      -A:追加,在当前链的最后新增一个规则
      -I num : 插入,把当前规则插入为第几条。
         格式:-I 3 :插入为第三条
      -R num:Replays替换/修改第几条规则
         格式:iptables -R 3 …………
      -D num:删除,明确指定删除第几条规则

    查看管理命令 “-L”

    附加子命令
      -n:以数字的方式显示ip,它会将ip直接显示出来,如果不加-n,则会将ip反向解析成主机名。
      -v:显示详细信息
      -vv
      -vvv :越多越详细
      -x:在计数器上显示精确值,不做单位换算
      --line-numbers : 显示规则的行号
      -t nat:显示所有的关卡的信息

    常用命令

    安装iptable

    • 先检查是否安装了iptables
      service iptables status
    • 安装iptables
      yum install -y iptables
    • 升级iptables
      **yum update iptables **
    • 安装iptables-services
      yum install iptables-services

    自带的firewalld服务的操作

    • systemctl status firewall  查看状态
    • firewall-cmd --state    查看状态
    • service firewalld restart   重启
    • service firewalld start    开启
    • service firewalld stop    关闭
    • systemctl stop firewalld   禁用
    • firewall-cmd --list-all    查看防火墙规则
    • firewall-cmd --zone=public --add-port=80/tcp --permanent
      开启80端口
    • systemctl restart firewalld.service 重启防火墙
    • firewall-cmd --zone= public --remove-port=80/tcp --permanent
      移除80端口

    设置现有规则

    • 查看iptables现有规则
      iptables -L -n
    • 先允许所有,不然有可能会悲剧
      iptables -P INPUT ACCEPT
    • 清空所有默认规则
      iptables -F
    • 清空所有自定义规则
      iptables -X
    • 所有计数器归0
      iptables -Z
    • 允许来自于lo接口的数据包(本地访问)
      iptables -A INPUT -i lo -j ACCEPT
    • 开放22端口
      iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    • 开放21端口(FTP)
      iptables -A INPUT -p tcp --dport 21 -j ACCEPT
    • 开放80端口(HTTP)
      iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    • 开放443端口(HTTPS)
      iptables -A INPUT -p tcp --dport 443 -j ACCEPT
    • 允许ping
      iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
    • 允许接受本机请求之后的返回数据 RELATED,是为FTP设置的
      iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    • 其他入站一律丢弃
      iptables -P INPUT DROP
    • 所有出站一律绿灯
      iptables -P OUTPUT ACCEPT
    • 所有转发一律丢弃
      iptables -P FORWARD DROP

    其他规则设定

    • 如果要添加内网ip信任(接受其所有TCP请求)
      iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
    • 过滤所有非以上规则的请求
      iptables -P INPUT DROP
    • 要封停一个IP,使用下面这条命令:
      iptables -I INPUT -s ***.***.***.*** -j DROP
    • 要解封一个IP,使用下面这条命令:
      iptables -D INPUT -s ***.***.***.*** -j DROP

    保存规则设定

    • 保存上述规则
      service iptables save

    开启iptables服务

    • 注册iptables服务相当于以前的chkconfig iptables on
      systemctl enable iptables.service
    • 开启服务
      systemctl start iptables.service
    • 查看状态
      systemctl status iptables.service
  • 相关阅读:
    洛谷P1020/CODEVS1044 导弹拦截(拦截导弹)
    洛谷P1541/CODEVS1068 乌龟棋
    洛谷1791/CODEVS1214线段覆盖
    NOIP2002提高组/洛谷P1031均分纸牌
    【USACO2009Decsilver T1 自私的食草者
    洛谷P1024/NOI题库7891(2.3)/NOIP2001提高组T1 一元三次方程求解
    洛谷1086/NOI题库1.13.38/NOIP2004普及组第2题 花生采摘
    NOIP2010/洛谷P1525关押罪犯
    洛谷P1115最大子段和
    1244-作为一个java开发者的知识储备
  • 原文地址:https://www.cnblogs.com/yangliguo/p/7858245.html
Copyright © 2011-2022 走看看