防火墙的妙用

防火墙

1.什么是防火墙?
所谓防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Intranet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入,防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件。该计算机流入流出的所有网络通信和数据包均要经过此防火墙,它是内核上的插件,相当于一个表格。
2.防火墙域:
 home(家庭):用于家庭网络,仅接受dhcpv6-client、ipp-client、mdns、samba-client、ssh服务

 internal(内部):用于内部网络,仅接受dhcpv6-client、ipp-client、mdns、samba-client、ssh服务

 public(公共):用于公共区域使用,仅接受dhcpv6-client、ssh服务

 trusted(信任):接受所有网络连接

 work(工作):用于工作区,仅接受dhcpv6-client、ipp-client、ssh服务

 block(限制):拒绝所有网络连接

 dmz(非军事区):仅接受ssh服务连接

 drop(丢弃):任何接收的网络数据包都被丢弃,没有任何回复

  external(外部):出去的ipv4网络连接通过此区域伪装和转发,仅接受ssh服务连接

3.管理防火墙的两种方式:
      firewalld与iptables
1)firewalld 高集成(灵活性差)企业七后常用的,相对简单。
2)iptables 复杂,功能强大
注意:两个无法同时使用

防火墙的妙用_第1张图片


一.firewalld

环境:

防火墙的妙用_第2张图片

1.常用命令
systemcl mask firewalld         冻结防火墙
systemcl unmask firewalld     解冻防火墙
related      曾经来过,现在又来;
established      一直都在;

firewall-cmd --state      查看火墙是否开启

与firewall-cmd --list-all的区别
前者只能看到是否开启,看到的内容特别有局限性,而后者内容更多一些

防火墙的妙用_第3张图片
firewall-cmd --get-default-zone   查看默认属于哪个域


firewall-cmd --get-active-zone    正在使用的域


firewall-cmd --get-zones     查看所有的域
firewall-cmd --get-services  查看允许通过的所有服务


firewall-cmd --set-default-zone=trusted   将默认的域改为信任,即全开模式

防火墙的妙用_第4张图片
firewall-cmd --zone=public --list-all    列出public这个域所能允许的服务

防火墙的妙用_第5张图片
firewall-cmd --add-interface=172.25.254.111 --zone=trusted 火墙设置为只有111这个ip是在信任域中的。(例如public域时、是没有开httpd这个服务的,所以其他的ip是无法访问Apache的,只有111可以访问)

firewall-cmd --add-interface=eth1 --zone=trusted    设置eth0为信任域


firewall-cmd --remove-interface=172.25.254.111 --zone=public 移除

防火墙的妙用_第6张图片


2.将两块网卡设成不同的域,(此处设置为eth0在public,eth1放在trusted,首先两块网卡都默认属于public)

可以看到两块网卡 eth0,eth1均为public域

防火墙的妙用_第7张图片
先把eth1网卡从public上摘下来
firewall-cmd --remove-interface=eth1 --zone=public
firewall-cmd --list-all   查看是否摘除(此处默认即为public,所以直接--list-all即可,不需要加上域
将eth1加到信任域中;

防火墙的妙用_第8张图片
firewall-cmd --add-interface=eth1 --zone=trusted

查看正在开启的域
firewall-cmd --get-active-zones,此时不能用--list-all,因为它只能列出默认的。

防火墙的妙用_第9张图片

注意:在具有两块网卡的前提下;

3.暂时添加服务
firewall-cmd --add-services=http 加上允许http服务,可以发现浏览器中访问默认目录/var/www/html/下的默认文件index.html中编写的内容


改端口为8080:
1)改/etc/httpd/conf/httpd.conf配置文件80端口为8080,重启服务


2)在火墙中允许8080端口通过
firewall-cmd --add-port=8080/tcp  允许端口8080通过
firewall-cmd --list-all  查看出现8080端口

防火墙的妙用_第10张图片
测试:
在浏览器中输入:172.25.254.111,已不能不能显示 内容,需加上8080端口
172.25.254.111:8080    

防火墙的妙用_第11张图片
注意:重启防火墙恢复原样

防火墙的妙用_第12张图片

4.永久添加服务
1).编辑文件
cd /etc/firewalld/
ls

防火墙的妙用_第13张图片
cd zones/   
vim public.xml    编辑域


例如加上http   (service name=“http”/)
firewalld-cmd --reload   重载
firewall-cmd --list-all  查看http成功加上

防火墙的妙用_第14张图片

cd /lib/firewalld/
ls


cd services/
vim http.xml    编辑服务


例如改变文件中的端口为8080.

防火墙的妙用_第15张图片
firewalld-cmd --reload   重载
firewall-cmd --list-all
永久设定,不会在重启防火墙后恢复原样。

2)permanent
firewall-cmd --permanent --add-service=http
permanent       永久设定
设定成功后firewalld-cmd --reload  重载

5.删除服务
暂时:firewall-cmd --remove-services=http
永久:编辑文件或firewall-cmd --permanent --remove-service=http

firewall-cmd --reload  设定后当前正在使用的不会中断,再次登陆会中断,例如ssh远程连接
firewall-cmd --complete -reload  设定后当前正在使用的会立马中断
6.图形方法设定火墙

防火墙的妙用_第16张图片

防火墙的妙用_第17张图片

7.防火墙访问控制
##三大表五条链(防火墙高级规则)
               路由器
filter        nat数据转换              mangle(都有)
(经过内核)    (不经过内核)             input
input          input                  forward
forward        output                 output
output         prerouting  路由前      prerouting
               postrouting 路由后      postrouting

能从底下溜走的只有nat表中的prerouting路由之前,postrouting,input,output,filter表是经过内核的。
允许某个人远程连接ssh是需要经过内核的,所以需要防火墙高级规则。
Direct Rules
允许某个IP远程连接ssh,是需要经过内核的,所以需要防火墙高级规则(#filter)
cat /etc/services | grep ssh   查看到ssh端口为22
firewall-cmd --direct --add-rule ipv4 filter INPUT 2 -s 172.25.254.250 -p tcp --deport 22 -j ACCEPT
只允许某一台主机可以ssh本机(22端口ssh)


firewall-cmd --direct --remove-rule ipv4 filter INPUT 2 -s 172.25.254.250 -p tcp --deport 22 -j ACCEPT   删除
Rich Rules


cat /etc/services | grep ssh

防火墙的妙用_第18张图片
可以查看到ssh端口

1.地址转换

在172.25.150.111这台主机上转换地址为172.25.150.250
即无论哪台主机访问172.25.150.111这台主机,都真实访问的是172.25.150.250,登陆时输入的密码也是250这台主机的
Desktop主机:
1)开启地址伪装功能
firewall-cmd --add-masquerade

防火墙的妙用_第19张图片
2)地址转换
firewall-cmd --add-forword-port=port=22:proto=tcp:toport=22:toaddr=172.25.150.250

防火墙的妙用_第20张图片


3)查看
firewall-cmd --list-all

4)测试:
server主机:
连接172.25.150.111,此时输入的是所转换的主机的密码否则无法登陆。

防火墙的妙用_第21张图片

登陆成功后ifconfig可以看到是所转换的地址的IP.

防火墙的妙用_第22张图片

5)删除

firewall-cmd --remove-forword-port=port=22:proto=tcp:toport=22:toaddr=172.25.150.250

2.地址伪装
Desktop作为路由器即服务器,为客户端server作地址伪装,首先它需要两个网卡,一个IP设为172.25.150.111,一个设为192.168.0.100.
开启伪装功能:firewall-cmd --add-masquerade
输入命令,指定为客户端伪装ip为172.25.254.100
firewall-cmd --add-rich-rule="rule family=ipv4 source address=172.25.254.100 masquerade"
设置地址伪装时,只能伪装成客户端这边已有的IP
firewall-cmd --list-all      察看是否伪装成功。

防火墙的妙用_第23张图片

server:
设定其ip为192.168.0.1,网关为192.168.0.100

防火墙的妙用_第24张图片
重启网络
route -n     查看网关是否设置成功
此时即可ping通192.168.0.100
不过此时,server还是ping不同172.25.254.0/24网段的主机,需要在路由器上再开启一个权限
sysctl     -a    |    grep    forwalld      查看forward命令的权限

防火墙的妙用_第25张图片
若没有开需要编辑文件加入
vim /etc/sysctl.conf


编辑完后重启网络


server就可以ping通172.25.254.0/24网段的主机了

测试:
ssh登陆172.25.150.250这台主机,w -i会显示伪装的地址即为100这个Ip即Desktop这台主机,实际为server这台主机

防火墙的妙用_第26张图片
3.icmp-block
客户端即Desktop:
伪装功能需要是开启的

防火墙的妙用_第27张图片
firewall-cmd --add-icmp-block=echo-request  拒绝访问


输入此命令后,server立即ping不通172.25.254.111。


设置延迟一段时间ping通
需要先删除上一条

firewall-cmd --remove-icmp-block=echo-request
firewall-cmd --add-icmp-block=echo-request --timeout=10  设置延迟10秒后再通
firewall-cmd --remove-icmp-block=destination-unreachable  移除

server端

防火墙的妙用_第28张图片

二.iptables

环境:

防火墙的妙用_第29张图片

1.安装软件
yum install iptables-services
注意:服务端,与测试端的firewalld都必须关闭

2.常用命令
1)查看命令
iptables -nL   ##查看默认的filter表信息(即火墙策略)

防火墙的妙用_第30张图片

防火墙的妙用_第31张图片
iptables -nL -t nat   ##显示nat表

防火墙的妙用_第32张图片
iptables -nL -t mangle   ##显示mangle表
iptables -t nat -F PREROUTING


2)表格命令编辑  ##默认filter表

-I删除
iptables -F ##清空iptables
注意:只清空的话只是暂时的,文件里面默认的并不会被清空,重启后会恢复

防火墙的妙用_第33张图片

防火墙的妙用_第34张图片
文件为 /etc/sysconfig/iptables

防火墙的妙用_第35张图片
service iptables save   ##保存数据
清空后保存,再重启就不会恢复


可查看一下 iptables -nL

防火墙的妙用_第36张图片

-A添加一条策略,允许访问本机回环接口 ( -i设备回环接口lo)

防火墙的妙用_第37张图片

添加一条策略,允许172.25.254.10访问本机     (-s源)

防火墙的妙用_第38张图片

插入(-I)一条策略,允许172.25.254.10访问本机22端口,即使用ssh连接本机;(默认插入到第一条)

防火墙的妙用_第39张图片

插入一条策略,拒绝172.25.254.10访问本机22端口,并且无任何提示(DROP)

防火墙的妙用_第40张图片

 

替换(-R)第二条策略为拒绝172.25.254.10访问本机22端口,并且无任何提示

防火墙的妙用_第41张图片

删除第一条(-D)

防火墙的妙用_第42张图片

添加自定义链名

防火墙的妙用_第43张图片

修改自定义链名

防火墙的妙用_第44张图片

删除自定义链

防火墙的妙用_第45张图片

基于状态的匹配扩展 (连接跟踪)
每个网络连接包括以下信 息:源地址、目标地址、源端口、目的端口,称为套
接字对(socket pairs);协议类型、连接状态(TCP协议)和超时时间等。防火墙
把这些信息称为状态(stateful)。状态包过 滤防火墙能在内存中维护一个跟踪状态
的表,比简单包过滤防火墙具备更大的安全性,命令格式如下:iptables -m state --state
»NEW: 该包想要开始一个新的连接(重新连接或连接重定 向)
»RELATED:该 包是属于某个已建立的连接所建立的新连接。举例:FTP的
数据传输连接和控制连 接之间就是RELATED关系。
»ESTABLISHED:该包属于某个已建立的连接。
»INVALID:该 包不匹配于任何连接,通常这些包被DROP。
例如:
(1)在INPUT链添加一条规则,匹配已建立的连接或由已建立的连接所建
立的新连接
。即匹配任何的TCP回应包。
   #iptables -A INPUT -m state --state RELATED,ESTABLISHED

防火墙的妙用_第46张图片

(2)对于ftp连接能够使用下面的连接跟踪:

主动(Active)ftp连接模式

防火墙的妙用_第47张图片

防火墙的妙用_第48张图片

防火墙的妙用_第49张图片

3.iptables地址转换
1)源地址转换
iptables -t nat  -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.111
-t   nat表nat    -A POSTROUTING 路由后   -o eth0 网卡eth0     -j SNAT 动作源地址转换    --to-source 172.25.254.111
测试时把server的firewalld关掉

防火墙的妙用_第50张图片

server端ssh真机,实际登陆的是server,真机方显示为172.25.254.111

防火墙的妙用_第51张图片

再去ssh172.25.254.111会发现真实登陆的确实是111,是由于还没有做目的地址转换。


2)目的地址转换
iptables -t nat  -A PREROUTING -i eth0 -j DNAT --to-dest 192.168.0.1
PREROUTING  路由前   -j DNAT  动作目的地址转换
iptables -t nat -nL 查看

防火墙的妙用_第52张图片

做完目的地址转换,再ssh172.25.254.111会发现这次登陆的是原本登陆真机的server

防火墙的妙用_第53张图片


3)测试环境
Desktop作为路由器IP为172.25.254.111
server作为测试主机
server IP:192.168.0.1作为源地址;
真机IP:172.25.254.11作为目的地址;


4)删除
iptables -t nat  -D POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.111
iptables -t nat  -D PREROUTING -i eth0 -j DNAT --to-dest 192.168.0.1

防火墙的妙用_第54张图片

 

你可能感兴趣的:(防火墙的妙用)