Linux防火墙iptables的基础
一.网络访问控制
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的基础的更多相关文章
- Linux防火墙iptables学习
http://blog.chinaunix.net/uid-9950859-id-98277.html 要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有很多数据包进入,离开,或者经过 ...
- Linux防火墙(Iptables)的开启与关闭
Linux防火墙(iptables)的开启与关闭 Linux中的防火墙主要是对iptables的设置和管理. 1. Linux防火墙(Iptables)重启系统生效 开启: chkconfig ipt ...
- linux 防火墙iptables简明教程
前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...
- Linux防火墙iptables简明教程
前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例[转载]
Linux防火墙iptables学习笔记(三)iptables命令详解和举例 2008-10-16 23:45:46 转载 网上看到这个配置讲解得还比较易懂,就转过来了,大家一起看下,希望对您工作能 ...
- 10.Linux防火墙iptables之SNAT与DNAT
Linux防火墙iptables之SNAT与DNAT 目录 Linux防火墙iptables之SNAT与DNAT SNAT策略及应用 SNAT策略概述 SNAT策略典型应用环境 SNAT策略原理 SN ...
- linux 防火墙 iptables实例讲解
端口为例): 显示现有规则: iptables –L -n 清空现有规则表: iptables -F 黑名单:先允许所有数据包通过,后逐条添加黑名单规则. iptables –A INPUT–p tc ...
- linux 防火墙 iptables 目录
linux iptables 防火墙简介 Linux 防火墙:Netfilter iptables 自动化部署iptables防火墙脚本
- Linux防火墙iptables介绍
介绍网络防火墙是通过一个或多个允许或拒绝的规则来过滤网络流量的网络设备或软件.网络防火墙还可以执行更复杂的任务,例如网络地址转换,带宽调整,提供加密隧道以及更多与网络流量相关的任务.而我们的任务就是需 ...
随机推荐
- 初识GitHub之创建文件
在新建了一个项目(repository)后,会跳转到项目主页,如下图 Create new file(创建新文件)就是新建一个代码文件,Upload file(上传文件)即从内存中将代码文件上传至本项 ...
- Eclipse安装fatjar(不用自己下载fatjar包)
.安装Eclipse-jee-luna-SR2-win32-x86_64版本的插件支持 方法如下: Help -> Install New Software... -> Work with ...
- vue安装,router-link的一些属性,用法,tag active-class,to,replace,exex等等
第一步:$ npm install -g vue-cli 第二部:$ vue init webpack my-projectName 下面内容转载自:https://www.cnblogs.com/c ...
- JAVA 多线程之volatile的介绍
volatile的介绍 volatile的主要作用是:提示编译器该对象的值有可能在编译器未监测的情况下被改变. volatile类似于大家所熟知的const也是一个类型修饰符.volatile是给编译 ...
- MSG结构体和WndProc窗口过程详解
MSG结构体和WndProc窗口过程对于Windows编程非常重要,如果不了解它们,可以说就没有学会Windows编程. MSG结构体 MSG 结构体用来表示一条消息,各个字段的含义如下: typed ...
- MongoDB 之 你得知道MongoDB是个什么鬼 MongoDB - 1
最近有太多的同学向我提起MongoDB,想要学习MongoDB,还不知道MongoDB到底是什么鬼,或者说,知道是数据库,知道是文件型数据库,但是不知道怎么来用 那么好,所谓千呼万唤始出来,现在我就拉 ...
- jquery.autocomplete详解
语法: autocomplete(urlor data, [options] ) 参数: url or data:数组或者url [options]:可选项,选项解释如下: 1) minChars ( ...
- jquery easyui的应用-2
有两个版本: freeware edition, commercial edition easyui的 datagrid 实际上是一个table, 其数据来源 通过 url属性来从后台的php页面 获 ...
- c# 7.1 Async Main方法
安装 .net framework sdk 7.1 新建一个 .net framework 7.1 的程序 在程序的工程文件的第一个 PropertyGroup 节点下加入以下子属性 <L ...
- 进程池 和 multiprocessing.Pool模块
进程池的概念 在程序实际处理问题过程中,忙时会有成千上万的任务需要被执行,闲时可能只有零星任务.那么在成千上万个任务需要被执行的时候,我们就需要去创建成千上万个进程么?首先,创建进程需要消耗时间,销毁 ...