一、网卡配置的四种模式
1、直接修改配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO代表地址的分配方式,有dhcp、static、none
ONBOOT代表开机是否启用网卡,参数有yes、no
子网掩码可以写成NETMASK=255.255.255.0,也可以写成PREFIX0=24
修改完网卡配置文件后需要重启网络服务
systemctl restart network
2、nmtui(CentOS 5、6为setup)
3、nm-connection-editor
下面两个选项要勾选,等同于ONBOOT的yes或no
4、小图标
二、防火墙设置的四种方式
1、iptables
- 从外到内为INPUT
- 从内到外为OUTPUT
- 防火墙的策略从上至下来执行,当匹配后直接执行,并且不会执行下面的语句了。
-
其中拒绝流量分为两种
①REJECT——直接拒绝,对方看到的是直接你拒绝他的消息
②DROP——丢包策略,对方看到你是不在线的(起到隐藏主机的作用) - 实验
iptables -L #-L代表查看已有的规则列表,INPUT从外到内默认规则是放行所有流量
iptables -F #清空原有的防火墙策略
iptables -I INPUT -p icmp -j REJECT #-I代表放在规则链的头部,优先级最高(-A代表末尾),-p代表协议,-j表示后面接动作
iptables -I INPUT -p icmp -j ACCEPT #恢复允许icmp流量
iptables -P INPUT DROP #-P代表修改默认策略,禁止所有流量(默认策略只能是DROP,不能是REJECT)
iptables -I INPUT -p icmp -j ACCEPT
#允许icmp,会发现又可以ping通了
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
#允许使用SSH(默认端口为22),--dport 22代表是目标的端口号22
#如果不知道对应的协议,可以查看/etc/services文件
cat /etc/services | grep ssh
#因为内容太多,可以使用grep来过滤查看
iptables -F
#将防火墙策略清除,因为之前将默认的策略修改为了禁止所有流量,所以SSH远程连接断开了,需要重新到本机上修改回ACCEPT
service iptables save
#清空后保存一下当前策略状态
#再次连接,正常。
iptables -D INPUT 1
#删除编号为1的策略
iptables -L
#删除后再进行查看
iptables -I INPUT -s 192.168.152.129 -p icmp -j REJECT
#拒绝某台主机ping本机
2、firewall-cmd
- public是系统默认当前使用的策略
- trusted放行所有的流量
- drop拒绝所有流量
- 使用firewall-cmd时,可以先iptables -F清空一下iptables的策略,然后service iptables save保存一下策略状态,这样就不会影响firewall-cmd的使用了
firewall-cmd --get-default-zone #正式使用时,可以查看一下默认的区域是什么
firewall-cmd --get-zone-of-interface=ens33
#针对网卡查看此网卡使用的区域
- 策略生效的两种情况:Runtime(默认);permanent永久生效,但当前不会生效,需要重启后生效。如果想不想重启,执行以下firewall-cmd --reload即可。
firewall-cmd --set-default-zone=work
#修改默认区域为work
紧急模式
它会切断所有连接,如果远程操作时候,需要提前将自己加入到紧急模式的白名单中
firewall-cmd --panic-on #打开紧急模式,centos 7无法ping通了,我们的ssh连接也断开了。
firewall-cmd --panic-off
#登陆实体机关闭紧急模式后,恢复正常了。
放行某一服务或端口
- ①服务
firewall-cmd --zone=public --query-service=http #查看http是否放行 firewall-cmd --zone=public --add-service=http #放行http服务,但是重启后会失效
firewall-cmd --zone=public --query-service=http
#查看当前http服务是否被放行
firewall-cmd --permanent --zone=public --query-service=http
#查看重启后http服务是否被放行
firewall-cmd --permanent --zone=public --add-service=http
#通过加上--permanent参数后,当前不会生效,需要重启或者使用--reload参数后才会生效。
-
②端口
firewall-cmd --zone=public --query-port=8080/tcp #查看当前8080端口是否被放行 firewall-cmd --permanent --zone=public --add-port=8080/tcp #永久放行8080端口,当前不生效,需要重启或者firewall-cmd --reload才会生效
- 实验:流量转发
SSH默认端口号为22,如果想访问666端口时候也同样能够访问SSH服务。
步骤:
①在192.168.152.129主机使用以下命令
firewall-cmd --permanent --zone=public --add-forward-port=port=666:proto=tcp:toport=22:toaddr=192.168.152.129
需要再firewall-cmd --reload后生效
②在192.168.152.126主机使用以下命令
ssh 192.168.152.129 -p 666
通过192.168.152.126主机进行使用端口666来ssh登陆192.168.152.129,结果如下图
在192.168.152.126主机上使用netstat -ntpe可以查看结果如下
- 实验:富规则
步骤:
①在主机192.168.152.126主机输入以下命令firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.152.0/24" service name="ssh" reject" #拒绝192.168.152.0网段的ssh服务
firewall-cmd --reload #使上条命令立即生效
②在主机192.168.152.129上ssh 192.168.152.126发现无法连接了。
firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.152.0/24" service name="ssh" reject" #将添加富规则移除 firewall-cmd --permanent --zone=public --query-rich-rule="rule family="ipv4" source address="192.168.152.0/24" service name="ssh" reject" #查看富规则使用情况
3、firewall-config
- 实验
通过命令查看http服务是没有允许放行的
我们将firewall-config中的http服务勾选后,再进行查看,还是显示的no,因为我们上图中使用的查询命令是没有带参数--permanent的,但是我们选择的配置是permanent
需要在左上角的Options中Reload Firewalld(等同于命令行的firewall-cmd --reload),再进行查看就显示yes了。
4、tcp_wrappers
优先级应该是最低的
先去匹配hosts.allow,再去匹配hosts.deny
如果hosts.allow中已经允许了,则会放行;如果两个里面都没有,默认也是放行的。
- 实验
①在主机192.168.152.126上进行如下操作
vim /etc/hosts.deny
加入以下参数
sshd:192.168.152.(格式为 服务名称:网段、IP)
保存并退出后,无需重启等操作。
②此时从主机192.168.152.129上执行
ssh 192.168.152.126,发现已经无法登陆了
③此时再在主机192.168.152.126的hosts.allow文件中加入sshd:192.168.152.后,从主机192.168.152.129上进行ssh 192.168.152.126发现可以正常登陆了,如下图。也说明了开始将的,匹配上了hosts.allow后就会放行!
④只允许某一个IP地址进行ssh登陆。