一.网络访问控制

  1.Linux一般都是作为服务器系统使用,对外提供一些基于网络的服务

  2.通常我们都需要对服务器进行一些网络访问控制,类似防火墙的功能

  3.常见的访问控制包括:哪些IP可以访问服务器、可以使用哪些协议、哪些接口、是否需要对数据包进行修改等等。

  4.如服务器可能受到来自某IP的攻击,这时就需要禁止所有来自该IP的访问。

  5.Linux内核集成了网络访问控制功能,通过netfilter模块实现

二.IPTables

Linux内核通过netfilter模块实现网络访问控制功能,在用户层我们可以通过iptables程序对netfilter进行控制管理。

  1.netfilter可以对数据进行允许、丢弃、修改操作

  2.netfilter支持通过以下方式对数据包进行分类:

    -源IP地址
    -目标IP地址

    -使用接口

    -使用协议(TCP、UDP、ICMP等)

    -端口号

    -连接状态(new、ESTABLISHED、RELATED、INVALID)

三.Netfilter

  1.filter(chain)用以对数据进行过滤

  2.nat用以对数据包的源、目标地址进行修改

  3.mangle用以对数据包进行高级修改

四.常用功能

  1.作为服务器使用:

    过滤到本机的流量   - input链、filter表

    过滤到本机发出的流量 - output链、filter表

  2.作为路由器使用:

    过滤转发的流量 -forward链、filter表

    对转发数据的源、目标IP进行修改(NAT功能) -PREROUTING、POSTROUTING、nat表

五.规则

  1.iptables通过规则对数据进行访问控制

  2.一个规则使用一行配置

  3.规则按顺序排列

  4.当收到、发出、转发数据包时,使用规则对数据包进行匹配,按规则顺序进行逐条匹配。

  5.数据包按照第一个匹配上的规则执行相关动作:丢弃、放行、修改

  6.没有匹配规则,则使用默认动作(每个chain拥有各自的默认动作)

通过iptables命令创建一个规则,一条规则包含以下几个部分:

  iptables -t filter -A INPUT -s 192.168.1.1 -j DROP

        表          链         匹配属性           动作

    -表:规定使用的表(filter、nat、mangle,不同表有不同功能)

    -链:规定过滤点

    -匹配属性:规定匹配数据包的特征

    -匹配后的动作:放行、丢弃、记录

六.基本操作

  1.列出现有iptables规则:

    iptables -L

  2.插入一个规则:

    iptables -I INPUT 3 -p tcp --dport 22 -j ACCEPT

  3.删除一个iptables规则:

    iptables -D INPUT 3 iptables -D INPUT -s 192.168.1.2 -j DROP

  4.删除所有规则:

    iptables -F

七.匹配参数

  1.基于IP地址:

    -s 192.168.1.1

    -d 10.0.0.0/8

  2.基于接口:

    -i eth0

    -o eth1

  3.排除参数:

    -s '!' 192.168.1.0/24

  4.基于协议及端口:

    -p tcp --dport 23

    -p udp --sport 53

    -p icmp

八.INPUT、OUTPUT

  1.控制到本机的网络流量:

    iptables -A INPUT -s 192.168.1.100 -j DROP

    iptables -A INPUT -p tcp --dport 80 -j DROP

    iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j DROP

    iptables -A INPUT -i eth0 -j ACCEPT

九.FORWARD

当使用Linux作为路由(进行数据转发)设备使用的时候,可以通过定义forward规则来进行转发控制 如:

  禁止所有192.168.1.0/24到10.1.1.0/24的流量:

  iptables -A FORWARD -s 192.168.1.0/24 -d 10.1.1.0/24 -j DROP

十.NAT

  1.NAT(Network Address Translation)网络地址转换是用来对数据包的IP地址进行修改的机制,NAT分为两种:

    -SNAT 源地址转换,通常用于伪装内部地址(一般意义上的NAT)

    -DNAT 目标地址转换,通常用于跳转

  2.iptables中实现NAT功能的是NAT表

十一.常用NAT

  1.通过NAT进行跳转:

    iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-dest 192.168.1.10

  2.通过NAT对出向数据进行跳转:

    iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-dest 192.168.1.100:8080

  3.通过NAT对数据流进行伪装

    (一般意义上的NAT,将内部地址全部伪装为一个外部公网IP地址)

    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

  4.通过NAT隐藏源IP地址

    iptables -t nat -A POSTROUTING -j SNAT --to-source 1.2.3.4

十二.配置文件

  1.通过iptables添加的规则并不会永久保存,如果需要永久保存规则,则需要将规则保存在/etc/sysconfig/iptables配置文件中

  2.可以通过以下命令将iptables规则写入配置文件:

    service iptables save

  3.CentOS/RHEL系统会带有默认iptables规则,默认保存在/etc/sysconfig/iptables中,保存自定义规则会覆盖这些默认规则

注意:

如果是远程管理一个Linux主机并修改iptables规则,则必须先允许来自客户端主机的SSH流量确保这是第一条iptables规则,否则可能会由于配置失误将自己锁在外面!

Linux防火墙iptables的基础的更多相关文章

  1. Linux防火墙iptables学习

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

  2. Linux防火墙(Iptables)的开启与关闭

    Linux防火墙(iptables)的开启与关闭 Linux中的防火墙主要是对iptables的设置和管理. 1. Linux防火墙(Iptables)重启系统生效 开启: chkconfig ipt ...

  3. linux 防火墙iptables简明教程

    前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...

  4. Linux防火墙iptables简明教程

    前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...

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

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

  6. 10.Linux防火墙iptables之SNAT与DNAT

    Linux防火墙iptables之SNAT与DNAT 目录 Linux防火墙iptables之SNAT与DNAT SNAT策略及应用 SNAT策略概述 SNAT策略典型应用环境 SNAT策略原理 SN ...

  7. linux 防火墙 iptables实例讲解

    端口为例): 显示现有规则: iptables –L -n 清空现有规则表: iptables -F 黑名单:先允许所有数据包通过,后逐条添加黑名单规则. iptables –A INPUT–p tc ...

  8. linux 防火墙 iptables 目录

    linux iptables 防火墙简介 Linux 防火墙:Netfilter iptables 自动化部署iptables防火墙脚本

  9. Linux防火墙iptables介绍

    介绍网络防火墙是通过一个或多个允许或拒绝的规则来过滤网络流量的网络设备或软件.网络防火墙还可以执行更复杂的任务,例如网络地址转换,带宽调整,提供加密隧道以及更多与网络流量相关的任务.而我们的任务就是需 ...

随机推荐

  1. VC++运行库 集32位/64位整合版

    运行程序时,win7/win10(x86和x64)常会遇到缺少什么缺少msvc***.dll问题 安装下面链接提供的程序,安装后,便可解决. [2016-10-10]Microsoft Visual ...

  2. javaScript函数立即执行《1》

    javaScript函数立即执行<1> 函数立即执行,常见两种写法: >>> (function(){ })() >>> (function(){ }( ...

  3. Practical Lessons from Predicting Clicks on Ads at Facebook

    ABSTRACT 这篇paper中作者结合GBDT和LR,取得了很好的效果,比单个模型的效果高出3%.随后作者研究了对整体预测系统产生影响的几个因素,发现Feature(能挖掘出用户和广告的历史信息) ...

  4. Windbg程序调试系列1-Mex扩展使用总结

    最近一直在频繁使用Windbg做线上Dump调试,与微软做Case交流的时候,发现微软CSS团队,用了一个非常效率的Windbg 插件,Mex: 使用介绍: https://blogs.msdn.mi ...

  5. Angular4 HTTP通讯

  6. eclipse自定义快捷键(模板)

    window->Preferences->Java->Editor->Templates https://blog.csdn.net/changqing5818/article ...

  7. C/C++ strict-aliasing

    最近发现了一个奇怪的编译参数-fno-strict-aliasing,好奇之下做了一点研究: 重点参考Understanding C/C++ Strict Aliasing: 所谓的aliasing就 ...

  8. MVC开发模式的数据运行流程

    对于java中经典的开发模式MVC,有一些感触!现说一下Java中数据的运行流程,由于我技术有限,有错的话欢迎提出,不喜勿喷! 我们知道在MVC开发模式,包括三部分视图层V(view).控制层C(Co ...

  9. C#简单的九九乘法表

    for(int i=1;i<10;i++) { for(int j=1;j<=i;j++) { Console.Write("{0}*{1}={2}",j,i,i*j) ...

  10. 秦皇岛winter camp 总结

    冬令营在秦皇岛自闭了七天,很多题目看了都没有思路,或者是不知道怎么敲代码.我发现图论的题,自己连怎么建树都给忘了,想了半天.还有很多自己从未接触过的算法.在说说课堂上课的情况,大部分时间都是全程懵逼的 ...