(第十四周作業(yè)) part1
1塞蹭、搭建時間服務器孽江,日志服務器并簡述sudo安全切換。
1)搭建時間服務器:
早期是用ntp服務:
#yum install ntp
其配置文件是/etc/ntp.conf.
配置文件內容中server?表示以誰為時間服務器番电,restrict?表示允許哪個IP的機器來同步我的時間岗屏。? 如果restrict后面指定自己127.0.0.1則不允許別人來同步時間(即只是做為客戶端,而不做為服務端)漱办。
centos7以后開始使用chrony做時間服務器这刷,chrony兼容NTP服務。監(jiān)聽123(傳統(tǒng)NTP服務端口)和323(chrony服務端口)娩井,這樣客戶端既可以是ntp也可以是chrony暇屋。
接下來以服務端和客戶端都是chrony來說明時間同步,
A機:192.168.184.136(時間服務器)洞辣,B機:192.168.184.138(客戶端)
root用戶登錄A機:
安裝chrony
#?yum install chrony -y
修改配置文件
# vi /etc/chrony.conf
server 0.centos.pool.ntp.org iburst
allow 192.168.184.0/24
server來指定上一級時間同步服務器咐刨,allow表示允許那個IP段以本機為時間服務器同步時間。這里指定 192.168.184.0/24網段
配置完重啟chrony服務
#systemctl? restart? chronyd.service
#ss -tunlp? ?查看端口323
root用戶登錄B機:
安裝chrony
#?yum install chrony -y
修改配置文件
# vi /etc/chrony.conf
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 192.168.184.136 iburst
注釋掉其他的server扬霜,配置以A機為時間服務器
然后重啟客戶端的chrony服務
# systemctl? restart? chronyd.service
# systemctl enable chronyd.service 開機自啟動服務
查看同步源(時間服務器)
# chronyc sources
查看同步狀態(tài)
#chronyc sourcestats
2)搭建日志服務器
為了更好的管理應用程序和操作系統(tǒng)的日志定鸟,使用日志服務器進行管理,我們需要用到rsyslog,它是由早期的syslog的升級版著瓶。它可以收集系統(tǒng)引導啟動联予、應用程序啟動、應用程序(尤其是服務類應用程序)運行過程中的事件材原。
記錄的格式為:事件產生日期和時間? 主機? 進程PID? 事件內容沸久。
rsyslog的特性:多線程,支持TCP、UDP华糖、SSL麦向、TLS、RELP協(xié)議客叉∷薪撸可存儲信息于日志、mysql等數(shù)據(jù)庫管理系統(tǒng)兼搏÷盐浚可以對日志信息進行過濾,可以自定義輸出格式佛呻。
安裝rsyslog
#yum install rsyslog
它的主程序是rsyslogd
它的配置文件是/etc/rsyslog.conf,? /etc/rsyslog.d/*.conf
主配置文件rsyslog.conf?主要由三個部分組成:?
MODULES? 表示加載的模塊列表
GLOBAL DIRECTIVES? ?表示全局的配置
RULES? ?表示日志記錄規(guī)則(重點)
其中:
MODULES段的格式為
$ModLoad? 模塊名稱
如果模塊名稱為im開起表示輸入模塊裳朋,如果以om開頭表示輸出模塊
GLOBAL DIRECTIVES?段主要定義一些常用設置,比如:
$WorkDirectory? 表示工作目錄
RULES?段的格式為:
facility.priority? target
其中
facility:設施吓著,從功能上或程序上對日志收集進行分類鲤嫡,如:auth,authpriv,cron,daemon,kern,lpr,mail,mark,news,security,user,uucp,local0~local7,syslog
priority:優(yōu)先級送挑,日志級別,如下(從左到右,由低到高):debug,info,notice,warn(warning),err(error),crit(critical),alert,emerg(panic)
指定級別的方式:
*:所有級別;
none:沒有級別;
priority:此級別以及高于此級別的所有級別)
=priority:僅此級別;
一般要求日志級別為warn暖眼,即warn以及warn以上級別的日志要記錄惕耕。
生產上一般不會開debug級別的日志,因為日志記錄太多會導致io繁忙诫肠。
target:日志寫入目標
文件:把日志事件寫入到指定的文件中司澎,日志文件通常位于/var/log目錄下,
文件路徑前面加"-"表示異步寫入文件;
用戶:將日志事件通知給指定的用戶栋豫,通過將信息發(fā)送給登錄到系統(tǒng)上的用戶的終端進行的;
日志服務器:@host 挤安,把日志發(fā)送到指定的服務器主機,
要保證host日志服務器在tcp或udp協(xié)議的514端口有監(jiān)聽并提供日志服務丧鸯。
管道:? | COMMAND? 送到某一命令進行處理
接下來做一個日志服務器和客戶端服務器蛤铜,把客戶端的服務內容提交到日志服務器上。
A機:192.168.184.136(日志服務器)骡送,B機:192.168.184.138(客戶端)
在日志服務器(A機)上:
#?yum install rsyslog
修改配置文件
# vi? /etc/rsyslog.conf
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
以上配置行的注釋去掉后就會開啟對tcp和udp協(xié)議的514端口進行監(jiān)聽昂羡。
重啟rsyslog服務
#systemctl restart rsyslog.service
#ss -tunl? 查看有514端口監(jiān)聽。
在客戶端服務器(B機)上
#?yum install rsyslog
修改配置文件
# vi? /etc/rsyslog.conf
#*.info;mail.none;authpriv.none;cron.none? ? ? ? ? ? ? ?/var/log/messages
*.info;mail.none;authpriv.none;cron.none? ? ? ? ? ? ? ? @192.168.184.136
把它的target?改為? @日志服務器IP
然后重啟客戶端的rsyslog服務
#systemctl restart rsyslog.service
這樣就不會有日志記錄到B機的/var/log/message中了摔踱。而是記錄到日志服務器A上虐先,由日志服務器上的配置文件決定日志記錄到哪里。由我們沒有改為A機上RULES?日志規(guī)則所以是寫入到日志服務器上的/var/log/message(為了較好的看出效果派敷,需要事先設置不同的主機名)
接下來把日志保存的mysql中蛹批。
在日志服務器(A機)上運行:
安裝rsyslog-mysql的模塊
# yum install rsyslog-mysql
查看安裝文件位置
#? rpm -ql rsyslog-mysql
安裝mariadb數(shù)據(jù)庫
# yum install mariadb-server??mariadb
# vi? /etc/my.cnf.d/server.cnf
[mysqld]
skip_name_resolve=ON
innodb_file_per_table=ON
啟動數(shù)據(jù)庫并導入數(shù)據(jù)
systemctl start mariadb.service
#?mysql
#? mysql?
mysql>GRANT ALL ON Syslog.* TO 'rsyslog'@'192.168.184.%' IDENTIFIED BY 'rsyspass';
mysql>?flush privileges;
mysql>quit;
修改日志服務器上的rsyslog配置文件
# vi /etc/rsyslog.conf
#### MODULES ####
$ModLoad ommysql
#### RULES ####
*.info;mail.none;authpriv.none;cron.none :ommysql:192.168.184.136,Syslog,rsyslog,rsyspass
加載ommysql模塊,并配置target為ommysql 篮愉,
后面這串內容為:ommysql:數(shù)據(jù)庫主機,數(shù)據(jù)庫名,數(shù)據(jù)庫用戶腐芍,數(shù)據(jù)庫密碼。
然后重啟rsyslog.service
# systemctl restart rsyslog.service
在B機上登錄用戶和登出用戶操作试躏,再查一下A機的數(shù)據(jù)庫發(fā)現(xiàn)有新的記錄產生猪勇。
再接下來做一個WEB展示接口:
安裝lamp組合
# yum install httpd php php-mysql php-gd -y
安裝loganalyzer
# tar xf
#? cp? -r? loganalyzer-4.1.7.tar.gz
#? ?cp -r???loganalyzer-4.1.7/src? ?/var/www/html/loganalyzer
#? ?cp -r???loganalyzer-4.1.7/contirb/*.sh? ?/var/www/html/loganalyzer/
#? ?cd? /var/www/html/loganalyzer/
#? chmod? +x? *.sh
#./configure.sh
# service httpd start
然后通過URL訪問:
http://A機IP/loganalyzer
#./secure.sh
3)sudo?安全切換
sudo?能夠讓獲得授權的用戶以另外一個用戶(一般為root用戶)的身份運行指定的命令
授權配置文件/etc/sudoers,但是一般使用visudo命令進行編輯颠蕴。因為誤操作引起系統(tǒng)異常泣刹。
授權配置文件的格式:
users? hosts=(runas)? ?commands
含義是,users列表中的用戶(組)犀被,可以在hosts列表的位置上椅您,以runas用戶的身份來運行commands命令列表中的命令。
各個字段可能的值?為:
users:? sudo命令的發(fā)起用戶
用戶名?或uid
%用戶組名? 或%gid? ?(這里要注意用戶需把基本組切換為該用戶組寡键,才能使用sudo)
User_Alias 用戶別名
hosts:? 允許的地址
ip地址
主機名
NetAddr
Host_Alias?主機別名
runas:? ?以某一用戶的身份執(zhí)行
用戶名?或uid
Runas_Alias 用戶別名
commands:?指定的命令列表
command(命令建議使用完整的絕對路徑)
掀泳!command?表示禁止某一命令
directory
sudoedit:特殊權限,可用于向其它用戶授予sudo權限
Cmnd_Alias? ? 命令別名
這幾個字段中hosts,runas, commands都可以用ALL來表示所有员舵。
定義別名的方法:
ALIAS_TYPE NAME=item1,item2,item3,...
NAME:別名名稱脑沿,必須使用全大寫字符
ALIAS_TYPE :User_Alias,Host_Alias马僻,Runas_Alias 捅伤,Cmnd_Alias
sodu命令執(zhí)行時會要求用戶輸入自己的密碼,為了避免頻繁驗密與安全其見巫玻,能記錄成功認證結果一段時間,默認為5分鐘祠汇,即5分鐘內不需要再驗證用戶密碼仍秤。
以sudo的方式來運行指定的命令
sudo? ?[options]? COMMAND
-l? 列出sudo配置文件中用戶能執(zhí)行的命令
-k? 清除此前緩存用戶成功認證結果,之后再次運行sudo時要驗證用戶密碼可很。
如果想要讓用戶輸入部分命令時不需要進行密碼驗證诗力,在sudo配置文件中commands列表部分,可以在命令列表前面加上"NOPASSWD"我抠,則其后的命令不需要密碼苇本,如果某些命令又需要密碼就在前面加上“PASSWD”,所以commands列表可以為這種格式:
NOPASSWD? 不需要密碼的命令列表??PASSWD? 需要密碼的命令列表
安全提示:在sudo配置文件中
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
上面配置中root用戶這行沒有問題菜拓,但是%wheel這行要注意瓣窄,如果把某用戶加入到%wheel組,當用戶把基本組切換為wheel組時就可以像root用戶一樣運行命令,較有風險的命令舉例如下:
sudo su - root? ? 不需要密碼就可以切換到root用戶
sudo? passwd? root? ? 修改root用戶密碼纳鼎,不需要輸入原密碼俺夕。
建議把%wheel改為
%wheel ALL=(ALL)? ?ALL,!/bin/su,!/usr/bin/passwd root
第二題在part2中,內容過長無法發(fā)布贱鄙,所以只能分開寫劝贸,這里附上第二題的鏈接地址:
nginx、時間服務器逗宁、日志服務器映九、sudo (part2)? ? ? http://www.reibang.com/p/830e309ad240