防火墙:是一种位于内部网络与外部网络之间安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。iptables通常被用作类UNIX系统中的防火墙,更准确的说,可以称为iptables/netfilter;管理员通过终端与iptables打交道,来添加和定义防火墙规则到预定义的表中。iptables位于/etc/sysconfig/iptables。iptables可以说是一个过滤规则,而Netfilter是内核中的一个模块,它才是执行包过滤任务的。而在RHEL/CentOS
7中,Firewalld被作为最新的过滤规则,它已经取代了iptables接口,并与netfilter相连接。Firewalld位于/etc/firewalld/是以XML为基础进行配置的。

iptables是来执行脚本的,而不是一种服务
service iptables start 会启动一些模块。
service iptables stop 会卸载一些模块。
service status iptables 查看当前iptables是否开启
lsmod | grep ip_tables 检测iptables模块是否被加载

iptables的一般格式:

iptables [-t 表] [-AID 链] [-i/o 接口] [-s sip] [-d dip] [-p 协议] -j 处理动作
放行sshd服务:(通信是双向的,在进出口上都要设置)
    iptables -t filter -A INPUT -s 192.168.1.0/24 -d 192.168.1.1 -p tcp --dport 22 -j ACCEPT #表示192.168.1.0/24中的主机都可以访问192.168.1.1的sshd服务
    iptables -t filter -A OUTPUT -s 192.168.1.1 -d 192.168.1.0/24 -p tcp --sport 22 -j ACCEPT

4个基本表:

    1、filter:是iptables的默认表,用来过滤数据包,支持INPUT链、FOWARD链、OUTPUT链。
2、nat:用于网络地址转换,根据表中规则修改数据包IP地址,支持PREROUTING链、OUTPUT链、POSTROUTING链
3、mnagle:用来对特殊的包进行修改 支持PREROUTING链、INPUT链、FOWARD链、OUTPUT链、POSTROUTING链
4、raw:表示在对数据包修改前定义某些包不能修改,直接放行

iptables的5个链

    1、PREROUTING:(表示路由前)
2、INPUT :(入口处)
3、FOWARD:(转发时)
4、OUTPUT:(出口)
5、POSTROUTING:(路由后)

处理动作:

    ACCEPT    :接受
DROP :丢弃,不让客户端知道
REJECT :明确拒绝
DNAT :目的地址转换
SNAT :源地址转换
REDIRECT:端口重定向
LOG :为匹配的包开启内核记录
MARK :打标记,只适用于mangle表

规则:

    -A:在指定链后面追加一个规则
-I 链 n:插入后为第n条,n不指定默认为第一条
-D 链 n: 删除第n条规则
iptables -D OUTPUT 3 #删除OUTPUT中第3条规则
 -R 链 n:替换,修改第n条规则

链:

    -F:清空规则,没有指定就删除所有
        iptables -t filter -F INPUT #删除filter表中的INPUT链上的规则
 -P:设置默认规则
iptables -P INPUT DROP #预设INPUT链为DROP
 -X:删除一个自定义的链
-Z:清空计数器

查看  iptables -L:

    -n主机以数字形式表示
iptables -L -n
    --line-number给出行号
    -v详细情况
    -vv更详细情况
    -vvv更更详细
    -x以字节为单位,表示数据包大小

匹配条件:

    1、通用匹配
-s:源IP地址,可以跟网段和子网掩码,不加是表示全部匹配
-d:目的IP地址,可以跟网段和子网掩码
-p:协议(tcp、udp、icmp)
 -i:入口设备名(eth0、lo)
iptables -A INPUT -i lo -j ACCEPT #放行本机环回口
iptables -A OUTPUT -o lo -j ACCEPT
 -o:出口设备名
2、扩展匹配
隐式匹配:
        -p  tcp --dport
                --tcp-flags SYN,FIN,ACK,RST    SYN,ACK    SYN和ACK是否为1,其他为0才匹配
            icmp --icmp-type
                ping 别人 进类型0 出8;别人ping自己 进8 出0;<span>不允许别人ping自己,自己可以ping别人</span>。
iptables -A OUTPUT -s 192.168.248.133 -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -d 192.168.248.133 -p icmp --icmp-type 0 -j ACCEPT
显式匹配:
-m state --state {NEW|ESTABLISHED|INALID|RELATED} 指定状态
           NEW:一次新的请求,tcp三次握手的第一次
           ESTABLISHED:NEW以后的连接,已经连接成功的连接状态
           RELATED:相关连得状态,表示这个包是与主机发送出去的数据包有关系,FTP连接中两个端口
           INALID:无法识别的状态,数据包破损
iptables -A INPUT -d 192.168.1.1 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT #用户创建新连接时和已经建立的连接时放行,进入链
iptables -A INPUT -s 192.168.1.1 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT #只放行已建立的连接,出链
        -m multiport
                --sport 源端口
                --dport 目的端口
                --ports 可以多个端口一起
iptables -A INPUT -d 192.168.248.138 -p tcp -m multiport --dports 21,22,80 -m state --state NEW -j ACCEPT #表示接收以192.168.248.138的21,22,80为目的端口状态为new的数据
-m connlimit --connlimit-above 限制连接数
        iptables -A INPUT -d 192.168.248.131 -p tcp --dport 80 -m connlimit --connlimit-above 2 -j DROP #限制访问192.168.248.131 httpd服务为2个,当有第3个时就会连不上
  -m limit --limit n/second 平均每秒n个连接
--limit-burst m 最大时每秒m个连接
iptables -A INPUT -d 192.168.248.131 -p tcp --dport 80 -m limit --limit 10/second --limit-burst 30 -j ACCEPT #设置访问web服务平均每秒10个连接,最大时30个链接。
-m mac 网卡地址
--mac-source 源网卡地址
iptables -A INPUT -m mac --mac-source aa:bb:cc:dd:ee:ff -j ACCEPT #放行局域网内源MAC为aa:bb:cc:dd:ee:ff的主机。此条也可以限制局域网内部主机访问外网。
-m string --algo {bm|kmp} --string "string" 过滤敏感字符 有两种算法bm和kmp
         iptables -A OUTPUT -s 192.168.248.1 -p tcp --sport 80 -m string --algo kmp --string "abc" -j DROP #访问时内容包含abc的都过滤掉。

NAT(Network Address Translation)网络地址转换

SNAT  源IP地址转换为一个外网的IP
iptables -t nat -A POSTROUTING -s 192.168.248.0/24 -j SNAT --to-source 222.24.24.1 #将192.168.248.0/24的地址 转换成222.24.24.1
DNAT 将目标IP转换为内网IP
iptables -t nat -A PREROUTING -d 222.24.24.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.248.131 #将访问222.24.24.1的80端口,改为192.168.248.131的80端口
iptables -t nat -A PREROUTING -d 222.24.24.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.248.131:8080 #改为访问8080端口

后面还有很复杂的规则;未完待续。。。。。



参考:鸟哥Linux私房菜,马哥Linux教学视频

Linux中iptables学习的更多相关文章

  1. Linux防火墙iptables学习笔记(三)iptables命令详解和举例[转载]

     Linux防火墙iptables学习笔记(三)iptables命令详解和举例 2008-10-16 23:45:46 转载 网上看到这个配置讲解得还比较易懂,就转过来了,大家一起看下,希望对您工作能 ...

  2. Linux防火墙iptables学习

    http://blog.chinaunix.net/uid-9950859-id-98277.html 要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有很多数据包进入,离开,或者经过 ...

  3. LINUX中IPTABLES防火墙使用

    对于有公网IP的生产环境VPS,仅仅开放需要的端口,即采用ACL来控制IP和端口(Access Control List). 这里可以使用Linux防火墙netfilter的用户态工具 iptable ...

  4. Linux下iptables学习笔记

    Linux下iptables学习笔记 在Centos7版本之后,防火墙应用已经由从前的iptables转变为firewall这款应用了.但是,当今绝大多数的Linux版本(特别是企业中)还是使用的6. ...

  5. linux中iptables配置文件及命令详解详解

    iptables配置文件 直接改iptables配置就可以了:vim /etc/sysconfig/iptables. 1.关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放. 下 ...

  6. linux中iptables配置文件及命令详解

    转自:https://www.cnblogs.com/itxiongwei/p/5871075.html iptables配置文件 直接改iptables配置就可以了:vim /etc/sysconf ...

  7. linux中iptables的用法

    iptables基本操作笔记 一.基本操作 #启动防火墙 service iptables start #停止防火墙 service iptables stop #重启防火墙 service ipta ...

  8. Linux防火墙--iptables学习

    iptables是Linux系统提供的一个强大的防火墙工具,可以实现包过滤.包重定向.NAT转换等功能.iptables是免费的,iptables是一个工具,实际的功能是通过netfilter模块来实 ...

  9. Linux中iptables设置详细(转)

    无论如何,iptables是一个需要特别谨慎设置的东西,万一服务器不在你身边,而你贸然设置导致无法SSH,那就等着被老板骂吧,呵呵... 以下内容是为了防止这种情况发生而写的,当然很初级,不过一般服务 ...

随机推荐

  1. ASIHTTPRequest导入出错-libxml出错, i386 "_deflate"

    导入需要 ASIHTTPRequest 依赖于以下5个框架或库: CFNetwork, SystemConfiguration,MobileCoreServices, CoreGraphics 和 l ...

  2. 《AndroidStudio每日一贴》11. 重构之提炼为常量

    提炼为常量是从暂时变量高速提炼出静态常量,这也是我们经常使用的重构手段. 很多其它有用技巧请查看<AndroidStudio有用指南> 操作步骤: ➤ 菜单条: Refactor -> ...

  3. 2015北京网络赛 J Scores bitset+分块

    2015北京网络赛 J Scores 题意:50000组5维数据,50000个询问,问有多少组每一维都不大于询问的数据 思路:赛时没有思路,后来看解题报告也因为智商太低看了半天看不懂.bitset之前 ...

  4. SQL Server 2005高可用性模式下创建数据库镜像

    SQL Server 2005高可用性模式下创建数据库镜像   高可用性模式下创建数据库镜像 第一步: --创建镜像用数据库-在主服务器上操作 create database db_mirror on ...

  5. cf B. Black Square

    B. Black Square time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  6. Inter-process Communication (IPC)

    For Developers‎ > ‎Design Documents‎ > ‎ Inter-process Communication (IPC) 目录 1 Overview 1.1 I ...

  7. PHP高手进阶-LAMPer技能树

  8. 学习TF:《TensorFlow机器学习实战指南》中文PDF+英文PDF+代码

    从实战角度系统讲解TensorFlow基本概念及各种应用实践.真实的应用场景和数据,丰富的代码实例,详尽的操作步骤,带你由浅入深系统掌握TensorFlow机器学习算法及其实现. <Tensor ...

  9. leetcode第一刷_Rotate List

    我提交了好多次,错误莫名其妙的,到后来才明确过来.原来我把题目给理解错了. 这个题的意思不是说让你把最后的那k个位置的元素移到前面来,这样的问题的做法就是用两个指针,先让一个走.走到一定的长度之后两个 ...

  10. JAVA 并发编程-线程范围内共享变量(五)

    线程范围内共享变量要实现的效果为: 多个对象间共享同一线程内的变量 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsi ...