安全技术
防火墙:防止外面进来,帮忙过滤筛选流量
防水墙:防止从里面出去
防火墙的分类
按保护范围分类
1.主机防火墙(服务范围为当前一台主机)
2.网络防火墙(服务范围为防火墙一侧的局域网)
按实现方式分类
1.硬件防火墙
2.软件防火墙
按网络协议划分
1.网络层防火墙 :四层,防御速度快 (IP+协议端口号+真实数据)
2.应用层防火墙:七层,防御更高
举例说明:如果黑客发个病毒给你电脑,此时网络层防火墙过滤不了病毒,因为网络层只能过滤IP地址,病毒只能是应用层防火墙过滤。
linux防火墙的基本认识
netfilter:位于linux内核中包过滤功能体系,称为linux防火墙的内核态。(更靠近内核底层)
iptables:用来管理防火墙规则的工具,称为linux防火墙的用户态。(更靠近用户)
位置在/sbin/iptables 调用iptables是netfilter帮助生效的
linux包过滤防火墙概述
包过滤防火墙工作层次:主要用于网络层,针对IP数据包。体现在对包内的IP地址、端口等信息的处理上。
表中有链
链中有规则 (四表五链)
表:
1.raw:确定是否对数据包进行跟踪
2.mange:为数据包设置标记
3.nat:地址转换 (公网和私网地址转换)
4.filter:地址过滤(允许和拒绝)
链:
input:入站数据
output:出站数据
forward:转发数据
postrouting:路由选择后
prerouting:路由选择前
a直接发给b
a发给c
三种报文流向
下载iptables软件包
查看版本
基本语法
在filter表input链中拒绝192.168.0.1的数据的访问 (-s:原地址 drop:丢弃 j:跳转)
-t :指定表 一共就两个
-t filter
-t nat
如果没写指定表,则默认-t filter
-A :表示在链的最底部插入规则
-I :表示在链中间插入,后面跟数字 ,在链的第几级加入规则
iptables -F 清空所有规则
iptables -vnL 查看规则
举例说明
打开两个终端
在另一个终端去ping一下
ping不通
当规则为REJECT时
打开第一个终端
打开另一个终端去ping
DROP:直接丢弃数据包,不会给回应(已读不回)
REJECT:丢弃数据包,会给回应(已读会回)
ACCEPT:规则是同意的意思
192.168。68.4的规则是从上而下依次匹配,在文中,第一行已经匹配上了(因为有对应的ip地址),所以就不会往下匹配 ,第一行是拒绝,因此还是ping不通另外一个主机
来测试一下,打开另一个终端 依然ping不通
如果想删除第一个拒绝,可以使用
第一步 iptables -vnL --line-numbers(查看几行)
第二步 iptables -D(表示删除) 指定第几链 几行的数字
最后打开另一个终端,测试 成功
第二种删法就是 iptables -D 指定链 指定IP地址 规则 如果遇到相似的行,删除近的那条
-I 表示在链中第几行插入
实验说明
防火墙在filter表input链中加入一条拒绝192.168.68.0网段的数据访问(后果很严重)
进入此终端的vm界面
可以看见一条拒绝访问192.168.68.0网段的数据
如果想改变,则需要用到I,在其中插一条允许即可
因为是断的整个网断,所以要去同意真机(192.168.68.1)去连接
打开此终端 又连接上去了
补充:如果一直删除第三行,到最后只会剩下两行,因为删除一个三行,下面的会替补上来,因此最后就只有2行
所以当192.168.68.3在192.168.68.0的网段中,但是-i lo 就可以把192.168.68.3ping通了,因为192.168.68.3在本机里面,所以可以ping通,因为网卡是全局模式(global)
-P 改变规格
查看规则,一开始是同意的
如果想使用-P改变规则
之前规则是同意
如何在不使用改变规则为DROP的清华下,使用ACCEPT规则制定白名单,既要用到iptables -F 又锁定不了自己
白名单的意思是,默认拒绝所有,除了在规定范围里面的可以通过
在ACCEPT规则中,最后一行加入一条允许自己通过的网段,跟一条没有网段就拒绝所有的规则。因此用-F 也没有关系。
-R:修改替换
格式:iptables -R 指定链 数字编号 -s 修改的范围 DROP/ACCEPT
补充:自定义链
-E 改名-
调用自定义链
-X 删除自定义链 (不影响其他的链)
-Z :清空链的计数器(匹配到的数据包的大小和总和)
在没清空之前,技术器都是有的
匹配规则
通用匹配:
打开另一个终端,可以看见ping不通 但是不妨碍其他功能
模块 (以so结尾的)
使用端口号,只有tcp udp才有端口号
输入rpm -ql iptables 会看见以os结尾的 这些都是模块
必须要有tcp udp模块才可以使用限制、控制功能
隐式扩展(普通的查看iptables的功能)
显式拓展 man iptables -extensions
可以在rpm -ql iptables 中查看
隐式拓展
端口的格式
举例说明 拒绝centos访问centos1 的80(httpd)端口
因为是4层协议,所有没有httpd协议(httpd在七层协议中)因此要下载httpd的软件包
打开另外一个终端centos
但是不妨碍其他登录
如果想设置80端口跟ssh都无法访问 因为ssh的端口号是22
打开centos的终端查看,都无法访问