配置日志服务器
一、设置系统环境如下:
日志服务去器:
IP地址:172.16.8.100/24
主机名;LServ.sevenwin.org
日志客户端;
IP地址:127.16.8.101/24
主机名:LCli.sevenwin.org
二、构建LAMP
三、配置日志服务器数据库
四、配置服务器rsyslogd的主配置文件/etc/rsyslog.conf
五、配置防火墙,开放TCP与UDP 514端口、TCP 3306端口、TCP 80端口;配置SELinux
配置日志服务器
一、设置系统环境如下:
日志服务去器:
IP地址:172.16.8.100/24
主机名;LServ.sevenwin.org
日志客户端;
IP地址:127.16.8.101/24
主机名:LCli.sevenwin.org
二、构建LAMP
三、配置日志服务器数据库
四、配置服务器rsyslogd的主配置文件/etc/rsyslog.conf
五、配置防火墙,开放TCP与UDP 514端口、TCP 3306端口、TCP 80端口;配置SELinux
日志分析与安全-内核及系统日志、用户日志、程序日志
日志为什么重要?
用于记录系统、程序运行中发生的各种事件
通过阅读日志,有助于诊断和解决系统故障
是审计的基础
日志文件的分类
内核及系统日志
由系统服务rsyslogd统一进行管理,日志格式基本相似
用户日志
记录系统用户登录及退出系统的相关信息
程序日志
由各种应用程序独立管理的日志文件,记录格式不统一
在Linux系统中,有三个主要的日志子系统
连接时间日志:由多个程序执行,把记录写入到/var/log/wtmp和/var/run/utmp,login等程序会更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。
进程统计:由系统内核执行,当一个进程终止时,为每个进程往进程统计文件中写一个记录。进程统计的目的是为系统中的基本服务提供命令使用统计。
错误日志:由rsyslogd守护程序执行,各种系统守护进程、用户程序和内核通过rsyslogd守护程序向文件/var/log/messages报告值得注意的事件。另外有许多Linux程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。
日志保存位置
默认位于:/var/log目录下
主要日志文件介绍:
内核及公共消息日志:/var/log/messages
计划任务日志:/var/log/cron
系统引导日志:/var/log/dmesg
邮件系统日志:/var/log/maillog
用户登录日志:/var/log/lastlog(最近的用户登录事件)
/var/log/secure(用户验证相关的安全性事件)
/var/log/wtmp(当前登录用户详细信息)
/var/run/utmp/(用户登录、注销及系统开关机等事件)
其他日志
用户日志
有关当前登录用户的信息记录在文件utmp中,utmp文件被各种命令文件使用,包括who、w、users和finger。
登录和退出记录在文件wtmp中;数据交换、关机以及重启的信息也都记录在wtmp文件中;wtmp文件被命令last和ac使用。
所有的记录都包括时间戳。时间戳对日志来说非常重要,因为很多攻击行为分析都是与时间有极大关系的。
这两个文件是二进制文件,不能用诸如tail、cat之类的命令来进行访问、操作。
用户日志的基本命令:
内核及系统日志
由系统服务rsyslogd统一管理
软件包:rsyslog-7.4.7-7.el7_0.x86_64
主要程序:/sbin/rsyslofd
配置文件:/etc/rsyslog.conf
日志消息的级别
0EMERG(紧急):导致主机系统不可用的情况
1ALERT:(警告):必须马上采取措施解决的问题
2CRIT(严重):比较严重的情况
3ERR(错误):运行出现错误
4WARNING(提醒):可能会影响系统功能的事件
5NOTICE(注意):不会影响系统但值得注意
6INFO(信息):一般信息
7DEBUG(调试):程序或系统调试信息等
日志记录的一般格式:
时间戳 主机名 子系统 消息级别 消息字段内容
程序日志:
由相应的应用程序独立进行管理,如:
Web服务:/var/log/httpd/
access_log、error_log
代理服务:/var/log/squid/
access.log、cache.log、squid.out、store.log
FTP服务:/var/log/xferlog
分析工具;
文本查看、grep过滤检索、Webmin管理套件中查看
awk、sed等文本过滤、格式化编辑工具
Webalizer、Awstats等专用日志分析工具
日志系统审计、运维注意事项
系统管理人员应该提高警惕,随时注意各种可以情况,并且按时和随机地检查各种系统日志文件,包括一般日志信息、网络连接日志、文件传输日志以及用户登录日志等。在检查这些日志时,要注意是否有不合常理的时间记载。例如:
用户在非常规时间登录;
不正常的日志记录,比如日志的残缺不全或者诸如wtmp这样的日志文件无故地缺少了中间的记录文件;
用户登录系统的IP地址和以往的不一样;
用户登录失败的日志记录,尤其是那些一再连续尝试进入失败的日志记录;
非法使用或不正当使用超级用户权限su指令
无故或非法重新启动各项网络服务的记录
另外,日志并非完全可靠。高明的黑客在入侵系统后,会打扫战场。
日志管理策略
及时作好备份和归档
延长日志保存期限
控制日志访问权限
日志中可能会包含各类敏感信息,如账户、口令等
集中管理日志
将服务器的日志文件发到统一i的日志文件服务器
便于日志信息的统一收集、整理和分析
杜绝日志信息的意外丢失、恶意篡改或删除
弱口令检测
John the Ripper(开膛手约翰或者约翰的粗齿锯)
简称为JR
一款密码分析工具,支持字典式的暴力破解
通过对shadow文件的口令分析,可以检测密码强度
网址:http://www.openwall.com/
安装JR工具
make clean系统类型
主程序文件为john
查看分析结果
结合密码文件进行分析
JR的一些常用用法
把用户密码导出到当前txt文档里 ./unshadow/etc/passwd/etc/shadow>password.txt
简单模式破解
./john --single password.txt
自定义字典模式破解
./john --wordlist=password.lst password.txt
穷举模式破解,耗时,耗力
./john --incremental=Digits --fork=30 password.txt
指定解密类型
类型参数举例: --format=des/bsdi/md5/bf/afs/lm/trip/dummy
./john --format=md5 passsword.txt
服务区进程安全控制-Systemd
Systemd的优势
并行处理所有服务,加快开机速度
旧init启动脚本是"依序一项项执行启动“模式(类似单序列串行模式),因此不相关的服务也要依次排队等候。
systemd实现了不存在依存关系的服务同时并行启动的能力,这样大大的加快了系统启动的速度。
统一管理,on-demand(按需)启动服务
systemd全部仅有一个systemd服务搭配systemctl指令来处理,不需要额外的指令来支持。不像systemV需要init、chkconfig、service...等等指令。此外,systemd常驻内存,可以按需处理后续的daemon启动任务。
服务依存关系自我检查:
systemd可以针对服务的依存关系进行检查,这样管理员就不需要启动了一个服务,要先去分析它依存哪些其他服务,检查那些依存的服务是否启动,省去了这些麻烦。
根据daemon的功能进行分类:
systemd旗下管理的服务非常多,为了理清所有服务的功能,systemd先定义所有的服务为一个服务单位(unit),并将该unit归类到不同的服务类型(type)中。旧的init仅分为stand alone(独立与super daemon(超级守护进程)其实是不够的;systemd将服务单位(unit)区分为service(系统服务)、socket(套接字服务)、target(多目标服务)、path(目录路径服务)、snapshot(快照服务)、timer(定时服务)等多种不同的类型(type),方便管理员的分类与记忆。
将多个daemons集合成一个群组:
如同systemV的init里有个runlevel(运行级别)的特色,systemd也可以将多个功能集合成为一个所谓的target项目,这个项目主要用于构建一个操作环境,所以是集合了许多个daemons,既执行某个target就是执行好多个daemon,共同营建某一种操作环境。
向下兼容旧的init服务脚本:
基本上,systemd是可以兼容init启动脚本的。因此,旧的init启动脚本也能够透过systemd来管理。
Systemd配置文件保存的储目录:
/usr/lib/systemd/system/:每个服务最主要的启动脚本保存的地方,有点类似于以前的/etc/init.d底下的文件
/run/systemd/system/:系统执行过程中产生的服务脚本,他们的优先级要比/usr/lib/systemd/system高
/etc/systemd/system/:管理员依据主机系统的需求所创建的执行脚本,其实这个目录有点像以前的/etc/rc.d/rc5.d/Sxx之类的功能,执行优先级比/run/systemd/system/要高。
也就是说,系统开机会不会执行某些服务其实是看/etc/systemd/system/底下的设置,所以该目录底下就是一大堆链接文件。而执行的systemd启动脚本文件,都是放置在/usr/lib/systemd/system/底下的。因此如果你想要修改某个服务启动的设置,应该要去改/usr/lib/systemd/system/底下修改。
Systemd的unit
配置SSH身份认证
登录验证对象:
服务器中本地用户账号
登录验证方式
密码验证:核对用户名、密码是否匹配
密钥对验证:核对客户的私钥、客户端公钥是否匹配
构建密钥对验证的SSH体系:
第一步:创建密钥对(在客户端)
私密文件:id_rsa
公钥文件:id_rsa.pub
第二步:
上传公钥文件id-rsa.pub
第三步:导入公钥信息
公钥库文件: ~/.ssh//authorized_keys
第四
SSH安全性和配置最佳实践
将root账户仅限制为控制台访问:
配置TCP Wrappers,对远程主机进行访问控制:
在工作站或者笔记本电脑上,关闭SSH服务并卸载SSH服务器包:
通过控制用户账号,限制其对SSH的访问:
仅使用SSH Protocol2:
不支持闲置会话,并配置Idle Logout Timeout间隔:
禁用空密码,设置密码重试次数:
禁用基于主机的身份验证:
禁用用户的.rhosts文件:
限制SSH,将侦听绑定到可用的网络接口与端口:
始终保持SSH补丁版本最新:
账号基本安全
注释掉系统不需要的用户和用户组
不建议直接删除
再用户名前加“#”,便可注释掉
将非登录用户的shell设为/sbin/nologin
锁定一段时间内不使用的账号
账号user00口令字段前加了一个“!
"号,便无法登录
给账号、组账号、账号口令文件加上不可更改属性(加锁),从而防止非授权用户获得权限。
账号口令的安全设置
设置密码的有效期与最短长度限制
要求用户下次登录时修改密码
命令历史限制
减少记录的命令条数
注销时自动清空历史命令记录
终端自动注销
闲置60
CentOS7安装
步骤:
创建虚拟机并准备好系统安装镜像文件
进入安装初始化界面
进入图形化安装界面
语言选择
本地化
日期与时间、键盘、语言支持
软件
安装源与软件选择
系统
安装位置与网络主机名、KDUMP、NETWORK与HOSTNAME
用户设置
设置root
注释掉系统不需要的用户和用户组
cp /etc/passwd /var/.bak/etc/
vim /etc/passwd
可以被注释掉的
adm,lp,sync,shutdown,halt,operator,games,ftp...
vim /etc/group
adm,lp,floppy,games, ftp...
7段
用户名 密码的占位符 uid号,gid号,说明信息,用户的目录,使用的shell
#注释
非登录用户的shell设为/sbin/nologin
usermod -s /sbin/nologin user00
tail -2 /etc/passwd
程序帐号 apache这种
锁定帐号
usermod -L user00
tail -3 /etc/shadow
shadow是用来保存帐号密码的文件
有个感叹号,表示密码暂时不能用,即加锁了
chattr +i /etc/passwd
shadow group gshadow
账号文件组账号文件加锁,加锁后无法增删用户,防止普通用户提权
lsattr /etc/passwd /etc/shadow xxxxx
查看文件属性
chattr -i /etc/passwd
解锁
密码有效期 长短限制 要求下次登录时修改密码
vim /etc/login.defs
PASS_MAX_DAYS
这里改了只适用于新建账号
chage -M 30 user00
修改已存在帐号的密码有效期
chage -d 0 xx
强制下次登录改密码
减少记录的命令条数 注销时自动清空历史命令记录
vim /etc/profile
HISTSIZE=50
vim ~/.bash_logout
history -c
clear
终端闲置600秒后自动注销
vim ~/.bash_profile
export TMOUT=600
linux需要安装一些软件,黄狗更新系统yum
自动解决rpm包依赖关系
配置一个yum源
首先得有一个ip地址
/etc/sysconfig.network-scripts/ ifcfgxxx 本地网卡的配置文件
BOOTPROTO 不用dhcp用static
IPV6xxx no
IPADDR=10.11.11.1
NETMASK=255.255.255.0
GATEWAY=10.11.11.254
DNS1=114.114.114.114
Q:这个dns地址怎么回事,好像见过。。
/etc/hostname改成yum.xx.org
/etc/hosts 10.11.11.1 yum yum.xx.org
systemctl restart network.service
hostname 看主机名
卸载光盘 umount /dev/cdrom
mount /dev/cdrom /media/cdrom 换了个挂在的地方
rpm -Uvh vsftpd-3.0.2-xxxx.rpm
cp -rf /media/cdrom/* /var/ftp/yum
里面有个解决依赖关系的db
ftp配置被动模式 比较安全
在/etc/vsftpd/vsftpd.conf里
在connect_from_port_20=YES后面添加
pasv_enable=YES
pasv_min_porv=3001
pasv_max_port=3100
systemctl restart vsftpd.service
netstat -atpn | grep vsftpd
setsebool allow_ftpd_full_access 1
setsebool httpd_enable_ftp_server 1
适用场景:大规模安装linux服务器,需要安装过程统一且标准化
过程:1. 需要一个DHCP服务器
yum install dhcp
cd /usr/share/doc/dhcp-xx/
cp dhcpd.conf.example /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
---
#/etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 10.11.11.0 netmask 255.255.255.0{
range 10.11.11.26 10.11.11.30; // 要改成自己用的
option routers 10.11.11.254;
option broadcast-address 10.11.11.255;
default-lease-time 600;
max-lease-time 7200;
next-server 10.11.11.1; // 指定PXE引导服务器 就是当前服务器ip
filename "pxelinux.0"; // 指定引导文件
}
Q: 这个配置文件的每一行什么意思,配置什么的
---
systemctl start dhcp
systemctl status dhcpd.service
2. tftp和syslinux
tftp 用于远程linux的引导
syslinux提供引导块,引导模块的远程启动服务
yum install tftp-server syslinux
vim /etc/xinetd.d/tftp
把disable=yes改成no
顺便,server的目录是tftp共享的目录
systemctl restart xinetd
netstat -aupn |grep 69
cd /var/lib/tftpboot // tftp的根目录
cp /usr/share/syslinux/pxelinux.0 ./
// 以下是系统光盘的内容
cp /var/ftp/yum/isolinux/vmlinuz ./
inittrd.img
vesamenu.c32
boot.msg
// 然后编辑启动菜单配置文件
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /var/ftp/yum/isolinux/isolinux.cfg pxelinux.cfg/default
vim 这个default
在label linux行前添加
label centos
menu label ^Install CentOS7.1
menu default
kernel vmlinuz
// 目标是ftpxxx 自动化脚本配置文件是xxxks什么的
append initrd=initrd.img inst.stage2=ftp://10.11.11.1/yum inst.ks=ftp://10.11.11.1/ks.cfg.quiet
然后删了menu label Test this ^ media & install CentOS7前面的menu default行删了
3.安装kickstart
yum install system-config-kickstart
system-config-kickstart
kickstart不能配置软件包安装
ks.cfg加上@packages@end之后,保存到/var/ftp
firewall-cmd --permanent --add-port=69/udp
--add-service=dhcp
ftp
--reload
新建的主机自动就默认去用PXE了……猜测是整个网段都会自动走这个流程0 v 0
重置root密码
CentOS 7 与之前的版本不同,当忘记root密码,并采用GRUB2为启动器时,将无法通过单用户模式重置root密码
1、启动系统,并在 GRUB2启动屏显时,按下e键进入编辑模式
2、找到 linux16开头的行 ,按 end键到行尾,输入一个空格键之后再输入 rd.break
Ctrl+x 进入 提示符界面
3、 输入 mount -o remount,rw /sysroot/ 命令 ,重新挂载系统分区 // 此步之前系统分区是只读状态
4、再输入 chroot /sysroot/ 命令 , 改变根
5、修改root密码 此时出现类似乱码的字符,属于正常现象
6、 如果之前系统启用了SELinux ,必须运行 touch /.autorelabel 命令,否则将无法正常启动系统
7、然后按 Ctrl + d 退出
8、输入 reboot 命令重启 , OK
重启后等待时间可能有点长,属于正常现象
这样方便是方便,但是不安全啊,下面有解决方案
为GRUB2菜单加上防编辑密码
第一步:
[root@huawei_plus ~]# grub2-mkpasswd-pbkdf2
输入口令:
Reenter password:
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.8EBF7E924D4F2751C16EDA60B01CCF2132082125CFAE98C932FDC9981AAA64E38615454C214E7BA4195836EC8AF5580B7DB24316ED4F343F501DE3C36C5420D8.783DD1820A3F9FB61264293E2EBDFF83551218B57DCABD63412232E5F5252CB9D0CEC2FDCE7955E86415CFA6D69B6DB019D1D382E99A6C47E96FF3E41CE72F29
第二步:
复制第一步的加粗字符串
vi /boot/grub2/grub.cfg 添加 下面的加粗字体,注意上下文对应
### BEGIN /etc/grub.d/10_linux ###
set superusers="cws" # 注意是 superusers 有 s
password_pbkdf2 cws 此处粘贴第一步复制的加粗字符串
menuentry 'CentOS Linux (3.10.0-862.11.6.el7.x86_64) 7 (Core)'
上面的superuser可以随便定
保存退出,测试
再安装之前那样重置root密码的步骤,按下 e键之后,需要输入用户名(对应于 superusers )和密码(对应于 输入 grub2-mkpasswd-pbkdf2命令后 输入的口令 )
这样,就为 GRUB2菜单加上了防编辑密码
单用户模式重置root密码
在grub 页面输入a,进入修改内核模式
在内核的结尾“/”,输入空格,在输入single,回车
启动系统,进入单用户模式
Passwd root 修改密码
修复MBR
cluster 群集
多台主机 对外表现一个整体
类型 负载均衡 load balancer 一起干
高可用 微软叫故障转移群 一主多备 轮班
高性能运算
keeplived
为 lvs 和 ha设计的一款健康检查公具
系统需求
1、先配置IP地址和主机名
DEVICE=eth0 HWADDR=00:0C:29:BD:A1:6C //保持与UDEV记录一致 ONBOOT=yes BOOTPROTO=static IPADDR=172.16.8.100 NETMASK=255.255.255.0 GATEWAY=172.16.8.2 DNS1=114.114.114.114
HOSTNAME=lnmp.sevenwin.org
172.16.8.165 lnmp.sevenwin.org lnmp
SELINUX=disabled
2、远程安装
3.客户机测试(win7)
4.服务器端其他设置
- 惊群现象:一个事件触发后唤醒多个进程,最后选择一个进程,造成资源浪费
upstream sw_net { server 192.168.1.2:80 weight=2; server 192.168.1.3:80 weight=1; }
1、配置IP地址、主机名,关闭SELinux
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777728
BOOTPROTO=static
ONBOOT=yes
IPADDR=172.16.8.100
NETMASK=255.255.255.0
GATEWAY=172.16.8.2
DNS1=114.114.114.114
DNS2=8.8.8.8 //修改的内容,其它内容省略
[root@localhost ~]# vim /etc/sysconfig/networkHOSTNAME=pt.sevenwin.org
[root@localhost ~]# vim /etc/hosts172.16.8.100 pt.sevenwin.org pt
172.16.8.101 c65.sevenwin.org c65
[root@localhost ~]# vim /etc/selinux/configSELINUX=disabled
[root@localhost ~]# reboot
2、设置NTP服务
[root@pt ~]# yum -y install ntp
[root@pt ~]# ln -sf /usr/share/zoneinfo/posix/Asia/Shanghai /etc/localtime
[root@pt ~]# vim /etc/ntp.conf
restrict 172.16.8.0 mask 255.255.255.0 nomodify notrap
server 210.72.145.44 //这是中国国家授时中心的IP
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
[root@pt ~]# systemctl start ntpd.service
[root@pt ~]# systemctl enable ntpd.service
[root@pt ~]# firewall-cmd --permanent --zone=public --add-port=123/udp
[root@pt ~]# firewall-cmd --zone=public --add-port=123/udp
[root@pt ~]# firewall-cmd --permanent --zone=public --add-port=8140/tcp
[root@pt ~]# firewall-cmd --zone=public --add-port=8140/tcp
3、安装Puppet-Server、启动Puppet-Server
[root@pt ~]# yum -y install ruby
[root@pt ~]# wget https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
[root@pt ~]# rpm -ivh puppetlabs-release-pc1-el-7.noarch.rpm
[root@pt ~]# yum -y clean all
[root@pt ~]# yum -y update
[root@pt ~]# yum install puppetserver –y
[root@pt ~]# vim /etc/sysconfig/puppetserver
JAVA_ARGS="-Xms2g -Xmx2g -XX:MaxPermSize=256m"
[root@pt ~]# vim /etc/profile
PATH=/opt/puppetlabs/bin:$PATH //第52行
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
[root@pt ~]# systemctl enable puppetserver
[root@pt ~]# reboot
4、安装Puppet-Agent
1、先配置IP地址和主机名
SUBSYSTEM==“net”, ACTION==“add”, DRIVERS==“?*”,
ATTR{address}==“00:0c:29:bd:a1:6c”, ATTR{type}==“1”, KERNEL==“eth*”,
NAME=“eth0“ //复制MAC址
DEVICE=eth0
HWADDR=00:0C:29:BD:A1:6C //保持与UDEV记录一致
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.16.8.101
NETMASK=255.255.255.0
GATEWAY=172.16.8.2
DNS1=114.114.114.114
HOSTNAME=c65.sevenwin.org
172.16.8.165 c65.sevenwin.org c65
172.16.8.172 pt.sevenwin.org pt
2、配置任务计划
3、安装Puppet-Agent
4、配置Puppet
PATH=/opt/puppetlabs/bin:$PATH
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
[main]
certname = c65.sevenwin.org
server = pt.sevenwin.org
environment = production
runinterval = 30
5、启动并测试Puppet
6、配置Puppet开发环境(统一控制客户端)
node default{
file{ "/tmp/helloworld.txt":
content => "Hello World !\n";
}
}
5、puppet的工作原理
6、puppet的基本语法
class mariadb{
package{ 'mariadb-server' :
ensure => installed,
}
service{ 'mariadb.service' :
ensure => running,
ensure => true,
start => '/usr/bin/systemctl start mariadb.service',
restart = '/usr/bin/systemctl restart mariadb.service',
stop => '/usr/bin/systemctl stop mariadb.service',
require => Package['mariadb-server'],
}
}
node default{
include mariadb
}
1、配置IP地址、主机名,关闭SELinux
BOOTPROTO=static
ONBOOT=yes
IPADDR=172.16.8.172
NETMASK=255.255.255.0
GATEWAY=172.16.8.2
DNS1=114.114.114.114
DNS2=8.8.8.8 //修改的内容,其它内容省略
HOSTNAME=zbx.sevenwin.org
172.16.8.172 zbx zbx.sevenwin.org
SELINUX=disabled
2、安装“Zabbix安装包”资源存储库
-[root@zbx ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-
6.el7.noarch.rpm
3、安装Zabbix
4、对数据库进行初始化并创建Zabbix数据库
-[root@zbx ~]# systemctl start mariadb.service
-[root@zbx ~]# systemctl enable mariadb.service
-[root@zbx ~]# mysqladmin -u root password 9865321
-[root@zbx ~]# mysql -uroot -pMariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'Z9865321'; MariaDB [(none)]> flush privileges; MariaDB [(none)]> quit
-[root@zbx ~]# zcat /usr/share/doc/zabbix-server-mysql-3.2.6/create.sql.gz | mysql -uroot zabbix -p
5、编辑Zabbix数据库配置文件并启动Zabbix服务
6、修改php.ini,启动Apache,添加防火墙规则DBHost=localhost //第81行 DBName=zabbix //第91行 DBUser=zabbix //第107行 DBPassword=Z9865321 //第115行
-[root@zbx ~]# systemctl start zabbix-server
-[root@zbx ~]# systemctl enable zabbix-server
-[root@zbx ~]# sed -i "s@;date.timezone =@date.timezone = Asia/Chongqing@g" /etc/php.ini
-[root@zbx ~]# systemctl enable httpd.service
-[root@zbx ~]# systemctl start httpd.service
-[root@zbx ~]# firewall-cmd --permanent --zone=public --add-port=10051/tcp
-[root@zbx ~]# firewall-cmd --zone=public --add-port=10051/tcp
7、在WebUI中继续安装
默认即可
默认即可
默认即可
8、在WebUI中登录
9、修改WebUI界面语言为中文
10、被监测端(Agent)部署
172.16.8.101 c65 c65.test.com
172.16.8.100 zbx zbx.test.com
Server=172.16.8.172 //第95行
ServerActive=172.16.8.172 //第136行
BOOTPROTO=static
ONBOOT=yes
IPADDR=172.16.8.172
NETMASK=255.255.255.0
GATEWAY=172.16.8.2
DNS1=114.114.114.114
DNS2=8.8.8.8
HOSTNAME=cti.sevenwin.org
172.16.8.172 cti cti.sevenwin.org
SELINUX=disabled
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = “Pa9865321”; //这里改为建库时的脚本
$database_port = "3306";
$database_ssl = false;
*/1 * * * * php /var/www/html/cacti/poller.php >/dev/null
DB_Host localhost
DB_Database cacti
DB_User cactiuser
DB_Pass Pa9865321
DB_Port 3306
com2sec notConfigUser 172.16.8.172 public
access notConfigGroup "" any noauth exact all none none
view all included .1 80
BOOTPROTO=static
ONBOOT=yes
IPADDR=172.16.8.172
NETMASK=255.255.255.0
GATEWAY=172.16.8.2
DNS1=114.114.114.114
DNS2=8.8.8.8 //修改的内容,其它内容省略
HOSTNAME=ovs.sevenwin.org
172.16.8.172 ovs ovs.sevenwin.org
SELINUX=disabled
unixsocket /tmp/redis.sock
unixsocketperm 700 //找到这两项,把前面的#号去掉。
过程非常漫长,过程中需要一些设置… …
在检查排错过程中,注意FIX给出解决方案… …
admin
#!/bin/bash
WAN_IF="eth1"
WAN_IP="172.16.8.100"
LAN_IF="eth2"
LAN_IP="192.168.11.11"
LAN_NET="192.168.11.0/24"
LAN_WWW_IP="192.168.11.10"
IPT="/sbin/iptables"
MOD="/sbin/modprobe"
CTL="/sbin/sysctl"
$MOD ip_tables
$MOD ip_conntrack
$MOD ipt_REJECT
$MOD ipt_LOG
$MOD ipt_iprange
$MOD xt_tcpudp
$MOD xt_state
$MOD xt_multiport
$MOD xt_mac
$MOD ip_nat_ftp
$MOD ip_conntrack_ftp
$CTL -w net.ipv4.ip_forward=1
$CTL -w net.ipv4.ip_default_ttl=128
$CTL -w net.ipv4.icmp_echo_ignore_all=1
$CTL -w net.ipv4.icmp_echo_ignore_broadcasts=1
$CTL -w net.ipv4.tcp_syncookies=1
$CTL -w net.ipv4.tcp_syn_retries=3
$CTL -w net.ipv4.tcp_synack_retries=3
$CTL -w net.ipv4.tcp_fin_timeout=60
$CTL -w net.ipv4.tcp_max_syn_backlog=3200
$IPT -t filter -X
$IPT -t nat -X
$IPT -t filter -F
$IPT -t nat -F
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
$IPT -t nat -A POSTROUTING -s $LAN_NET -o $WAN_IF -j SNAT --to-source
$WAN_IP
$IPT -t nat -A PREROUTING -i $WAN_IF -d $WAN_IP -p tcp --dport 80 -j
DNAT --to-destination $LAN_WWW_IP
vim /opt/ipfw.w
192.168.11.0/24
220.121.72.85
……
vim /opt/ipfw.b
218.29.30.131
61.45.135.29
121.113.79.81
BLST="/opt/ipfw.b"
for i in $(grep -v "^#" $BLST)
do
$IPT -I INPUT -s $i -j DROP
$IPT -I OUTPUT -d $i -j DROP
$IPT -I FORWARD -s $i -j DROP
$IPT -I FORWARD -d $i -j DROP
done
WLST="/opt/ipfw.w"
for i in $(grep -v "^#" $WLST)
do
$IPT -I INPUT -s $i -j ACCEPT
$IPT -I OUTPUT -d $i -j ACCEPT
$IPT -I FORWARD -s $i -j ACCEPT
$IPT -I FORWARD -d $i -j ACCEPT
done
#!/bin/bash
# 1. 定义基本变量
IPT= "/sbin/iptables"
……
# 3.2 定义默认策略
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
# 3.3 设置filter表中的各种规则
$IPT -A INPUT -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
……
#!/bin/bash
……
# 4.3 设置nat表中的各种规则
$IPT -t nat -A POSTROUTING -s $LAN_NET -o $WAN_IF -j SNAT --to-source
$WAN_IP
$IPT -t nat -A PREROUTING -i $WAN_IF -d $WAN_IP -p tcp --dport 80 -j
DNAT --to-destination $LAN_WWW_IP
# 4.4 设置filter表中的各种规则
$IPT -A FORWARD -d $LAN_NET -i $WAN_IF -m state --state
ESTABLISHED,RELATED -j ACCEPT
……
… …
public (default, active)
interfaces: eno16777728
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
… …
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>RTMP</short>
<description>The RTMP protocol Bala Bala ...</description>
<port protocol="tcp" port="9527"/>
</service>
安全增强型Linux(SELinux)开始是由NSA(国家安全局)启动并加入到Linux系统中的一套核心组件及用户工具,可以让应用程序运行在其所需的最低权限上。SELinux提供了一种灵活的强制访问控制(MAC)系统,且内嵌于Linux Kernel中。SELinux定义了系统中每个“用户”、“进程”、“应用”和“文件”的访问和转变的权限,然后它使用一个安全策略来控制这些实体(用户、进程、应用和文件)之间的交互,安全策略将指定如何严格或宽松地进行检查。
SELinux对系统用户(system users)是透明的,只有系统管理员(root)需要考虑
在他的服务器中如何制定严格的策略。策略可以根据需要是严格的或宽松的。
只有同时满足了“标准Linux访问控制”和“SELinux访问控制”时,主体才能
访问客体。
Security-Enhanced Linux由以下两部分组成
DAC和MAC的区别(root用户)
SeLinux的运行机制
SeLinux伪文件系统
SeLinux配置文件
SeLinux命令工具
策略与规则管理相关命令
假设CentOS安装了apache,网页默认的主目录是/var/www/html,我们经
常遇到这样的问题,在其他目录中创建了一个网页文件,然后用mv移动到网
页默认目录/var/www/html中,但是在浏览器中却打不开这个文件,这很可
能是因为这个文件的SELinux配置信息是继承原来那个目录的,与
/var/www/html目录不同,使用mv移动的时候,这个SELinux配置信息也一
起移动过来了,从而导致无法打开页面,具体请看下面的实例:
cd
echo "Hello" >index.html
ll -Z //可以查看安全上下文关系
mv index.html /var/www/html/
systemctl start httpd.service
使用浏览器访问测试
作如下操作,恢复index.html的安全上下文,再用浏览器访问
cd /var/www/html/
ls -Z ..
restorecon -R /var/www/html/
安全上下文
类型标识符
是安全上下文的主要组成部分,由于历史原因,一个进程的类型通常被称为一个域(domain),“域”和“域类型”意思都一样,我们不必苛刻地去区分或避免使用术语域;通常,我们认为域、域类型、主体类型和进程类型都是同义的,即都是安全上下文中的TYPE
。SELinux和标准Linux的访问控制属性的对比
类型强制(TE)访问控制
基于角色的访问控制(RBAC)
SeLinux中的多级安全
#!/bin/bash
WAN_IF="eth1"
WAN_IP="172.16.8.100"
LAN_IF="eth2"
LAN_IP="192.168.11.11"
LAN_NET="192.168.11.0/24"
LAN_WWW_IP="192.168.11.10"
IPT="/sbin/iptables"
MOD="/sbin/modprobe"
CTL="/sbin/sysctl"
$MOD ip_tables
$MOD ip_conntrack
$MOD ipt_REJECT
$MOD ipt_LOG
$MOD ipt_iprange
$MOD xt_tcpudp
$MOD xt_state
$MOD xt_multiport
$MOD xt_mac
$MOD ip_nat_ftp
$MOD ip_conntrack_ftp
$CTL -w net.ipv4.ip_forward=1
$CTL -w net.ipv4.ip_default_ttl=128
$CTL -w net.ipv4.icmp_echo_ignore_all=1
$CTL -w net.ipv4.icmp_echo_ignore_broadcasts=1
$CTL -w net.ipv4.tcp_syncookies=1
$CTL -w net.ipv4.tcp_syn_retries=3
$CTL -w net.ipv4.tcp_synack_retries=3
$CTL -w net.ipv4.tcp_fin_timeout=60
$CTL -w net.ipv4.tcp_max_syn_backlog=3200
$IPT -t filter -X
$IPT -t nat -X
$IPT -t filter -F
$IPT -t nat -F
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
$IPT -t nat -A POSTROUTING -s $LAN_NET -o $WAN_IF -j SNAT --to-source
$WAN_IP
$IPT -t nat -A PREROUTING -i $WAN_IF -d $WAN_IP -p tcp --dport 80 -j
DNAT --to-destination $LAN_WWW_IP
vim /opt/ipfw.w
192.168.11.0/24
220.121.72.85
……
vim /opt/ipfw.b
218.29.30.131
61.45.135.29
121.113.79.81
BLST="/opt/ipfw.b"
for i in $(grep -v "^#" $BLST)
do
$IPT -I INPUT -s $i -j DROP
$IPT -I OUTPUT -d $i -j DROP
$IPT -I FORWARD -s $i -j DROP
$IPT -I FORWARD -d $i -j DROP
done
WLST="/opt/ipfw.w"
for i in $(grep -v "^#" $WLST)
do
$IPT -I INPUT -s $i -j ACCEPT
$IPT -I OUTPUT -d $i -j ACCEPT
$IPT -I FORWARD -s $i -j ACCEPT
$IPT -I FORWARD -d $i -j ACCEPT
done
#!/bin/bash
# 1. 定义基本变量
IPT= "/sbin/iptables"
……
# 3.2 定义默认策略
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
# 3.3 设置filter表中的各种规则
$IPT -A INPUT -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
……
#!/bin/bash
……
# 4.3 设置nat表中的各种规则
$IPT -t nat -A POSTROUTING -s $LAN_NET -o $WAN_IF -j SNAT --to-source
$WAN_IP
$IPT -t nat -A PREROUTING -i $WAN_IF -d $WAN_IP -p tcp --dport 80 -j
DNAT --to-destination $LAN_WWW_IP
# 4.4 设置filter表中的各种规则
$IPT -A FORWARD -d $LAN_NET -i $WAN_IF -m state --state
ESTABLISHED,RELATED -j ACCEPT
……
… …
public (default, active)
interfaces: eno16777728
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
… …
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>RTMP</short>
<description>The RTMP protocol Bala Bala ...</description>
<port protocol="tcp" port="9527"/>
</service>
安全增强型Linux(SELinux)开始是由NSA(国家安全局)启动并加入到Linux系统中的一套核心组件及用户工具,可以让应用程序运行在其所需的最低权限上。SELinux提供了一种灵活的强制访问控制(MAC)系统,且内嵌于Linux Kernel中。SELinux定义了系统中每个“用户”、“进程”、“应用”和“文件”的访问和转变的权限,然后它使用一个安全策略来控制这些实体(用户、进程、应用和文件)之间的交互,安全策略将指定如何严格或宽松地进行检查。
SELinux对系统用户(system users)是透明的,只有系统管理员(root)需要考虑
在他的服务器中如何制定严格的策略。策略可以根据需要是严格的或宽松的。
只有同时满足了“标准Linux访问控制”和“SELinux访问控制”时,主体才能
访问客体。
假设CentOS安装了apache,网页默认的主目录是/var/www/html,我们经
常遇到这样的问题,在其他目录中创建了一个网页文件,然后用mv移动到网
页默认目录/var/www/html中,但是在浏览器中却打不开这个文件,这很可
能是因为这个文件的SELinux配置信息是继承原来那个目录的,与
/var/www/html目录不同,使用mv移动的时候,这个SELinux配置信息也一
起移动过来了,从而导致无法打开页面,具体请看下面的实例:
cd
echo "Hello" >index.html
mv index.html /var/www/html/
systemctl start httpd.service
使用浏览器访问测试
作如下操作,恢复index.html的安全上下文,再用浏览器访问
cd /var/www/html/
ls -Zd ./
restorecon -R /var/www/html/