运维进阶——firewall详解,


两台虚拟机,desktop双网卡,配置ip分别为172.25.254.113和1.1.1.113

打开另一台虚拟机server,配置ip为1.1.1.213

在双网卡的desktop下载httpd,在默认发布目录编写默认发布文件


systemctl start httpd

1.用真机通过http访问172.25.254.113

firewall-cmd --list-all     查看火墙状态


访问不到,因为desktop的虚拟机火墙是public,不允许http访问

firewall-cmd --add-source=172.25.254.13 --zone=trusted

把主机的ip这个源添加到trusted域里,

在主机测试,通过http可以访问

2.用server通过http访问1.1.1.113


可以ping通,但是不能访问,因为火墙的默认域为public,http不能通过访问

firewall-cmd --remove-interface=eth1 --zone=public	把eth1接口从public域摘下来
firewall-cmd --add-interface=eth1 --zone=trusted	把eth1接口添加到trusted域
firewall-cmd --list-all --zone=trusted  查看trusted域


添加成功后
在server测试
通过http访问1.1.1.113, 可以访问

想把eth1再改回去,

firewalll-cmd --change-interface=eth1 --zone=public


永久操作与重新加载

firewall-cmd --permanent --remove-service=ssh	永久的操作需要reload才能生效
firewall-cmd --reload    重新加载后不会断开已经连接的设备
firewall-cmd --complete-reload	完全重新加载,会断开已经链接的设备

演示实验
在desktop虚拟机永久删除ssh

[root@dektop ~]# firewall-cmd --permanent --remove-service=ssh
success
[root@dektop ~]# firewall-cmd --list-all
public (default, active)
  interfaces: eth0 eth1
  sources: 
  services: dhcpv6-client ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 


永久删除ssh后,没有重新加载
在真机ssh连接desktop可以连接

[root@dektop ~]# firewall-cmd --reload
Success

此时再用ssh已经无法连接,但之前的连接并不会断开

但之前的连接并不会断开

[root@dektop ~]# firewall-cmd --complete-reload
success

完全重新加载后,之前的连接断开,已经无法操作

结束方法
再打开一个shell,然后结束掉进程

端口操作

firewall-cmd --zone=public --list-ports
firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --permanent --zone=public --remove-port=22/ssh 

在desktop
cd /etc/firewalld 配置文件

指定某个ip可以访问ssh

[root@dektop ~]# firewall-cmd --direct --
--add-chain       --get-all-rules   --passthrough     --query-rule
--add-rule        --get-chains      --permanent       --remove-chain
--get-all-chains  --get-rules       --query-chain     --remove-rule
[root@dektop ~]# firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.13 -p tcp --dport 22 -j ACCEPT
success
[root@dektop ~]# firewall-cmd --remove-service=ssh
success

用direct命令来指定,然后再删除掉默认方式的ssh,被指定的走指定的方式,其他的走默认方式,所以将默认方式的ssh删掉,实验现象会明显

accept 接受
reject 拒绝,有回应,客户端不再访问
drop 丢弃,没有回应,客户端会一直访问

在server端测试

[root@localhost ~]# ssh root@1.1.1.113
ssh: connect to host 1.1.1.113 port 22: No route to host
[root@localhost ~]# 


在真机测试

[kiosk@foundation13 ~]$ ssh root@172.25.254.113
root@172.25.254.113's password: 
Last login: Fri May 31 22:41:32 2019 from 172.25.254.13
[root@dektop ~]# 

因为真机ip就是被指定的,所以可以访问

[root@dektop ~]# firewall-cmd --list-all
public (default, active)
interfaces: eth0 eth1
sources:
services: dhcpv6-client
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

[root@dektop ~]# firewall-cmd --direct --get-all-rules 
ipv4 filter INPUT 1 -s 172.25.254.13 -p tcp --dport 22 -j ACCEPT

这种方式添加后,无法用firewall-cmd --list-all查看

firewall-cmd --direct --get-all-rules   来查看


删除

[root@dektop ~]# firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -s 172.25.254.13 -p tcp --dport 22 -j ACCEPT
success
[root@dektop ~]# firewall-cmd --direct --get-all-rules
[root@dektop ~]# 


地址伪装
处于1网段的server主机想要连接真机,他们不再一个网段,所以不能连接,让有双网卡的desktop开启地址伪装的功能,让server通过desktop去连接主机

[root@dektop ~]# firewall-cmd --add-masquerade 
success
[root@dektop ~]# firewall-cmd --list-all
public (default, active)
  interfaces: eth0 eth1
  sources: 
  services: dhcpv6-client
  ports: 
  masquerade: yes
  forward-ports: 
  icmp-blocks: 
  rich rules: 

[root@dektop ~]# sysctl -a |grep ip_forward
net.ipv4.ip_forward = 1

在1网段的server虚拟机
设置网关为 1.1.1.113

查看

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway     Genmask     Flags Metric Ref    Use Iface
0.0.0.0        1.1.1.113       0.0.0.0         UG    1024   0        0 eth0
1.1.1.0         0.0.0.0        255.255.255.0   U     0      0        0 eth0


测试
ping 172.25.254.13

地址伪装是在路由之后

端口转发
用ip为172的真机,去连接1网段的server主机,无法连接,
现在让真机去连接双网卡的desktop的22端口时,直接跳转到1网段的server主机

在双网卡主机

[root@dektop ~]# firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.213
success
[root@dektop ~]# firewall-cmd --list-all
  public (default, active)
  interfaces: eth0 eth1
  sources: 
  services: dhcpv6-client
  ports: 
  masquerade: yes
  forward-ports: port=22:proto=tcp:toport=22:toaddr=1.1.1.213
  icmp-blocks: 
  rich rules: 


然后在真机去ssh连接

[kiosk@foundation13 ~]$ ssh root@172.25.254.113
root@172.25.254.113's password: 
Last login: Sat Jun  1 01:21:30 2019 from 1.1.1.113
[root@server ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 1.1.1.213  netmask 255.255.255.0  broadcast 1.1.1.255
        inet6 fe80::5054:ff:fe54:5072  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:54:50:72  txqueuelen 1000  (Ethernet)
        RX packets 163169  bytes 11236766 (10.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2244  bytes 200891 (196.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@server ~]# 


注意输入密码时,应输入单网卡server的密码

相关内容

    暂无相关文章