一、iptables防火墙
SNAT:源地址转换
DNAT:目的地址转换
核心:通过iptables进行地址转换
SNAT内网→外网:改变源地址
DNAT外网→内网:改变目的地址
(重要)linux系统能抓包吗?
可以。使用linux系统自带的抓包工具tcpdump来抓包
抓包方式:
1、指定抓包的数量
tcpdump tcp -i ens33 -t -s0 -c 10 and dst port 80 and src net 20.0.0.0/24 -w ./target.cap #指定抓包数量10个
2、动态抓包。一直会获取包,除非人工停止
tcpdump -i ens33 -s0 -w ./ens33.cap
特点:tcpdump可以抓包,但不能分析。用wireshark来分析。sz taget.cap保存到电脑上
wireshark只适用于windows系统抓包
二、firewalld防火墙
firewalld防火墙:centos7自带的,和iptables一样的包过滤防火墙
firewalld过滤是根据区域进行配置的
iptables是静态的防火墙,firewalld是动态的防火墙
(1)firewalld区域
1、trusted信任区。所有流量都可以传入
2、public公共区域。允许ssh或dhcpv6-client的流量可以传入,其他的全部拒绝。firewalld的默认区域
3、external外部区域。允许ssh或dhcpv6-client的流量可以传入,其他的全部拒绝。默认通过此区域转发的ipv4流量地址可以进行伪装
4、home家庭区域。允许ssh或dhcpv6-client的流量可以传入,其他的全部拒绝
5、internal内部区域。默认值与home区域的作用相同
6、work工作区域。允许ssh或dhcpv6-client的流量可以传入,其他的全部拒绝
7、DMZ隔离区(非军事区)。仅允许ssh和其他的预定义好的配置的流量可以传入,其他的全部拒绝
8、block限制区。拒绝所有流量
9、drop丢弃区域。所有流量都会丢弃,没有任何回显信息
dhcpv6-client获取ipv6地址的客户端工具
(2)切换默认区域
test1
systemctl restart firewalld
systemctl restart httpd
firewalld-cmd --get-default-zone #显示当前系统中的默认区域
firewalld-cmd --list-all #显示默认区域内的所有规则
firewalld-cmd --set-default-zone=block#将默认区改成block
firewalld-cmd --set-default-zone#查看默认区
firewalld-cmd --set-default-zone=public#将默认区改成public
test2
ping 20.0.0.10
(3)服务管理
添加单个服务
firewaalld-cmd --list-service #查看区域内允许通过的服务
firewaalld-cmd --add-service=http --zone=public #添加服务到防火墙中
删除单个服务
firewaalld-cmd --remove-service=http --zone=public
一次性添加多个服务
1、firewalld-cmd --add-sevice=http --add-service=ftp --zone=public
firewalld-cmd --list-services
2、firewalld-cmd --add-service={ftp,http}
一次性删除多个服务
firewalld-cmd --remove-sevice=http --remove-sevice --zone=public
永久添加服务
firewalld-cmd --add-sevice={ftp,http} --zone=public --permanent
firewalld-cmd --reload #重新加载配置
firewalld-cmd --list-all #显示所有服务
永久删除服务
firewalld-cmd --remove-service=http --zone=public --permanent
firewalld-cmd --reload #重新加载配置
firewalld-cmd --list-all #显示所有服务
(4)端口管理
添加单个端口(往默认区域添加可以不指定--zone)
firewalld-cmd --zone=public --add-port=80/tcp #在区域中添加端口
firewalld-cmd --zone=public --remove-port=80/tcp #在区域中移除端口
添加多个端口
firewalld-cmd --add-port={3306,80,21}/tcp
firewalld-cmd --list-all
添加范围端口
firewalld-cmd --add-port=30-35/tcp
firewalld-cmd --list-all
三、iptables实现地址转换实验
实验环境:
3台虚拟机:
test1模拟内网服务器20.0.0.10
test2模拟网关服务器ens33:20.0.0.254 ens36:30.0.0.254
test3模拟外网服务器30.0.0.10
配置IP地址
实验条件:安装http、iptables服务
实验图:
实验步骤:
1、3台虚拟机均关闭防火墙和安全机制
2、test1内网、test3外网安装httpd服务,test、 test2、test3安装iptables服务,重启httpd服务
yum -y install httpd
yum -y install iptables iptables-services.x86_64
systemctl restart httpd
3、配置3台虚拟机的网卡设备
vim /etc/sysconfig/network-scripts/ifcfg-ens33
test1
test3
test2
添加网卡
创建ens36:cp ifcfg-ens33 ifcfg-ens36
重启网卡设备:systemctl restart network
ifconfig检查IP地址是否修改成功
4、内网test1访问外网test3
路由器test2
iptables -t nat -A POSTROUTING -s 20.0.0.0/24 -o ens36 -j SNAT --to 10.0.0.10 #添加转换源地址10.0.0.10
iptables -t nat -vnL --line-numbers #查看规则是否添加成功
vim /etc/sysctl.conf(重要)
添加net.ipv4.ip_forward=1 #开启内核的转发功能
sysctl.conf修改内核参数的文件,立即生效
sysctl -p立即生效
打开test1火狐浏览器
打开外网test3的日志文件
cd /var/log/httpd
[root@test3 httpd]# ls
access_log error_log
vim access_log
内网访问外网成功
5、外网访问内网
iptables -t nat -A PREROUTING -d 11.0.0.11 -i ens36 -p tcp --dport 80 -j DNAT --to 20.0.0.10:80 #添加转换目的IP地址
iptables -t nat -vnL --line-numbers #检查是否添加此规则
打开内网test1的日志文件
cd /var/log/httpd
[root@test1 httpd]# ls
access_log error_log
vim access_log
打开外网test3的火狐浏览器
内网test1日志文件
外网访问内网成功