一.基础知识
1.概念
在网络中,所谓“防火墙”,是指一种将内部网和公众访问网(如Internet)分开的方法,它实际上是一种隔离技术。防火墙是在两个网络通讯时执行的一种访问控制尺度,它能允许你“同意”的人和数据进入你的网络,同时将你“不同意”的人和数据拒之门外,最大限度地阻止网络中的黑客来访问你的网络。换句话说,如果不通过防火墙,公司内部的人就无法访问Internet,Internet上的人也无法和公司内部的人进行通信。
二.firewalld方式管理火墙
1.firewalld的所有域信息
firewalld域的具体信息,所谓域,就是火墙的安全级别
2.firewalld管理火墙的三种方式
1)命令方式
2)图形方式
[root@localhost ~]# firewall-config
3)文件管理方式
[root@localhost ~]# vim /etc/firewalld/firewalld.conf
3.firewalld的常用命令
1)火墙状态的查看,开启,关闭
systemctl start firewalld 开启火墙
systemctl stop firewalld 关闭火墙
systemctl enable firewalld 火墙开机启动
systemctl stop firewalld 火墙开机关闭
systemctl status firewalld 查看火墙状态
firewall-cmd 表示临时设置 ,firewall-cmd --permanent 表示永久设置(需要reload操作)
2)管理火墙的域信息
firewalld-cmd --get-default-zone 查看当前默认域
firewall-cmd --set-default-zone= 设置默认域,此命令是永久更改,立即生效
firewall-cmd --get-zones 查看可以使用的域
3)管理火墙上的服务信息
firewall-cmd --get-services 查看所有可添加的服务
firewall-cmd --add-service= 添加某域某服务的流量
firewall-cmd --remove-service= 禁止某域某服务的流量
firewall-cmd --get-active-zones 查看所有正在使用的域及接口和源信息
4)查看指定域的所有配置
firewall-cmd --list-all 查看默认域的所有配置(接口,源,服务,端口)
firewall-cmd --zone=work --list-all 查看指定的work域的信息
firewall-cmd --list-all-zones 列出所有域的所有配置
5)管理指定ip的流量到本主机的指定域
firewall-cmd --zone= --remove-source=172.25.254.162 从指定域中删除用于路由来自162主机的所有流量规则
firewall-cmd --zone= --add-source=172.25.254.162 将来自162主机的所有流量路由到指定域
6)管理火墙的设备信息
firewall-cmd --add-interface= 将来自该接口的所有流量到指定域
firewall-cmd --change-interface= 将接口已有区域与其它区域关联
7)管理火墙上的端口信息
firewall-cmd --add-port= 添加某域某端口的流量
firewall-cmd --remove-port= 禁止某域的某服务的流量
8)查看火墙工作状态
firewall-cmd --state 查看火墙状态
9)火墙重新加载
firewall-cmd --reload 丢弃runtime配置并应用permanent配置
[root@localhost services]# firewall-cmd --permanent --complete --reload 状态信息将丢失,当防火墙有问题时可以使用
实验:
1.查看火墙状态
2.查看火墙正在使用的域
4.查看火墙默认的域
5.查看火墙所有的域
6.查看work的域信息
7.列出可添加的服务
8.火墙允许http服务
9.火墙删除http服务
10.将指定ip加入trusted域
11.将指定ip从trusted域删除
12.拒绝主机62的所有网络连接
13.拒绝主机62的所有网络连接且没有回应
!!将此处实验还原,影响实验
14.将eth0从public域移除
15.添加eth0到trusted域
16.将eth0从原来的区域转到public域
17.将8080端口加入public域
18.查看firewalld的服务相关配置文件
添加一个http8080.xml
修改端口信息
重启火墙服务
19.临时只接受172.25.254.62的主机访问服务端的网页
20.删除上一条规则
21.临时只拒绝172.25.254.62的主机访问服务端的网页
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.62 -j REJECT
firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.62 -j REJECT
4.firewalld 管理的SNAT与DNAT
1)SNAT(原地址转换)
首先为server(172.25.254.162)添加一个网卡eth1(1.1.1.1)
然后添加路由功能,使server成为路由器
desktop(1.1.1.2)的网关设置为1.1.1.1(路由器的eth1)
此时desktop(1.1.1.2)可以通过路由器连接真机172.25.254.62
但是此时desktop(1.1.1.2)ssh连接真机(172.25.254.62)时,发现真实连接的是路由器的端口(172.25.254.162)
2)DNAT(目的地址转换)
路由器server(172.25.254.162)添加目的地址转换服务,将访问路由器的主机自动去访问1.1.1.2
firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.2
此时真机(172.25.254.62)ssh连接路由器server(172.25.254.162)
发现连接的主机是desktop(1.1.1.2)
三.iptables方式管理火墙
1.概念
防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中。在数据包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 数据包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。
2.结构
iptables中有3张表,5条链
1)三张表
filter:过滤数据包
nat:用于网络地址转换
mangle:修改数据包的服务类型
2)五条链
#)环境
相关软件: iptables-services
配置文件:/etc/sysconfig/iptables
systemctl stop firewalld ##关闭火墙
systemctl mask firewalld ##冻结火墙服务
systemctl disable firewalld ##火墙开机关闭
yum install ipatbles-services ##安装提供iptable管理的软件
systemctl start iptables ##开启服务
systemctl enable iptables ##开机自启
3.iptables常用管理命令
1)iptable的查看
iptables -L ##查看默认表filter,没有真实ip
iptables -nL ##查看默认表,附带解析
iptables -t nat -nL ##查看指定表nat
iptables -t mangle -nL ##查看指定表mangle
iptables -F ##清除表策略
service iptables save ##保存对表的更改(如果在修改后不保存,在重启iptables服务后,更改失效)
2)iptable的管理
iptables -P INPUT DROP ##此时设置INPUT为drop,所有主机不能输入数据,实验用ssh不能连接
iptables -P INPUT ACCEPT ##此时设置INPUT为accept,可以ssh连接
iptables -N westos 新建链westos
iptables -E westos WESTOS 将链westos名称修改为WESTOS
iptables -X WESTOS 删除表WESTOS
iptables -t filter -A INPUT -s 172.25.254.62 -p tcp --dport 22 -j REJECT 添加策略只允许主机62ssh连接,且插入位置默认为最后一条
iptables -I INPUT -s 172.25.254.62 -p tcp --dport 22 -j ACCEPT 添加只允许62ssh连接的策略,且插入位置默认为1,-I INPUT 3表示插入到第3条
iptables -D INPUT 3 删除第三条策略
iptables -A INPUT ! -s 172.25.254.62 -p tcp --dport 22 -j REJECT !表示除了的意思,插入策略,除了62都可以ssh访问
iptables -R INPUT 2 -j ACCEPT 将第二条策略的动作修改为ACCEPT
4.iptables的DNAT与SNAT
环境:
前面的实验没有还原,将iptables软件重新安装
查看内核的路由功能是否开启
没有开启,编辑文件
添加内容
此时重启网络,内核路由功能开启
1)SNAT(地址伪装)
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.162 从本机的eth0出去的访问其它主机的客户,将自动以162的身份访问其它主机
desktop(1.1.1.2)通过服务器的eth1(1.1.1.1)进入,从eth0(172.25.254.62)出去ssh连接172.25.254.62
最后查看到连接真机172.25.254.62的主机是服务器的eth0端口(172.25.254.162)
2)DNAT(目的地址转换)
iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-dest 1.1.1.2 当访问本机的eth0的端口时,使它自动转换访问1.1.1.2
此时真机(172.25.254.62)ssh连接路由器的eth0端口(172.25.254.162),最后重看到ssh连接到的ip是desktop(1.1.1.2)