主机防火墙:主要是用来防范单台主机的进出报文;-----filter表·
网络防火墙: 能够实现对进出本网络的所有主机报文加以防护----nat表
raw mangle nat filter
========================================================================================
iptables缺点:
(1)防火墙虽然可以过滤互联网的数据包,但却无法过滤内部网络的数据包。因此若有人从内部网络攻击时,防火墙没有作用。
(2)电脑本身的操作系统亦可能因一些系统漏洞,使入侵者可以利用这些漏洞绕过防火墙过滤,从而入侵电脑。
(3)防火墙无法有效阻挡病毒攻击,尤其是隐藏在数据中的病毒。
firewalld 与 iptables 都是 linux 中防火墙的管理程序,但其实其角色主要为对于防火墙策略的管理,真正的防火墙执行者是位于内核中的netfilter
iptables 仅能通过命令行进行配置;而 firewalld 提供了图形接口,类似windows防火墙的操作方式
iptables 每一个单独更改意味着清除所有旧的规则,并从 /etc/sysconfig/iptables 中读取所有新的规则;而 firewalld 在有规则变动后,可以仅仅运行规则中的不同之处,即在 firewalld 运行时间内,改变设置时可以不丢失现行链接
iptables 的配置文件在 /etc/sysconfig/iptables 中;而 firewalld 的配置文件在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种 XML 文件中
iptables 没有守护进程,并不能算是真正意义上的服务;而 firewalld 有守护进程
iptables 通过控制端口来控制服务,而 firewalld 则是通过控制协议来控制端口
1,firewalld可以动态修改单条规则,动态管理规则集,允许更新规则而不破坏现有会话和连接。而iptables,在修改了规则后必须得全部刷新才可以生效;
2,firewalld使用区域和服务而不是链式规则;
3,firewalld默认是拒绝的,需要设置以后才能放行。而iptables默认是允许的,需要拒绝的才去限制;
4,firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现。也就是说,firewalld和iptables一样,它们的作用都用于维护规则,而真正使用规则干活的是内核的netfilter。只不过firewalld和iptables的结果以及使用方法不一样!
firewalld是iptables的一个封装,可以让你更容易地管理iptables规则。它并不是iptables的替代品,虽然iptables命令仍可用于firewalld,但建议firewalld时仅使用firewalld命令。
配置firewalld-cmd 查看版本:firewall-cmd --version 查看帮助:firewall-cmd --help 显示状态:firewall-cmd --state 查看所有打开的端口:firewall-cmd --zone=public --list-ports 更新防火墙规则:firewall-cmd --reload 端口开放 添加:firewall-cmd --zone=public --add-port=80/tcp --permanent 重新载入:firewall-cmd --reload 删除:firewall-cmd --zone= public --remove-port=80/tcp --permanent
查看转发的端口:firewall-cmd --list-forward-ports
其实一个服务对应一个端口,每个服务对应/usr/lib/firewalld/services下面一个xml文件。 firewall-cmd --list-services
查看还有哪些服务可以打开 firewall-cmd --get-services
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
考题中所涉及网卡为:eth0:,eth1的IP:192.168.6.217;MAC地址:00-C0-9F-79-E1-8A
1.1)设定INPUT为ACCEPT
1.2)设定OUTPUT为ACCEPT
1.3)设定FORWARD为ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
2.1)接收来自192.168.0.3的IP访问
2.2)拒绝来自192.168.0.0/24网段的访问
iptables -A INPUT -i eth0 -s 192.168.0.3 -j ACCEPT
iptables -A INPUT -i eth0 -s 192.168.0.0/24 -j DROP
iptables -A INPUT -s 192.168.0.3 -j LOG
4.1)拒绝任何地址访问本机的111端口
4.2)拒绝192.168.0.0/24网段的1024-65534的源端口访问SSH
iptables -A INPUT -i eth0 -p tcp --dport 111 -j DROP
iptables -A INPUT -i eth0 -p tcp -s 192.168.0.0/24 --sport 1024:65534 --dport 22 -j DROP
5.1)清除filter表中所有已经存在的规则;
5.2)设定预设策略,除了INPUT设为DROP,其他为ACCEPT;
5.3)开放本机自由访问本机的所有服务;
5.4)设定有相关的封包状态的请求可以进入本机;
5.5)拒绝所有无效连接状态进如本机
iptables -F
iptables -X
iptables -Z
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state INVALID -j DROP
6.1)清除所有已存的规则
6.2)将INPUT设为DROP
6.3)允许MAC地址为00-C0-9F-79-E1-8A的主机向本主机发送请求
iptables -F
iptables -X
iptables -Z
iptables -P INPUT DROP
iptables -A INPUT -m MAC --mac-source 00-C0-9F-79-E1-8A -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --icmp-type 8 -j DROP
8.1)清除所有策略
8.2)开启路由转发功能
8.3)通过MASQUERADE设定来源于192.168.6.0网段的IP通过网卡eth1转发出去
iptables -F
iptables -X
iptables -Z
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.6.0/24 -o eth1 -j MASQUERADE
9.1)清除所有NAT策略
9.2)开启路由转发
9.3)通过SNAT设定来源于192.168.6.0网段通过网卡eth1:192.168.6.217转发出去
9.4)用iptables观察转发的数据包数量
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.6.217
iptables -nvL
10.1)清除所有NAT策略
10.2)重置ip_forward为1
10.3)通过DNAT设定为所有访问192.168.6.217的22端口,都访问到192.168.6.191的22端口
10.4)接受所有到192.168.6.191的22端口的数据包都通过FORWARD转发
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -d 192.168.6.217 -p tcp --dport 22 -j DNAT --to-destination 192.168.6.191:22
iptables -A FORWARD -p tcp -d 192.168.6.191 --dport 22 -j ACCEPT