Zabbix之CentOS7.3下yum安装Zabbix3.5

一、Zabbix特点介绍

(此介绍来源于https://www.zabbix.com/documentation/3.4/zh/manual/introduction/features)

概述

Zabbix是一个高度集成的网络监控解决方案,一个简单的安装包中提供多样性的功能。

数据收集

可用性和性能检查
支持SNMP(包括捕获和主动轮训),IPMI,JMX,VMware监控
自定义检查
按照自定义的间隔收集需要的数据
由Server/Proxy和agents执行

灵活的阀值定义

您可以非常灵活的定义问题阈值,称之为触发器,触发器从后端数据库获取参考值

高度可配置化的告警

可以根据升级计划,接收方和媒体类型来定制发送告警通知 * 使用宏变量可以使告警通知更有意义更高效 * 自动化动作包含执行远程命令

实时图表绘制

使用内置图表绘制功能可以将监控项的内容立即绘制成图表

Web监控功能

Zabbix可以模拟鼠标在Web网站上的操作来检查Web的功能和响应时间

丰富的可视化选项

能够创建自定义的图形,图形中可将多个监控项组合在一个视图展示
网络拓扑图
以仪表盘的样式展现自定义的展现和幻灯片
报告
监控资源的高级(业务)视图

历史数据存储

数据存储在数据库中
可配置历史数据
内置数据管理机制

配置简单

将被监控对象添加为主机
主机被创建用于监控,在数据库中是唯一存在的
应用模板来监控设备

使用模板

在模板中分组检查
模板可以关联其他模板

网络发现

自动发现网络设备
监控代理自动注册
发现文件系统,网络接口和SNMP OID值

简洁的Web界面

Web前端基于PHP
可从任何地方访问
你可以定制自己的操作方式
审核日志

Zabbix API

Zabbix API为Zabbix 提供了对外的可编程接口,用于批量操作,第三方软件集成和其他目的

权限管理系统

安全用户认证
特定用户可以限制访问特定的视图

功能强大并易于扩展的监控代理

部署在被监控对象上
可以部署在Linux和Windows上

二进制代码

为了性能和更少内存的占用,用C语言编写
便于移植

为复杂环境准备

使用Zabbix proxy代理服务器,使得远程监控更简单

二、部署安装Zabbix

安装yum源

rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

可以查看安装哪些组件

rpm -ql  zabbix-release

安装zabbix相关包

yum install zabbix-server-mysql -y
yum install zabbix-proxy-mysql -y
yum install zabbix-web-mysql -y
yum install zabbix-get -y
yum install zabbix-agent -y

说明:

zabbix-server-mysql:提供zabbix-server服务
zabbix-proxy-mysql:提供zabbix的代理服务,可以实现分布式监控,减轻zabbix-server的压力
zabbix-web-mysql:提供httpd服务
zabbix-get:提供检查是否能正确获取到zabbix的监控脚本key的监控值
zabbix-agent:提供zabbix-agent服务

三、安装MariaDB

配置MariaDB的yum源

vim /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = https://ipv4.mirrors.ustc.edu.cn/mariadb/yum/10.2/centos7-amd64
gpgkey=https://ipv4.mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1

更新源

yum update

安装MariaDB

yum -y install MariaDB-server MariaDB-client

设置字符集

vim /etc/my.cnf.d/server.conf
[mysqld]
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake

创建zabbix数据库和账户

mysql -uroot -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
mysql> quit;

导入zabbix相关sql

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

zabbix-server 配置数据库地址 数据库 数据库用户 数据库密码

vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

启动zabbix-server(监听10051端口)

service zabbix-server start

设置开机启动

systemctl enable zabbix-server

zabbix的web配置

vim /etc/httpd/conf.d/zabbix.conf
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Asia/Shanghai

SELinux配置

setsebool -P httpd_can_connect_zabbix on
setsebool -P httpd_can_network_connect_db on

被监控机器zabbix-agent安装(被动模式监听10050端口,主动模式下不监听端口)

yum install zabbix-agent
service zabbix-agent start

上述完成后,访问http://192.168.217.20/zabbix/,安装web提示依次完成下面步骤

欢迎界面—>php需求检–>数据库配置—> zabbix服务端详细信息—>zabbix安装前信息列表—>安装完成—>Finish

访问:http://192.168.217.20/zabbix/index.php开始登陆zabbix

默认用户名:Admin,密码:zabbix

http://192.168.217.20/zabbix/index.php

未分类

CentOS 7安装fail2ban+Firewalld防止SSH爆破与CC攻击

说明:差不多很多博主都会遇到被CC攻击和SSH爆破的情况,这个时候就需要做下防御措施了,前几天发过一个防CC脚本,参考: https://www.moerats.com/archives/484/ ,不过对于CentOS 7来说,由于防火墙的因素,配置起来还是有点麻烦的,这里争对CentOS 7再分享个简单防CC攻击和SSH爆破的方法。

前言

fail2ban可以监视你的系统日志,然后匹配日志的错误信息执行相应的屏蔽动作。网上大部分教程都是关于fail2ban+iptables组合,考虑到CentOS 7已经自带Firewalld,所以这里我们也可以利用fail2ban+Firewalld来防CC攻击和SSH爆破。

本教程编辑文件使用vi命令,如果不会用的,可以使用比较简单的nano,可以参考: https://www.moerats.com/archives/485/ ,或者使用FTP工具,如WinSCP登录VPS操作。

准备工作

1、检查Firewalld是否启用

#如果您已经安装iptables建议先关闭
service iptables stop
#查看Firewalld状态
firewall-cmd --state
#启动firewalld
systemctl start firewalld
#设置开机启动
systemctl enable firewalld.service

启用Firewalld后会禁止所有端口连接,因此请务必放行常用的端口,以免被阻挡在外,以下是放行SSH端口(22)示例,供参考:

#放行22端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
#重载配置
firewall-cmd --reload
#查看已放行端口
firewall-cmd --zone=public --list-ports

2、安装fail2ban

fail2ban可以监控系统日志,并且根据一定规则匹配异常IP后使用Firewalld将其屏蔽,尤其是针对一些爆破/扫描等非常有效。

#CentOS内置源并未包含fail2ban,需要先安装epel源
yum -y install epel-release
#安装fial2ban
yum -y install fail2ban

安装成功后fail2ban配置文件位于/etc/fail2ban,其中jail.conf为主配置文件,相关的匹配规则位于filter.d目录,其它目录/文件一般很少用到,如果需要详细了解可自行搜索。

3、配置规则

新建jail.local来覆盖fail2ban的一些默认规则:

#新建配置
vi /etc/fail2ban/jail.local
#默认配置
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime  = 86400
findtime = 600
maxretry = 5
#这里banaction必须用firewallcmd-ipset,这是fiewalll支持的关键,如果是用Iptables请不要这样填写
banaction = firewallcmd-ipset
action = %(action_mwl)s

参数说明:

ignoreip:IP白名单,白名单中的IP不会屏蔽,可填写多个以(,)分隔
bantime:屏蔽时间,单位为秒(s)
findtime:时间范围
maxretry:最大次数
banaction:屏蔽IP所使用的方法,上面使用firewalld屏蔽端口

防止SSH爆破

如果您还在使用默认SSH端口(22),可能每天都会被扫描,我们可以修改端口尽量避免被扫,参考: https://www.moerats.com/archives/394/ ,或者可以使用fail2ban将恶意IP屏蔽。

继续修改jail.local这个配置文件,在后面追加如下内容:

[sshd]
enabled = true
filter  = sshd
port    = 22
action = %(action_mwl)s
logpath = /var/log/secure

参数说明:

[sshd]:名称,可以随便填写
filter:规则名称,必须填写位于filter.d目录里面的规则,sshd是fail2ban内置规则
port:对应的端口
action:采取的行动
logpath:需要监视的日志路径

到这一步,我们jail.local的规则看起来可能像下面这样子:

[DEFAULT]
ignoreip = 127.0.0.1/8
bantime  = 86400
findtime = 600
maxretry = 5
banaction = firewallcmd-ipset
action = %(action_mwl)s

[sshd]
enabled = true
filter  = sshd
port    = 22
action = %(action_mwl)s
logpath = /var/log/secure

上面的配置意思是如果同一个IP,在10分钟内,如果连续超过5次错误,则使用Firewalld将他IP ban了。输入systemctl start fail2ban启动fail2ban来试试效果。

使用另一台服务器不断尝试连接SSH,并且不断的将密码输入错误,你会发现连续超过5次后直接连不上,说明IP被ban了,可以输入:fail2ban-client status sshd查看被ban的IP,如下截图。

未分类

防止CC攻击

这里仅以Nginx为例,使用fail2ban来监视nginx日志,匹配短时间内频繁请求的IP,并使用firewalld将其IP屏蔽,达到CC防护的作用。

#需要先新建一个nginx日志匹配规则
vi /etc/fail2ban/filter.d/nginx-cc.conf
#填写如下内容
[Definition]
failregex =  -.*- .*HTTP/1.* .* .*$
ignoreregex =

继续修改jail.local追加如下内容:

[nginx-cc]
enabled = true
port = http,https
filter = nginx-cc
action = %(action_mwl)s
maxretry = 20
findtime = 60
bantime = 3600
logpath = /usr/local/nginx/logs/access.log

上面的配置意思是如果在60s内,同一IP达到20次请求,则将其IP ban 1小时,上面只是为了测试,请根据自己的实际情况修改。logpath为nginx日志路径。

防止Wordpress爆破

如果您经常分析日志会发现有大量机器人在扫描wordpress登录页面wp-login.php,虽然对方可能没成功,但是为了避免万一还是将他IP干掉为好。

#需要先新建一个nginx日志匹配规则
vi /etc/fail2ban/filter.d/wordpress.conf
#填写如下内容
[Definition]
failregex = ^ -.* /wp-login.php.* HTTP/1.."
ignoreregex =

继续修改jail.local追加如下内容:

[wordpress]
enabled = true
port = http,https
filter = wordpress
action = %(action_mwl)s
maxretry = 20
findtime = 60
bantime = 3600
logpath = /usr/local/nginx/logs/access.log

当然,别忘记输入systemctl restart fail2ban重启fail2ban使其生效。

常用命令

#启动
systemctl start fail2ban
#停止
systemctl stop fail2ban
#开机启动
systemctl enable fail2ban
#查看被ban IP,其中sshd为名称,比如上面的[wordpress]
fail2ban-client status sshd
#删除被ban IP
fail2ban-client set sshd delignoreip 192.168.111.111
#查看日志
tail /var/log/fail2ban.log

总结

fail2ban已经内置很多匹配规则,位于filter.d目录下,包含了常见的SSH/FTP/Nginx/Apache等日志匹配,如果都还无法满足您的需求,您也可以自行新建规则来匹配异常IP。使用fail2ban+Firewalld来阻止恶意IP是行之有效的办法,可极大提高服务器安全。

提示:搬瓦工年付$18可换CN2机房的套餐已补货,7机房随意切换,支持支付宝,优惠码:BWH1ZBPVK,购买: https://bwh1.net/cart.php?a=confproduct&i=0

CentOS7 SAMBA服务器搭建

samba有三个模式: share|user|domain,平常使用也就是用user模式,也就是使用samba服务器本身的密码资料库,跟passsdb backend有关。

安装软件:

# yum install samba -y

配置SMABA:

# vim /etc/samba/smb.conf
Bash
[global]
workgroup = SAMAB
netbios name = CentOS
server string = This is  samba server
unix charset = utf8
display charset = utf8
dos charset = cp950
log file = /var/log/samba/log.%m
max log size = 50
load printers = no
#与密码有关的设定项目
security = user <==这行就是重点啦!改成user层级
passdb backend = tdbsam <==使用的是TDB资料库格式!
# 分享的资源设定方面:删除temp加入homes与project
[homes] <==分享的资源名称,登入samba的账户的家目录,这个可以不考虑配置
comment = Home Directories
browseable = no <==除了使用者自己外,不可被其他人浏览
writable = yes <==挂载后可读写此分享
create mode = 0664 <==建立档案的权限为664
directory mode = 0775 <= =建立目录的权限为775
[project] <==共享资源
comment = smbuser's project
path = /home/project <==实际的Linux上面的目录位置
browseable = yes <==可被其他人所浏览到资源名称(非内容)
writable = yes <==可以被写入
write list = @users <==写入者有哪些人的意思

每次改完smb.conf都重新检查一下语法正确:

# testparm

创建相应的目录:

# mkdir /home/project
# chgrp users /home/project
# chmod 2770 /home/project

创建系统账号,并设置密码

# useradd -G users smb1
#echo 1234 | passwd --stdin smb1

新增samba账号,使用刚刚创建好的系统账号:

# pdbedit -a -u smb1

输入两次密码即可

# pdbedit -L 可以列出已存在的账号
# smbpasswd smab1可以修改账号密码
# pdbedit -x -u smb1可以删除账户

设置开机自启服务

# systemctl enable smb.service
# systemctl enable nmb.service
# systemctl start smb.service
# systemctl start nmb.service

匿名登录smb服务器测试:

# smbclient -L //smbserverip

使用账号登录smb服务器测试:

# smbclient -L //serverip -U smb1

挂载测试:

# mount -t cifs //serverip/smb1 /mnt -o username=smb1

防火墙设置:

# firewall-cmd --zone=public --add-service=samba --permanent
# firewall-cmd --reload

Selinux设置:

这一步很重要,不然没法正常用的

# getsebool -a | grep samba查看samba的selinux规则
# setsebool -P samba_enable_home_dirs=1
# chcon -t samba_share_t /home/project也可以用# restorecon -Rv '/home/project'

完事在windows上挂载试试就没问题了。

centos7 kvm和设置桥接br0

一、kvm

1、查cpu是否支持VT

egrep '(vmx|svm)' --color=always /proc/cpuinfo

2、检查内核模块是否加载

lsmod | grep kvm

3、查看Selinux状态

sestatus

如果是启用状态

# vi /etc/sysconfig/selinux

SELINUX=disabled 

reboot

4、安装 KVM(在centos7里面有些软件包已经没有了)

yum install kvm libvirt python-virtinst qemu-kvm virt-viewer tunctl bridge-utils avahi dmidecode qemu-kvm-tools virt-manager qemu-img virt-install net-tools libguestfs-tools -y

5、启动libvirt服务

systemctl start libvirtd

systemctl enable libvirtd

6、查看kvm服务是否正常,目前没任何虚拟机,所以没有内容显示

virsh -c qemu:///system list

二、桥接(eth0网卡是代称,我实际弄机器时是em1)

服务器上弄kvm,装虚拟机什么的,需要弄桥接,所以

需要用到brctl这个命令、centos7上默认已经有了,
前面他们让我弄的时候,只是给了我一个文本,ifcfg-br0里面的内容,没有说要用brctl这个命令,我搞了好久都没搞定

1、

brctl  addbr  br0    #创建网桥
brctl  addif  br0 eth0  #把br0和eth0网卡绑定
brctl  stp   br0 on    #有关stp协议的

2、在/etc/sysconfig/network-scripts/创建 ifcfg-br0

内容如下:

DEVICE=br0  
TYPE=Bridge
BOOTRPOTO=static
IPADDR=192.168.1.108
NETMASK=255.255.255.0
GATEWAY= 192.168.12.2
DNS1=192.168.211.103
ONBOOT=yes

修改ifcfg-eth0文件

BOOTRPOTO=none

追加 BRIDGE=br0

完整的如下所示:注释部分是没弄br0前弄得

未分类

都弄好后service network restart

正常情况下就好了

我在弄第二台机器是就不行了,一旦执行 service network restart 它会在/etc/sysconfig/network-scripts/ 下生成ifcfg-br0-1,或者ifcfg-eth0-1 不知道这是什么原因

我一直没搞定,不得不重启
在重启机器前我已经把br0删除了

删除如下:

brctl delif br0 eth0    #解除绑定
ifconfig br0 down     #关闭br0,不关闭删不掉
brctl delbr br0       #删除br0

重启后我按照上面的步骤重做了一遍,发现网络还是不通,但是ifconfig 可以看到br0的ip已经设置成功了,/etc/sysconfig/network-scripts/没有产生新文件

后面发现前面br0与eth0的绑定消失了,在过程中自动取消了绑定
重新绑定:

brctl addif br0 eth0
service network restart

网络就正常了

Linux系统,Centos7版本下搭建postfix服务器及其相关配置应用

实验报告

一、 实验名称:邮件服务器的搭建和相关使用功能的配置

二、 实验环境与要求:Linux系统 centos7版本

搭建邮件服务器实现发信收信基本功能
实现发信认证功能
搭建好LAMP环境,配置squirrelmail收发邮件

三、 实验内容:

1、 检查版信息,postfix安装情况与支持的功能,启动运行;
2、 搭建与之相关的DNS服务器,配置DNS解析功能;
3、 配置postfix基本发信功能,进行测试;
4、 安装dovecot提供收信服务,进行测试;
5、 客户端利用邮箱软件配置测试服务器功能;
6、 进行发信认证配置;
7、 搭建LAMP环境,配置squirrelmail收发邮件

实验步骤

第一步

cat /etc/redhat-release //检查版本信息

未分类

※安装postfix(版本自带) centos7版本即使用最小化安装仍自带此功能

postconf -a // 验证是否支持cyrus dovecot功能

未分类

启动服务器systemctl start postfix

netstat -anpt | grep 25 //查看监听端口号

未分类

第二步

※搭建与之相关的DNS服务器,配置DNS解析功能

yum install bind //安装服务器程序
vi /etc/named.conf //编辑主配置文件

未分类

未分类

※以下进行区域文件配置:

cd /var/named/ 进入文件目录下

复制配置文件的模板进行修改:

cp -p named.localhost yyf.com.zone
cp -p named.localhost yyf.com.local
vi /var/named/yyf.com.zone 编辑正向区文件

如图:

未分类

vi /var/named/yyf.com.local 编辑反向区文件

如图:

未分类

以上基本配置编辑完成

systemctl start named //启动服务器
netstat -anpu | grep name //检测到UDP 53端口在监听 服务器正常工作。

进行DNS验证

vi /etc/resolv.conf
nameserver 192.168.80.18 //指向DNS服务器地址

rpm -ivh /mnt/Packages/bind-utils-9.9.4-50.el7.x86_64.rpm //安装检测命令nslookup

解析如图:

~nslookup mail.yyf.com //正向解析 

未分类

~nslookup 192.168.80.18 //反向解析

未分类

解析成功!

第三步

—–配置postfix基本发信功能

vi /etc/postfix/main.cf 编辑配置文件 修改项如下:

myhostname = mail.aa.com //本机系统主机名
mydomain = aa.com //主机域名
myorigin = $mydomain //根源、起点
inet_interfaces = 192.168.80.18, 127.0.0.1 //接口地址
inet_protocols = ipv4
mydestination = $myhostname, $mydomain //预定、指定范围
home_mailbox = Maildir/ //信箱家目录

完成后保存退出,用postfix check命令检查是否存在语法错误:

service postfix restart //重启邮件服务器

※要测试发信功能是否生效,我们需要添加用户并加入同一组管理:
—–增加邮件测试账号

groupadd mailusers //增加组账号
useradd -g mailusers -s /sbin/nologin jack //建用户jack 加入mailusers组且不可登陆系统
passwd jack(密码随便设置123)
useradd -g mailusers -s /sbin/nologin tom //建用户tom 加入mailusers组且不可登陆系统
passwd tom(密码随便设置123)

测试准备:安装yum install telnet
开始测试:连接服务器的25端口进行简单发信测试
telnet mail.yyf.com 25

依次输入以下内容:

如图:

未分类

由于目前未安装收件服务,所以只能通过root超级管理员来查看邮件是否发送成功

使用root查看tom用户是否收到测试邮件:

ls -l /home/tom/Maildir/new/ 在此目录下应该会有刚才发的邮件

未分类

可用cat命令查看内容

邮件发送功能测试成功!

第四步

※安装dovecot提供收信服务

yum install dovecot //安装系统程序
vi /etc/dovecot/dovecot.conf //配置程序文件

※修改项如下:

protocols = imap pop3 lmtp
listen = //监听 所有端口
!include conf.d/10-auth.conf //此处* 必须替换

※手动增加以下内容:

ssl = no
disable_plaintext_auth = no
mail_location = maildir:~/Maildir

※以上基本配置完成

service dovecot start //启动服务
netstat -anpt | grep dovecot // 110 143端口需要监听

如图:

未分类

服务启动成功,正常工作

※现在可以用户进行测试收信了(以前是用root,现在可以用账户)
测试开始:telnet mail.yyf.com 110

如图:

未分类

我们来读取第一份邮件看看

显示如图:

未分类

用quit 可以退出
测试结构说明收件系统工作正常

鉴于目前的收信发信方式太不友好,安装MUA软件连接服务器收发邮件

※客户端装测设软件:

未分类

用此软件进行测试,看服务器是否正常工作
基本设置如图所示:

未分类

未分类

登陆后收件:

未分类

邮件接受正常
服务器工作正常

第五步

以下进行发信认证配置

yum install cyrus-sasl* 安装相关软件包

vi /etc/sasl2/smtpd.conf 开始编辑配置文件,内容如下:

pwcheck_method: saslauthd
mech_list: plain login
log_level:3 //设置日志级别为3
vi /etc/sysconfig/saslauthd //编辑认证系统配置文件
MECH=shadow

service saslauthd start //开启认证功能服务器
vi /etc/postfix/main.cf //编辑配置文件
在末尾新增
smtpd_sasl_auth_enable = yes //开启认证
smtpd_sasl_security_options = noanonymous //不允许匿名发信
mynetworks = 127.0.0.0/8 //允许的网段,如果增加本机所在网段就会出现允许 不验证也能向外域发信
smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination //允许本地域以及认证成功的发信,拒绝认证失败的发信

postfix check //检查语法
service postfix restart //重启服务器

※测试普通发信

telnet mail.yyf.com 25

如图:

未分类

向未认证区域发件失败说明认证系统是生效的
quit 退出

※下面用系统账户进行发信测试

将用户名与密码生成密文加密:

printf "jack" | openssl base64 //生成密文
amFjaw== (密文)
printf "123" | openssl base64 //生成密文
MTIz (密文)

※开始用字符终端测试认证发信:

telnet mail.aa.com 25

如图:

未分类

未分类

若在真机用邮箱软件测试,只需做如下操作:

未分类

将高级设置中的选项勾选即可验证

第六步

—-以下是配置squirrelmail收发邮件内容
需要搭建好LAMP环境

--------安装LAMP---------
yum install -y 
httpd 
mariadb-server mariadb 
php 
php-mysql 
php-gd 
libjpeg* 
php-ldap 
php-odbc 
php-pear 
php-xml 
php-xmlrpc 

php-mhash 注: 安装相关软件包,其中表示强制换行操作

vi /etc/httpd/conf/httpd.conf //编辑配置文件

需要修改的内容:

ServerName www.aa.com ///服务器名称
DirectoryIndex index.html index.php ///支持静态与动态网页
vi /etc/php.ini //编辑此配置文件
date.timezone = PRC //设置时区

提醒:系统中的防火墙与安全Linux要确认关闭,否则影响实验

systemctl stop firewalld.service
setenforce 0

systemctl start httpd.service 网页系统启动
systemctl start mariadb.service 数据库系统启动

netstat -anpt | grep 80
netstat -anpt | grep 3306 //端口在监听,说明服务器启动正常

未分类

未分类

※mysql_secure_installation 进行安全校验,也可不设置

接下来

vi /var/www/html/index.php 编辑数据库文件

在里面写入脚本如下:

<?php
phpinfo();
?>

用真机浏览器测试:

http://192.168.80.18 将出现如下页面,说明设置成功

未分类

※进入数据库,建立授权账号

mysql -u root -p

进数据库时设置一下密码:123456

CREATE DATABASE bcd; //建立数据库名字bcd
GRANT all ON bcd.* TO 'mail'@'%' IDENTIFIED BY '123456'; 
flush privileges; //刷新一下权限

下面测试数据库工作是否正常

vi /var/www/html/index.php //编辑配置文件,该文件为数据库工作目录

删除以前内容,写入如下内容:

<?php
$link=mysql_connect('192.168.80.18','mail','123456'); //说明地址与密码
if($link) echo "<h1>Success!!</h1>"; //如果连接成功则会显示Success!!
else echo "Fail!!"; //如果连接失败则显示Fail!!
mysql_close();
?>

保存退出

测试:

未分类

连接成功!

到下面网址下载小松鼠包与汉化语言包

http://www.squirrelmail.org/download.php

1、squirrelmail-webmail-1.4.22.tar.gz
2、all_locales-1.4.18-20090526.tar.gz

将安装包上传到Linux系统中进行解压

tar xzvf squirrelmail-webmail-1.4.22.tar.gz
tar xzvf all_locales-1.4.18-20090526.tar.gz -C squirrelmail-webmail-1.4.22 //-C表示将语言包解压到后续包中

cp -rv squirrelmail-webmail-1.4.22 /var/www/html/mail //将解压完成的包拷贝到/var/www/html/mail(网页工作目录)

cd /var/www/html/mail // cd到php工作目录下
mkdir attach //建立附件文件目录
chown -R apache:apache attach/ data/ //修改权限

cd config //到squirrelmail配置文件下
cp config_default.php config.php // 拷贝模板
vi config.php //开始编辑

修改内容如下:

$domain = 'aa.com'; //域名
$imap_server_type = 'dovecot'; //imap服务类型为dovecot
$data_dir = '/var/www/html/mail/data'; //原件存放地址
$attachment_dir = '/var/www/html/mail/attach/'; //附件存放地址
$squirrelmail_default_language = 'zh_CN'; //网页显示语言为中文
$default_charset = 'zh_CN.UTF-8'; //中文字符编码

用真机浏览器登陆测试:

http://192.168.80.181/mail

出现登录界面,如图:

未分类

输入账户登陆:
显示如下:

未分类

成功进入并且可正常操作使用,服务器工作正常。

第七步

※以下设置邮件组

vi /etc/aliases 编辑配置文件

增加组名:student:jack,tom

newaliases //生成hash数据库文件
systemctl restart postfix //重启邮件服务器br/>测试向[email protected]发信的时候jack,tom都会收到。

测试如下:

※用tom向组邮箱发送组邮件

未分类

检查收件情况:

未分类

未分类

测试结果符合要求

※以下设置邮件大小

vi /etc/postfix/main.cf //编辑配置文件

手动写入:

message_size_limit = 5120000 //单位是Byte

保存后退出!

systemctl restart postfix //重启邮件服务器

通过增加大附件测试效果

未分类

未分类

※以下通过配置用户磁盘配额实现限制用户邮箱空间
邮件存放目录在home下,挂载于/dev/sda5盘上

未分类

[root@yyf ~]# umount /home
[root@yyf ~]# mount -o usrquota,grpquota /dev/sda5
[root@yyf ~]# vi /etc/fstab

最后一行加上:

未分类

未分类

开启磁盘配额:

edquota -u jack

配额硬性为20M 如图:

未分类

用户系统中检测磁盘配额是否生效:

未分类

超出配额,已生效。
用客户端软件测试:

发送大小为6.6M的邮件,已成功发送两个(已取消单个邮件不得大于5M的配置)

未分类

第三份发送失败

未分类

查看目录剩余空间,限额20M的情况下,已不足6.6M的空间,故第三份发送必然失败

未分类

所以对jack用户做的磁盘配额生效。

CentOS 7安装bbr教程

未分类

Google 开源了其 TCP BBR 拥塞控制算法,并提交到了 Linux 内核,从 4.9 开始,Linux 内核已经用上了该算法。根据以往的传统,Google 总是先在自家的生产环境上线运用后,才会将代码开源,此次也不例外。
根据实地测试,在部署了最新版内核并开启了 TCP BBR 的机器上,网速甚至可以提升好几个数量级。

安装

CentOS 7.3

1、yum系统更新(更新到CentOS 7.3)

yum update

2、查看系统版本

cat /etc/redhat-release

输出如下(release数值大于7.3即可),则表示已升级到7.3

CentOS Linux release 7.3.1611 (Core)

3、安装elrepo并升级内核

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml -y

正常情况下将输出如下信息:

Transaction Summary
================================================================================
Install  1 Package
Total download size: 39 M
Installed size: 169 M
Downloading packages:
kernel-ml-4.9.0-1.el7.elrepo.x86_64.rpm                    |  39 MB   00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
  Installing : kernel-ml-4.9.0-1.el7.elrepo.x86_64                          1/1
  Verifying  : kernel-ml-4.9.0-1.el7.elrepo.x86_64                          1/1
Installed:
  kernel-ml.x86_64 0:4.9.0-1.el7.elrepo
Complete!

4、更新grub文件并重启(reboot后,ssh会断开,稍等一会儿重新连接)

egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d '
grub2-set-default 0
reboot

5、开机后查看内核是否已更换为4.9

uname -r

输出如下内容则表示内核4.9已经启动了(数值大于4.9即可)

4.9.0-1.el7.elrepo.x86_64

CentOS 7.4

导入 elrepo 软件源的 GPG 公钥

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

导入 elrepo 软件源

说明:该地址可以自动下载该源的最新的软件列表,无需修改地址。

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

下载并安装新的内核

启用软件源并下载安装最新稳定版内核

yum -y --enablerepo=elrepo-kernel install kernel-ml

设定 Grub 默认启动新内核

说明:如果手动修改过 Grub 的配置文件,以下命令可能无法执行成功。请自行修改 Grub 配置文件。

grub2-set-default 0

使用新的内核重启

reboot

检查设置 & 删除旧的内核

查看当前系统的内核版本号

uname -r

如果输出是 4.10 以上的版本,说明安装成功。

4.14.13-1.el7.elrepo.x86_64

删除旧内核

说明:删除旧内核的目的是为了防止 yum 更新旧版内核之后覆盖了 grub 默认启动项

yum -y remove kernel kernel-tools

开启bbr

vim /etc/sysctl.conf

添加如下内容

net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

加载系统参数(正常情况下会输出我们之前加入的内容)

sysctl -p

验证bbr是否已经开启

a.若

sysctl net.ipv4.tcp_available_congestion_control

返回

net.ipv4.tcp_available_congestion_control = bbr cubic reno

则成功

b.若

lsmod | grep bbr

返回形如如下形式的信息即成功。

tcp_bbr                16384  1
tcp_bbr                20480  0

在阿里云的CENTOS上搭建GIT服务器

最近突然想把一些原来在本机的代码用git管理起来,本来想再windows上搭一个服务器,转而一想反正有一个阿里云的centos,干脆用起来吧,于是说干就干。

一、检查服务器版本是否自带git

[root@~]# rpm -qa git
git-1.8.3.1-6.el7_2.1.x86_64
language-shell hljs

如果现实git-版本号这种说明已经安装过了,如果没有使用下面的命令安装

yum install git 
language-shell hljs

二、创建git用户并设置密码

[root@]# useradd my2017
[root@]# passwd my2017
Changing password for user my2017.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

三、生成ssh公钥

[root@]# su my2017
[my2017@]$ cd ~
[my2017@ ~]$ ls
[my2017@ ~]$ pws
bash: pws: command not found
[my2017@ ~]$ pwd
/home/my2017
[my2017@ ~]$ mkdir .ssh
[my2017@ ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/my2017/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/my2017/.ssh/id_rsa.
Your public key has been saved in /home/my2017/.ssh/id_rsa.pub.
The key fingerprint is:
0e:b0:b2:b2:4e:8d:a6:08:12:ea:cb:55:6b:f5:64:e2 my2017@iZ2ze3jauhy9b4gdjn!2s2w1
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|    .            |
|     o           |
|. . ...oSo       |
|..oo. +o=        |
|=+.o o E..       |
|Xo. .            |
|==.              |
+-----------------+
[my2017@ ~]$ cd .ssh/
[my2017@ .ssh]$ cat id_rsa.pub >> ~/.ssh/authorized_keys
[my2017@ .ssh]$ exit
exit

四、创建git仓库

[root@ gitrepository]# mkdir mygit.git
[root@ gitrepository]# cd mygit.git/
[root@ mygit.git]# git --bare init
Initialized empty Git repository in /data/gitrepository/mygit.git/

五、修改权限

[root@ data]# chown -R my2017:my2017 gitrepository/
[root@ data]# cd gitrepository/
[root@ gitrepository]# ls -al
total 12
drwxr-xr-x 3 my2017 my2017 4096 Oct 29 23:14 .
drwxr-xr-x 6 root      root      4096 Oct 29 22:54 ..
drwxr-xr-x 7 my2017 my2017 4096 Oct 29 23:15 mygit.git
[root@ gitrepository]# cd mygit.git/
[root@ mygit.git]# ls -al
total 40
drwxr-xr-x 7 my2017 my2017 4096 Oct 29 23:15 .
drwxr-xr-x 3 my2017 my2017 4096 Oct 29 23:14 ..
drwxr-xr-x 2 my2017 my2017 4096 Oct 29 23:15 branches
-rw-r--r-- 1 my2017 my2017   66 Oct 29 23:15 config
-rw-r--r-- 1 my2017 my2017   73 Oct 29 23:15 description
-rw-r--r-- 1 my2017 my2017   23 Oct 29 23:15 HEAD
drwxr-xr-x 2 my2017 my2017 4096 Oct 29 23:15 hooks
drwxr-xr-x 2 my2017 my2017 4096 Oct 29 23:15 info
drwxr-xr-x 4 my2017 my2017 4096 Oct 29 23:15 objects
drwxr-xr-x 4 my2017 my2017 4096 Oct 29 23:15 refs

配置SSH key

六、本地测试

安装git.exe

https://git-for-windows.github.io/

有时候不好下,多刷新几遍。

安装 TortoiseGit

https://tortoisegit.org/

我的一贯宗旨是能鼠标点的绝逼不敲代码。。。。

tortoisegit报错提示:

Disconnected:No supported authentication methods available
(server sent:publickey,gssapi-keyex,gssapi-with-mic)

直接用git客户端报错:

Warning: Permanently added (ECDSA) to the list of known hosts.
my@: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
fatal: Could not read from remote repository.

解决方法:

禁止git用户登录

禁用git用户shell登陆

出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。

vim /etc/passwd

找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash

改为:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

CentOS 7 安装pure-ftp

安装约定

  • 虚拟用户 www_user_name

  • 虚拟路径 /www/html/www

1、给/www/html/www 赋apache 权限

chown -R apache:apache /www/html/www

2、安装pure-ftpd

yum -y install pure-ftpd

3、下载配好的 pure-ftpd.conf

wget -P /etc/pure-ftpd/ http://www.kglan.com/soft/pure-ftp/pure-ftpd.conf

4、创建 虚拟用户 生成用户数据 db

pure-pw useradd www_user_name -u apache -d /www/html/www
pure-pw mkdb /etc/pure-ftpd/pureftpd.pdb

5、开启服务 设置开机启动

systemctl start  pure-ftpd.service
systemctl enable pure-ftpd.service

CentOS 7.2 搭建内网ntp时间服务器

时间服务器说明

前面在系统的基础优化里说到了时间同步需要同步aliyun的时间,这样我们所有的服务器都需要到公网去同步时间,浪费很多网络资源,这里我们来搭建一下内网的时间服务器。

环境说明

1、时间服务器环境介绍

# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)

# uname -r
3.10.0-327.el7.x86_64

# hostname -I
192.168.56.100 172.16.1.100

2、内网需要同步时间的服务器环境介绍

# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core) 

[root@linux-node2 ~]# uname -r
3.10.0-327.el7.x86_64

[root@linux-node2 ~]# hostname -I
192.168.56.12 172.16.1.12

yum安装ntp时间服务

# yum install -y ntp
# rpm -qa ntp        #下载后验证
ntp-4.2.6p5-25.el7.centos.2.x86_64

修改配置文件

[root@web01 ~]# grep -n "^[a-z]" /etc/ntp.conf    #过滤配置文件
4:driftfile /var/lib/ntp/drift       #默认的
9:restrict default nomodify      #注释掉地8行,添加这行,表示nomodify客户端可以同步时间。
14:restrict 127.0.0.1          #默认的
15:restrict ::1                     #默认的
26:server ntp1.aliyun.com       #添加时间源
27:server time.nist.gov            #添加时间源
39:includefile /etc/ntp/crypto/pw      #以下都是默认的
43:keys /etc/ntp/keys
61:disable monitor

启动时间服务器

# systemctl start ntpd
# netstat -lnuto|grep 123           #查看端口
udp        0      0 172.16.1.100:123        0.0.0.0:*                           off (0.00/0/0)
udp        0      0 192.168.56.100:123      0.0.0.0:*                           off (0.00/0/0)
udp        0      0 127.0.0.1:123           0.0.0.0:*                           off (0.00/0/0)
udp        0      0 0.0.0.0:123             0.0.0.0:*                           off (0.00/0/0)
udp6       0      0 fe80::20c:29ff:fe31:123 :::*                                off (0.00/0/0)
udp6       0      0 fe80::20c:29ff:fe31:123 :::*                                off (0.00/0/0)
udp6       0      0 ::1:123                 :::*                                off (0.00/0/0)
udp6       0      0 :::123                  :::*                                off (0.00/0/0)

启动后确认:

# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 time5.aliyun.co 10.137.38.86     2 u   11   64    1    5.414   -0.946   0.000
 time-c-wwv.nist .STEP.          16 u    -   64    0    0.000    0.000   0.000
发现有两个可用的时间源

稍等几分钟后,在客户端同步时间

客户端如果有同步时间的定时任务需要取消掉。

1、到客户端查看当前时间

# date
Fri Jan 12 21:06:00 CST 2018

2、与时间服务器同步时间

# ntpdate -d 192.168.56.100
12 Jan 22:12:00 ntpdate[6677]: ntpdate [email protected] Wed Apr 12 21:24:06 UTC 2017 (1)
Looking for host 192.168.56.100 and service ntp
host found : linxu-node4
transmit(192.168.56.100)
receive(192.168.56.100)
transmit(192.168.56.100)
receive(192.168.56.100)
transmit(192.168.56.100)
receive(192.168.56.100)
transmit(192.168.56.100)
receive(192.168.56.100)
server 192.168.56.100, port 123
stratum 3, precision -24, leap 00, trust 000
refid [192.168.56.100], delay 0.02617, dispersion 0.00076
transmitted 4, in filter 4
reference time:    de02c1e5.530e0c26  Fri, Jan 12 2018 13:11:01.324
originate timestamp: de02c227.63d8db0f  Fri, Jan 12 2018 13:12:07.390
transmit timestamp:  de0340b6.c05f3381  Fri, Jan 12 2018 22:12:06.751
filter delay:  0.02617  0.02634  0.02634  0.02635 
         0.00000  0.00000  0.00000  0.00000 
filter offset: -32399.3 -32399.3 -32399.3 -32399.3
         0.000000 0.000000 0.000000 0.000000
delay 0.02617, dispersion 0.00076
offset -32399.360102

12 Jan 22:12:06 ntpdate[6677]: step time server 192.168.56.100 offset -32399.360102 sec

3、此时再查看客户端的时间

# date
Fri Jan 12 22:13:01 CST 2018

4、设置定时任务同步时间即可

# crontab -l
# tine rsync   time:2018/1/12
*/5 * * * * ntpdate 192.168.56.100 >/dev/null 2>&1

至此,内网的时间服务器就安装完成了,所有的内网服务器都可以到时间服务器来同步时间,不需要到公网上去同步时间了。

centos7.4 搭建zabbix-server 3.4.5

监控对服务器的重要性来说已经不需要我来一一赘述了,在众多的监控工具之中选择使用zabbix的原因是觉得它功能强大,可以引用的模板有很多,而且图形化做的草鸡棒。

废话就不多了,直接吃鸡。

本次搭建全部采用虚拟机实现。具体环境如下:

  • system:centos7.4

  • zabbix version:3.4.5

  • database version:mariadb 5.5.56

  • Apache:2.4.6

=================================================================================================

一:存放数据的数据库,本次使用 yum自带版本mariadb 5.5.56

1、直接yum安装

#yum -y install mariadb mariadb-server

2、启动mariadb服务并设置开机启动。安全初始化数据库的相关信息

#systemctl start mariadb

#mysql_secure_installation

# systemctl enable mariadb

3、进入数据库,创建为zabbix存放数据的数据库zabbix,创建登录该数据库的用户,可以登录该数据库的IP以及给该用户授予对应数据库的权限

#mysql -uroot -p

MariaDB [(none)]>create database zabbix character set utf8 collate utf8_bin;

MariaDB [(none)]>grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';   (密码可以随意设置)

MariaDB [(none)]>exit

4、尝试用zabbix用户登录是否创建成功

#mysql -uzabbix -pzabbix

二:安装Apache

yum源自带的Apache为2.4.6,足够支持了。所以依然yum安装走起

1、安装

#yum -y install httpd

2、启动Apache,设置开机启动

#systemctl start httpd

#systemctl enable httpd

3、检测Apache是否安装成功

#netstat -antulp |grep :80

#curl http://localhost 或者直接在浏览器输入IP地址

三:zabbix-server搭建

1、官方网站安装对应版本的zabbix的yum源

#rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm

2、利用yum源安装zabbix的服务端和支持zabbix的web界面包

#yum -y install zabbix-server-mysql zabbix-web-mysql

3、进入到开始安装服务端时安装的共享文档目录下,找到用于往zabbix数据库导入数据的sql压缩文件件create.sql.gz.

#cd /usr/share/doc/zabbix-server-mysql-3.4.5/

使用zcat命令,加管道重定向,向开始创建的zabbix数据库导入数据

#zcat create.sql.gz |mysql -uroot -pzabbix zabbix

4、修改zabbix的主配置文件.让zabbix-server启动时能读取到数据库中的数据

#vim /etc/zabbix/zabbix_server.conf

未分类

5、启动zabbix-server服务,并将该服务设置为开机启动

#systemctl start zabbix-server

#systemctl enable zabbix-server

6、修改时区,使前端显示的页面时间正确,为亚洲上海

#vim /etc/httpd/conf.d/zabbix.conf 

未分类

7、查看是否创建zabbix用户和zabbix用户组。

#cat /etc/passwd |grep zabbix

#cat /etc/group |grep zabbix

8、浏览器输入IP地址加上zabbix目录,进入zabbix的安装界面

未分类

未分类

9、注意安装完之后登录的账号默认为Admin 密码默认为zabbix

未分类

10、登录成功之后显示出如下的仪表盘信息,则表示zabbix服务端安装成功

未分类

11、安装成功之后,是全英文显示的,可以通过修改个性化设置,修改语言和主题颜色,如下图即可

未分类

未分类

12、zabbix默认是自带简体中文的,但汉化不完整,默认是没有开放的状态,可以手动释放出来

未分类

未分类

13、修改之后重新启动服务, 查看图形的时候,本该显示中文的地方出现方块乱码。

**解决办法,修改字体配置文件

windows操作系统,Win+r 进入命令界面,输入fonts,弹出字体窗口,找到喜欢的字体(简体常规)复制出来,改名为xxxx.tty 注意后缀名一定要为tty. 然后将该文件上传到安装zabbix的服务器上的/usr/share/zabbix/fonts/目录下

未分类

未分类

未分类

未分类

修改完之后,刷新下界面,发现现实中文成功啦!

未分类

zabbix服务端搭建到此就结束了,是不是挺简单的。