掌握Linux下防火墙的原理和配置方法。
配置Linux下的一组防火墙规则,对内网、外网以及DMZ区交互的访问进行有效约束。
防火墙作为一种访问控制的机制是确保网络安全的重要手段。针对不同的的需求和应用环境,可以量身定制出不同的防火墙系统。在众多网络防火墙产品中,Linux操作系统上的防火墙软件特点显著。首先是Linux操作系统在系统稳定性、健壮性及价格的低廉性方面都独具优势;更为重要的是系统包含了建立Internet所需的所有服务软件包。
Linux提供的防火墙软件包内置于Linux内核中,是一种基于包过滤型的防火墙实现技术。其中心思想是根据网络层IP包头中的源地址、目的地址及包类型等信息来控制包的流向。更彻底地过滤规则是检查包中的源端口、目的端口以及连接状态等信息。在Linux 2.4以上版的内核应用里一个全新的包过滤管理工具Iptables,可以加入、插入或删除包过滤表格中的规则。
iptables的原理主要是对数据包的控制:
计算机一台,用作外终端,带有一个网卡,命名为B,带linux操作系统虚拟机,命名为A,虚拟机用作路由器。(Ubuntu 20.04)
将虚拟机IP地址配置到和宿主机一个网段即可,注意地址不可与其他地址冲突。
关闭宿主机防火墙后,此时A和B是可以互ping的。
# sudo apt install net-tools
ifconfig -a
如果说 ifconfig not found
,就用第一行代码安装一下 net-tools
发现IP是192.168.85.128
ipconfig
在Windows:
ping 192.168.85.128
在虚拟机:
ping 192.168.85.1
截图结果是类似的。
发现已经可以互相成功Ping通了,该步骤完成。
问题:如果Ping不通,采取以下步骤:
打开"高级安全Windows Defender"防火墙
入站规则
找到配置文件类型为“公用”的“文件和打印共享(回显请求–ICMPv4-In)”规则,设置为允许
虚拟机可以ping通主机
参考博客 解决——虚拟机无法Ping通主机
# 启动防火墙
modprobe ip_tables
sudo ufw enable
sudo ufw reload
清除filter表中的规则,设置默认规则为丢弃一切报文 ,并用wireshark检验
# 设置规则
sudo iptables -F
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP
sudo iptables -P FORWARD DROP
# ping命令检验
ping 192.168.85.1
设置完后发现发送的报文已经都被丢弃了
设置规则,让主机A可以 ping其它机器,其它机器不可以ping主机A 【此时由虚拟机去ping的话又可以接受到包】
sudo iptables -A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
# 第一个IP为虚拟机地址,第二个为window地址
sudo iptables -A OUTPUT -s 192.168.85.128 -d 192.168.85.1 -p icmp -j ACCEPT
ping 192.168.85.1
ping 192.168.85.128
设置规则:让其它机器可以ping主机A ,阻止主机A ping其它机器
# 先要把之前的规则去掉
sudo iptables -F OUTPUT
sudo iptables -F INPUT
sudo iptables -A OUTPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
# 位置反一反
sudo iptables -A INPUT -s 192.168.85.1 -d 192.168.85.128 -p icmp -j ACCEPT
# 查看INPUT情况
sudo iptables -L
sudo iptables -P INPUT ACCEPT
ping 192.168.85.1
ping 192.168.85.128
主机A可以ping其它机器,也允许其它机器ping主机A
sudo iptables -F OUTPUT
sudo iptables -F INPUT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -A OUTPUT -s 192.168.85.128 -d 192.168.85.1 -p icmp -j ACCEPT
sudo iptables -A INPUT -s 192.168.85.1 -d 192.168.85.128 -p icmp -j ACCEPT
ping 192.168.85.1
ping 192.168.85.128
(1)所有链的预设规则应该设置为什么?为什么?(DROP、ACCEPT?)
(2)包过滤防火墙有什么优缺点?
参考链接:包过滤防火墙_百度百科
包过滤防火墙是用一个软件查看所流经的数据包的包头(header),由此决定整个包的命运。它可能会决定丢弃(DROP)这个包,可能会接受(ACCEPT)这个包(让这个包通过),也可能执行其它更复杂的动作
优:
缺:
(3)如果规则链中两条规则是互相矛盾的,如前一条是禁止某个端口,后一条是打开这个端口,会出现什么情况?
iptables的规则匹配是按顺序匹配的,因此如果前一条是禁止某个端口,由于其位置更为靠前,将会被优先匹配,因此在这种情况下会禁止该端口。
sudo iptables -F
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -A INPUT -s 192.168.85.1 -d 192.168.85.128 -p icmp -j ACCEPT
sudo iptables -A OUTPUT -s 192.168.85.128 -d 192.168.85.1 -p icmp -j ACCEPT
sudo iptables -F
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -A INPUT -s 192.168.85.1 -d 192.168.85.128 -p icmp -j DROP
sudo iptables -A INPUT -s 192.168.85.1 -d 192.168.85.128 -p icmp -j ACCEPT
sudo iptables -A OUTPUT -s 192.168.85.128 -d 192.168.85.1 -p icmp -j ACCEPT
如果说 ifconfig not found
,就用以下代码安装一下 net-tools
sudo apt install net-tools
参考博客 解决——虚拟机无法Ping通主机