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运维相关目录
随机推荐
- CentOS7静态IP设置
[root@localhost network-scripts]# pwd /etc/sysconfig/network-scripts [root@localhost network-scripts ...
- 安装 xcode 5.1.1
https://developer.apple.com/downloads/ 切换路径xcode 路径.然并卵,不好用 http://cms.35g.tw/coding/xcode-select-%E ...
- 实现一个简单的虚拟demo算法
假如现在你需要写一个像下面一样的表格的应用程序,这个表格可以根据不同的字段进行升序或者降序的展示. 这个应用程序看起来很简单,你可以想出好几种不同的方式来写.最容易想到的可能是,在你的 JavaScr ...
- angular中的表单数据自定义验证
之前说过了angular是如何给表单的数据进行基本的,常用的验证的:angular学习笔记(二十)-表单验证 但是在实际工作中,这些验证是远远不够的,很多时候我们需要自定义一些验证规则,以及一些异步, ...
- 用NPOI创建Excel、合并单元格、设置单元格样式、边框的方法
本篇文章小编为大家介绍,用NPOI创建Excel.合并单元格.设置单元格样式.边框的方法.需要的朋友参考下 今天在做项目中,遇到使用代码生成具有一定样式的Excel,找了很多资料,最后终于解决了,Ex ...
- zsh与oh-my-zsh
在开始今天的 MacTalk 之前,先问两个问题吧: 1.相对于其他系统,Mac 的主要优势是什么?2.你们平时用哪种 Shell?…… 第一个童靴可以坐下了,Mac 的最大优势是 GUI 和命令行的 ...
- 多媒体文件格式之FLV
[时间:2016-07] [状态:Open] FLV是一个相对简单的多媒体格式,仅支持单节目,也就是说每个FLV只能至多一个音频.至多一个视频.FLV(Flash Video)是Adobe的一个免费开 ...
- 【Python】获取服务器时间
import http.client import time import os def get_webservertime(host): conn=http.client.HTTPConnectio ...
- 关于IT学习的老马私人订制服务
各位寒门学子好,老马的前端教程发布以来,受到好多同学的关注.老马辛勤付出也收货了很多好评.在这非常感谢大家. 最近一段时间来,老马已经完成了html.css.css项目.js基础.js高级.dom与特 ...
- JAVA-数据库之更新记录
相关资料:<21天学通Java Web开发> 更新记录 StatementUpdate.jsp <%@ page language="java" contentT ...