codecamp

Linux iptables防火墙(二)

防伪码:要输就输给追求,要嫁就嫁给幸福

                                    第十一章 iptables防火墙(二)

前言:本章我们来学习使用iptables做网关服务器,并使用NAT功能共享上网以及发布服务器,和我们之前学过的nat原理完全一样,所以本章主要就是实验操作了。最后我们在再写个防火墙脚本(快速部署防火墙规则),加综合实战演练。

一、SNAT策略

SNAT和我们在路由器上做的PAT是一样的,为了局域网接入internet,原理就不说了,直接做实验。

1、实验环境

在虚拟机上简化为如下图

2、在网站服务器上搭建网站

3、在internet测试机上同样搭建网站

4、在网关服务器上添加两块网卡,分别是eth0:192.168.1.1和eth1:173.16.16.1然后开启路由转发功能:

5、在网关服务器上配置SNAT策略

6、在内部网站服务器上访问http://173.16.16.16

7、到internet测试机上查看日志,发现访问者不是192.168.1.7,而是173.16.16.1就对了

cat  /usr/local/httpd/logs/access_log

二、DNAT策略

DNAT策略与我们之前学习过的静态nat是一样的,可以一对一,也可以端口映射,主要目的是为了发布服务器。

1、实验环境和上一个实验一样

2、在网关服务器上执行DNAT命令

3、在internet测试机上访问:173.16.16.1,打开的网站是192.168.1.7

三、发布企业内部的ssh服务器

实验要求:2345端口对应网关服务器,2346端口对应网站服务器

1、实验环境:和上一个实验一样

2、在网关服务器和网站服务器分别开启2345和22端口的ssh

1)在网关服务器开启2345(vim /etc/ssh/sshd_config)

2)网站服务器只需要开启sshd服务即可,默认端口就是22

2、在网关服务器上设置DNAT策略

3、在internet测试机上进行ssh测试

使用ssh  -p  2345 root@173.16.16.1连接上的是网关服务器

使用ssh -p root@173.16.16.1连接上的是网站服务器

四、规则的导入、导出

前言:备份可以把配置过的防火墙规则存储到一个位置,当更换防火墙或者规则出错的情况下,可以迅速恢复。

1、执行iptables-save命令导出linux防火墙规则。

例如:

1)在网站服务器上查看防火墙规则

2)然后执行备份

3)把网站服务器上的规则全部删除

4)执行iptables-resore命令恢复,恢复之后查看规则已经还原。

2、使用iptables服务备份恢复防火墙规则

把iptables-save的备份存储到/etc/sysconfig/iptables,然后就可以通过iptables服务快速恢复,每次开机后就自动重建。如果想恢复规则的时候,就直接重新启动iptables服务即可。

1)执行下面的命令把规则存储到服务文件中

2)然后把防火墙规则删除

3)执行service iptables  restart就可以恢复规则

4)如果想清空规则的时候,除了执行iptables -F,也可以停止防火墙服务。

五、使用防火墙脚本

使用脚本可以快速部署防火墙规则,当需要配置多台防火墙的时候,使用脚本可以快速生成规则,提高工作效率。

例如:将output链中的默认策略设置为允许,不添加其他规则,将input链的默认策略设置为拒绝,只放行对个别服务的访问,以及响应本机访问请求的数据包。

1)Vi /opt/myipfw.hostonly

2)执行脚本

3)查看规则

综合实战:

实验环境:

需求描述:

使用SNAT策略实现共享上网

使用DNAT策略发布Web服务、SSH服务

实现思路:

注意清空原有防火墙规则

正确准备好实验环境,网关中打开IP转发

正确设置SNAT、DNAT规则

一、准备实验环境

1、正确配置各主机的网络参数(ip地址,子网掩码)

2、网段192.168.1.0/24中的主机将默认网关设为192.168.1.1

3、在网站服务器192.168.1.7上添加测试账号wzadm,启用web服务,ssh服务

4、在Internet测试机173.16.16.16中启用web服务,去掉默认网关设置

二、配置Linux网关服务器

1、打开路由转发功能

2、添加SNAT策略,使局域网段192.168.1.0/24能上网

3、添加DNAT策略,使用公网地址173.16.16.1、端口80,发布内网主机192.168.1.7中的web服务

4、添加DNAT策略,使用公网地址173.16.16.1、端口2222,发布内网主机192.168.1.7中的OpenSSH服务

三、验证实验效果

1、在网站服务器192.168.1.7中,能够访问173.16.16.16,并且查看主机173.16.16.16的web访问日志时,所记录的客户机是173.16.16.1

2、在Internet测试机173.16.16.16中,能够访问173.16.16.1,显示为网站服务器192.168.1.7中的网页

3、在Internet测试机173.16.16.16中,能够通过173.16.16.1的2222端口进行SSH远程登录,以网站服务器192.168.1.7中的wzadm用户进行验证,登录后查看当前ip应该是192.168.1.7


谢谢观看,希望能真心的帮到您!

本文出自 “一盏烛光” 博客,谢绝转载!

Linux 磁盘报警的shell脚本
Linux YUM仓库服务与PXE网络装机
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }