成功:
WebServer:网页服务器
DNS:域名解析服务器(将域名www.baidu.com--->转换成对应web服务器的IP)
比如:将192.168.1.0/24 划分成 10个子网 请问子网掩码 为啥?
硬件防火墙:一个独立的设备,用于访问控制。
软件防火墙:一个软件,用于访问控制。
防火墙最重要的任务
1、切割被信任(如子域)与不被信任(如 Internet)的网段
2、划分出可提供Internet的服务与必须受保护的服务
3、分析出可接受与不可接受的数据包状态
你需不需要防火墙?
理论上需要,但你必须知道系统哪些数据与服务需要保护、针对需要受保护的服务来设置防火墙规则
防火墙的一般网络布线示意:
防火墙不能有效阻止病毒或木马程序
防火墙对于来自内部LAN的攻击无能为力
Linux的数据包过滤软件:iptables
对比结果符合Rule1,此时这个网络数据包就会进行Action1的动作,而不会理会后续的Rule2、Rule3等规则了
iptables的表格与链:
1、Filter(过滤器):与本机数据有关
INPUT:主要与想要进入Linux本机的数据包有关
OUTPUT:主要与Linux本机所要送出的数据包有关
FORWARD:与本机无关,传送数据到后端的计算机中
2、NAT(地址转换):主要用来进行来源和目的地的ip或port的转换
PREROUTING:在进行路由判断之前所要进行的规则
POSTROUTING:在进行路由判断之后所要进行的规则
OUTPUT:与发出去的数据包有关
3、Mangle(破坏者):主要与特殊的数据包的路由标志有关(很少使用)
规则的清除:
iptables [-t tables] [-FXZ]
-F:清除所有已定制的规则
-X:除掉所有用户"自定义"的chain
-Z:将所有的chain的计数与流量统计都归零
例:清除本机防火墙(filter)的所有规则
定义默认策略(policy)
iptables [-t nat] -p [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP]
-P:定义策略(Policy),P为大写
ACCEPT:该数据包可接受
DROP:该数据包直接丢弃,不会让client知道为何丢弃
例:将本机的INPUT设置为DROP,其他设置为ACCEPT注意先清除所有规则
网络及接口设备的防火墙设置:
例1:设置lo成为受信任的设备,亦即进出lo的数据包都予以接受
例2:只要来自内网的(172.20.223.0/24)的数据包都接受。
例3:只要是来自172.20.223.32就接受,但是来自172.20.223.91的数据包就丢弃
针对端口的防火墙设置
例1:想连接到本机的udp port 137,138 tcp port 139,445就放行
对mac与state的防火墙设置:
例1:只要已建立或相关封包就予以通过,只要是不合法封包就丢弃
例2:针对局域网络内的 aa:bb:cc:dd:ee:ff 主机放行
防火墙重心针对的是报文 比如协议、ip、端口、mac地址
原始套接字(SOCK_RAW)
1、一种不同于SOCK_STREAM、SOCK_DGRAM的套接字,它实现于系统核心
2、可以接收本机网卡上所有的数据帧(数据包),对于监听网络流量和分析网络数据很有作用
3、开发人员可发送自己组装的数据包到网络上
4、广泛应用于高级网络编程
5、网络专家、黑客通常会用此来编写奇特的网络程序
流式套接字只能收发
TCP协议的数据
数据报套接字只能收发
UDP协议的数据
原始套接字可以收发
1、内核没有处理的数据包,因此要访问其他协议
2、发送的数据需要使用,原始套接字(SOCK_RAW)
1、创建原始套接字
int socket(PF_PACKET, SOCK_RAW, protocol)
功能:
创建链路层的原始套接字
参数:
protocol:指定可以接收或发送的数据包类型
ETH_P_IP:IPV4数据包
ETH_P_ARP:ARP数据包
ETH_P_ALL:任何协议类型的数据包
返回值:
成功(>0):链路层套接字
失败(<0):出错
sock_raw_fd = socket(PF_PACKET,SOCK_RAW,htons(ETH_P_ALL));
头文件:
#include
#include
- #include<stdio.h>
- #include<sys/socket.h>
- #include<netinet/ether.h>
- int main()
- {
- //创建一个链路层 通信的原始套接字
- int fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
- printf("fd = %d\n", fd);
-
- close(fd);
- return 0;
- }