第十五课预习笔记

coding

10.19 iptables规则备份和恢复

保存和备份iptables规则

1、service iptables save    #会把规则保存到/etc/sysconfig/iptabels中,启动时会加载。

2、把iptables规则保存在自定义的位置:iptables-save > 位置

例如:iptables-save > /tmp/my_iptables.txt

[root@liang-00 ~]# iptables-save > /tmp/my_iptables.txt

[root@liang-00 ~]# cat /tmp/my_iptables.txt 

# Generated by iptables-save v1.4.21 on Tue Nov 20 19:47:32 2018

*nat

:PREROUTING ACCEPT [12:936]

:INPUT ACCEPT [0:0]

:OUTPUT ACCEPT [1:76]

:POSTROUTING ACCEPT [1:76]

COMMIT

# Completed on Tue Nov 20 19:47:32 2018

# Generated by iptables-save v1.4.21 on Tue Nov 20 19:47:32 2018

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [419:35455]

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT

# Completed on Tue Nov 20 19:47:32 2018

[root@liang-00 ~]# 

恢复iptables:iptables-restore < /tmp/my_iptables.txt

10.20 firewalld的9个zone

Linux防火墙-firewalld

首先关闭netfilter,打开firewalld

[root@liang-00 ~]# systemctl disable iptables

Removed symlink /etc/systemd/system/basic.target.wants/iptables.service.

[root@liang-00 ~]# systemctl stop iptables

[root@liang-00 ~]# 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/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.

[root@liang-00 ~]# systemctl start firewalld

[root@liang-00 ~]# 

  • firewalld默认有9个zone。
  • 默认zone为public

查看所有zone:firewall-cmd --get-zones

[root@liang-00 ~]# firewall-cmd --get-zones

block dmz drop external home internal public trusted work

[root@liang-00 ~]# 

查看默认zone:firewall-cmd --get-default-zone,可以看到firewall默认zone为:public

[root@liang-00 ~]# firewall-cmd --get-default-zone

public

[root@liang-00 ~]# 

关于firewall的9个zone作用:

10.21 firewalld关于zone的操作

1、设定默认zone。

firewall-cmd --set-default-zone=work    #不设置之前默认的是public

[root@liang-00 ~]# firewall-cmd --set-default-zone=work

success

[root@liang-00 ~]#

2、查看指定网卡的zone。

[root@liang-00 ~]# firewall-cmd --get-zone-of-interface=ens33

no zone

[root@liang-00 ~]# firewall-cmd --get-zone-of-interface=lo

no zone

[root@liang-00 ~]#

3、给指定网卡设置zone。

[root@liang-00 ~]# firewall-cmd --zone=public --add-interface=ens33

success

[root@liang-00 ~]# firewall-cmd --get-zone-of-interface=ens33

public

[root@liang-00 ~]# 

4、针对指定网卡更改zone。

[root@liang-00 ~]# firewall-cmd --zone=dmz --change-interface=ens33

success

[root@liang-00 ~]# firewall-cmd --get-zone-of-interface=ens33

dmz

[root@liang-00 ~]# 

5、针对指定网卡删除zone

[root@liang-00 ~]# firewall-cmd --zone=dmz --remove-interface=ens33

success

[root@liang-00 ~]# firewall-cmd --get-zone-of-interface=ens33

no zone

[root@liang-00 ~]# 

6、查看系统所有网卡所在的zone。

[root@liang-00 ~]# firewall-cmd --get-active-zones

public

  interfaces: ens33 lo

10.22 firewalld关于service的操作

firewall的service是zone下面的一个服务。

用 firewall-cmd --get-services    #查看所有service,services可以不加“s”。

[root@liang-00 ~]# firewall-cmd --get-services 

RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nfs3 nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync 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

[root@liang-00 ~]# firewall-cmd --zone=work --list-services 

ssh dhcpv6-client

[root@liang-00 ~]# 

查看当前zone下的service。

[root@liang-00 ~]# firewall-cmd --get-default-zone 

public

[root@liang-00 ~]# firewall-cmd --list-services 

ssh dhcpv6-client

[root@liang-00 ~]# 

也可以用 firewall-cmd --zone=work --list-services 查看指定zone的service。

[root@liang-00 ~]# firewall-cmd --zone=block --list-services 

[root@liang-00 ~]# 

把http服务增加到指定zone下。

[root@liang-00 ~]# firewall-cmd --zone=public --add-service=http

success

[root@liang-00 ~]# firewall-cmd --zone=public --list-services 

ssh dhcpv6-client http

[root@liang-00 ~]# 

zone和service的配置文件模板;zone和service的配置文件。

/usr/lib/firewalld/zones/ 和 /usr/lib/firewalld/services/ 保存着zone和service的配置文件模板。

[root@liang-00 ~]# ls /usr/lib/firewalld/zones/

block.xml  dmz.xml  drop.xml  external.xml  home.xml  internal.xml  public.xml  trusted.xml  work.xml

[root@liang-00 ~]# ls /usr/lib/firewalld/services/

amanda-client.xml        freeipa-replication.xml  libvirt-tls.xml           pop3.xml             snmp.xml

amanda-k5-client.xml     freeipa-trust.xml        libvirt.xml               postgresql.xml       spideroak-lansync.xml

bacula-client.xml        ftp.xml                  managesieve.xml           privoxy.xml          squid.xml

bacula.xml               ganglia-client.xml       mdns.xml                  proxy-dhcp.xml       ssh.xml

bitcoin-rpc.xml          ganglia-master.xml       mosh.xml                  ptp.xml              synergy.xml

bitcoin-testnet-rpc.xml  high-availability.xml    mountd.xml                pulseaudio.xml       syslog-tls.xml

bitcoin-testnet.xml      https.xml                mssql.xml                 puppetmaster.xml     syslog.xml

bitcoin.xml              http.xml                 ms-wbt.xml                quassel.xml          telnet.xml

ceph-mon.xml             imaps.xml                mysql.xml                 radius.xml           tftp-client.xml

ceph.xml                 imap.xml                 nfs3.xml                  RH-Satellite-6.xml   tftp.xml

cfengine.xml             ipp-client.xml           nfs.xml                   rpc-bind.xml         tinc.xml

condor-collector.xml     ipp.xml                  nrpe.xml                  rsh.xml              tor-socks.xml

ctdb.xml                 ipsec.xml                ntp.xml                   rsyncd.xml           transmission-client.xml

dhcpv6-client.xml        iscsi-target.xml         openvpn.xml               samba-client.xml     vdsm.xml

dhcpv6.xml               kadmin.xml               ovirt-imageio.xml         samba.xml            vnc-server.xml

dhcp.xml                 kerberos.xml             ovirt-storageconsole.xml  sane.xml             wbem-https.xml

dns.xml                  kibana.xml               ovirt-vmconsole.xml       sips.xml             xmpp-bosh.xml

docker-registry.xml      klogin.xml               pmcd.xml                  sip.xml              xmpp-client.xml

dropbox-lansync.xml      kpasswd.xml              pmproxy.xml               smtp-submission.xml  xmpp-local.xml

elasticsearch.xml        kshell.xml               pmwebapis.xml             smtps.xml            xmpp-server.xml

freeipa-ldaps.xml        ldaps.xml                pmwebapi.xml              smtp.xml

freeipa-ldap.xml         ldap.xml                 pop3s.xml                 snmptrap.xml

[root@liang-00 ~]# 

而zone和service的配置文件在 /etc/firewalld/zones/ 和 /etc/firewalld/services/ 目录中。

[root@liang-00 ~]# ls /etc/firewalld/zones/

public.xml public.xml.old

[root@liang-00 ~]# ls /etc/firewalld/services/

[root@liang-00 ~]#

案例需求:
ftp服务自定义端口1121,需要在work zone下面放行ftp。
步骤:

1) cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/    #拷贝ftp配置模板到service配置文件中

2)修改ftp.xml文件端口为:1121。

3)cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/    #拷贝work.xml模板到zone配置文件内。

4)编辑work.xml文件

5)重新加载

[root@liang-00 ~]# firewall-cmd --reload 

success

[root@liang-00 ~]# 

6)查看work中的service

[root@liang-00 ~]# firewall-cmd --zone=work --list-services 

ssh dhcpv6-client ftp

[root@liang-00 ~]# 

10.23 linux任务计划cron

crontab:在linxu中提交和管理用户的需要周期性执行的任务。

  • -e:编辑该用户的计时器设置;
  • -l:列出该用户的计时器设置;
  • -r:删除该用户的计时器设置;
  • -u<用户名称>:指定要设定计时器的用户名称。

1、任务计划配置文件。

cat /etc/crontab

[root@liang-00 ~]# cat /etc/crontab 

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

# For details see man 4 crontabs

# Example of job definition:

# .---------------- minute (0 - 59)

# |  .------------- hour (0 - 23)

# |  |  .---------- day of month (1 - 31)

# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# |  |  |  |  |

# *  *  *  *  * user-name  command to be executed

前三行是用来配置crond任务运行的环境变量.

  • 第一行SHELL变量指定了系统要使用哪个shell,这里是bash;
  • 第二行PATH变量指定了系统执行命令的路径;
  • 第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户;

*  *  *  *  * user-name  command to be executed 时程表的格式。

  • 第一个*:minute (0 - 59) 表示分钟,可以是从0到59之间的任何整数。
  • 第二个*:hour (0 - 23) 表示小时,可以是从0到23之间的任何整数。
  • 第三个*:day of month (1 - 31) 表示日期,可以是从1到31之间的任何整数。
  • 第四个*:month (1 - 12) OR jan,feb,mar,apr ... 表示月份,可以是从1到12之间的任何整数。可以用数字或英文缩写表示。
  • 第五个*:day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat 表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。也可以用英文缩写表示。
  • user-name:执行该任务的用户。
  • command to be executed:执行的具体任务。可以是系统命令,也可以是自己编写的脚本文件。

在以上五个时间字段中,还可以使用以下特殊字符。

  • 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
  • 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
  • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
  • 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

2、crontab文件配置。

用 crontab -e 命令。

需求1:在每天的3点0分执行一个shell脚本,将输出内容(包含错误的内容)重定向追加到指定文件内。 

需求2:只有每月的1到10号执行该脚本。

0 3 1-10 * * /bin/bash /usr/local/sbin/123.sh >> /tmp/123.log 2>> /tmp/123.log

需求3:只在双数月份的1-10号执行脚本。

0 3 1-10 */2 * /bin/bash /usr/local/sbin/123.sh >> /tmp/123.log 2>> /tmp/123.log

需求4:在双数月份的1-10号,并且只在周二和周五执行脚本。

0 3 1-10 */2 2,5 /bin/bash /usr/local/sbin/123.sh >> /tmp/123.log 2>> /tmp/123.log

3、crond服务开启。

systemctl start crond开启crond服务,用 ps aux |grep 'cron' 查看进程中的crond服务。

[root@liang-00 ~]# systemctl start crond

[root@liang-00 ~]# ps aux |grep 'cron'

root       751  0.0  0.1 126280  1612 ?        Ss   09:42   0:00 /usr/sbin/crond -n

root      1566  0.0  0.0 112708   972 pts/0    S+   10:25   0:00 grep --color=auto cron

[root@liang-00 ~]# 

也可以用 sytemctl status crond.service 看到 绿色active(running)表示crond服务已开启。

有时我们会遇到,自己写的任务是正确的为什么它没有执行的情况,这种情况大多是命令没有用绝对路径导致的。解决办法第一是把命令改为绝对路径,第二是把命令路径添加到配置文件的PATH中。

4、crontab -l 查看已存在的计划任务。

[root@liang-00 ~]# crontab -l

0 4 1-10 * * /usr/bin/find /tmp -type f -mtime +100 |xargs rm -f 

[root@liang-00 ~]# 

crontab的配置文件路径为: /var/spool/cron/root 文件是以执行该任务的用户的用户名来命名的。

5、crontab -u  指定用户;

     crontab -r 删除计划任务。

10.24 chkconfig工具

chkconfig命令 检查、设置系统的各种服务。centos7版本不在使用此工具。

查看使用chkconfig的服务。

1、chkconfig --list

[root@liang-00 ~]# chkconfig --list

Note: This output shows SysV services only and does not include native

      systemd services. SysV configuration data might be overridden by native

      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.

      To see services enabled on particular target use

      'systemctl list-dependencies [target]'.

netconsole         0:off    1:off    2:off    3:off    4:off    5:off    6:off

network            0:off    1:off    2:on    3:on    4:on    5:on    6:off

[root@liang-00 ~]# 

服务的脚本存在于 /etc/init.d/ 目录下面。

chkconfig --list 显示的是服务在 0-6 启动级别下的状态。

2、用 chkconfig network off 关闭 network的所有启动级别下状态。

[root@liang-00 ~]# chkconfig network off

[root@liang-00 ~]# chkconfig --list

Note: This output shows SysV services only and does not include native

      systemd services. SysV configuration data might be overridden by native

      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.

      To see services enabled on particular target use

      'systemctl list-dependencies [target]'.

netconsole         0:off    1:off    2:off    3:off    4:off    5:off    6:off

network            0:off    1:off    2:off    3:off    4:off    5:off    6:off

[root@liang-00 ~]# 

指定运行级别,来对服务进行操作。

chkconfig --level 3 network on    #打开3级别下的network服务。

[root@liang-00 ~]# 

[root@liang-00 ~]# chkconfig --level 3 network on

[root@liang-00 ~]# chkconfig --list

Note: This output shows SysV services only and does not include native

      systemd services. SysV configuration data might be overridden by native

      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.

      To see services enabled on particular target use

      'systemctl list-dependencies [target]'.

netconsole         0:off    1:off    2:off    3:off    4:off    5:off    6:off

network            0:off    1:off    2:off    3:on    4:off    5:off    6:off

[root@liang-00 ~]# 

chkconfig --level 345 network on    #打开345级别下的network服务。

3、增加一个服务。

1)首先我们拷贝一个123服务器到 /etc/init.d/ 目录下。

2)chkconfig --add 123    #添加到服务列表中去。

[root@liang-00 ~]# cp /etc/init.d/network /etc/init.d/123

[root@liang-00 ~]# ls /etc/init.d/

123  functions  netconsole  network  README

[root@liang-00 ~]# chkconfig --add 123

[root@liang-00 ~]# chkconfig --list

Note: This output shows SysV services only and does not include native

      systemd services. SysV configuration data might be overridden by native

      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.

      To see services enabled on particular target use

      'systemctl list-dependencies [target]'.

123                0:off    1:off    2:on    3:on    4:on    5:on    6:off

netconsole         0:off    1:off    2:off    3:off    4:off    5:off    6:off

network            0:off    1:off    2:on    3:on    4:on    5:on    6:off

[root@liang-00 ~]# 

添加的服务文件名字没有要求,但是文件内容有要求。

vim /etc/init.d/123

4、删除服务。

chkconfig --del 123

[root@liang-00 ~]# chkconfig --del 123

[root@liang-00 ~]# chkconfig --list

Note: This output shows SysV services only and does not include native

      systemd services. SysV configuration data might be overridden by native

      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.

      To see services enabled on particular target use

      'systemctl list-dependencies [target]'.

netconsole         0:off    1:off    2:off    3:off    4:off    5:off    6:off

network            0:off    1:off    2:on    3:on    4:on    5:on    6:off

[root@liang-00 ~]# 

10.25 systemd管理服务

systemd系统服务管理。

1、systemctl list-units --all --type=service 查看所有启动的service。

--all 表示显示所有状态,不加只显示active状态的。

2、启动和关闭服务。

• systemctl enable crond.service //让服务开机启动

[root@liang-00 ~]# systemctl enable crond.service

Created symlink from /etc/systemd/system/multi-user.target.wants/crond.service to /usr/lib/systemd/system/crond.service.

[root@liang-00 ~]#

从内容中我们可以获得服务的配置文件 /etc/systemd/system/multi-user.target.wants/crond.service,它实际上是一个软链接。

[root@liang-00 ~]# cat /etc/systemd/system/multi-user.target.wants/crond.service

[Unit]

Description=Command Scheduler

After=auditd.service systemd-user-sessions.service time-sync.target

[Service]

EnvironmentFile=/etc/sysconfig/crond

ExecStart=/usr/sbin/crond -n $CRONDARGS

ExecReload=/bin/kill -HUP $MAINPID

KillMode=process

[Install]

WantedBy=multi-user.target

[root@liang-00 ~]# ll /etc/systemd/system/multi-user.target.wants/crond.service

lrwxrwxrwx 1 root root 37 Nov 21 11:37 /etc/systemd/system/multi-user.target.wants/crond.service -> /usr/lib/systemd/system/crond.service

[root@liang-00 ~]# 

我们disable后软连接就会失效。

[root@liang-00 ~]# ll /etc/systemd/system/multi-user.target.wants/crond.service

ls: cannot access /etc/systemd/system/multi-user.target.wants/crond.service: No such file or directory

[root@liang-00 ~]# 

• systemctl disable crond //不让开机启动
• systemctl status crond //查看状态
• systemctl stop crond //停止服务
• systemctl start crond //启动服务
• systemctl restart crond //重启服务
• systemctl is-enabled crond //检查服务是否开机启动

[root@liang-00 ~]# systemctl is-enabled crond.service 

enabled

[root@liang-00 ~]# 

10.26 unit介绍

ls /usr/lib/systemd/system    #系统所有unit

系统所有unit类型。

 service 系统服务,crond服务就是一个service。

 target 多个unit组成的组,runlevel

 device 硬件设备

 mount 文件系统挂载点

 automount 自动挂载点

 path 文件或路径

 scope 不是由systemd启动的外部进程

 slice 进程组

 snapshot systemd快照

 socket 进程间通信套接字

 swap  swap文件

 timer 定时器

unit相关命令。

systemctl list-units --all    #列出正在运行的unit。

systemctl list-units --all    #列出所有,包括失败的或者inactive的

systemctl list-units --all --state=inactive    #列出inactive的unit

systemctl list-units --type=service    #列出状态为active的service

systemctl is-active crond.service    #查看某个服务是否为active

10.27 target介绍

系统为了方便管理用target来管理unit。

systemctl list-unit-files --type=target    #列出系统所有target。

systemctl list-dependencies multi-user.target    #查看指定target下有哪些unit。查看multi-user.target 下的unit

target下面也可与有target。

查看系统默认target

systemctl get-default

[root@liang-00 system]# systemctl get-default 

multi-user.target

[root@liang-00 system]# 

设置默认target

systemctl set-default multi-user.target

[root@liang-00 system]# systemctl set-default multi-user.target

Removed symlink /etc/systemd/system/default.target.

Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.

[root@liang-00 system]# 

 

 一个service属于一种类型的unit

 多个unit组成了一个target

 一个target里面包含了多个service

 

 查看一个unit属于哪个target: cat /usr/lib/systemd/system/sshd.service     #看[Install]部分

[root@liang-00 system]# cat /usr/lib/systemd/system/sshd.service

[Unit]

Description=OpenSSH server daemon

Documentation=man:sshd(8) man:sshd_config(5)

After=network.target sshd-keygen.service

Wants=sshd-keygen.service

[Service]

Type=notify

EnvironmentFile=/etc/sysconfig/sshd

ExecStart=/usr/sbin/sshd -D $OPTIONS

ExecReload=/bin/kill -HUP $MAINPID

KillMode=process

Restart=on-failure

RestartSec=42s

[Install]

WantedBy=multi-user.target

[root@liang-00 system]# 

以上是 第十五课预习笔记 的全部内容, 来源链接: utcz.com/z/508881.html

回到顶部