备份与还原iptables规则设置
1、yum -y install iptables iptables-services
安装iptables软件包
2、systemctl start iptables.service开启服务
3、systemctl enable iptables.service开机自启
我们对iptables命令行中的设置,都是临时设置,只要遇到服务器关机,或者服务重启时,
所有的设置都会清空且还原为原本的设置。
为此,我们可以对已经测试完毕符合我们需求的防火墙设置进行备份,在必要时,可以一键还原
备份iptables设置
格式:iptables-save >/指定的文件
iptables-save >/opt/iptables.bak
一键导入,设置为当前防火墙设置
iptables-restore </opt/iptables.bak
自定义链使用
自定义链:iptables -N +链名
改链名:iptables -E +原来的链名
创建自定义链的规则:iptables -I 自定义链名 -p tcp -j ACCEPT
删除自定义链规则:iptables -D 自定义链名 1
删除自定义链:iptables -X 自定义链名
SNAT和DNAT
snat和dnat:
snat:源地址转换
从内网到外网 内网的ip转换成可以访问外网的ip
内网的多个主机可以使用一个有效的公网ip地址访问外部网络
dnat:目的地址转换
外部用户可以通过一个公网地址访问服务内部的私网服务。
私网的ip和公网的ip做一个映射。
SNAT实验环境准备
三台服务器:PC1客户端、PC2网关、PC3服务端
硬件要求:PC1和PC3均只需一块网卡、PC2需要2块网卡
网络模式要求:PC1为NAT模式、PC2中作为PC1网关的网卡为NAT模式、作为PC3网关的网卡为仅主机模式、PC3为仅主机模式。
首先关闭三台机器的防火墙和selinux
配置PC3服务端,安装httpd服务修改网卡ip为12.0.0.100/24--网关为12.0.0.254,重启网卡。
PC3执行:
vim /etc/sysconfig/network-scripts/ifcfg-ens33
文本添加内容:
IPADDR=12.0.0.100
NETMASK=255.255.255.0
GATEWAY=12.0.0.254
配置PC1客户端,修改网卡ip为192.168.233.10/24---网关192.168.233.254,重启网卡
PC1执行:
vim /etc/sysconfig/network-scripts/ifcfg-ens33
文本添加内容:
IPADDR=192.168.233.10
NETMASK=255.255.255.0
GATEWAY=192.168.233.254
配置PC2网关服务器,先给虚拟机添加一个网卡,然后配置ens33和ens36网卡的ip地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
vim /etc/sysctl.conf
内核参数的配置文件,内核优化都在这个文件里面
net.ipv4.ip_forward=1
打开路由器的转发功能
sysctl -p
可以使内核参数的配置立刻生效
iptables -t nat -A POSTROUTING -s 192.168.124.0/24 -o ens36 -j SNAT --to 10.0.0.10
-t nat 指定表为nat表
-A POSTROUTING A添加
-s 指定源ip
-o 指定输出网络设备
-j 控制类型 SNAT
--to 指定整个网段 192.168.124.0/24 从ens36出去时,做源地址转换,转换成10.0.0.10
dnat:
iptables -t nat -A PREROUTING -d 11.0.0.11 -i ens36 -p tcp --dport 80 -j DNAT --to 192.168.124.10:80
-d 11.0.0.11 指定作为目的地址转换的ip地址
-i 从指定的设备进入本机
-p 指定协议
-dport 指定端口
-j DNAT 使用目的地址转换
--to 192.168.124.10
外网想要访问内网的192.168.124.10:80的这个web服务。只需要访问11.0.0.11就可以访问内网的web服务。
面试题:在linux当中如何抓包?
tcpdump就是Linux自带的抓包工具。(最小化安装是不带的,需要额外安装)
静态和动态
tcpdump tcp -i ens33 -t -s0 -c 10 and dst port 80 and src net192.168.124.0/24 -w /opt/target.cap
tcp 指定抓包的协议 dup icmp 都可以 第一个参数,可以不指定协议
-i 只抓经过指定设备的包
-t 不显示时间戳
-s0 抓完整的数据包
-c 10 抓几个数据包 10
dst port 指定抓包的目的端口
src net 192.168.124.0/24 指定抓包的ip地址
net 网段
host 主机 +(ip地址)
src host 192.168.124.10
-w 保存指定路径
如果要用wireshark对数据包进行分析,tcpdump在抓包时,要使用-s0,抓取完整格式,否则wireshark无法识别。
防火墙的概念
防火墙(英语:Firewall)技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、
外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。
硬件防火墙:通过硬件和软件的组合,基于硬件的防火墙保护整个内部网络安全。
软件防火墙:通过纯软件,单独使用软件系统来完成防火墙功能,保护安装它的系统。
另外:因为iptables是开源的,就安全系数来讲软件防火墙只能用于辅助硬件防火墙,无法做到真正的安全效果。
此外软件防火墙也是需要占用硬件资源运行
防火墙技术的功能主要在于及时发现并处理计算机网络运行时可能存在的安全风险、数据传输等问题,
其中处理措施包括隔离与保护,同时可对计算机网络安全当中的各项操作实施记录与检测,以确保计算机网络运行的安全性,
保障用户资料与信息的完整性,为用户提供更好、更安全的计算机网络使用体验。
firewalld centos7自带的,也是默认的,7以前默认是iptables
龙息
麒麟
欧拉 firewalld
ubanut ufw 也有iptables
他和iptables一样,也是包过滤防火墙
ip 端口 协议
firewalld是按照区域来进行划分:
public:公共区域,默认配置了ssh以及DHCPv6预定服务是放通的,其他全部都是拒绝。默认区域
trusted :信任区域,允许所有的数据包放通
block:限制区域,拒绝所有。
drop:丢弃区域,丢弃所有数据包。
dmz:非军事区域,默认就只允许ssh通过
home:家庭区域,默认只允许ssh通过
internal:内部区域,和home一摸一样
external:外部区域,也是默认允许ssh通过,其他的全部拒绝
work:工作区域,默认放通ssh
firewalld-cmd 命令行工具
firewalld-cmd --get-default-zone 查看当前系统的默认区域
firewalld-cmd --set-default-zone=其他任何区域 切换区域
firewalld-cmd --list-service 查看区域内允许访问的服务
dhcpv6-client 获取ipv6的地址
interfaces ens33
firewalld-cmd --add-service=http --zone=public
添加服务
firewalld-cmd --add-service={ftp,http} --zone=public --permanent
永久添加多个服务
firewalld-cmd --remove-service=http --zone=public
删除服务
firewalld-cmd --zone=public --add-port=80/tcp
添加端口
firewalld-cmd --add-source=192.168.124.10 --zone=block