Linux_iptables
Linux:网络防火墙
- netfilter:Frame
- iptables: 生成防火墙规则,并附加到netfilter上实现数据报文过滤 NAT mangle等规则生成的工具
TCP有限状态机
- LISTEN:等待客户端发起请求
- SYN_SENT:客户端发送SYN
- SYN_RECEIVED:服务器端收到SYN报文
- ESTABLISHED:已经建立连接
- FIN_WAIT1:等待对方的确认
- CLOSE_WAIT:服务器响应客户机的FIN,等待关闭
- LAST_ACK:服务器向客户机发送FIN,等待客户机的最后一次确认
- CLOSING:等待关闭连接,客户机最后一次向服务器发送ACK,确保服务器可以收到ACK的过程
- CLOSED:双方收到FIN的ACK确认,断开连接
防火墙:硬件,软件:规则(匹配标准、处理办法)
- 工作在网络的边界,对进、出的数据报文按照预先定义好的规则进行检查,一旦发现按照相应规则处理
Framework:
- 默认规则:
- 开放:堵
- 关闭:通
规则:匹配标准
- IP:源IP、目标IP
- TCP:sport/dport,SYN= FIN= RST= ACK=
- UDP:sport/dport
- ICMP:icmp-type ping echo-request echo-reply
数据报文过滤
- Linux 2.0
- ipfw/firewall
- Linux 2.2
- ipchain/firewall
- Linux 2.4
- iptables/netfilter
hook function:钩子函数
- input
- output
- forward
- prerouting
- postrouting
规则链:
- PREROUTING
- INPUT
- FORWARD
- OUTPUT
- POSTROUTING
filter(过滤)表
- INPUT
- FORWARD
- OUTPUT
nat(地址转换)表
- PREROUTING
- POSTROUTING
- OUTPUT
mangle(修改报文首部)表
- PREROUTING
- INPUT
- FORWARD
- OUTPUT
- POSTROUTING
raw表
- PREROUTING
- OUTPUT
数据包匹配流程
PREROUTING:raw---mangle---nat
- INPUT:mangle----filter
- FORWARD:mangle--------filter
- OUTPUT:raw---mangle---nat----filter
- POSTROUTING:mangle----postrouting
用户可以自定义链,但只能是在被调用时才可以使用,如果自定义链中没有存在任何匹配规则,还应该有返回机制
用户可以删除自定义链,但不允许删除非空链
默认链无法删除
每个规则都有两个内置的计数器
- 记录被匹配的报文个数
- 记录被匹配的报文的大小
规则=匹配标准+处理动作
iptables [ -t table ] COMMAND CHAIN [num] 匹配标准 -j 处理办法
匹配标准:
- 通用匹配
- 扩展匹配(必须启用netfilter模块)
- 隐含扩展:不用特别指明由哪个模块进行的扩展,此时使用-p {tcp|udp|icmp}
- 显式扩展:必须指定使用哪个模块,通过iptables的-m选项完成
通用匹配:
- -s,--src 指定源IP
- -d,--dst 指定目的IP
- -p { tcp | udp | icmp } 指定协议
- -i INTERFACE 指定数据报文流入的接口,一般用在PREROUING INPUT FORWARD链
- -o INTERFACE 指定数据报文流出的接口,一般用在OUTPUT POSTROUTING FORWAD链
扩展匹配
隐含扩展
- -p tcp
- --sport PORT:源端口
- --dport PORT:目的端口
- --tcp-flags mask compare
- --tcp-flags SYN,FIN,ACK,RST SYN,ACK 将检查SYN/FIN/RST/ACK这4个标志位,只允许SYN,ACK为1
- --syn 匹配SYN标志位为1的数据
-p icmp
- --icmp-type
- 类型0:echo-reply
- 类型8:echo-request
- - p udp
- --sport
- --dport
处理办法:
- ACCEPT 允许通过
- DROP 丢弃
- REJECT 丢弃
- DNAT 转换目的IP
- SNAT 转换源IP
- REDIRECT 端口重定向
- MASQUERADE 作PAT
- LOG 记录日志
- MARK 打标记
COMMAND命令:
管理规则
- -A CHAIN:附加一条规则,添加在链的尾部
- -I CHAIN [num]:插入一条规则,插入在对应CHAIN的第num条
- -D CHAIN num:删除指定链中的第num条规则
- -R CHAIN num:替换指定的规则
管理链
- -F [CHAIN]:清空指定链的所有规则,如果省略CHAIN,则实现删除对应表中的所有链
- -P CHAIN { ACCEPT | DROP }:设置指定链的默认策略
- -N NEW_CHAIN:自定义新的空链
- -X NEW_CHAIN:删除自定义的空链
- -Z:将指定链中的所有规则中的计数器置零
- -E OLD-CHAIN-NAME NEW-CHAIN-NAME:重命名自定义的链
查看
- -L 显示指定表中的所有规则
- -n:以数字格式显示主机地址、端口号
- -v:显示详细信息(计数器)
- -x:显示计数器的精确值
- --line-numbers:显示规则号码
iptables基础练习:
- 、查看nat表中的所有规则
- iptables -t nat -nL
- 、查看filter表中所有的规则
- Iptables -filter -nL
- 、将nat表中的所有链的默认策略修改为DROP
- 、在INPUT链中添加一条拒绝源IP为172.16.1./24进入本机的规则
- 、在INPUT链中添加一条允许源IP为172.16.1./24进入本机的规则
- 、在INPUT链中最前方加入一条允许192.168.1.1访问本机10.1.1.1的规则
- 、在INPUT链中的第2个位置插入一条规则,允许从本机eth0网卡进入数据,
- 、替换INPUT链中第2条规则
- 、删除INPUT链中第3条规则
- 、清空INPUT链中所有的规则
iptables不是服务,但有服务脚本,服务脚本的主要作用在于管理保存的规则
装载及移除iptables/netfilter相关的内核模块
iptables_nat,iptables_filter,iptables_mangle,iptables_raw,ip_nat,ip_conntrack
也可以打开/etc/sysconf/iptables
- # iptables -A INPUT -p tcp --dport -j ACCEPT
- # iptables -A OUTPUT -p tcp --sport -j ACCEPT
Linux_iptables的更多相关文章
- linux_iptables 详解
iptables工具__过滤包—命令(-A.-I.-D.-R.-L等).参数(-p.-s.-d.--sport.--dport.-i.-o等).动作-j (ACCEPT.DROP.REJECT.RED ...
- Linux_IPtables防火墙详解
目录 目录 Iptables Iptables结构 规则表 规则链 iptables指令用法详解 综合案例 SNAT 策略 DNAT 策略 Iptables规则的备份和还原 iptables 练习 I ...
- Linux运维相关目录
随机推荐
- CentOS编译安装vim
#删除系统自带的vim rpm -qa | grep vim rpm -e vim-X11-7.4.629-5.el6_8.1.x86_64 vim-filesystem-7.4.629-5.el6_ ...
- Gluster vs Ceph:开源存储领域的正面较量
https://www.oschina.net/news/49048/gluster-vs-ceph 引言:开源存储软件Ceph和Gluster能够提供相似的特性并且能够为用户节省不小的开支.那么谁更 ...
- Java map双括号初始化方式的问题
关于Java双括号的初始化凡是确实很方便,特别是在常量文件中,无可替代.如下所示: Map map = new HashMap() { { put("Name", "Un ...
- MySQL内置函数获取几天前的日期
如何采用mysql内置函数获取指定时间之前的日期呢? SELECT something FROM table_name WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY ...
- ubuntu 16.04 root 初始密码设置
()默认root密码是随机的,即每次开机都有一个新的root密码.我们可以在终端输命令 sudo passwd,然后输入当前用户的密码,enter ()终端会提示我们输入新的密码并确认,此时的密码就是 ...
- 【嵌入式】FS2410非操作系统外围资源测试
在刚接触FS2410时,其实这个测试也没有多大意义,但是对于以后来说,当一个产品做成功时,产品测试还是一个必须经过的一个阶段,所以这个流程还是有必要走一下! 在非操作系统下,主要进行RTC测试,按键测 ...
- ubuntu+nginx+laravel
1, 到http://v4.golaravel.com/docs/4.2/installation 点击下载最新版Laravel框架.然后解压 2,把laravel-master下的文件夹拷入到php ...
- axios 的应用
vue更新到2.0之后,作者就宣告不再对vue-resource更新,而是推荐的axios,前一段时间用了一下,现在说一下它的基本用法. 首先就是引入axios,如果你使用es6,只需要安装axios ...
- 开源搜素引擎——Nutch
Nutch简介 Nutch 是一个开源Java实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具.包括全文搜索和Web爬虫. Nutch 是一个开源Java 实现的搜索引擎.它提供了我们运行 ...
- RabbitMQ中各种消息类型如何处理?
一:消息类型 Map String(含json字符串类型) 二:处理方法 2.1 Map消息 如果发送的消息类型是map类型,可以通过SerializationUtils.deserialize方法将 ...