firewalld and iptables

来源:互联网 发布:伊塞亚托马斯数据 编辑:程序博客网 时间:2024/05/21 07:15

这里写图片描述

1 firewalld

这里写图片描述

1.1 firewalld-config

使用firewalld-config &命令,后台调用防火墙图形管理。

这里写图片描述
这里写图片描述

firewalld分为如下几个网络区。其管理文件在如下目录:

这里写图片描述
这里写图片描述

在图形界面更改,可分为立即生效,重启服务失效;和永久更改,需要重启服务。

这里写图片描述

默认开启的网络区为public,可在此更改设定:Options—>Change Default Zone 。

默认开启的网络区为public,可以看到火墙并没有允许http服务,所以,此时通过http访问此主机会出现下面的情况:

这里写图片描述

当火墙策略里面允许http服务时,访问会成功。此时的更改为立即生效,状态为runtime

这里写图片描述
这里写图片描述

上述更改是临时的,当我们重启防火墙时,策略会被删除,即会访问不到http服务。

这里写图片描述
这里写图片描述

更改设定为永久更改,并重启火墙,此时httpd服务将永久加入火墙策略。

这里写图片描述
这里写图片描述

在火墙配置文件中,可以看到http服务已被写入配置文件。永久生效。

这里写图片描述

http服务默认访问端口为80。可以在其配置文件中将端口更改为8080,并重启httpd服务,使其生效。做了上述更改后,还需要在火墙中加入开启8080端口。此时通过httpd服务访问时应加上8080端口。

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

1.2 使用命令行接口配置防火墙

firewall-cmd –reload ##不中断连接,重新加载火墙策略

firewall-cmd –complete-reload ##中断所有连接,重新加载火墙策略

firewall-cmd –state ##查看火墙状态

firewall-cmd –get-active-zones ##查看激活状态的网络区

firewall-cmd –get-default-zone ##查看默认开启网络区

firewall-cmd –get-zones ##查看都有什么网络区

firewall-cmd –zone=public –list-all ##查看public区所有的信息

firewall-cmd –get-services ##查看火墙可开启的服务

firewall-cmd –list-all-zones ##查看所有网络区的信息

firewall-cmd –set-default-zone=dmz ##更改设定默认网络区为dmz

这里写图片描述
这里写图片描述
这里写图片描述

firewall-cmd –permanent –zone=internal –add-source=172.25.254.0/24 ##永久,将172.25.254.0/24网段的ip加入internal网络区

firewall-cmd –permanent –zone=internal –remove-source=172.25.254.0/24 ##永久,将172.25.254.0/24网段的ip移出internal网络区

firewall-cmd –permanent –zone=internal –add-interface=eth1 ##永久,将eth1网卡加入internal网络区,此时,internal网络区被激活

firewall-cmd –permanent –zone=internal –change-interface=eth1 ##永久,将eth1网卡从原来的网络区移除并且加入internal网络区

firewall-cmd –permanent –zone=internal –remove-interface=eth1 ##永久,将eth1网卡移出internal网络区

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

这里写图片描述
这里写图片描述

firewall-cmd –direct –get-all-rules

firewall-cmd –direct –add-rule ipv4 filter INPUT 1 -s 172.25.254.56 -p tcp –dport 80 -j REJECT

filter 表

INPUT 1 链的第一行

-s 指定数据来源

-p 指定协议

-dport 指定端口

-j 指定动作

这里写图片描述

firewall-cmd –add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.56 ##端口转发:通过ssh(22端口)连接我的主机的统统转到ssh(22端口)去连接172.25.254.56主机

firewall-cmd –list-all ##可以查询到上面设置的策略

firewall-cmd –add-masquerade ##开启伪装:让本身两块网卡可以进行通信

sysctl -a | grep ip_forward ##查看伪装状态,1开启,0关闭

这里写图片描述
这里写图片描述
这里写图片描述

2 iptables

这里写图片描述
这里写图片描述
这里写图片描述

iptables -t filter -L #查看火墙filter表中策略

iptables -t filter -nL #不做解析查看火墙策略

iptables -nL ##默认查看filter表中策略

iptables -F ##临时清空火墙策略,重启服务后复原

service iptables save ##将此时的火墙策略写进配置文件

iptables -A INPUT -p tcp –dport 80 -j ACCEPT ##在INPUT表中添加80/tcp端口,动作为接受

iptables -P INPUT DROP ##将INPUT表默认状态设定为DROP

iptables -P INPUT ACCEPT ##将INPUT表默认状态设定为ACCEPT

iptables -A INPUT -j REJECT ##将INPUT表剩下所有未设定动作的服务全设定为REJECT

iptables -D INPUT 3 ##删除IPNUT表中第三条策略

iptables -I INPUT 2 –dport 80 -j ACCEPT ##添加第二条策略

iptables -R INPUT 4 –dport 80 -j REJECT ##修改INPUT表第4条策略为拒绝80端口的访问

service iptables save ##保存当前状态的火墙策略并写进配置文件永久生效。(/etc/sysconfig/iptables)

iptables -N WESTOS ##添加一个WESTOS表

iptables -E WESTOS LINUX ##将WESTOS表改名为LINUX

iptables -X LINUX ##删除LINUX表

这里写图片描述
这里写图片描述
这里写图片描述

查看这张火墙策略表,可以看到第一条为接受22/tcp端口进来的数据,第二条为拒绝所有未设定动作的端口,第三条为接受80/tcp端口进来的数据。由于计算机读取策略是从上到下依次匹配,匹配到了就不再继续查询,所以当80/tcp端口,在第二条被拒绝后不再查询,即第三条的设定无效且http服务不能通过火墙被访问。

这里写图片描述
这里写图片描述

从上到下依次读取火墙策略,在INPUT表中ssh和http服务可以通过火墙,其他均被阻挡。

这里写图片描述
这里写图片描述

一个简易的火墙策略布置练习

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

POSTROUTING链

我们最后的任务应该是构造网络地址转换,对吧?至少对我来说是的。我们在nat表的POSTROUTING里只加入了一条规则,它会对所有从Internet接口(对我来说,这是eth0)发出的包进行NAT操作。选项-t指定要在哪个表里插入规则,这里是nat表。命令-A说明我们要把规则添加到POSTROUTING链末尾。-o$INET_IFACE指定要匹配所有从接口INET_IFACE出去的包,这里我们使用的是eth0。最后,我们把target设置为SNAT。这样,所有匹配此规则的包都会由SNAT target处理之后,它们的源地址就是Internet接口的地址了。不要忘了SNAT可是一定要有IP地址的,用–to-source来设置哦。

iptables -t nat -A POSTROUTING -o eth0 -j SNAT –to-source 172.25.254.156

sysctl -a | grep ip_forward ##/etc/sysctl

sysctl -p

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

接下来是在desktop上写策略

这里写图片描述
这里写图片描述

最后就是进行测试

先是 ping 网关

这里写图片描述

然后再是 ping 转换的那个网段

这里写图片描述

本次实验算是完成了

原创粉丝点击