S小魚仔S 網誌搜尋

2017年9月25日 星期一

S小魚仔S Influxdb 設定 Https 證書加密

1. 下載「Win32OpenSSL」產生「Private Key」(私鑰) 和「Ceritficate」(證書) 接著合併「Private Key」與「Ceritficate」。



切換「Bin」目錄夾
CD C:\OpenSSL-Win64\bin


使用「openssl.exe」產生「Private Key
openssl genrsa -out D:\influxdb_key.pem 2048

使用「openssl.exe」導入「Private Key」 產生「csr
openssl req -new -key D:\influxdb_key.pem -out D:\influxdb_cert.csr



合併「Private Key 與「Ceritficate
openssl x509 -req -days 3650 -in D:\influxdb_cert.csr -signkey D:\influxdb_key.pem -out D:\influxdb_cert_key.pem




2. 編輯「influxdb.conf」配置「加密

編輯「vi /etc/influxdb/influxdb.conf

啟用「加密
https-enabled = true

載入「influxdb_cert_key.pem」( 合併 Ceritficate 與 Private Key )
https-certificate = "/opt/influxdb_cert_key.pem"

載入「Private Key
https-private-key = "/opt/influxdb_key.pem"




#重新啟動「InfluxDB
systemctl restart influxd

#檢查「InfluxDB」狀態
systemctl status influxd


3. 設定「Telegraf (客戶端)」使用「Https」加密傳輸

編輯「vi /etc/telegraf/telegraf.conf

urls = ["https://192.168.8.26:8086"]

insecure_skip_verify = true

#重啟「telegraf」客戶端
systemctl restart telegraf

#檢查「telegraf」狀態
systemctl status telegraf


參考資料
RiCo技術農場」-「Enable https for influxdb
RiCo技術農場」-「How to set up HTTPS with Telegraf

2017年9月19日 星期二

S小魚仔S PowerShell 執行 Exchange 2013 EMS Script 腳本

1. 設定「PowerShell」賦予「執行」權限


檢查「Get-ExecutionPolicy」權限,若如下圖「所示」,接著往下繼續..
Get-ExecutionPolicy –List | FL

修改為「RemoteSigned」執行權限
Set-ExecutionPolicy "RemoteSigned"

2. 建立「Exchange - PowerShell」( xxx.ps1)

#==載入「Exchange-2013」模組==
PS. 這裡「紅色」部份「需要」輸入 Exchange Server「FQDN
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://mail.jumi.com/PowerShell/ -Authentication Kerberos
Import-PSSession $Session

#===設定「日期」變數=====

$CurrentDate = Get-Date
#===設定「日期」轉「字串」=====
$CurrentDate = $CurrentDate.ToString('MM-dd-yyyy_hh-mm-ss')

#==輸入「Exchange Script」指令==
PS. 指令不多做「解釋」有需要「自行學習
Get-MessageTrackingLog -Server mail -ResultSize Unlimited -Start "9/18/2017 00:00 AM" -End "9/19/2017 11:00 PM" -Sender "xxxxx@gmail.com" | Select-Object timestamp,source,eventid,sender,recipients,messagesubject,recipientstatus,originalclientip,clientip,serverip | sort-object -Property timestamp | Out-File C:\Ex_Log\exchange_$CurrentDate.log

執行「PowerShell」腳本


成功輸出「Exchange」Log

3. 設定 PowerShell 「排程」(schedule) 執行

選擇「創建基本任務

輸入「任務名稱

選擇「排程」每天何時執行

選擇「開始」時間

選擇「啟動程序

1.輸入「powershell
2. 添加參數 輸入「-file "C:\Users\Mail\Exchange.ps1"
PS. PowerShell 檔案,不要用中文命名

這裡非常重要
1. 選擇「不管用戶是否登入都要運行
2. 使用「最高權限運行
3. 配置「Windows Server 2012 R2

1.選點「觸發器」頁面
2. 點選「觸發器」排程,可以修改「執行時間


最後輸入有執行權限「帳號和「密碼」即可

參考資料

2017年9月14日 星期四

S小魚仔S Centos 7 安裝 Influxdb

最近剛好在測試日誌服務器,搭建了「Influxdb」,InfluxDB是一個由 InfluxData 開發的開源時序型資料庫,它由 Go語言寫成,著力於高性能地查詢與存儲時序型數據。InfluxDB被廣泛應用於存儲系統的監控數據,IoT行業的實時數據等場景。


==修改「電腦」名稱====

hostnamectl set-hostname Influxdb

==關閉「selinux 」======
開機 不「啟用」selinux 才不會阻擋「服務連線」服務
vi /etc/sysconfig/selinux
SELINUX=disabled
reboot

==Influxdb- Firewall========

Influxdb Web 8083/TCP

#加入「防火牆」規則
sudo firewall-cmd --add-port=8083/tcp --permanent

Influxdb API 8086/TCP

#加入「防火牆」規則
sudo firewall-cmd --add-port=8086/tcp --permanent 

#重新啟動「防火牆」
sudo firewall-cmd --reload

#檢查「Firewall」設定「規則」
firewall-cmd --list-all --permanent


======InfluxDB v1.3.5 (Server)==========

#更新「yum」資料庫來源
yum install epel-release -y

#加入「influxdb」yum 資料庫來源
vi /etc/yum.repos.d/influxdb.repo

[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key

#安裝「influxdb
sudo yum install influxdb -y

#啟動「InfluxDB
systemctl start influxd

#開機自動啟動「InfluxDB
systemctl enable influxdb.service


#進入「influx」設定「資料庫
/usr/bin/influx

#建立「帳號」(admin) 和「密碼」(admin) 允許最高權限
CREATE USER "admin" WITH PASSWORD 'admin' WITH ALL PRIVILEGES

#建立「資料庫」為「collections
CREATE DATABASE "collections"

#編輯「influxdb.conf」允許「透過」Web API 獲取數據。
PS. 可搭配「Grafana」下載「Grafana Dashboard」套用。

vi  /etc/influxdb/influxdb.conf

[http]
  enabled = true
  bind-address = ":8086"
  auth-enabled = true
  log-enabled = true
  write-tracing = false
  pprof-enabled = false
  https-enabled = false
  https-certificate = "/etc/ssl/influxdb.pem"

#重新啟動「InfluxDB」
systemctl restart influxd

#檢查「端口」服務
netstat -ltunp | grep -e 8086

參考資料

2017年9月7日 星期四

S小魚仔S Centos 7 啟用 SSH 公鑰 與 私鑰 設定

1. 使用「ssh-keygen -f root」產生 公鑰 和 私鑰,會產生「root」和「root.pub」兩份檔案。

輸入「ll」檢查「root」、「root.pub

2. 下載「Putty_Key_Generator」載入「root」並 產生「Private Key」( *.ppk )

載入「root」key

儲存「私鑰」( Private Key)


3. 佈署  Centos「KEY」 公鑰 授權「帳號」和「主機
PS.「root」是「帳號」,「192.168.2.101」主機 IP

ssh-copy-id -i root.pub root@192.168.2.101

4. 編輯「vi /etc/ssh/sshd_config」配置檔 啟用「Key」認證

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys


5. 重啟「sshd」服務,檢查「KEY」位置

systemctl restart  sshd.service

ll /root/.ssh



6. 使用「遠端登入工具」PuttyRoyalts..等載入「Private Key」( *.ppk ) 使用「帳戶」登入即可。


參考資料
史帝芬心得筆記」-「ssh 公鑰認證登入

2017年9月6日 星期三

S小魚仔S ELK 配置 Logstash 收集 Nginx Access Log

因為一個機緣巧合下發現如何使用「Nginx」Log 傳送給「ELK」做分析,本篇文章並不會教各為如何搭建「ELK ( Elasticsearch )、( Logstash )、( Kibana )」和「Nginx」直接切入重點。

 一. 配置「Nginx」日誌為「JSON」格式。
PS. 建議先將「內容」貼到「Notepad++」編碼為「UTF-8」。

vi /etc/nginx/nginx.conf  (Default)


#==========Nginx Log Output=============

log_format main  '{"@timestamp":"$time_iso8601",'
                        '"@source":"$server_addr",'
                        '"hostname":"$hostname",'
                        '"ip":"$http_x_forwarded_for",'
                        '"client":"$remote_addr",'
                        '"request_method":"$request_method",'
                        '"scheme":"$scheme",'
                        '"domain":"$server_name",'
                        '"referer":"$http_referer",'
                        '"request":"$request_uri",'
                        '"args":"$args",'
                        '"size":$body_bytes_sent,'
                        '"status": $status,'
                        '"responsetime":$request_time,'
                        '"upstreamtime":"$upstream_response_time",'
                        '"upstreamaddr":"$upstream_addr",'
                        '"http_user_agent":"$http_user_agent",'
                        '"https":"$https"'
                        '}';


瀏覽「Nginx」網站「確認」Nginx Log 為「JSON」格式


二. 配置「Logstash」允許「input」為「JSON」搭配「Filter」插件功能。
PS. 建議先將「內容」貼到「Notepad++」編碼為「UTF-8」。
PS. 「filter」和「mutate」是「插件」功能,為了「字段」轉型。
PS. 「geoip」可以分析「國家、經緯度、省份....等」前提是「Internet」必須要通。

#==========Logstash Log Intput=============

input {
        beats {          #輸入「監聽」「TCP 5043」端口,接收来自 Filebeat 的 Log
        port =>  "5043"            
        codec => "json"
        }
}


filter {

        mutate {
        convert => [ "status","integer" ]
        convert => [ "size","integer" ]
        convert => [ "upstreatime","float" ]
        remove_field => "message"
        }

        geoip {
        source => "ip"
        }
}

output {
  elasticsearch { hosts => ["localhost:9200"] }  #輸出「結果」到「elasticsearch」「TCP 9200」端口。
  stdout { codec => rubydebug }
}



三. 配置「Filebeat」(ELK Agent) 傳送「Nginx Log」至「Logstash

filebeat.prospectors:
- input_type: log                      #輸入 type「log」
  paths:
    - /var/log/nginx/access.log        #指定推送日誌「Log」文件
  fields:
    host_ip: 192.168.8.24             #告知「來源」IP 位址
    tags: ["nginx"]                   #設定「標籤」
output.logstash:

  hosts: ["192.168.8.25:5043"]        #指定接收Logstash





最後就是檢查「ELK」數據日誌「結果

同時可以配合「Grafana Dashboards」展示「數據」。

參考資料
Blog.csdn.net」-「ELK测试笔记:Filebeat与 Logsmash 写入 Redis
ELK Web Site」-「Plugins-filters-mutate