Linux之Cent OS 7 服务管理和防火墙配置

  1. 云栖社区>
  2. 博客>
  3. 正文

Linux之Cent OS 7 服务管理和防火墙配置

科技小能手 2017-11-12 00:58:00 浏览898
展开阅读全文

1 CentOS7最小化安装需要安装的基础工具包:

[zwj01@localhost ~]$ sudo yum install lrzsz tree net-tools nmap vim bash-completion lsof dos2unix nc telnet ntp wget rng-tools psmisc -y


2 服务管理:

从CentOS 7开始,服务管理和防火墙配置有了很大的变化。系统服务脚本目录是/usr/lib/systemd(软件包安装的单元)和/etc/systemd/(系统管理员安装的单元,优先级更高),有系统(system)和用户(user)之分,如需要开机没有登陆的情况下就能运行的程序,定义在系统(system)服务里,即/usr/lib/systemd/system目录下,每一个服务以.service结尾。

下面以Nginx服务为例,定义为系统服务:

1)安装Nginx(略)

2)创建Nginx服务文件

[zwj@localhost system]$ sudo vim /usr/lib/systemd/system/nginx.service

[Unit] 
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

配置文件说明:

[Unit]:服务的说明

Description:描述服务

After:描述服务类别

[Service]服务运行参数的设置

Type=forking是后台运行的形式

ExecStart为服务的具体运行命令

ExecReload为重启命令

ExecStop为停止命令

PrivateTmp=True表示给服务分配独立的临时空间

注意:[Service]的启动、重启、停止命令全部要求使用绝对路径

[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

3)设置开机启动:

systemctl enable nginx.service

4)启动Nginx服务:

systemctl start nginx.service


查看所有已启动的服务:systemctl list-units --type=service


显示服务列表:systemctl list-unit-files  

值的说明:

enable:开机启动。被systemd启用了,即systemd已把它加载入内存里了。此时systemd认识(know)它

disable:禁止开机启动。没启用,即没有被systemd加载入内存,此时这个unit仅仅只是个文本文件

static:该unit文件里没用INSTALL项,也就不能设为开机启动。

masked:类似加锁,此时该unit无论如何都启动不了。


显示某项服务的当前状态:systemctl status crond.service

显示某项服务是否Active:systemctl is-active crond.service


停止某项服务:systemctl stop crond.service

开启某项服务:systemctl start crond.service

重启某项服务:systemctl restart crond.service

禁止某项服务自启动:systemctl disable crond.service

允许某项服务自启动:systemctl enable crond.service

查看某项服务是否开机启动:systemctl is-enabled crond.service


附 1:Sysvinit (CentOS 6)运行级别和 systemd (CentOS 7)目标的对应表

Sysvinit 运行级别 Systemd 目标 备注
0 runlevel0.target, poweroff.target 关闭系统。
1, s, single runlevel1.target, rescue.target 单用户模式。
2, 4 runlevel2.target, runlevel4.target, multi-user.target 用户定义/域特定运行级别。默认等同于 3。
3 runlevel3.target, multi-user.target 多用户,非图形化。用户可以通过多个控制台或网络登录。
5 runlevel5.target, graphical.target 多用户,图形化。通常为所有运行级别 3 的服务外加图形化登录。
6 runlevel6.target, reboot.target 重启
emergency emergency.target 紧急 Shell


附 2:服务类型

编写自定义的 service 文件时,可以选择几种不同的服务启动方式。启动方式可通过配置文件 [Service] 段中的 Type= 参数进行设置。

Type=simple(默认值):systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。

Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。

Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。

Type=notify:与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。

Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。

Type=idle: systemd会等待所有任务(Jobs)处理完成后,才开始执行idle类型的单元。除此之外,其他行为和Type=simple 类似


3 防火墙管理:

firewalld 将配置储存在 /usr/lib/firewalld/ (系统配置,尽可能不去修改)和 /etc/firewalld/ (用户配置)中的各种 XML 文件里

安装:yum install firewalld

启动:systemctl start firewalld.service

停止:systemctl stop firewalld.service

禁止自启动:systemctl disable firewalld.service

查看当前详细状态:systemctl status firewalld.service

显示状态:firewall-cmd --state


关于区域(区域定义了网络连接的可信等级,可以把网卡对应到不同的区域。默认区域为public)

获取支持的区域列表:[root@localhost ~]# firewall-cmd --get-zones

work drop internal external trusted home dmz public block

获取活动的区域:[root@localhost ~]# firewall-cmd --get-active-zones

public

  interfaces: ens160

获取默认区域:firewall-cmd --get-default-zone

设置默认区域:firewall-cmd --set-default-zone=public

修改接口所属区域:firewall-cmd --zone=home --change-interface=lo

将接口增加到区域:firewall-cmd --zone=public --add-interface=lo

显示接口所在的区域:firewall-cmd --get-zone-of-interface=lo

从区域移除一个接口:firewall-cmd --zone=public --remove-interface=lo

启用区域中的某个服务:firewall-cmd --zone=public --add-service=http


端口管理:

开启端口:firewall-cmd --zone=public --add-port=80/tcp --permanent(--permanent参数表示永久生效,否则重启后则失效)也可以直接指定服务:firewall-cmd --zone=public --add-service=http

删除端口:firewall-cmd --zone=public --remove-port=23/tcp --permanent

重新加载:firewall-cmd --reload

显示开启的服务和端口:firewall-cmd --list-all

获取所有支持的服务:firewall-cmd --get-services


端口转发

启用区域的伪装功能(用于IP和端口映射):firewall-cmd --zone=public --add-masquerade --permanent

查询区域伪状态:firewall-cmd --zone=public  --query-masquerade

IP和端口转发:firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toaddr=192.168.180.131:toport=80 --permanent

本机端口转发:firewall-cmd  --zone=public  --add-forward-port=port=80:proto=tcp:toport=8080


应急模式

启用应急模式阻断所有网络连接:firewall-cmd --panic-on 

禁用应急模式:firewall-cmd --panic-off

查询应急模式:firewall-cmd --query-panic


禁止某个IP访问服务器:

firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address="37.49.16.122" drop'


4 网络设置

永久性修改主机名:

hostnamectl set-hostname <主机名>


内网网卡配置:

TYPE=Ethernet

BOOTPROTO=static

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

IPV4_FAILURE_FATAL=no

#IPV6INIT=yes

#IPV6_AUTOCONF=yes

#IPV6_DEFROUTE=yes

#IPV6_PEERDNS=yes

#IPV6_PEERROUTES=yes

#IPV6_FAILURE_FATAL=no

NAME=eno33559296

UUID=fda7f900-0e7d-4b1a-8d45-76c13a

DEVICE=eno33559296

ONBOOT=yes

IPADDR=192.168.10.100

NETMASK=255.255.255.0


外网网卡配置:

TYPE=Ethernet

BOOTPROTO=static

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

#IPV4_FAILURE_FATAL=no

#IPV6INIT=yes

#IPV6_AUTOCONF=yes

#IPV6_DEFROUTE=yes

#IPV6_PEERDNS=yes

#IPV6_PEERROUTES=yes

#IPV6_FAILURE_FATAL=no

NAME=eno16780032

UUID=f75f56c4-ebc5-4394-b5b5-37ebd49

DEVICE=eno16780032

ONBOOT=yes

IPADDR=183.3.221.149

NETMASK=255.255.255.128

GATEWAY=183.3.221.129

 

或(可以把DNS写进去)

TYPE=Ethernet

BOOTPROTO=none

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

NAME=eth0

UUID=c342e706-d813-4157-b9c1-b76c6121f1a1

DEVICE=eth0

ONBOOT=yes

IPADDR=61.144.244.107

PREFIX=24

GATEWAY=61.144.244.254

DNS1=202.96.134.133

IPV6_PEERDNS=yes

IPV6_PEERROUTES=yes

IPV6_PRIVACY=no



本文转自 zengwj1949 51CTO博客,原文链接:http://blog.51cto.com/zengwj1949/1932758

网友评论

登录后评论
0/500
评论
科技小能手
+ 关注