iptables学习2
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的更多相关文章
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例[转载]
Linux防火墙iptables学习笔记(三)iptables命令详解和举例 2008-10-16 23:45:46 转载 网上看到这个配置讲解得还比较易懂,就转过来了,大家一起看下,希望对您工作能 ...
- Linux防火墙iptables学习
http://blog.chinaunix.net/uid-9950859-id-98277.html 要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有很多数据包进入,离开,或者经过 ...
- iptables学习02-nat表应用
nat表应用实验 第一步 准备工作 A机器两块网卡ens33(192.168.2.106).再添加一块自定义网卡ens37(192.168.100.1),添加到LAN内网区段(自定义名字,写什么无所谓 ...
- Linux下iptables学习笔记
Linux下iptables学习笔记 在Centos7版本之后,防火墙应用已经由从前的iptables转变为firewall这款应用了.但是,当今绝大多数的Linux版本(特别是企业中)还是使用的6. ...
- 【转】IPtables学习笔记
写在前面,大家测试玩iptables时要记得自己配置了那些东西,测试完成后记得删除啊,博主忘了删除一个input REJECT链的一条记录,后续测试搭建了apache服务器,始终无法访问,最后抓包发现 ...
- LInux iptables学习
作者原文 : http://blog.chinaunix.net/uid-9950859-id-98277.html 要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有很多 ...
- iptables 学习
本博客是学习慕课网课程 用iptables搭建一套强大的安全防护盾 整理而成 iptables相当于在ip层挂载一个hook point对用户进行控制 组成: 四张表+ 五条链(hook point) ...
- iptables学习笔记
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3812510.html ...
- iptables学习笔记_____摘自朱双印个人日志 ____http://www.zsythink.net/
iptables为我们预先定义了四张表 raw.mangle.nat.filter filter表负责过滤:允许那些ip访问.拒绝那些ip访问.允许那些端口...是最常用的表 #查看表里面所有的规则i ...
- iptables学习
droidwall.sh #!/system/bin/sh IPTABLES=iptables BUSYBOX=busybox GREP=grep ECHO=echo # Try to find bu ...
随机推荐
- tomcat参数java_opts调整
启动文件修改 在windows环境下,tomcat下的~/bin/catalina.bat文件,在文件头部加入: set "JAVA_OPTS=%JAVA_OPTS% -server -Xm ...
- Sencha Modern
Sencha Modern 前言 经过一个月捣鼓,基于sencha公司最新框架版本 ExtJS7.0 modern 的示例代码可以和大家见面了.示例中对系统主题.公共(组件,方法)封 ...
- 使用selenium爬虫抓取数据
写在前面 本来这篇文章该几个月前写的,后来忙着忙着就给忘记了.ps:事多有时候反倒会耽误事.几个月前,记得群里一朋友说想用selenium去爬数据,关于爬数据,一般是模拟访问某些固定网站,将自己关注的 ...
- 1.go语言入门
1.Go语言中文网,选择相应版本(32位或64位)下载 https://studygolang.com/dl, 2.解压到一个任意文件夹 3.配置环境变量 cmd命令行输入go version查看当前 ...
- Oracle 11g 服务端的安装步骤
Ø 简介 本文主要介绍 Oracle 11g 服务端的安装步骤,在介绍之前说明以下几点: 1. 所安装的服务器是本机的虚拟机,操作系统为 Windows Server 2019: 2. 以下 ...
- 解决MybatisPlus修改时空字段不修改问题
今天遇到了一个问题,在更新数据时,MybatisPlus不会进行修改属性为空的数据表字段. 解决办法: 只需要在实体类的属性上加一行注释即可 /** * 姓名 */ @TableField(fill ...
- docker容器的端口映射
1.创建一个Nginx 容器,先不映射端口 [root@localhost ~]# docker run --name my_nginx -d nginx 7be3673a4c0f8f7ffe79a7 ...
- LeetCode Contest 166
LeetCode Contest 166 第一次知道LeetCode 也有比赛. 很久没有打过这种线上的比赛,很激动. 直接写题解吧 第一题 很弱智 class Solution { public: ...
- Grafana的Docker部署方式
docker run -d -p : --name=grafana544 -v D:/grafana/grafana-/data:/var/lib/grafana -v D:/grafana/graf ...
- App_Code下类无法引用问题
App_Code 下创建的.cs文件仅仅是“内容”不是代码.设置文件为“编译”就可正常引用.