配置网卡(本地电脑)
Vment1 仅主机模式
Vment8 nat模式
物理机 : 192.16810.1 /255.255.255.0
服务器 : 192.168.10.10 /255.255.255.0
客户端A:192.168.10.20/255.255.255.0
客户端B:192.168.10.30/255.255.255.0
我们就按照这个来做。自己定也行
接下来说怎么配置网卡(4种方法)
下面先说第一种
用vim进入/etc/sysconfig/network-scripts/ifcfg-eno16777736进入网卡,ifcfg跟的是你网卡的名称,每个人是不一样的。
然后我们看一下里面的参数
TYPE说的是我们的网卡类型,这里是以太网
第二个BOOTPROTO是一个启动方式(获取网卡信息的一个方式)他有三个类型:第一个是静态(stat),第二个是dhcp,第三个是默认(none)
NAME代表网卡名称
UUID代表网卡唯一的标识符
HWADDR:网卡mac地址也就是物理地址。
ONEBOOT:这个参数是说让我们开机时候是否启动。很重要。
IPADDR0:网卡的IP地址
PREFIX0:子网掩码,他这里写了24位。我们也可以写成NETMASK=255.255.255.0
然后我们重启网卡,# systemctl restart network
这里说一下,如果你用的虚拟机,重启网卡报错,那么很有可能你的mac地址不对,这里你用ip addr命令查看一下还了就好了。然后在本机上ping一下。
记住3句话
1.Linux系统一切都是文件
2.设置服务选项实际就是在修改服务的配置文件。
3.要想让服务执行最新的参数,需要重启该服务。
第二种方法
用工具nmtui
RHEL5/6 setup
EHRL7 nmtui
回车
然后选择编辑Edit
我们将它改为30,然后选中OK回车
这时候我们会发现网络还没有通,那是因为我们没有重启网卡,记住修改完配置文件必须重启对应服务。
然后我们说第三种
命令nm-connection-editor
这没什么好说的。
记住这两个必须勾上就行了。
对了,别忘了重启服务哈
第四种方法。
如果你实在懒得记的话,那你看那个小电脑没,点击他
然后给他先关了再打开就行了。
这样修改是不用重启服务的,但是你公司如果没有安装图形化界面的话你还是老老实实的记命令吧。选择自己喜欢的就好了。
----------------------------------------------------------------------------------------------------------------------------------
接下来我们学习配置防火墙
input:从外部到内部的过程
output:从内网到外网输入的一个过程
forward :转发链到第三方
策略规则
从上往下逐条匹配的,当匹配到中间一条之后就会执行,就不会往下匹配了。所以我们把重要的写在上面。
思路
1:防火墙的功能主要是防止外部到内部的一个入侵。
2:功能里面我们要有策略,而这个策略是从上到下的。并且当匹配到之后就会终止匹配动作。
3:动作不光可以静止掉我们某个流量,他可以做4种动作
(1)允许动作 ACCEPT(比如你妈来了)
(2)拒绝动作 REJECT(但是对方会受到你拒绝的信息)(比如推销洗发水的)
(3)对方依然不能进来,并且不知道你在家DROP(举个例子,有100个人来干你,敢出声不)
(4)LOG 日志
下面配置一下实例
Iptables (在RHEL7.4以后就没有了)(难度最大)
iptables中常用的参数以及作用
参数 | 作用 |
-P | 设置默认策略 |
-F | 清空规则链 |
-L | 查看规则链 |
-A | 在规则链的末尾加入新规则 |
-I num | 在规则链的头部加入新规则 |
-D num | 删除某一条规则 |
-s | 匹配来源地址IP/MASK,加叹号“!”表示除这个IP外 |
-d | 匹配目标地址 |
-i 网卡名称 | 匹配从这块网卡流入的数据 |
-o 网卡名称 | 匹配从这块网卡流出的数据 |
-p | 匹配协议,如TCP、UDP、ICMP |
--dport num | 匹配目标端口号 |
--sport num | 匹配来源端口号 |
显示Iptables -L所有策略的
iptables -L清空防火墙所有策略
我们会发现他只有这种格式了,策略都没了。
Chain INPUT(policy ACCEPT)
接下来:
把INPUT规则链的默认策略设置为拒绝:(默认的规则链只能使用DROP不能是REJECT,程序所规定的)
回车我们发现他ping不通了。
默认禁止所有流量去访问我们的服务器iptables -P INPUT DROP。-P是设置默认策略。
-I插入规则到前面 -A插入到后面 规则链的话叫做INPUT -p协议的意思, ping的协议叫做icmp,就是说我们允许icmp协议,说白了就是允许你ping,-j代表动作了,ACCEPT是允许这个动作。我们会发现又ping通了。但是其他动作是不行了,只能ping.
将INPUT规则链设置为只允许指定网段的主机访问本机的22端口,拒绝来自其他所有主机的流量:
-I我们给他放到最前面,INPUT 规则链名称 ,别忘了规则链是从上到下的。-s 是来源的地址 192.168.10.0/24 , -p 代表协议(TCP),--dport 22端口号。-j ACCEPT的话-j本身没什么作用,当加上ACCEPT允许动作的时候才有用,比如说这是老冀,你只说这是没什么用,对吧。
用-L查看我们里面的策略,发现好多重复的,那么我们怎么清空多余的么,其中iptables -F是清空全部。如果要删除指定的我们这么写
# iptables -D INPUT 1就是删除第一条。
删掉了
向INPUT规则链中添加拒绝192.168.10.1主机访问本机80端口(Web服务)的策略规则
这个是拒绝某个IP从外部访问到内部的命令,然后我们iptables -F给他取消掉。
向INPUT规则链中添加拒绝所有人访问本机22端口的策略规则:
向INPUT规则链中添加拒绝所有主机访问本机20~200端口的策略规则:
但是请特别注意,使用iptables命令配置的防火墙规则默认会在系统下一次重启时失效,如果想让配置的防火墙策略永久生效,还要执行保存命令:
这样,我们配置的iptables就生效了。
----------------------------------------------------------------------------------------------------------------------------------
Firewalld防火墙的命令(zone区域)
他的两个工具
firewall-cmd 命令行
firewall-config 图形化
firewalld中常用的区域名称及策略规则
区域 | 默认规则策略 |
trusted | 允许所有的数据包 |
home | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量 |
internal | 等同于home区域 |
work | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量 |
public | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量 |
external | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量 |
dmz | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量 |
block | 拒绝流入的流量,除非与流出的流量相关 |
drop | 拒绝流入的流量,除非与流出的流量相关 |
public重点
Runtime 当前生效模式,重启后失效。
Premanent 当前暂时不生效,但是但是重启后永久生效。
firewall-cmd命令中使用的参数以及作用
参数 | 作用 |
--get-default-zone | 查询默认的区域名称 |
--set-default-zone=<区域名称> | 设置默认的区域,使其永久生效 |
--get-zones | 显示可用的区域 |
--get-services | 显示预先定义的服务 |
--get-active-zones | 显示当前正在使用的区域与网卡名称 |
--add-source= | 将源自此IP或子网的流量导向指定的区域 |
--remove-source= | 不再将源自此IP或子网的流量导向某个指定区域 |
--add-interface=<网卡名称> | 将源自该网卡的所有流量都导向某个指定区域 |
--change-interface=<网卡名称> | 将某个网卡与区域进行关联 |
--list-all | 显示当前区域的网卡配置参数、资源、端口以及服务等信息 |
--list-all-zones | 显示所有区域的网卡配置参数、资源、端口以及服务等信息 |
--add-service=<服务名> | 设置默认区域允许该服务的流量 |
--add-port=<端口号/协议> | 设置默认区域允许该端口的流量 |
--remove-service=<服务名> | 设置默认区域不再允许该服务的流量 |
--remove-port=<端口号/协议> | 设置默认区域不再允许该端口的流量 |
--reload | 让“永久生效”的配置规则立即生效,并覆盖当前的配置规则 |
--panic-on | 开启应急状况模式 |
--panic-off | 关闭应急状况模式 |
查看firewalld服务当前所使用的区域:
告诉我们是public
我们还可以通过set,也就是firewall-cmd --set-default-zone=drop给他切换成drop丢包。然后使用
#friewall-cmd --get-default-zone 来查看
流量必须经过你你才能看到效果。
查询eno16777736网卡在firewalld服务中的区域:
告诉我们没有区域。
把firewalld服务中eno16777736网卡的默认区域修改为drop,并在系统重启后生效。分别查看当前与永久模式下的区域名称:
然后进行查看,发现还是no zone
我们这样查看重启之后的效果。
在语句查看的基础上家一个--permanent参数就可以查看重启之后网卡所在的区域了。
这里需要说一下,比如我们公司没人入侵进病毒了,第一时间不是杀毒啊,而是先断网,从根源上遏制,然后再进项下一步处理。将损失降到最低。
上面的命令就是切断所有连接,就是ping也不行。
如果感觉好了之后,我们就可以关闭掉紧急模式,off之后连接又恢复正常。
这个命令就是说是否可以从外面访问我们内网网站服务,no不允许
然后是否可以访问内部ssh服务,告诉我们yes可以
然后我们将他的服务名称加进去他的策略当中去,用add
firewall-cmd --zone=public --query-service=https 当前生效
firewall-cmd --permanent --zone=public --query-service=https 永久生效,你查询的时候也得加上--permanent,不然查出来是不正确的。
对了,移除的命令是remove,也就是
firewann-cmd --zone=public --remove-service=https
切记我们一定要加--permanent命令让她永久生效,然后我们firewall-cmd --reload最后去加载一下。
对端口号放行
例如我们对端口号8080放行的话,那么
我们看到里面多了一条8080端口号信息。
让然我们也可以将add换成remove将它移除。
我们也可以允许放行某个段的端口号
就是把8080换成8000-9000.当然移除一样是remove
--permanent这个参数别忘了,一样的
我们默认的端口22大家都知道,这样就很容易让黑客来攻击,那我们怎么隐藏这个原始端口号呢,
我们让用户访问例如一个888段楼,然后转发到22端口号,这样外面看是888,实际上我们端口号是22.
流量转发命令格式为:firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>
这样我们就转成功了。访问888端口号就可以访问。
firewalld中的富规则表示更细致、更详细的防火墙策略配置,它可以针对系统服务、端口号、源地址和目标地址等诸多信息进行更有针对性的策略配置。它的优先级在所有的防火墙策略中也是最高的。比如,我们可以在firewalld服务中配置一条富规则,使其拒绝192.168.10.0/24网段的所有用户访问本机的ssh服务(22端口):
这个是复语句,特别长,我们只需要记住firewall-cmd --reload让她直接永久直接生效。
---------------------------------------------------------------------------------------------------------------
firewall-config 工具
输入命令firewall-config命令
他是和命令一模一样的。
我们开始查看的ipp服务不允许,然后我们再图形界面点一下ipp
发现发马上就允许了
我们执行一个增加一个图形界面就对号一个。
1:选择运行时(Runtime)模式或永久(Permanent)模式的配置。
2:可选的策略集合区域列表。
3:常用的系统服务列表。
4:当前正在使用的区域。
5:管理当前被选中区域中的服务。
6:管理当前被选中区域中的端口。
7:开启或关闭SNAT(源地址转换协议)技术。
8:设置端口转发策略。
9:控制请求icmp服务的流量。
10:管理防火墙的富规则。
11:管理网卡设备。
12:被选中区域的服务,若勾选了相应服务前面的复选框,则表示允许与之相关的流量。
13:firewall-config工具的运行状态。
我们先将当前区域中请求http服务的流量设置为允许,但仅限当前生效。
尝试添加一条防火墙策略规则,使其放行访问8080~8088端口(TCP协议)的流量,并将其设置为永久生效,以达到系统重启后防火墙策略依然生效的目的。在按照图所示的界面配置完毕之后,还需要在Options菜单中单击Reload Firewalld命令,让配置的防火墙策略立即生效。这与在命令行中执行--reload参数的效果一样。
使用iptables命令实现SNAT技术是一件很麻烦的事情,但是在firewall-config中却是小菜一碟了。用户只需按图进行配置,并选中Masquerade zone复选框,就自动开启了SNAT技术。
为了让大家直观查看不同工具在实现相同功能的区别,这里使用firewall-config工具重新演示了前面使用firewall-cmd来配置防火墙策略规则,将本机888端口的流量转发到22端口,且要求当前和长期均有效,具体如图
配置富规则,让192.168.10.20主机访问到本机的1234端口号
如果生产环境中的服务器有多块网卡在同时提供服务(这种情况很常见),则对内网和对外网提供服务的网卡要选择的防火墙策略区域也是不一样的。也就是说,可以把网卡与防火墙策略区域进行绑定,这样就可以使用不同的防火墙区域策略,对源自不同网卡的流量进行针对性的监控,效果会更好。
最后,刘遄老师想说的是,firewall-config工具真的非常实用,很多原本复杂的长命令被用图形化按钮替代,设置规则也简单明了,足以应对日常工作。所以再次向大家强调配置防火墙策略的原则—只要能实现所需的功能
第四种方法:TCP Wrappers工具
我们前三个iptables firewall-cmd firewall-config 一共7层,他们属于数据链路层(基于对协议、端口号、来访IP地址),而TCP Wrappers 是应用层(服务名称)
他是由两部分组成
/etc/hosts.allow 白名单(允许的服务名称以及IP地址)
/etc/hosts.deny 黑名单(拒绝的服务名称以及IP地址)
他的匹配顺序是先匹配白名单,当白名单没有的时候回匹配黑名单,如果白名单有的话就会停止匹配直接放行。没有的话匹配黑名单,当黑名单有的话就会禁止,当全部匹配完了都没有的话就会选择放行。
编辑我们拒绝的文件。
其中先说一下,我们SSH叫做协议的名称,sshd是服务的名称,别搞混了
ssh:192.168.10.相当于ssh:192.168.10.0/255.255.255.0,或者ssh:192.168.10.0/24怎么写都行。
现在我们的Xshell工具是可以连接的。但是
让我们加进去静止这个网段之后,我们看一下
连不上了,因为我们这个网段被禁止了。
我们限制所有主机的话就是这样做。里面加sshd:* (*代表所有主机)
让然我们还是连不上。这样所有主机都禁止了肯定不行,活都干不了了。所以我们给他在允许allow里面加进去我们公司里面内部的IP,但是其他人不行。
然后我们再试一下
又可以了。
TCP Wrappers服务的控制列表文件中常用的参数
客户端类型 | 示例 | 满足示例的客户端列表 |
单一主机 | 192.168.10.10 | IP地址为192.168.10.10的主机 |
指定网段 | 192.168.10. | IP段为192.168.10.0/24的主机 |
指定网段 | 192.168.10.0/255.255.255.0 | IP段为192.168.10.0/24的主机 |
指定DNS后缀 | .admin | 所有DNS后缀为.admin的主机 |
指定主机名称 | admin | 主机名称为admin的主机 |
指定所有客户端 | ALL | 所有主机全部包括在内 |
最后说一下我们4个工具,有其中一个工具拒绝3个允许他还是拒绝。