cron周期性计划任务

  • cron周期性计划任务用来定期执行程序,目前最主要的用途是定期备份数据
  • 软件包名:cronie、crontabs
  • 服务名:crond
  • 日志文件:/var/log/cron

cron定义时间格式

* 执行的命令
分 时 日 月 周
分钟:从0到59之间的整数
小时:从0到23之间的整数
日期:从1到31之间的整数
月份:从1到12之间的整数
星期:0~6之间的整数,0代表周日
* #每分,每时,每天,每月,每周
** #分隔多个不连续的时间
-** #指定连续时间范围
/ ** #指定执行任务的时间间隔

  1. #软件包默认系统自动安装
  2. [root@localhost ~]# rpm -q cronie
  3. cronie-1.4.11-19.el7.x86_64
  4. #服务默认随机自启
  5. [root@localhost ~]# systemctl status crond
  6. #cron定义时间格式
  7. * * * * * 执行的命令
  8. 分钟:从059之间的整数
  9. 小时:从023之间的整数
  10. 日期:从131之间的整数
  11. 月份:从112之间的整数
  12. 星期:0~6之间的整数,0代表周日
  13. * #每分,每时,每天,每月,每周
  14. #分隔多个不连续的时间
  15. - #指定连续时间范围
  16. / #指定执行任务的时间间隔
  17. #每周5在上8点执行一个任务
  18. 00 8 * * 5 xx命令
  19. #每天晚上23:30执行一个任务
  20. 30 23 * * * xx命令
  21. #日期跟星期不能同时定义,发生矛盾(没有这么定义的!)
  22. 30 23 1 * 2 xx命令
  23. #每月1号23:30分执行一个任务
  24. 30 23 1 * * xx命令
  25. #每月1、3、5号23:30执行一个任务
  26. 30 23 1,3,5 * * xx命令
  27. #每周1、3、5凌晨3点执行一个任务
  28. 00 3 * * 1,3,5 xx命令
  29. #每月2-5号凌晨3:30分执行一个任务
  30. 30 3 2-5 * * xx命令
  31. #每两小时执行一个任务
  32. * */2 * * * xx命令
  33. #每两分钟执行一个任务
  34. */2 * * * * xx命令
  • crontab:用于管理计划任务
  • crontab -e -u 用户名 #编写计划任务
  • crontab -l -u 用户名 #查看计划任务
  • crontab -r -u 用户名 #清楚计划任务
  1. #每一分钟执行一个任务
  2. [root@localhost ~]# crontab -e
  3. */1 * * * * date >> /opt/date.txt
  4. [root@localhost ~]# cat /opt/date.txt
  5. 2021 05 23 星期日 17:30:02 CST
  6. #每周6凌晨3:30分备份/var/log/日志文件
  7. [root@localhost ~]# crontab -e
  8. 30 3 * * 6 tar -czf `date +%F`-log.tar.gz /var/log/*.log
  9. #查看计划任务
  10. [root@localhost ~]# crontab -l
  11. 30 3 * * 6 tar -czf `date +%F`-log.tar.gz /var/log/*.log
  12. #清除计划任务
  13. [root@localhost ~]# crontab -r
  14. [root@localhost ~]# crontab -l
  15. no crontab for root

SELinux系统内核安全机制

  • Security-Enhanced Linux 美国NSA国家安全局主导开发,一套增强Linux系统安全的强制访问控制体系
  • 集成到Linux内核(2.6及以上)针对用户、进程、目录和文件提供了预设的保护策略,以及管理工具
  • SELinux运行模式
    • enforcing #强制模式
    • permissive #宽松模式
    • disabled #禁用模式
  • SELinux运行模式切换
    • 查看当前运行模式:getenforce
    • 临时切换运行模式:setenforce 1|0 #1强制模式,0宽松模式
  1. #查看当前运行模式
  2. [root@localhost ~]# getenforce
  3. Enforcing #默认为强制模式
  4. #切换运行模式为宽松模式
  5. [root@localhost ~]# setenforce 0
  6. [root@localhost ~]# getenforce
  7. Permissive
  8. #切换运行模式为强制模式
  9. [root@localhost ~]# setenforce 1
  10. [root@localhost ~]# getenforce
  11. Enforcing
  • SELinux配置文件:/etc/selinux/config
#永久修改运行模式
[root@localhost ~]# vim /etc/selinux/config 
...
SELINUX=disabled

环境准备

#安装httpd与vsftpd服务
[root@localhost ~]# rpm -q httpd
httpd-2.4.6-88.el7.centos.x86_64
[root@localhost ~]# rpm -q vsftpd
vsftpd-3.0.2-25.el7.x86_64

#启动服务
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl  start vsftpd

#查看运行状态
[root@localhost ~]# systemctl status httpd
[root@localhost ~]# systemctl status vsftpd

#关闭防火墙
[root@localhost ~]# systemctl stop firewalld

常见协议及端口

  • http:超文本传输协议(明文协议) 默认端口:80 httpd默认走的http协议
  • https:安全的超文本传输协议 默认端口:443 加密网站
  • ftp:文件传输协议 默认端口:20(数据端口)21(命令端口**)**
  • tftp:简单的文件传输协议 默认端口:69
  • DNS:域名解析协议 默认端口:53
  • ssh:远程连接协议 默认端口:22
  • telnet:远程管理协议 默认端口:23
  • smtp:用户发邮件协议 默认端口:25
  • pop3:用户收邮件协议 默认端口:110
  • /etc/services 文件记录协议及端口信息

安全防护firewalld防火墙

  • 防火墙分为硬件防火墙和软件防火墙
  • 系统服务:firewalld,CentOS7系统默认使用的防火墙,CentOS6系统默认使用的防火强iptables
  • 防火墙:匹配即停止
  • 管理工具:firewalld-cmd
  • 防火墙预设安全区域
    • public:仅允许访问本机的sshd、DHCP、ping等少量服务
    • trusted:允许任何访问
    • 单独允许某一个IP 是写入trust
    • block:拒绝任何来访请求
    • drop:丢弃任何来访的数据包
#开启防火墙
[root@localhost ~]# systemctl start firewalld

#查看默认区域
[root@localhost ~]# firewall-cmd --get-default-zone
public

#修改默认区域
firewall-cmd --set-default-zone=区域名     

#将默认区域修改为block
[root@localhost ~]# firewall-cmd --set-default-zone=block
success

[root@localhost ~]# firewall-cmd --get-default-zone
block

#将默认区域修改为dorp
[root@localhost ~]# firewall-cmd --set-default-zone=drop
success

[root@localhost ~]# firewall-cmd --get-default-zone
drop

#将默认区域修改为public
[root@localhost ~]# firewall-cmd --set-default-zone=public
success
[root@localhost ~]# firewall-cmd --get-default-zone
public

#查看区域规则
firewall-cmd --zone=区域名 --list-all        

#查看public所有规则
[root@localhost ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default    #默认区域
  icmp-block-inversion: no
  interfaces: ens32
  sources: 
  services: ssh dhcpv6-client   #允许访问的服务
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

#为public区域添加http协议,使用 --add-service=服务名
[root@localhost ~]# firewall-cmd --zone=public --add-service=http
success
[root@localhost ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens32
  sources: 
  services: ssh dhcpv6-client http   #添加http协议
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

#为public添加ftp协议
[root@localhost ~]# firewall-cmd --zone=public --add-service=ftp
success
[root@localhost ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens32
  sources: 
  services: ssh dhcpv6-client http ftp   #添加ftp协议
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

封网段开服务

#若针对永久配置需添加 --permanent
#使用  -- add-source=网段地址

#为public区域永久添加http协议
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=http
success
[root@localhost ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens32
  sources: 
  services: ssh dhcpv6-client http ftp
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

#为public区域永久添加ftp协议    
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=ftp
success
[root@localhost ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens32
  sources: 
  services: ssh dhcpv6-client http ftp
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

#永久修改需重新加载防火墙配置
firewall-cmd --reload
[root@localhost ~]# firewall-cmd --reload
success

#单独拒绝某一个IP
[root@localhost ~]# firewall-cmd --zone=block --add-source=192.168.0.24
success
[root@localhost ~]# firewall-cmd --zone=block --list-all
block (active)
  target: %%REJECT%%
  icmp-block-inversion: no
  interfaces: 
  sources: 192.168.0.24
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

#删除规则:--remove-source

#删除block区域的指定IP
[root@localhost ~]# firewall-cmd --zone=block --remove-source=192.168.0.24
success
[root@localhost ~]# firewall-cmd --zone=block --list-all
block

#删除public区域的ftp协议
[root@localhost ~]# firewall-cmd --zone=public --remove-service=ftp
success
[root@localhost ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens32
  sources: 
  services: ssh dhcpv6-client http
  • 防火墙端口映射
  • 本地应用的端口重定向(端口1 > 端口2)从客户机访问 端口1 的请求,自动映射到本机端口2
#当有人访问5432端口时,映射到本机的80端口
[root@localhost ~]# firewall-cmd --zone=public --add-forward-port=port=5432:proto=tcp:toport=80
success
#命令解释:
--add--forward   #添加转发端口
port=port=5432   #指定转发的端口
proto=tcp        #指定tcp协议
toport=80        #指定目标端口

[root@localhost ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens32
  sources: 
  services: ssh dhcpv6-client http
  ports: 
  protocols: 
  masquerade: no
  forward-ports: port=5432:proto=tcp:toport=80:toaddr=
  source-ports: 
  icmp-blocks: 
  rich rules: