码迷,mamicode.com
首页 > 其他好文 > 详细

iptables配置详解

时间:2017-11-18 23:44:33      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:stop   add-port   shel   格式   详细   ftp   过滤器   移除   cep   

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

iptables配置详解

标签:stop   add-port   shel   格式   详细   ftp   过滤器   移除   cep   

原文地址:http://www.cnblogs.com/yangliguo/p/7858245.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!