瀏覽標籤:

Server

IIS 網站強制使用 https 加密連線

在這篇 IIS 使用 Let’s Encrypt 的 SSL 免費憑證 – 多站台申請 提到了免費SSL憑證申請,現在我們要申請完後要限制每個網站都只能用https瀏覽的話,就必須用web.config來將使用者自動轉移到https的網址上,廢話不多說教學如下。

  • 在要移轉的網域資料夾下新增檔案web.config,內容如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    	<system.webServer>
    		<rewrite>
    			<rules>
    				<rule name="HTTP to HTTPS redirect from:https://blog.exfast.me" stopProcessing="true">
    					<match url="(.*)" />
    					<conditions>
    					  <add input="{HTTPS}" pattern="off" ignoreCase="true" />
    					</conditions>
    					<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
    				</rule>
    			</rules>
    		</rewrite>
    	</system.webServer>
    </configuration>

新增完畢後無須重啟立即生效,現在輸入http網址看看會不會轉跳到https吧!

       

IIS 使用 Let’s Encrypt 的 SSL 免費憑證 – 多站台申請

先前有教大家使用 IIS 使用 Let’s Encrypt 的 SSL 免費憑證 ,不知道各位有沒有發現到若多站台都要申請免費SSL的時候,會發生申請一個憑證另一個站台就會掛掉的問題,現在來教大家怎麼用一個憑證涵蓋全部的站台囉!

這邊可以省略新增web.config的動作,因為程式會自動幫你新增唷!

  1. 對著解壓縮後的資料夾按著Shift+右鍵選擇在此處開啟命令視窗(W)
    圖一
  2. 輸入指令(Help)
    letsencrypt.exe --san

    IIS 使用 Let’s Encrypt 的 SSL 免費憑證 - 多站台申請 - 01

  3. 輸入S產生一個用於複數站台的憑證
    IIS 使用 Let’s Encrypt 的 SSL 免費憑證 - 多站台申請 - 02
  4. 輸入你想要新增的站台編號,範例為:1,2,3,4,5
    IIS 使用 Let’s Encrypt 的 SSL 免費憑證 - 多站台申請 - 03
  5. 完成!

延伸閱讀:IIS 網站強制使用 https 加密連線

       

Selinux 安全性設定造成php-mysql無法正常連線

今天在測試Google Cloud SQL的時候,明明權限設定沒有問題,但不知為何在我CentOS上面就是無法執行mysql_connect函式,搞了幾個小時,發現又是Selinux安全性在搞鬼,找到問題來源自然好解決。

  1. 取得 selinux 和httpd有關的參數
    getsebool -a | grep 'httpd'

    未命名

  2. 把他打開就可以了
    setsebool httpd_can_network_connect_db 1
       

CentOS 7.X fail2ban防止駭客暴力破解密碼

每次看到我的SSH登入LOG都一堆嘗試紀錄,看來真的有很多無聊人士在那邊try我的密碼,就找了fail2ban來防止無聊人士。

 

  1. 安裝fail2ban
    sudo yum install fail2ban
  2. 打開文件/etc/fail2ban/jail.conf設定規則
    搜尋

    [sshd]

    在下方增加

    enabled = true
  3. 搜尋[DEFAULT],設定相關參數
    白名單

    ignoreip = 127.0.0.1/8

    禁止秒數

    bantime  = 3600

    依據秒數(例:在3600秒內錯誤5次則BAN掉)

    findtime = 3600

    嘗試次數

    maxretry = 5
  4. 開啟服務與日後開機自動啟用
    sudo service fail2ban start
    sudo chkconfig fail2ban on

 

補充指令

查詢已ban掉的IP清單

fail2ban-client status sshd

解除ban

fail2ban-client set sshd unbanip IPADDRESS
       

CentOS 7.X 安裝VPN PPTP

  1. 安裝yum第三方EPEL套件庫
    sudo yum install epel-release -y

    清除快取

    sudo yum clean all -y

    更新套件庫

    sudo yum update -y
  2. 安裝PPTP
    sudo yum install ppp pptpd -y

    01

  3. 備份設定擋
    cp /etc/pptpd.conf /etc/pptpd.conf.bak
  4. 打開/etc/pptpd.conf,拉到最下面新增
    localip 10.0.10.1
    remoteip 10.0.10.2-254
  5. 備份設定擋
    cp /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak
  6. 搜尋ms-dns,將前面#去掉如下
    ms-dns 8.8.8.8
    ms-dns 8.8.4.4
  7. 備份設定擋
    cp /etc/sysctl.conf /etc/sysctl.conf.bak
  8. 將下面的設定貼上去
    net.core.wmem_max = 12582912
    net.core.rmem_max = 12582912
    net.ipv4.tcp_rmem = 10240 87380 12582912
    net.ipv4.tcp_wmem = 10240 87380 12582912
    net.core.wmem_max = 12582912
    net.core.rmem_max = 12582912
    net.ipv4.tcp_rmem = 10240 87380 12582912
    net.ipv4.tcp_wmem = 10240 87380 12582912
    net.core.wmem_max = 12582912
    net.core.rmem_max = 12582912
    net.ipv4.tcp_rmem = 10240 87380 12582912
    net.ipv4.tcp_wmem = 10240 87380 12582912
    net.ipv4.ip_forward = 1
  9. 打開/etc/rc.d/rc.local,新增設定
    iptables -t nat -A POSTROUTING -s 10.0.10.0/24 -o eth0 -j MASQUERADE
  10. 設定防火牆
    firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -i eth0 -p tcp --dport 1723 -j ACCEPT
    firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p gre -j ACCEPT
    firewall-cmd --permanent --direct --add-rule ipv4 filter POSTROUTING 0 -t nat -o eth0 -j MASQUERADE
    firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ppp+ -o eth0 -j ACCEPT
    firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth0 -o ppp+ -j ACCEPT
    firewall-cmd --reload
  11. 設定帳號密碼/etc/ppp/chap-secrets
    username pptpd password *
  12. 啟動pptp
    service pptpd start
    chkconfig pptpd on

參考:

  1. CentOS 7 快速部署 PPTP VPN 服務
  2. Setup PPTP Server on CentOS
       

CentOS 7.X Lamp環境安裝 (Linux+Apache+MariaDB+PHP)

看到網路上的人都推說,Linux Server使用CentOS架設比較適合,從預設開啟防火牆就知道了,我就來試試看CentOS與目前本站使用的Ubuntu Server差在哪。

安裝CentOS與更新套件清單

  1. CentOS官方網站下載最新版CentOS-7-x86_64-DVD-1511.iso,安裝過程就省略了,本人是使用最小安裝,所以只有指令介面,反正要當Server使用,如果安裝GUI的話反而浪費資源對吧?
  2. Ubuntu與CentOS安裝套件的方式有點不太一樣,Ubuntu是使用apt-get這個指令來安裝,但CentOS是使用yum來安裝套件,這點需要注意一下。首先先更新一下列表吧,使用管理員權限的帳號輸入
    sudo yum update -y

    -y 是忽略詢問是否同意直接更新

安裝Apache網頁伺服器

  1. 安裝前記得先使用上面的指令更新套件清單唷,不然可能會有奇怪的問題。
  2. 輸入指令
    sudo yum install httpd -y
  3. 安裝完畢後接著就要啟用服務拉,輸入指令
    service httpd start

安裝MariaDB(MySQL)資料庫伺服器

  1. 在CentOS 7.X中MySQL是被替換成MariaDB的,所以就借此也來體驗看看MariaDB的資料庫囉。
    輸入指令

    sudo yum install mariadb mariadb-server -y

    這樣就安裝成功囉!
    01

  2. 來啟動服務吧
     service mariadb start

    01

設定MariaDB伺服器

  1. 安裝完畢後,就來設定一些資料庫的基本設定吧!
    輸入指令

    /usr/bin/mysql_secure_installation

    這裡因為是第一次安裝,所以直接按Enter繼續即可。
    01

  2. 是否要設定root的密碼,輸入y開始設定
    01
  3. 重複輸入兩次相同的密碼
    01
  4. 是否要刪除匿名帳號,輸入y同意刪除,不然日後會有很多安全性問題
    01
  5. 是否要開放root管理員透過外網登入,這邊請輸入y限制管理員只能從本地連線較為安全
    01
  6. 是否刪除test資料庫輸入y
    01
  7. 是否重新載入權限表輸入y
    01
  8. 設定完成!
    01

安裝PHP+phpMyAdmin管理資料庫

  1. 安裝php與連接資料庫套件
    sudo yum install php php-mysql -y

    01

  2. 安裝yum第三方EPEL套件庫
    sudo yum install epel-release -y

    清除快取

    sudo yum clean all -y

    更新套件庫

    sudo yum update -y
  3. 安裝phpMyAdmin
     sudo yum install phpmyadmin -y

    01

  4. 重新啟動網頁伺服器
     service httpd restart

設定防火牆

  1. 永久允許網頁伺服器通過防火牆
    sudo firewall-cmd --add-service=http --permanent
  2. 若需要https服務則輸入
    sudo firewall-cmd --add-service=https --permanent

    查詢防火牆規則

    firewall-cmd --list-all --permanent

    --permanent為永久規則

  3. 重新啟動防火牆
     service firewalld restart

設定phpMyAdmin

  1. 預設除了本地是不允許訪問phpMyAdmin,但因為我們現在要設定所以需要修改一下預設值,使用WinSCP連線到主機上面打開
    /etc/httpd/conf.d/phpMyAdmin.conf
  2. 找到
    <RequireAny>
       Require ip 127.0.0.1
       Require ip ::1
    </RequireAny>

    Require ip ::1下方新增自己的IP

    <RequireAny>
       Require ip 127.0.0.1
       Require ip ::1
       Require ip 你的IP
    </RequireAny>
  3. 重啟網頁伺服器
    service httpd restart
  4. 這樣就可以正常登入囉!
    01

 

開機自動啟動服務

每次開機都要手動啟用服務,這樣實在太麻煩了,輸入以下指令可以在每次開機後自動啟用服務

chkconfig httpd on
chkconfig mariadb on

 

參考:

  1. [Centos7] 新的防火牆firewalld
  2. Installing LAMP (Linux, Apache, MariaDB, PHP/PhpMyAdmin) in RHEL/CentOS 7.0
       

IIS 使用 Let’s Encrypt 的 SSL 免費憑證

  1. 首先在你的IIS伺服器上新增一個web.config檔案,這樣他才可以識別等等要新增的驗證檔案,加以確認這個網域是你的。
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <staticContent>
                <mimeMap fileExtension="." mimeType="text/plain" />
            </staticContent>
        </system.webServer>
    </configuration>
  2. 接著到這個下載letsencrypt-win-simple.v1.9.0.zip,解壓縮到你的Server上面,對著解壓縮後的資料夾按著Shift+右鍵選擇在此處開啟命令視窗(W)
    圖一
  3. 輸入指令如圖二(Help)
    letsencrypt.exe --accepttos --manualhost 網域名稱 --webroot wwwroot路徑
    

    圖二

  4. 結果如圖三,這裡顯示是否替換現有的憑證,我選擇Y (沒出現這段沒關係,可能是我已經安裝過)
    圖三
  5. 這裡詢問是否要指定使用者,選擇N
    圖四
  6. 看到圖五這裡就表示憑證已經自動放入你的IIS裡面了
    圖五
  7. 開啟IIS管理介面繫結->新增->類型(https)->連接埠(443)->主機名稱(剛剛申請的網域名稱)->SSL(剛剛產生的新憑證)
    圖六
  8. 測試一下SSL是否正常顯示吧!
    圖七

延伸閱讀:IIS 使用 Let’s Encrypt 的 SSL 免費憑證 – 多站台申請

       

MySQL 修改 timeout 時間以改善效能

環境:Ubuntu Server 15.10 x64

剛剛在後台發現一堆連線數以sleep狀態卡在那,
感覺就怪怪的,如果沒有使用的話為什麼不會timeout呢?
查了一下才發現,

SHOW variables;

0
原來mysql預設的數字是八小時…
這也太久了吧,不會造成連線數都卡死嗎??
於是乎開始修改找資料嘗試修改,
不知道為何,我的lamp套件與別人的安裝路徑都不一樣,
最後我是在

/etc/mysql/mysql.conf.d

裡面加上下面這幾行,儲存重開mysql服務後解決

# 防止連線數卡死
wait_timeout = 180
interactive_timeout = 180

 

參考1:http://note.tc.edu.tw/421.html

參考2:http://dba.stackexchange.com/questions/1558/how-long-is-too-long-for-mysql-connections-to-sleep

       

Apache 使用 Let’s Encrypt 的 SSL 免費憑證

SSL憑證服務,用於建立瀏覽器和網站伺服器之間的安全通道,提供伺服器身分鑑別及資料傳輸加密。 透過SSL機制建立一個安全通道,保護網路使用者所傳輸的個人資料(如信用卡號、帳號、密碼等)在傳輸過程中不被駭客截取或竄改,保護網站用戶個人資料,強化網路使用者對於網路交易信心。

  1. 下載官方自動安裝憑證程式
    sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
  2. 進入剛剛下載的資料夾
    cd letsencrypt
  3. 將網域輸入(如有多網址則輸入多次,批量會出錯)
    ./letsencrypt-auto --apache -d example.com
  4. 程式會幫你自動加載SSL資料進conf,所以無需做任何設定

 

若無則手動加入:

<IfModule mod_ssl.c>
    <VirtualHost www.example.com:443>	
	#管理者郵箱 
	ServerAdmin [email protected]
	#網站名稱 
	ServerName abc
	#網站別名
	ServerAlias www.example.com
	#網站的根目錄
	DocumentRoot /var/www/example.com/public_html/
	#網站的錯誤日誌檔存放的位置與檔名
	ErrorLog /var/www/example.com/logs/error.log
	#網站日誌檔存放的位置與檔名
	CustomLog /var/www/example.com/logs/access.log combined
	SSLEngine on
	# Let's encrypt
        SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
        SSLCACertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    </VirtualHost>
</IfModule>