linux基础服务管理

一 防火墙

1.防火墙

防火墙:防范一些网络攻击。有软件防火墙、硬件防火墙之分
防火墙的作用
防火墙具有很好的保护作用。入侵者必须首先穿越防火墙的安全防线,才能接触目标计算机。
防火墙的功能
防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信。

最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信。

防火墙概念
防火墙一般有硬件防火墙和软件防火墙

硬件防火墙:在硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高,成本高。

软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙,性能低,成本低。

2.firewalld防火墙的概念

### 1.区域

CentOS6x中防火墙叫做iptables

CentOS7.x 中默认使用的防火墙是firewalld,但是依然更多的是使用iptables,firewalld默认都关了。

firewalld增加了区域的概念,所谓区域是指,firewalld**预先准备了几套防火墙策略的集合**,类似于**策略的模板**,用户可以根据需求选择区域。

常见区域及相应策略规则

2.firewalld防火墙的配置

1.查看,开启和停止firewalld服务

命令:systemctl

作用:管理服务

语法:#systemctl [选项] firewalld

选项:

status:检查指定服务的运行状况

start:启动指定服务

stop:停止指定服务

restart:重启指定服务

reload:重新加载指定服务的配置文件(并非所有服务都支持reload,通常使用restart)

**使用systemctl来管理firewalld的服务,具体命令前面已经讲过,只是服务名换成了firewalld,这里不再赘述

查询防火墙配置

关闭防火墙

2.管理firewall配置

命令:firewall-cmd

作用:管理firewall具体配置

语法:#firewall-cmd [参数选项1] ....[参数选项n]

常用选项:
查看默认使用的区域
[root@linux0224 ~]# firewall-cmd --get-default-zone
public
查看所有可用区域
[root@linux0224 ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
列出当前使用区域配置
[root@linux0224 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	
[root@linux0224 ~]# 
列出所有区域的配置信息
[root@linux0224 ~]# firewall-cmd --list-all-zones

添加允许通过的服务或端口(python,ntp)

你的linux机器,当前使用的是public区域的规则

默认信任的服务是,ssh,dhcp

准备一个web服务,通过python提供的简单命令,

此时的防火墙,是没有允许80端口的请求,进入到服务器的,除非你加一个规则,允许80端口的请求通过。

添加端口:[root@linux0224 ~]# firewall-cmd --zone=public --add-port=80/tcp
success

此时客户端已经可以正确访问服务器的80端口

去掉允许通过的端口

比如刚才你临时个服务器,添加了一个文件下载的服务,需要访问80端口

你现在不需要这个功能了,想去掉防火墙规则,继续加强服务器安全。
[root@linux0224 ~]# firewall-cmd --zone=public --remove-port=80/tcp
success
[root@linux0224 ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	
[root@linux0224 ~]# 

此时再想访问http://10.96.0.146/,你的请求就到不了服务器
添加允许ntp的防火墙策略

[root@linux0224 ~]# firewall-cmd --permanent --add-service=ntp
success
[root@linux0224 ~]# firewall-cmd --reload
success
[root@linux0224 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client ntp
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	
检查iptables语句
[root@linux0224 ~]#  iptables -L |grep ntp
ACCEPT     udp  --  anywhere             anywhere             udp dpt:ntp ctstate NEW

**永久模式

permaent(永久性的)**


# 永久性添加规则,并未立即生效
root@linux0224 ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
success
[root@linux0224 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client ntp
  ports: # 端口还没生效
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	
[root@linux0224 ~]# 

#重新加载防火墙规则
[root@linux0224 ~]# firewall-cmd --reload
success

[root@linux0224 ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client ntp
  ports: 80/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	
[root@linux0224 ~]# 
root@linux0224 ~]# iptables -L |grep tcp
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:bootps
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http ctstate NEW
[root@linux0224 ~]# 

总结:

使用防火墙命令,查看系统提供了哪些模板

1.列出所有的区域模板
列出区域模板,以及具体的信息
[root@linux0224 ~]# firewall-cmd --list-all-zones

列出所有的区域的名字
使用防火墙命令,查看系统提供了哪些模板
 [root@linux0224 ~]#firewall-cmd --get-zones


block dmz drop external home internal public trusted work


2.列出当前使用的区域是
[root@linux0224 ~]# firewall-cmd --get-default-zone 
public


3.查看当前的public区域,以及其详细信息
[root@linux0224 ~]# # 列出当前使用的区域,以及详细信息
[root@linux0224 ~]# 
[root@linux0224 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client ntp
  ports: 80/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


4.先运行一个80端口的服务
[root@linux0224 ~]# python -m SimpleHTTPServer 80


5.给当前的防火墙区域,添加一个策略,允许80端口通过
[root@linux0224 ~]# firewall-cmd --add-port=80/tcp
success


6.再添加一个8000端口的规则,我们接触的绝大多数,都是端口号/tcp 这个即可.
[root@linux0224 ~]# firewall-cmd --add-port=8000/tcp
success

7.删除,添加的端口规则
[root@linux0224 ~]# firewall-cmd --remove-port=80/tcp
success
[root@linux0224 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


8. 针对服务名添加,比如ntp服务
[root@linux0224 ~]# firewall-cmd --add-service=ntp

9. 查看当前public区域,使用了哪些规则
[root@linux0224 ~]# firewall-cmd --list-all

10. firewalld,作用其实是添加iptables的规则

查看系统上所有iptables的命令

iptables -L

tcp 是一个安全可靠的连接,需要双向确认,客户端,和服务端,都要确认对方以及连接上了


udp 是一个不可靠的额连接协议,客户端可以随便给服务端发,不需要对方确认


比如一个很差的网络环境下,网页无法访问,无法做dns解析(网络服务,网站服务,用的都是tcp协议)
但是qq可以收发消息(qq用的是udp协议,以及ntp用的也是udp协议)


,查看到firewalld命令,添加的防火墙规则如下
[root@linux0224 ~]# iptables -L |grep ntp
ACCEPT     udp  --  anywhere             anywhere             udp dpt:ntp ctstate NEW








1.关于firewalld如何添加nginx网站服务

关于防火墙策略的概念,其实就围绕这个几个点

- 来源ip 客户端
- 目标ip   服务器ip
- 目标端口  服务器上哪个端口的程序  
  - 可以改为服务的名字
  - sshd 服务  22
  - mysql服务  3306
  - 常见网站服务 httpd,nginx,默认端口是80
1.查询支持的所有服务名字有哪些(nginx,httpd,统一被他制作为了 http服务,放行80端口)

firewall-cmd --get-services


2. 查询当前区域,所用的服务名有哪些
firewall-cmd --list-services


3. 添加http服务,放行80端口即可
firewall-cmd --add-service=http

4.移除该服务,禁用80端口的请求
firewall-cmd --remove-service=http

5.建议,最好还是直接针对端口号,协议号,添加规则,
firewalld真不好用,不可用

iptables 支持很多复杂的参数,针对协议,来源端口,目标端口,等等
公有云的安全组(阿里云提供的硬件防火墙),也是基于iptables这样的规则添加的
2.firewalld允许ntp请求(注意ntpd有同步等待时间)


[root@linux0224 ~]# firewall-cmd --get-services |grep ntp

移除ntp的防火墙则
[root@linux0224 ~]# firewall-cmd --remove-service=ntp
success


允许客户端,来这台机器,进行ntp时间同步
[root@linux0224 ~]# firewall-cmd --add-service=ntp
success


二 学习定时任务,crontab

1.什么是计划任务: 后台运行,到了预定的时间就会自动执行的任务,前提是:事先手动将计划任务设定好。

周期性任务执行
清空/tmp目录下的内容
mysql数据库备份
redis数据备份
这就用到了crond服务。
计划任务的作用
作用:

操作系统不可能24 小时都有人在操作,有些时候想在指定的时间点去执行任务(例如:每天凌晨 2 点去重新启动Apache),此时不可能真有人每天夜里 2 点去执行命令,这就可以交给计划任务程序去执行操作了。
语法

crontab 
-l 列出当前用户有哪些计划任务
-e  编辑当前用户的计划任务
-r 删除当前用户的计划任务
[root@linux0224 ~]# crontab  -l
no crontab for root

取值范围(常识):
分:0~59
时:0~23
日:1~31
月:1~12
周:0~7,0 和 7 表示星期天

四个符号:
*:表示取值范围中的每一个数字
-:做连续区间表达式的,要想表示1~7,则可以写成:1-7
/:表示每多少个,例如:想每 10 分钟一次,则可以在分的位置写:*/10
,:表示多个取值,比如想在 1 点,2 点 6 点执行,则可以在时的位置写:1,2,6

并且在定时任务里,命令,请写上绝对路径

通过whereis命令搜索 绝对路径
[root@linux0224 ~]# whereis systemctl
systemctl: /usr/bin/systemctl /usr/share/man/man1/systemctl.1.gz
[root@linux0224 ~]# 

案例

问题1:每月1、10、22 日的4:45 重启network 服务

45 4 1,10,22 * *  /usr/bin/systemctl restart network
问题2:每周六、周日的1:10 重启network 服务

10 1 * * 6,7  /usr/bin/systemctl restart network
问题3:每天18:00 至23:00 之间每隔30 分钟重启network 服务

*/30 18-23 * * *  /usr/bin/systemctl restart network
问题4:每隔两天的上午8 点到11 点的第3 和第15 分钟执行一次重启

3,15 8-11 */2 * * /usr/sbin/reboot
问题5 :每天凌晨整点重启nginx服务。

00 * * * * /usr/bin/systemctl restart nginx
问题6:每周4的凌晨2点15分执行命令

15 2 * * 4 command
问题7:工作日的工作时间内的每小时整点执行脚本。

00 9-18 * * 1-5 /usr/bin/bash my.sh

2.扩展

① crontab 权限问题
crontab是任何用户都可以创建的计划任务,但是超级管理员可以通过配置来设置某些用户不允许设置计划任务 。

==黑名单==配置文件位于:/etc/cron.deny 里面写用户名,一行只能写一个
# 禁止yuchao01用户设置定时任务

[root@linux0224 ~]# vim /etc/cron.deny 
[root@linux0224 ~]#  
[root@linux0224 ~]# cat /etc/cron.deny 
yuchao01

# 切换yuchao01用户登录
[yuchao01@linux0224 ~] $ crontab -e
You (yuchao01) are not allowed to use this program (crontab)
See crontab(1) for more information
==白名单==还有一个配置文件,/etc/cron.allow (本身不存在,自己创建)

注意:白名单优先级高于黑名单,如果一个用户同时存在两个名单文件中,则会被默认允许创建计划任务。
# 添加白名单后,会立即更新权限
[root@linux0224 ~]# echo 'yuchao01' > /etc/cron.allow


# yuchao01就可以写入了
[yuchao01@linux0224 ~]#  ~]$ crontab -e

② 查看计划任务文件保存路径
问题:计划任务文件具体保存在哪里呢?

答:/var/spool/cron/用户名文件中,如果使用root用户编辑计划任务,则用户文件名为root。

③ 查看计划任务日志信息

问题:在实际应用中,我们如何查看定时任务运行情况?

答:通过计划任务日志,日志文件位于`/var/log/cron

最后,定时任务,crontab会在系统中,生成大量的邮件日志,会占用磁盘,因此我们都会关闭邮件服务即可
[root@linux0224 ~]# find / -type f -name 'post*.service'
/usr/lib/systemd/system/postfix.service

systemctl服务管理命令
[root@linux0224 ~]# systemctl list-units |grep post
postfix.service loaded active running Postfix Mail Transport Agent

systemctl status postfix

systemctl stop postfix

禁止开机自启
systemctl disable postfix

posted @   linux小白224  阅读(82)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示