Firewall:工作在主机或网络边缘,对进出的报文按事先定义的规则进行检查,

并且由匹配到的规则进行处理的一组硬件或软件,甚至可能是两者的组合

隔离用户访问,只允许访问指定的服务    通过ADSL拨号连入互联网

放一个硬件防火墙在网络前  这样的主机 CPU通常都是特制的  这就是硬件防火墙

主机防火墙:工作于主机边缘, 只能对一台主机起到保护作用

网络防火墙:工作于网络边缘, 对多台主机起到保护作用  这是一个硬件 有CPU内存 不需要硬盘

对数据报文进行分析 但是必须打开所有功能,也可以严格定向

工作在内核空间中, 相当于在TCP/IP协议栈前面加一道墙

网卡--->防火墙----->TCP/IP协议栈 这种是针对主机

网络层防火墙:工作在网络层  网络防火墙  需要拆掉物理层和链路层 仅能检查源和目标的端口、源和目标IP  内容不能检查。

没问题就可以进行转发。

应用层防火墙:工作在网关  拆掉TCP和IP首部对内容进行分析 ,

没问题就进行转发 相当于路由器  这个网管被称为代理服务器

分别是:网络层防火墙  应用层防火墙 内部主机

但是仍然有可能精心设计报文  怎么办?

IDS:入侵检测系统 相当于监控器也需要规则 结合防火墙一起使用

HIDS:主机入侵检测系统,作用于主机    例如:OSSEC

NIDS:网络入侵检测系统 例如:snort

Filesystem:文件系统级别入侵检测  例如修改配置文件等行为   tireware

IPS(IDS+防火墙):入侵防御系统  IDS结合防火墙一起工作 及时减低损失

honeypot:蜜罐  诱捕黑客 有漏洞吸引你

系统评估安全工具:全方面扫描检测        例如: Nessus    nmap

rootkit攻击                 乌云平台

iptables/netfilter:基于网络层的防火墙, 支持连接追踪(状态检测)

netfilter提供钩子函数

ipfw ----> ipchains-----> iptables  Linux防火墙是参考 openBSD的防火墙

iptables:本身只是防火墙规则编写工具

netfiter:让规则生效的网络过滤器,是一个框架  规则放在这个上面工作

hook_function  钩子函数       转发不会经过用户空间,只是在内核空间

INPUT  到本机内部

OUTPUT  到本机出去

FORWARD 转发

POSTROUTING  路由之后  做原地址转换成公网的IP才能出去         私有地址是不能进行路由的

PRERROUTING  路由之前  报文回来的时候就需要转发,否则就交给自己本机处理了  目标地址转换

每个网卡都有自己的发送队列

防火墙功能:

过滤:做报文筛选

NAT:Network Address Transltion 网络地址转换

DNAT  转换目标地址

SNAT  转换源地址

mangle:  修修补补 改变IP信息等 在这五个位置上都行

raw: 先不管 用的不多

FORWARD:

filter

mangle

INPUT

filter

mangle

OUT

filter

mangle

nat

PREROUTING

mangle

nat

POSTOUTING

mangle

nat

规则优化:将控制强的放在前面, 应用访问频繁的也要放在前面

四表:

fileter  net  mangle  raw

五链

PREROUTING  INPUT  FOREARD  OUTPUT  POSTROUTING

目标主机不是本机才会转发  本机进出都不会经过FORWARD

表和链的对应关系

filer:INPUT FORWARD.OUTPUT

nat:PREROUTING OUTPUT POSTROUTING

magle:PREROUTING FORWARD POSTROUTING INPUT OUTPUT

规则:检查条件, 处理机制

默认策略: 只针对filter

通:白名单,默认为堵,只对能识别的进行放行

堵:黑名单,默认为通,只对能识别的进行阻截

检查条件:网络层

IP:SIP,DIP

TCP:SPORT,DPORT,FLags(标志位) 例如:syn ack等

UDP:SPORT,DPORT

ICMP:ICMP-TYPE(报文类型)  ping出去和回来是不同的  ping用的协议

扩展机制:

Time、string、state(connection-tracking)连接追踪

处理机制:

DROP(丢弃)        REJECT(拒绝,并返回)

ACCEPT(允许)       SNAT   DNAT  目标转换

RETURN(返回)       REDIRECT(端口转发)

LOG(只记录日志)

mangle:做防火墙标记

如何写规则

-t 表 -L 列出 -n 以数值方式显示

iptables [-t table] -N chain

创建一条自定义的空规则链

iptables [-t table] -X chain

删除一条自定义的空规则链

iptables [-t table] -E old-chin-name new-chain-name

为链修改名

iptables [-t table] -P chain—name target

为链指定默认策略,修改默认的属性

iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]

-F 清空链中的规则

规则由编号,在链中自上而下,从1开始

-L list 列出表中的所有规则

-n:数字格式显示ip和port  否则会反解成名字  速度很慢

-v:显示信息,

pkts:packets,被本规则所有匹配到的报文的个数

baytes:被本规则所匹配到的所有报文的大小子和,单位是字节,会执行单位换算

target:目标,即处理机制

port:协议一般为(TCP|UDP|ICMP)

opt:可选项

in:数据包的流入接口

out:数据包的流出接口

scource:源地址

destination:目标地址

-vv:

-vvv:

-x:exactly:精确值,不执行单位换

--line-nambers:显示各规则的行号

-Z:zero,清零:

把规则的计数器清零

iptables [-t table] {-A|-D} chain rule-specification

-A:append,附加一条规则

rule-specification     匹配条件 -j 处理机制

匹配条件:

通用匹配

-s  匹配源地址,可以IP,也可以网络地址:可以使用!操作符取反,!172.168.0.0/16   -s相当于 --src,或 --source

-d  匹配目标地址,可以IP,也可以网络地址:可以使用!操作符取反,!172.168.0.0/16

-p  匹配协议,通常只能使用{TCP|UDP|ICMP}三者之一

-i  数据报文流入的接口,通常只用于INPUT   FORWARD和PREROUTING

-o  数据报文流出的接口,通常只用OUTPUT    FORWARD和POSTROUTING

保存规则: iptables不是服务 不会监听端口 定义成服务 只是为了开机自动运行

service iptables save

规则会被保存至/etc/sysconfig/iptables文件中:

默认,start时也会读取该文件中的内容以设置规则

# iptables-save > /path/to/some_rulefile 保存iptables至别的位置

# iptables-restore < /path/to/some_rulefile 从自定义的位置读取并使之生效

规则命令:

-A:添加

-D:删除

iptables [-t table] -D chain rulenum

当一条被删除,另外的一条会被补上

插入规则

iptables [-t table] -I chain [rulenum] rule-specification

替换规则(覆盖指定规则)

iptables [-t table] -R chain rulenum rule-specification

显示指定链上的规则添加命令

iptables [-t table] -S [chain [rulenum]]

扩展匹配

隐含扩展:使用-p {tcp|udp|icmp}指定某特定协议后,自动能够对协议进行的扩展

-p tcp

--dport m[-n],匹配的目标端口,可以是连续的多个端口

--sport:m[-n],匹配的源端口,可以是连续的多个端口

--tcp-flags

URG PSH PST SYN ACK FIN

-p udp

--dport m[-n],匹配的目标端口,可以是连续的多个端口

--sport:m[-n],匹配的源端口,可以是连续的多个端口

-p icmp

icmp-type

显式扩展:必须要明确指定的扩展模块

-m 扩展模块名称 --专用选项1 --专用选项2

multiport:多端口匹配,一次指定多个离散端口

--source-ports --sport ports{port1 port2}

--destination-ports, --dports

--ports

iprange:ip地址服务

[!] --src-range from [-to]

[!] --dst-range from [-to]

time 指定时间范围

--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]

--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]

--timestart hh:mm[:ss]

--timestart hh:mm[:ss]

[!] --weekdays day[,day....]

string 字符串匹配

--alog {bm|kmp} :字符匹配查找时使用的算法

--string “STRING” :要查找的字符串

--hex-string "HEX-STRING" 要查找的字符,先编码成16进制格式

connlimit:每IP对指定服务的最大并发连接数

[!] --connlimit-above

limit:报文速率控制

--limit #[/second|/minute|/hour|/day]

--limit-burst #

hping3:安装此包,做测试

state:状态追踪

ip_conntrack,nf_conntrack

netfilter:会话

--state

NEW

ESTABLISHED

RELATED

INVALID

调整连接追踪功能所能容纳的最大连接数

cat /proc/sys/net/nf_conntrack_max

定义了连接追踪的最大值,因此,建议按需调大此值

cat /proc/net/nf_conntrack

记录了当前追踪的所有连接

cat /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established

超时时间

法则:

1.对于进入状态为ESTABLISHED都应该放行

2.对于返回状态为ESTABLISHED都应该放行

3.严格检查进入的状态为NEW的链接

4.所有状态为INVALID都应该拒绝

-j target

RETURN:返回调用链

如何放行工作与被动模式的ftp服务

1、确保iptables加载ftp协议支持的模块,ip_nat_ftp,ip_conntrack_ftp

编辑/etc/syconfig/iftables-config文件,定义如下参数:

IPTABLES_MIDULES="ip_nat_ftp ip_conntrack_ftp"

2。放行请求报文的RELATED和ESTABLISHED状态,放行响应报文的ESTABLISHED状态

回顾:开机流程

POST--> BootSequence(MBR:bootloader) -->GRUB -->kernel(initramfs) --> /sbin/init (/etc/inittab,/etc/init/*.conf)

启动服务时的最后一个服务通常是/etc/rc.d/rc.local(/etc/rc.local),这事实上是一个脚本,但凡写在脚本的命令到或脚本调用都在系统运行至此服务被执行

iptables学习2的更多相关文章

  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. iptables学习02-nat表应用

    nat表应用实验 第一步 准备工作 A机器两块网卡ens33(192.168.2.106).再添加一块自定义网卡ens37(192.168.100.1),添加到LAN内网区段(自定义名字,写什么无所谓 ...

  4. Linux下iptables学习笔记

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

  5. 【转】IPtables学习笔记

    写在前面,大家测试玩iptables时要记得自己配置了那些东西,测试完成后记得删除啊,博主忘了删除一个input REJECT链的一条记录,后续测试搭建了apache服务器,始终无法访问,最后抓包发现 ...

  6. LInux iptables学习

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

  7. iptables 学习

    本博客是学习慕课网课程 用iptables搭建一套强大的安全防护盾 整理而成 iptables相当于在ip层挂载一个hook point对用户进行控制 组成: 四张表+ 五条链(hook point) ...

  8. iptables学习笔记

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3812510.html ...

  9. iptables学习笔记_____摘自朱双印个人日志 ____http://www.zsythink.net/

    iptables为我们预先定义了四张表 raw.mangle.nat.filter filter表负责过滤:允许那些ip访问.拒绝那些ip访问.允许那些端口...是最常用的表 #查看表里面所有的规则i ...

  10. iptables学习

    droidwall.sh #!/system/bin/sh IPTABLES=iptables BUSYBOX=busybox GREP=grep ECHO=echo # Try to find bu ...

随机推荐

  1. HDU 6298(数学)

    题意是给出一个数,找出这个数的三个因子且这三个因子的和等于这个数,输出满足条件的乘积最大的一组因子的乘积,如果不存在这样的因子,就输出 -1. 第一次 wa 了,因为把题目中的 x | n 当做了位或 ...

  2. Paper | SkipNet: Learning Dynamic Routing in Convolutional Networks

    目录 1. 概括 2. 相关工作 3. 方法细节 门限模块的结构 训练方法 4. 总结 作者对residual network进行了改进:加入了gating network,基于上一层的激活值,得到一 ...

  3. 第02组 Beta冲刺(2/5)

    队名:無駄無駄 组长博客 作业博客 组员情况 张越洋 过去两天完成了哪些任务 数据库实践 提交记录(全组共用) 接下来的计划 加快校园百科的进度 还剩下哪些任务 学习软工的理论课 学习代码评估.测试 ...

  4. CSS使用知识点

    1.空白符   2.字符间距   3.省略号样式   4.水平垂直居中用法   5.CSS角标实现   空格符 1.  相当于键盘按下的空格,区别是 是可以累加的空格,键盘敲下的空格不会累加 2.  ...

  5. [NewLife.XCode]角色权限

    NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和 ...

  6. SpringDataRedis简单入门介绍

    1:问题引入 在实际开发中,开发的每一个项目,每天都有大量的人访问,对数据库造成很大的访问压力,甚至是瘫痪.那如何解决呢?我们通常的做法有两种:一种是数据缓存.一种是网页静态化.我们今天讨论第一种解决 ...

  7. java 金额数字转换大写算法

    根据人民币大写金额规范,转换有几点要注意的: 阿拉伯数字中间有"0"时,中文大写金额中间可以只写一个"零"字.如¥1,409.50,应写成人民币壹仟肆佰零玖圆伍 ...

  8. 一个简单的利用 WebClient 异步下载的示例(五)(完结篇)

    接着上一篇,我们继续来优化.我们的 SkyParallelWebClient 可否支持切换“同步下载模式”和“异步下载模式”呢,好处是大量的代码不用改,只需要调用 skyParallelWebClie ...

  9. WPF Adorner 简易图片取色器

    回答MSDN问题所写. 使用Adorner+附加属性 图片类(来自这位博主的博客) /// <summary> /// 用于获取位图像素的类 /// </summary> pu ...

  10. Mysql设置binlog过期时间并自动删除

    问题: Mysql数据库由于业务原因,数据量增长迅速,binlog日志会增加较多,占用大部分磁盘空间. 解决方案: 出于节约空间考虑,可进行删除多余binary日志,并设置定期删除操作. .查看bin ...