一、安全知识体系
来自外部的安全攻击相对较少,内部造成的故障几率高达80%; 如果考虑安全,就需要牺牲性能;如果追求性能就无法兼顾安全 |
1、 硬件层面
- 硬件层面:物理机安全,UPS,保持机房温度,防盗等
- 系统层面:防止系统入侵,内核升级(打补丁),防病毒,避免弱口令,调整SSH端口
- 站点安全: 防止DDOS(高防),网站防病毒(WAF),放注入(WAF),防挂马(WAF),防劫持(HTTPs);
2.云架构层面
- 网络层面:不接入公网IP
- 系统层面:防漏洞注入->安骑士(系统层面的应用入侵防护软件[Aliyun])
- 网站层面
- 防止SQL注入-> WAF(Web Application Firewall),进行url规则匹配,过滤;拦截异常流量。
- 防止DDOS攻击->高防
- HTTPs:防止网页篡改
3.云安全厂商
3.云安全架构拓扑
二、Firewalld
1.概述
- 概念:Firewalld属于四层防火墙只能做tcp/udp规则;
- 区域:firewalld预先准备了几套防火墙策略集合(策略模版),用户可以根据不同场景而选择不同的策略模板,从而实现防火墙策略之间的快速切换
一个网卡只能绑定一个区域,但一个区域可以绑定多个网卡 可以根据来源的地址设定不同的规则 |
区域 | 默认规则策略 |
---|---|
trusted | 允许所有的数据包流入与流出 |
home | 拒绝流入的流量,除非与流出的流量相关;如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-clientf服务相关,则允许流量 |
internal | 等同于home区域 |
work | 拒绝流入的流量,除非与流出的流量相关;如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量 |
public | 拒绝流入的流量,除非与流出的流量相关;如果流量与ssh与dhcpv6-client服务相关,则允许流量 |
external | 拒绝流入的流量,除非与流出的流量相关;如果流量与ssh服务相关,则允许流量 |
dmz | 拒绝流入的流量,除非与流出的流量相关;如果流量与ssh服务相关,则允许流量 |
block | 拒绝流入的流量,除非与流出的流量相关 |
drop | 拒绝流入的流量,除非与流出的流量相关 |
2.管理Firewalld
- 开启firewalld服务
systemctl start firewalld |
[root@m01 ~]# systemctl start firewalld.service
- 关闭firewalld服务
systemctl stop firewalld |
[root@m01 ~]# systemctl stop firewalld.service
- 重启firewalld服务
systemctl restart firewalld |
[root@m01 ~]# systemctl restart firewalld.service
- 查看firewalld服务状态
systemctl status firewalld |
[root@m01 ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: active (running) since Sun 2019-08-11 12:25:39 CST; 3s ago
Docs: man:firewalld(1)
Main PID: 21022 (firewalld)
CGroup: /system.slice/firewalld.service
└─21022 /usr/bin/python -Es /usr/sbin/firewalld --nofork -...
Aug 11 12:25:38 m01 systemd[1]: Starting firewalld - dynamic firewal....
Aug 11 12:25:39 m01 systemd[1]: Started firewalld - dynamic firewall....
Hint: Some lines were ellipsized, use -l to show in full.
- 开机自启动firewalld服务
systemctl enable firewalld |
[root@m01 ~]# systemctl enable firewalld.service
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
- 禁用firewalld服务
systemctl disable firewalld |
[root@m01 ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
3.Firewalld配置
- 配置状态(参数)
- runtime-临时有效,即时生效;(默认)
- permanent-永久有效,重启生效;
带permanent参数的规则会写入到Firewalld配置文件(/etc/firewalld/zones/public.xml)
[root@m01 ~]# cat /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="dhcpv6-client"/>
</zone>
[root@m01 ~]# firewall-cmd --add-service={http,https} --permanent
success
[root@m01 ~]# cat /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="dhcpv6-client"/>
<service name="http"/>
<service name="https"/>
</zone>
- firewall-cmd指令
- 查看firewalld默认区域规则明细
firewalld开启默认拒绝所有流量流入(ssh与dhcpv6-client除外),但允许流量流出
firewall-cmd --list-all |
[root@m01 ~]# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
- 查看Firewall默认区域
firewall-cmd --get-default-zone |
[root@m01 ~]# firewall-cmd --get-default-zone
public
- 查看Firewall激活区域(默认没有激活区域)
firewall-cmd --get-active-zones |
[root@m01 ~]# firewall-cmd --get-active-zones
[root@m01 ~]# firewall-cmd --add-interface=eth0 --zone=public
success
[root@m01 ~]# firewall-cmd --add-interface=eth1 --zone=trusted
success
[root@m01 ~]# firewall-cmd --get-active-zones
public
interfaces: eth0
trusted
interfaces: eth1
[root@m01 ~]# systemctl restart firewalld.service
[root@m01 ~]# firewall-cmd --get-active-zones
- 查看Firewall指定区域的规则明细
firewall-cmd --zone=区域 --list-all |
[root@m01 ~]# firewall-cmd --add-source=10.0.0.1/32 --zone=trusted
success
[root@m01 ~]# firewall-cmd --zone=trusted --list-all
trusted
target: ACCEPT
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
- 将指定源地址添加至Firewall的指定区域
firewall-cmd --add-source=IP地址/掩码 --zone=区域 |
[root@m01 ~]# firewall-cmd --list-all --zone=trusted
trusted (active)
target: ACCEPT
icmp-block-inversion: no
interfaces:
sources: 10.0.0.1/32
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
- 将指定端口加入默认区域
firewall-cmd --add-interface=网络接口 |
[root@m01 ~]# firewall-cmd --add-interface=eth0
You're performing an operation over default zone ('public'),
but your connections/interfaces are in zone 'trusted' (see --get-active-zones)
You most likely need to use --zone=trusted option.
success
[root@m01 ~]# firewall-cmd --get-active-zones
public
interfaces: eth0
- 将指定端口加入指定区域
firewall-cmd --add-interface=网络接口 --zone=区域 |
[root@m01 ~]# firewall-cmd --add-interface=eth1 --zone=trusted
success
[root@m01 ~]# firewall-cmd --get-active-zones
public
interfaces: eth0
trusted
interfaces: eth1
- 将指定端口从默认区域移除
firewall-cmd --remove-interface=网络接口 |
[root@m01 ~]# firewall-cmd --remove-interface=eth0
success
[root@m01 ~]# firewall-cmd --get-active-zones
trusted
interfaces: eth1
- 将指定端口从指定区域移除
firewall-cmd --remove-interface=网络接口 --zone=区域 |
[root@m01 ~]# firewall-cmd --remove-interface=eth1 --zone=trusted
success
[root@m01 ~]# firewall-cmd --get-active-zones
- 重载Firewall服务
firewall-cmd --reload |
[root@m01 ~]# firewall-cmd --get-active-zones
trusted
sources: 10.0.0.1/32
[root@m01 ~]# firewall-cmd --reload
success
[root@m01 ~]# firewall-cmd --get-active-zones
- 将指定指定传输层协议的端口在Firewall默认区域放行
firewall-cmd --add-port=端口/传输层协议
通过{端口1,端口号2,端口号3}/传输层协议的形式一次指定多个端口
通过起始端口-结束端口/传输层协议的形式指定端口范围
|
[root@m01 ~]# firewall-cmd --add-port=23/tcp
success
[root@m01 ~]# firewall-cmd --add-port={67,68,80,443,3306}/tcp
success
[root@m01 ~]# firewall-cmd --add-port=8000-8080/tcp
success
[root@m01 ~]# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client
ports: 23/tcp 67/tcp 68/tcp 80/tcp 443/tcp 3306/tcp 8000-8080/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
- 将指定指定传输层协议的端口在Firewall默认区域拒绝
firewall-cmd --remove-port=端口/传输层协议 |
[root@m01 ~]# firewall-cmd --remove-port=23/tcp
success
[root@m01 ~]# firewall-cmd --remove-port={67,68}/tcp
success
[root@m01 ~]# firewall-cmd --remove-port=8000-8080/tcp
success
[root@m01 ~]# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client
ports: 80/tcp 443/tcp 3306/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
- 将指定服务在Firewall默认区域放行
firewall-cmd --add-service=服务名 |
[root@m01 ~]# firewall-cmd --add-service=http
success
[root@m01 ~]# firewall-cmd --add-service={ftp,tftp,dhcp}
success
[root@m01 ~]# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client http ftp tftp dhcp
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
- 将指定服务在Firewall默认区域拒绝
firewall-cmd --remove-service={服务名1,服务名2} |
[root@m01 ~]# firewall-cmd --remove-service={http,ssh,dhcpv6-client}
success
[root@m01 ~]# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ftp tftp dhcp
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
/usr/lib/firewalld/services/ 保存的模板Firewall服务可调用服务文件
< ?xml version="1.0" encoding="utf-8"? > < service > #简称 < short > WWW (HTTP) < /short > #描述 < description >HTTP is the protocol used to serve Web pages. If you plan to make your Web >server publicly available, enable this option. This option is not required for viewing pages >locally or developing Web pages.< /description > #服务调用的传输层协议和端口 < port protocol="tcp" port="80"/ > < /service > 该文件的文件名一定要以.xml结尾,文件名就是Firewall服务可调用的服务,其实质还是调用指定协议的指定端口 |
[root@m01 ~]# firewall-cmd --add-service=isakmp
Error: INVALID_SERVICE: isakmp
step1 自定义服务
[root@m01 ~]# cp /usr/lib/firewalld/services/http.xml /usr/lib/firewalld/services/isakmp.xml
[root@m01 ~]# vim /usr/lib/firewalld/services/isakmp.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>IPsec VPN (isakmp)</short>
<description>Internet security association and key management protocol
</description>
<port protocol="tcp" port="500"/>
</service>
[root@m01 ~]# firewall-cmd --reload
success
step2 验证
[root@m01 ~]# firewall-cmd --add-service=isakmp
success
[root@m01 ~]# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client isakmp
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
4.Firewalld富规则配置
富规则按先后顺序匹配,按先匹配到的规则生效,但是拒绝规则优先生效
[root@aspen ~]# firewall-cmd --add-rich-rule="rule family="ipv4" source address="172.16.1.0/24" port port="22" protocol="tcp" accept"
success
[root@aspen ~]# firewall-cmd --add-rich-rule="rule family="ipv4" source address="172.16.1.0/24" port port="22" protocol="tcp" drop"
success
[root@aspen ~]# firewall-cmd --list-all
public
......
rich rules:
rule family="ipv4" source address="172.16.1.0/24" port port="22" protocol="tcp" accept
rule family="ipv4" source address="172.16.1.0/24" port port="22" protocol="tcp" drop
---------------------------------------------------------------------------------------------------------------------------
[root@m01 ~]# ssh root@172.16.1.201
ssh: connect to host 172.16.1.201 port 22: Connection timed out
- 说明
Firewalld富规则表示更加细致、更加详细的防火墙策略配置,他可以针对系统服务、端口号、源地址和目标地址等诸多信息进行更有针对性的策略配置;其执行优先级也是在所有防火墙策略中最高的。 |
- 帮助手册
man firewall-cmd #Firewalld帮助手册 man firewalld.richlanguage #Firewalld富规则配置帮助手册 |
富规则手册 rule [source] [destination] service|port|protocol|icmp-block|icmp-type|masquerade|forward-port|source-port [log] [audit] [accept|reject|drop|mark] rule [family="ipv4|ipv6"]
source [not] address="address[/mask]"|mac="mac-address"|ipset="ipset"
destination [not] address="address[/mask]"
service name="service name"
port port="port value" protocol="tcp|udp"
protocol value="protocol value"
icmp-block name="icmptype name"
masquerade
icmp-type name="icmptype name"
forward-port port="port value" protocol="tcp|udp" to-port="port value" to-addr="address"
source-port port="port value" protocol="tcp|udp"
log [prefix="prefix text"] [level="log level"] [limit value="rate/duration"]
audit [limit value="rate/duration"]
|
- 富规则相关参数
在指定区域添加一条富规则
--add-rich-rule='规则' |
在指定区域删除一条富规则
--remove-rich-rule='规则' |
在指定区域搜索一条富规则(找到规则返回0,找不到规则返回1)
--query-rich-rule='规则' |
列出指定区域所有富规则
--list-rich-rule='规则' |
规则:
'rule family=ipv4 source address=IP地址/掩码 port port=端口号 protocol=传输层协议 动作'
示例
firewall-cmd -- add-rich-rule='rule family=ipv4 source address=10.0.0.1/32 port port=32 protocol=tcp accept'
|
环境准备
[root@aspen ~]# systemctl restart firewalld.service
[root@aspen ~]# firewall-cmd --remove-service={ssh,dhcpv6-client}
success
[root@aspen ~]# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
例题1 允许10.0.0.161主机能够访问http服务,允许172.16.1.0/24能够访问22端口;
step1 设置规则
[root@aspen ~]# firewall-cmd --add-rich-rule="rule family=ipv4 source address=10.0.0.161 port port=80 protocol=tcp accept"
success
[root@aspen ~]# firewall-cmd --add-rich-rule="rule family=ipv4 source address=172.16.1.0/24 port port=22 protocol=tcp accept"
success
[root@aspen ~]# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="10.0.0.161" port port="80" protocol="tcp" accept
rule family="ipv4" source address="172.16.1.0/24" port port="22" protocol="tcp" accept
step2 验证
#HTTP
[root@m01 ~]# hostname -I
10.0.0.161 172.16.1.161
[root@m01 ~]# curl 10.0.0.201
Test_Page Provided by Apach
[root@lb01 ~]# hostname -I
10.0.0.15 10.0.0.13 172.16.1.15
[root@lb01 ~]# curl 10.0.0.201
curl: (7) Failed connect to 10.0.0.201:80; No route to host
#SSH
[root@m01 ~]# ssh 10.0.0.201
ssh: connect to host 10.0.0.201 port 22: No route to host
[root@m01 ~]# ssh 172.16.1.201
root@172.16.1.201's password:
Last login: Sun Aug 11 13:37:13 2019 from 10.0.0.1
[root@aspen ~]#
例题2 默认public区域对外开放所有人都能通过ssh服务连接,但拒绝172.16.1.0/24网段通过ssh连接服务器
step1 设置规则
[root@aspen ~]# firewall-cmd --add-service=ssh
success
[root@aspen ~]# firewall-cmd --add-rich-rule="rule family=ipv4 source address=172.16.1.0/24 port port=22 protocol=tcp drop"
success
[root@aspen ~]# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="172.16.1.0/24" port port="22" protocol="tcp" drop
step2 验证
[root@m01 ~]# ssh 172.16.1.201
root@172.16.1.201's password:
Last login: Sun Aug 11 13:37:13 2019 from 10.0.0.1
[root@aspen ~]# logout
Connection to 172.16.1.201 closed.
[root@m01 ~]# ssh 172.16.1.201
ssh: connect to host 172.16.1.201 port 22: Connection timed out
例题3 允许所有人能访问http和https服务,但只有10.0.0.1主机可以访问ssh服务;
step1 设置规则
[root@aspen ~]# firewall-cmd --add-port={80,443}/tcp
success
[root@aspen ~]# firewall-cmd --add-rich-rule="rule family=ipv4 source address=10.0.0.1 port port=22 protocol=tcp accept"
success
[root@aspen ~]# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services:
ports: 80/tcp 443/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="10.0.0.1" port port="22" protocol="tcp" accept
step2 验证
#HTTP/HTTPs
[root@m01 ~]# curl 10.0.0.201
Test_Page Provided by Apache
[root@m01 ~]# hostname -I
10.0.0.161 172.16.1.161
[root@lb01 ~]# curl 10.0.0.201
Test_Page Provided by Apache
[root@lb01 ~]# hostname -I
10.0.0.15 10.0.0.13 172.16.1.15
#SSH
[root@m01 ~]# hostname -I
10.0.0.161 172.16.1.161
[root@m01 ~]# ssh root@172.16.201
ssh: connect to host 172.16.201 port 22: Connection refused
[D:\~]$ ipconfig
Windows IP 配置
以太网适配器 VMware Network Adapter VMnet8:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::148f:b2f1:f63a:c878%18
IPv4 地址 . . . . . . . . . . . . : 10.0.0.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :
[D:\~]$ ssh root@10.0.0.201
Connecting to 10.0.0.201:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Sun Aug 11 14:04:58 2019 from 10.0.0.161
[root@aspen ~]#
5.Firewalld实现路由与端口转发
- 路由+NAT
firewall-cmd --add-masquerade |
[root@aspen ~]# firewall-cmd --add-masquerade
success
开启Firewalld服务的路由转发功能,内核转发自动打开; 且关闭Firewalld服务路由功能时,内核转发功能不会自动关闭 |
[root@aspen ~]# sysctl -a | grep net.ipv4.ip_forward
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_use_pmtu = 0
......
[root@aspen ~]# firewall-cmd --add-masquerade
success
[root@aspen ~]# sysctl -a | grep net.ipv4.ip_forward
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_use_pmtu = 0
......
[root@aspen ~]# firewall-cmd --remove-masquerade
success
[root@aspen ~]# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@aspen ~]# sysctl -a | grep net.ipv4.ip_forward
......
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_use_pmtu = 0
路由转发功能验证
[root@aspen ~]# firewall-cmd --add-masquerade
success
[root@aspen ~]# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@lb01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=no
IPADDR=10.0.0.15
PREFIX=24
#GATEWAY=10.0.0.254
DNS1=10.0.0.254
[root@lb01 ~]# systemctl restart network
[root@lb01 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether 00:0c:29:81:e4:ae brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:81:e4:b8 brd ff:ff:ff:ff:ff:ff
inet 172.16.1.15/24 brd 172.16.1.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe81:e4b8/64 scope link
valid_lft forever preferred_lft forever
[root@lb01 ~]# ping baidu.com
ping: baidu.com: Name or service not known
[root@lb01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=static
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=172.16.1.15
PREFIX=24
GATEWAY=172.16.1.201
DNS1=223.5.5.5
[root@lb01 ~]# systemctl restart network
[root@lb01 ~]# ping baidu.com
PING baidu.com (39.156.69.79) 56(84) bytes of data.
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=127 time=12.4 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=2 ttl=127 time=13.7 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=3 ttl=127 time=13.5 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=4 ttl=127 time=18.3 ms
^C
--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 12.440/14.522/18.334/2.257 ms
- 机器间端口转发
firewall-cmd --add-masquerade #开启路由转发功能 firewall-cmd --add-rich-rule="rule family=ipv4 source address=源地址 forward-port port=请求端口 protocol=传输层协议 to-port=转发端口 to-addr=转发地址" #端口转发 |
例题1 将源地址为10.0.0.1主机对服务器5555端口的请求转发至后端服务器172.16.1.161的22端口
[root@aspen ~]# firewall-cmd --add-rich-rule="rule family=ipv4 source address=10.0.0.1 forward-port port=5555 protocol=tcp to-port=22 to-addr=172.16.1.161"
success
[root@aspen ~]# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="10.0.0.1" forward-port port="5555" protocol="tcp" to-port="22" to-addr="172.16.1.161"
结果验证
[D:\~]$ ipconfig
Windows IP 配置
以太网适配器 VMware Network Adapter VMnet8:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::148f:b2f1:f63a:c878%18
IPv4 地址 . . . . . . . . . . . . : 10.0.0.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :
[D:\~]$ ssh root@10.0.0.201 5555
Connecting to 10.0.0.201:5555...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Sun Aug 11 15:27:09 2019 from 10.0.0.1
[root@m01 ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
......
- IP路由相内核关参数
0表示关闭,1表示开启 |
- net.ipv4.ip_forward 内核路由转发
- net.ipv4.icmp_echo_ignore_all 内核echo包响应(0表示允许,1表示禁止)
相关命令
sysctl #查看或设置内核参数
-a #查看内核所有变量
-p #查看配置文件生效的内核参数
配置文件:/etc/sysctl.conf |
[root@aspen ~]# vim /etc/sysctl.conf
......
#net.ipv4.ip_forward=1
net.ipv4.icmp_echo_ignore_all=1
[root@aspen ~]# sysctl -p
net.ipv4.icmp_echo_ignore_all = 1
[D:\~]$ ping 10.0.0.201
正在 Ping 10.0.0.201 具有 32 字节的数据:
请求超时。
请求超时。
请求超时。
请求超时。
10.0.0.201 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失),
[D:\~]$ ssh root@10.0.0.201
Connecting to 10.0.0.201:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Sun Aug 11 15:22:58 2019 from 10.0.0.1
[root@aspen ~]#