Linux基础(day35)
时间:2022-04-27
本文章向大家介绍Linux基础(day35),主要内容包括10.19 iptables规则备份和恢复、10.20 firewalld的9个zone、10.21 firewalld关于zone的操作、10.22 firewalld关于service的操作、firewalled案例、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
10.19 iptables规则备份和恢复
iptables规则的备份和恢复
- 保存和备份iptables规则
- service iptables save //会把规则保存到/etc/sysconfig/iptables
- 把iptables规则备份到my.ipt文件中
- iptables-save > my.ipt
- 恢复刚才备份的规则
- iptables-restore < my.ipt
将iptables规则保存到其他文件中
- service iptables save 这个命令会把规则保存到配置文件中/etc/sysconfig/iptables
- 需求:
- 若不想保存到这个配置文件中,把规则保存保存到另一个文件中
- 使用命令iptables-save将文件重定向到 /tmp/ipt.txt 文件中——>文件名称随便起
[root@hanfeng ~]# iptables-save > /tmp/ipt.txt
[root@hanfeng ~]# cat /tmp/ipt.txt //会看到保存的规则——>这里的和视频的不同,感觉nat表应用哪里挂掉了
# Generated by iptables-save v1.4.21 on Fri Dec 1 23:01:03 2017
*nat
-A PREROUTING -j PREROUTING_direct
-A PREROUTING -j PREROUTING_ZONES_SOURCE
COMMIT
# Completed on Fri Dec 1 23:01:03 2017
将iptables恢复刚备份的规则
- 先将之前备份的规则清空下iptables -t nat -F
- 再用iptables -t nat -nvL查看到规则都被清空了
- 再恢复之前备份的规则,命令iptables-restore < /tmp/ipt.txt
- 在使用命令iptables -t nat -nvL 会查看到清空的规则又回来了
- 备份的规则,只有恢复的时候会用到,若是服务器一重启,就想要加载一些规则,那最好将规则放到/etc/sysconfig/iptables文件中去
10.20 firewalld的9个zone
Linux防火墙-firewalld
- 打开firewalld
- systemctl disable iptables
- systemctl stop iptables
- systemctl enable firewalld
- systemctl start firewalld
- firewalld默认有9个zone
- 默认zone为public
- firewall-cmd --get-zones //查看所有zone
- firewall-cmd --get-default-zone//查看默认zone
firewalld防火墙机制
- 因为之前禁掉了firewalld,打开了iptables,所以现在需要 打开firewalld,禁掉iptables
打开firewalld
[root@hf-01 ~]# systemctl disable iptables
[root@hf-01 ~]# systemctl stop iptables
[root@hf-01 ~]# systemctl enable firewalld
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/basic.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
[root@hf-01 ~]# systemctl start firewalld
[root@hf-01 ~]#
这时用iptables -nvL和iptables -t nat -nvL查看规则,会看到增加了很多的链
- firewalld默认有9个zone,zone是firewalld的一个单位,默认使用public zone——>每个zone就好比一个规则集
- 规则集就是zone里面自带一些规则,比如:这个zone放行了80端口,放行了22端口,关闭了某某端口,这就是一个规则集
firewalld中查看所有zone
- firewall-cmd --get-zones //查看所有zone
[root@hf-01 ~]# firewall-cmd --get-zones //查看所有zone
block dmz drop external home internal public trusted work
[root@hf-01 ~]#
firewalld中查询默认的zone
- firewall-cmd --get-default-zone //查看默认zone
[root@hf-01 ~]# firewall-cmd --get-default-zone //查看默认zone
public
[root@hf-01 ~]#
firewalld中9个zone的区别
10.21 firewalld关于zone的操作
Linux防火墙-firewalld
- firewall-cmd --set-default-zone=work //设定默认zone
- firewall-cmd --get-zone-of-interface=ens33 //查指定网卡
- firewall-cmd --zone=public --add-interface=lo //给指定网卡设置zone
- firewall-cmd --zone=dmz --change-interface=lo //针对网卡更改zone
- firewall-cmd --zone=dmz --remove-interface=lo //针对网卡删除zone
- firewall-cmd --get-active-zones //查看系统所有网卡所在的zone
firewall-cmd设定默认zone
- firewall-cmd --set-default-zone=work //设定默认的zone
[root@hf-01 ~]# firewall-cmd --set-default-zone=work
success
[root@hf-01 ~]# firewall-cmd --get-default-zone
work
[root@hf-01 ~]#
firewall-cmd查看指定网卡
- firewall-cmd --get-zone-of-interface=ens16777736 //查指定网卡
[root@hf-01 ~]# firewall-cmd --get-zone-of-interface=eno16777736
work
[root@hf-01 ~]# firewall-cmd --get-zone-of-interface=lo
no zone
[root@hf-01 ~]#
- 若是后续添加的网卡ens36,显示no zone,就需要把eno16777736的网卡配置环境复制一份,命令为ens36,并修改配置文件,最后重启网络服务,在重新加载firewalld服务(systemctl restart firewalld),在来查看ens36的zone
- 若还是没有zone,我们就去增加给ens36增加一个zone
- firewall-cmd --zone=public --add-interface=ens36 //给指定网卡设置zone
- 若还是没有zone,我们就去增加给ens36增加一个zone
[root@hf-01 ~]# firewall-cmd --get-zone-of-interface=ens36
no zone
[root@hf-01 ~]# cd /etc/sysconfig/network-scripts/
[root@hf-01 network-scripts]# ls
ifcfg-eno16777736 ifdown-post ifup-bnep ifup-routes
ifcfg-eno16777736:0 ifdown-ppp ifup-eth ifup-sit
ifcfg-lo ifdown-routes ifup-ippp ifup-Team
ifdown ifdown-sit ifup-ipv6 ifup-TeamPort
ifdown-bnep ifdown-Team ifup-isdn ifup-tunnel
ifdown-eth ifdown-TeamPort ifup-plip ifup-wireless
ifdown-ippp ifdown-tunnel ifup-plusb init.ipv6-global
ifdown-ipv6 ifup ifup-post network-functions
ifdown-isdn ifup-aliases ifup-ppp network-functions-ipv6
[root@hf-01 network-scripts]# cp /etc/sysconfig/network-scripts/ifcfg-eno16777736 /etc/sysconfig/network-scripts/ens36
[root@hf-01 network-scripts]# vi !$ //编辑配置文件
vi /etc/sysconfig/network-scripts/ens36
[root@hf-01 network-scripts]# systemctl restart network.service //重启网络服务
[root@hf-01 network-scripts]# systemctl restart firewalld //重新加载firewalld服务
[root@hf-01 network-scripts]# firewall-cmd --get-zone-of-interface=ens36 //查看ens36网卡的zone
no zone
[root@hf-01 network-scripts]# firewall-cmd --zone=work --add-interface=ens36 //给ens36网卡设置zone
success
[root@hf-01 network-scripts]# firewall-cmd --get-zone-of-interface=ens36 //查看ens36网卡的zone
work
[root@hf-01 network-scripts]#
firewall-cmd给指定网卡设置zone
- firewall-cmd --zone=public --add-interface=lo //给指定网卡设置zone
[root@hf-01 network-scripts]# firewall-cmd --zone=public --add-interface=lo 给lo网卡设置zone
success
[root@hf-01 network-scripts]# firewall-cmd --get-zone-of-interface=lo
public
[root@hf-01 network-scripts]#
firewall-cmd给指定网卡设置zone
- firewall-cmd --zone=dmz --change-interface=lo //针对网卡更改zone
[root@hf-01 network-scripts]# firewall-cmd --get-zone-of-interface=lo
public
[root@hf-01 network-scripts]# firewall-cmd --zone=dmz --change-interface=lo //针对网卡更改zone
success
[root@hf-01 network-scripts]# firewall-cmd --get-zone-of-interface=lo
dmz
[root@hf-01 network-scripts]#
firewall-cmd针对网卡删除zone
- firewall-cmd --zone=block --remove-interface=ens37 //针对网卡删除zone
[root@hf-01 network-scripts]# firewall-cmd --zone=block --change-interface=ens36 给ens36网卡设置zone
success
[root@hf-01 network-scripts]# firewall-cmd --zone=block --remove-interface=ens36 //针对ens36网卡删除zone
success
[root@hf-01 network-scripts]# firewall-cmd --get-zone-of-interface=ens36
no zone
[root@hf-01 network-scripts]#
- 在remove删除zone后,恢复默认的zone——>自己在删除后,就显示no zone,而并不是恢复默认的zone!!!
firewall-cmd查看系统所有网卡所在的zone
- firewall-cmd --get-active-zones //查看系统所有网卡所在的zone
[root@hf-01 network-scripts]# firewall-cmd --get-active-zones //查看系统所有网卡所在的zone
dmz
interfaces: lo
work
interfaces: eno16777736
[root@hf-01 network-scripts]#
10.22 firewalld关于service的操作
Linux防火墙-firewalled
- firewall-cmd --get-services 查看所有的servies
- firewall-cmd --list-services //查看当前zone下有哪些service
- firewall-cmd --zone=public --add-service=http //把http增加到public zone下面
- firewall-cmd --zone=public --remove-service=http
- ls /usr/lib/firewalld/zones/ //zone的配置文件模板
- firewall-cmd --zone=public --add-service=http --permanent //更改配置文件,之后会在/etc/firewalld/zones目录下面生成配置文件
- 需求:ftp服务自定义端口1121,需要在work zone下面放行ftp
- cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services
- vi /etc/firewalld/services/ftp.xml //把21改为1121
- cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/
- vi /etc/firewalld/zones/work.xml //增加一行
- <service name="ftp"/>
- firewall-cmd --reload //重新加载
- firewall-cmd --zone=work --list-services
firewall-cmd查看所有的servies
- firewall-cmd --get-services 查看所有的servies(这里的 s 可省略)
- servies,就是zone下面的一个子单元,可理解为它是一个指定的端口
- 防火墙就是针对一些端口做出一些限制,比如:http操作的是80端口,https操作的是43端口,ssh操作的是22端口
- servies,就是zone下面的一个子单元,可理解为它是一个指定的端口
[root@hf-01 ~]# firewall-cmd --get-services //列出系统中所有的services
amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openV** pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https
[root@hf-01 ~]#
firewall-cmd查看当前zone下有哪些service(service可加 s,也可不加 s)
- firewall-cmd --list-services //查看当前zone下有哪些service
[root@hf-01 ~]# firewall-cmd --get-default-zone //查看当前的zone
work
[root@hf-01 ~]# firewall-cmd --list-services //查看当前zone下有哪些service
dhcpv6-client ipp-client ssh
[root@hf-01 ~]#
- 指定对应的zone,有哪些services
[root@hf-01 ~]# firewall-cmd --zone=public --list-services
dhcpv6-client ssh
[root@hf-01 ~]#
firewall-cmd将http服务增加到public zone下面
- firewall-cmd --zone=public --add-service=http //把http增加到public zone下面
[root@hanfeng ~]# firewall-cmd --zone=public --add-service=http
success
[root@hanfeng ~]# firewall-cmd --zone=public --list-service
dhcpv6-client http ssh
[root@hanfeng ~]# firewall-cmd --zone=public --add-service=ftp
success
[root@hanfeng ~]# firewall-cmd --zone=public --list-service
dhcpv6-client ftp http ssh
[root@hanfeng ~]#
- 现在仅仅是内存里面zone增加了一些service,若想将这些配置保存到配置文件中去,只需在后面在增加--permanent,来更改配置文件
- firewall-cmd --zone=public --add-service=http --permanent //更改配置文件,之后会在/etc/firewalld/zones目录下面生成配置文件
[root@hanfeng ~]# firewall-cmd --zone=public --add-service=http --permanent
success
[root@hanfeng ~]# ls /etc/firewalld/zones/ //每次改完配置文件,就会生成一个旧的作为备份,后缀名为.old
public.xml public.xml.old
[root@hanfeng ~]# 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="dhcpv6-client"/>
<service name="http"/>
<service name="ssh"/>
</zone>
[root@hanfeng ~]#
zone的配置文件模板
- ls /usr/lib/firewalld/zones/ //zone的配置文件模板
- 能查看到有9个模板
[root@hanfeng ~]# ls /usr/lib/firewalld/zones/
block.xml drop.xml home.xml public.xml work.xml
dmz.xml external.xml internal.xml trusted.xml
[root@hanfeng ~]# ls /usr/lib/firewalld/services/
amanda-client.xml ipp-client.xml mysql.xml rpc-bind.xml
bacula-client.xml ipp.xml nfs.xml samba-client.xml
bacula.xml ipsec.xml ntp.xml samba.xml
dhcpv6-client.xml kerberos.xml openV**.xml smtp.xml
dhcpv6.xml kpasswd.xml pmcd.xml ssh.xml
dhcp.xml ldaps.xml pmproxy.xml telnet.xml
dns.xml ldap.xml pmwebapis.xml tftp-client.xml
ftp.xml libvirt-tls.xml pmwebapi.xml tftp.xml
high-availability.xml libvirt.xml pop3s.xml transmission-client.xml
https.xml mdns.xml postgresql.xml vnc-server.xml
http.xml mountd.xml proxy-dhcp.xml wbem-https.xml
imaps.xml ms-wbt.xml radius.xml
[root@hanfeng ~]#
firewall-cmd将public zone下面的http服务删除
- firewall-cmd --zone=public --remove-service=http
firewalled案例
需求
- 将ftp服务自定义端口1121,需要在work zone下面放行ftp
实现
[root@hanfeng ~]# cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services
[root@hanfeng ~]# vi /etc/firewalld/services/ftp.xml
将内容中的21端口改为1121端口
[root@hanfeng ~]# cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/
[root@hanfeng ~]# vi /etc/firewalld/zones/work.xml
增加一行,内容为 <service name="ftp"/>
[root@hanfeng ~]# firewall-cmd --reload //重新加载
success
[root@hanfeng ~]# firewall-cmd --zone=work --list-services
dhcpv6-client ftp ipp-client ssh
[root@hanfeng ~]#
- firewall-cmd --reload //重新加载
- nyoj------布线问题(kruscal+求最小值)
- nyoj-----127星际之门(一)
- nyoj------20吝啬的国度
- HDUOJ-------2493Timer(数学 2008北京现场赛H题)
- go sync.Mutex 设计思想与演化过程 (一)
- HDUOJ--------A simple stone game(尼姆博弈扩展)(2008北京现场赛A题)
- HDUOJ----2485 Destroying the bus stations(2008北京现场赛A题)
- Go语言实践:从新手入门到上线真实的小型服务所遇到的那些坑
- Node.js真的无所不能?那些不适用的应用领域分析
- hdu-----2491Priest John's Busiest Day(2008 北京现场赛G)
- nyoj------79拦截导弹
- HDUOJ-------2719The Seven Percent Solution
- Golang记录、计算函数执行耗时、运行时间的一个简单方法
- uva----11729 Commando war (突击战争)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Centos7实现MySQL基于日志还原数据的示例代码
- Android 三种延迟操作的实现方法
- 基于Android在布局中动态添加view的两种方法(总结)
- Android向node.js编写的服务器发送数据并接收请求
- Android startActivityForResult和setResult的区别
- Linux系统使用Fuser命令的方法
- Android实现地理定位功能
- Android实现在ServiceManager中加入自定义服务的方法详解
- Android studio so库找不到问题解决办法
- Android使用ViewPager实现屏幕滑动效果
- Android 自定义view实现进度条加载效果实例代码
- Android电池电量监听的示例代码
- Android 解决ScrollView嵌套CridView显示问题
- Android利用zxing快速集成二维码扫描的实例教程
- Android中使用SharedPreferences完成记住账号密码的功能