linux的iptables备份及firewalld操作介绍

1. iptables规则备份和恢复

  1. 保存iptables规则
  • 使用命令:service iptables save //会把规则保存到/etc/sysconfig/iptables文件中
  1. 备份iptables规则
  • 有时候我们如果不想保存在默认文件里的话,可以另取一个新的文件保存,示例如下:
[root@gary-tao ~]# iptables-save > /tmp/ipt.txt //保存
[root@gary-tao ~]# cat /tmp/ipt.txt
# Generated by iptables-save v1.4.21 on Thu Nov 30 18:54:44 2017
*filter
:INPUT ACCEPT [38354:2933025]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [146:9480]
COMMIT
# Completed on Thu Nov 30 18:54:44 2017
  1. 恢复iptables规则

示例命令如下:

[root@gary-tao ~]#iptables-restore < /tmp/ipt.txt
  1. 有时候我们需要清除防火墙的所有规则,使用命令iptables -F固然可以,但最好的办法还是停止防火墙服务,如下所示:
[root@gary-tao ~]#service iptables stop

这样防火墙就失效了,但是一旦重新设定规则(哪怕只有一条),防火墙服务还是会自动开启。


2. firewalld的9个zone

  • firewalld是CentOS7里面的防火墙机器,在之前的操作中把firewalld服务给禁掉了,而是打开了iptables服务,现在再反过来关闭iptables服务,打开firewalld服务,操作如下:
[root@gary-tao ~]# systemctl disable iptables
Removed symlink /etc/systemd/system/basic.target.wants/iptables.service.
[root@gary-tao ~]# systemctl stop iptables
[root@gary-tao ~]# 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@gary-tao ~]# systemctl start firewalld
  • 打开firewalld以后,你可以执行一个iptables -nvL命令查看firewalld的默认规则,会发现这些规则要经netfilter的规则复杂。之前介绍的iptables相关命令在centos7也是可以继续使用的,不过在centos7里不用那么操作,Centos7里面有firewalld自己的命令。

  • firewalld有两个基础概念,分别是zone和service,每一个zone里面有不同的iptables规则,默认一共有9个zone,而Centos 7默认的zone为public,获取系统所有的zone,命令如下所示:
[root@gary-tao ~]# firewall-cmd --get-zones
work drop internal external trusted home dmz public block

如下命令可以查看系统默认的zone:

[root@gary-tao ~]# firewall-cmd --get-default-zone
public
  • 简单介绍如下9个zone的作用:
    linux的iptables备份及firewalld操作介绍

  • 介绍几个关于zone的命令:
[root@gary-tao ~]# firewall-cmd --set-default-zone=work //设定默认zone
success
[root@gary-tao ~]# firewall-cmd --get-zone-of-interface=ens33  //查指定网卡
work
[root@gary-tao ~]# firewall-cmd --zone=public --add-interface=lo  //给指定网卡设置zone 
success    
[root@gary-tao ~]# firewall-cmd --zone=dmz --change-interface=lo   //针对网卡更改zone
success
[root@gary-tao ~]# firewall-cmd --get-zone-of-interface=lo //查指定网卡zone 
dmz  
[root@gary-tao ~]# firewall-cmd --zone=dmz  --remove-interface=lo    //针对网卡删除zone 
success
[root@gary-tao ~]# firewall-cmd --get-zone-of-interface=lo //查指定网卡zone  
no zone
[root@gary-tao ~]# firewall-cmd --get-active-zones //查看系统所有网卡所在的
work
  interfaces: ens33
  • 介绍另一个概念service,之所以有9种zone,是因为每个zone里面都使用了不同的service,而service就是针对一个服务(端口)做的iptables规则。

查看所有的servies,示例如下:

[root@gary-tao ~]# firewall-cmd --get-services
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp open*** pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster radius rpc-bind rsyncd samba samba-client sane smtp smtps snmp snmptrap squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server
  1. 这些service都是由一个个配置文件定义的,配置文件的模板在/usr/lib/firewalld/services/目录下,真正生效的配置在/etc/firewalld/services目录下面(默认为空)。
[root@gary-tao ~]# ls /usr/lib/firewalld/services/
amanda-client.xml        https.xml         mountd.xml      puppetmaster.xml    telnet.xml
amanda-k5-client.xml     http.xml          ms-wbt.xml      radius.xml          tftp-client.xml
bacula-client.xml        imaps.xml         mysql.xml       RH-Satellite-6.xml  tftp.xml
bacula.xml               imap.xml          nfs.xml         rpc-bind.xml        tinc.xml
ceph-mon.xml             ipp-client.xml    ntp.xml         rsyncd.xml          tor-socks.xml
ceph.xml                 ipp.xml           open***.xml     samba-client.xml    transmission-client.xml
dhcpv6-client.xml        ipsec.xml         pmcd.xml        samba.xml           vdsm.xml
dhcpv6.xml               iscsi-target.xml  pmproxy.xml     sane.xml            vnc-server.xml
dhcp.xml                 kadmin.xml        pmwebapis.xml   smtps.xml           wbem-https.xml
dns.xml                  kerberos.xml      pmwebapi.xml    smtp.xml            xmpp-bosh.xml
docker-registry.xml      kpasswd.xml       pop3s.xml       snmptrap.xml        xmpp-client.xml
dropbox-lansync.xml      ldaps.xml         pop3.xml        snmp.xml            xmpp-local.xml
freeipa-ldaps.xml        ldap.xml          postgresql.xml  squid.xml           xmpp-server.xml
freeipa-ldap.xml         libvirt-tls.xml   privoxy.xml     ssh.xml
freeipa-replication.xml  libvirt.xml       proxy-dhcp.xml  synergy.xml
ftp.xml                  mdns.xml          ptp.xml         syslog-tls.xml
high-availability.xml    mosh.xml          pulseaudio.xml  syslog.xml
  1. 每个zone里面都有不同的service,使用如下命令查看:
[root@gary-tao ~]# firewall-cmd --list-services //查看当前zone下有哪些service
ssh dhcpv6-client
[root@gary-tao ~]# firewall-cmd --zone=public --list-service //查看指定zone下有哪些service
dhcpv6-client ssh
  1. 一个zone下面有某个service,意味着这个service是被信任的,比如,当前zone下面有个ssh,那么ssh服务(也就是22)端口是放行的,我们可以给一个zone添加一个service,命令如下:
[root@gary-tao ~]# firewall-cmd --zone=public --add-service=http  //把http增加到public zone下面
success
[root@gary-tao ~]# firewall-cmd --zone=public --list-services 
dhcpv6-client ssh http

注意:仅在内存中生效,如果想要永久生效,需要更改配置文件,请继续看。

  1. 对于每个zone来说,都有自己的配置文件,你可以查看目录/usr/lib/firewalld/zones/下面对应的文件,这些就是zone的配置文件,如下:
[root@gary-tao ~]# ls /usr/lib/firewalld/zones/  //zone的配置文件模板
block.xml  dmz.xml  drop.xml  external.xml  home.xml  internal.xml  public.xml  trusted.xml  work.xml
  1. 前面已经试过一种方法可以在一个zone里面增加一个service,但这种方法仅仅在内存中生效,并没有修改配置文件,如果想要修改配置文件,需要增加一个选项,如下:
[root@gary-tao ~]# firewall-cmd --zone=public --add-service=http --permanent
success
[root@gary-tao ~]# ls /etc/firewalld/zones //查看zone的配置文件
public.xml  public.xml.old

备注:一旦更改了某个zone的配置文件,则会在/etc/firewalld/zones目录下面生成对应zone的配置文件(.xml后缀的文件),其实这个目录下面的配置文件才是真正的配置文件,上面所介绍的目录,可以说是所有zone的模板配置文件。

总结举例验证:

需求:假设服务器上配置了一个ftp服务,但端口并非默认的21,而是自定义端口1121,并且需要在work zone下面放行ftp。

具体做法如下:

[root@gary-tao ~]# cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services  //拷贝
[root@gary-tao ~]# vi /etc/firewalld/services/ftp.xml //把21改为1121 (参考图1)
[root@gary-tao ~]# cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/
[root@gary-tao ~]# vi /etc/firewalld/zones/work.xml  //增加一行(参考图2)
 <service name="ftp"/>
[root@gary-tao ~]# firewall-cmd --reload  //重新加载
success
[root@gary-tao ~]# firewall-cmd --zone=work --list-services   //验证work zone里面的services是否有ftp
ssh dhcpv6-client ftp

图一
linux的iptables备份及firewalld操作介绍
图二
linux的iptables备份及firewalld操作介绍

转载于:https://blog.51cto.com/taoxie/2046569

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值