顯示具有 CentOS 標籤的文章。 顯示所有文章
顯示具有 CentOS 標籤的文章。 顯示所有文章

2016年1月15日 星期五

CentOS 重新偵測硬碟

在虛擬機無法重新開機的情況下,CentOS 新增硬碟後系統不會像windows會自動偵測到新硬碟。

此時必須下指令讓CentOS 重新偵測
指令:
# echo "- - -" > /sys/class/scsi_host/host#/scan
host# 可以從
# ls /sys/class/scsi_host
查詢到


以我遇到的案例來說,# ls /sys/class/scsi_host 執行後出現 host0、host1、host2

所以新偵測時就執行
# echo "- - -" > /sys/class/scsi_host/host0/scan

# echo "- - -" > /sys/class/scsi_host/host1/scan

# echo "- - -" > /sys/class/scsi_host/host2/scan
執行完畢後重新執行 fdisk -l 就可以看到新的 sdx


2013年3月27日 星期三

CentOS 製作log循環備份

之前在 利用newsyslog製作log循環備份 這篇有寫到,如何設定 FreeBSD的 log循環。
在CenOS裡的設定方式是從
  • /etc/logrotate.conf
  • /etc/logrotate.d/
這2個地方設定,運作原理可以參考鳥哥的說明。

由於在前次設定 利用 Fail2ban 封鎖暴力破解 時,我有指定 dovecot的 log 存放位置,但是系統並不會自動幫我作循環備份,所以 log 會越來越大。

此時只要在 /etc/logrotate.d/ 裡面新增一個跟 /var/log/ 裡的 log檔名相同的檔案,再設定參數即可。

以我的例子來說:
  • # vi /etc/logrotate.d/dovecot.log
  • 設定內容:
    /var/log/dovecot.log {
        weekly
        rotate 4
        missingok
        notifempty
        create 0600 root root
        postrotate
            killall -HUP dovecot
        endscript
    }
  • 檢查設定檔執行內容是否正確
    # logrotate -v /etc/logrotate.d/dovecot.log
    引用鳥哥的說明:
    logrotate [-vf] logfile
    選項與參數:
    -v  :啟動顯示模式,會顯示 logrotate 運作的過程喔!
    -f  :不論是否符合設定檔的資料,強制每個登錄檔都進行 rotate 的動作!
關於設定檔內的參數說明,可以自行 man logrotate


2013年1月10日 星期四

利用 Fail2ban 封鎖暴力破解

前輩丟出個功課找些好方法來自動偵測+阻擋。

Fail2ban 就是一個非常實用的套件!

官方網頁:http://www.fail2ban.org

環境:
  • CentOS release 5.8 (Final)
  • Dovecot 1.0.7
  • Postfix 2.3.3 
  • fail2ban 0.8.4
安裝:# yum -y install fail2ban

若無法安裝,用 # yum search fail2ban 也無法找到套件,需編輯以下資料。

# vim /etc/yum.repos.d/CentOS-Base.repo

[atrpms]
name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
gpgcheck=1
enabled=1





套件架構:
  • 安裝位置:/etc/fail2ban
  • 設定檔:
    •  fail2ban.conf      fail2ban 設定
    •  jail.conf               各服務阻擋參數設定
      2013.03.19 取自官方文件
      Every .conf file can be overridden with a file named .local. The .conf file is read first, then .local, with later settings overriding earlier ones. Thus, a .local file doesn't have to include everything in the corresponding .conf file, only those settings that you wish to override.
      因此有任何客製化的設定,要另外建立 jail.local
    • filter.d/*. conf       過濾規則、判斷式 
  • jail.conf 內的各個設定,必須在filter.d有一個對應的 conf 檔案。
    例如:在 jail.conf內新增 [dovecot-check] 設定,且filter設為 dovecot-check,那就必須在 filter.d資料夾新增 dovecot-check.conf
 fail2ban.conf 設置說明:
  • 沒什麼特別的地方,重點放在log設置位置
    logtarget = /var/log/fail2ban.log
 jail.local 設置說明:
  • 主要為各個需要偵測的服務設定。
  • 範例:
    新增 dovecot-check 設定
    [dovecot-check]
    enabled = true
    #過濾名稱,對應filter.d/*.conf 
    filter = dovecot-check 
    #iptables設定 
    action =  iptables-multiport[name=dovecot-check, port="pop3,pop3s,imap,imaps",  protocol=tcp]
              sendmail-whois[name=dovecot, dest=xxx@example.com, sender=xxx@example.com] 
     
    #需要掃描的記錄檔
    logpath = /var/log/secure
    #排除的ip、網域
    ignoreip = 168.192.0.1  192.168.1.0/24
    #阻擋的時間,-1表示永久阻擋 
    bantime  = 86400
    #監視的log時間區段
    findtime  = 300
    #最高嘗試錯誤次數
    maxretry =  3
    其中部份參數說明如下:
    • action中的port:可直接打上標準的服務名稱或是port number。
    • sendmail-whois中的dest:預設是寄到 root ,也就是本機端的root帳戶的信箱。
    • sendmail-whois中的sender:這個設定會顯示在寄信的來源位置,預設是 fail2ban@mail.com 。
      sendmail-whois 可省略。
    • logpath:mail log預設值是 /var/log/secure。每個Linux發行版的服務記錄登入訊息的位置都不太一樣,dovecot會將訊息記錄在 /var/log/secure ,因此參數必須設置成此路徑。
    • maxretry:最高嘗試錯誤次數。一旦登入錯誤超過這個次數,fail2ban就會發生阻擋事件,將該IP擋在門外。預設是使用 [DEFAULT] 區塊中的maxretry ,可另外在這邊重新指定。實際上,嘗試登入時可以比maxretry還多一次,例如maxretry = 3,那麼登入時可以錯誤4次才會被擋下。
    • bantime:發生阻擋事件之後,阻擋該IP的時間。預設是用 [DEFAULT] 區塊中的 bantime ,單位是秒,也就是10分鐘。但是這個阻擋時間實在太短,有人設定為 86400,也就是一整天。若設定為 -1 ,表示永久阻擋。
filter.d/*. conf設置說明:
  • 比照 jail.local 的設定,由於新增了 dovecot-check,因此也在 filter.d資料夾新增 dovecot-check.conf
  •  dovecot-check.conf 內容範例:
    [Definition]
    #掃描log檔時的過濾規則
    failregex =  (?: Authentication failure|Aborted login|Disconnected).*rip=(?:::f{4,6}:)?(?P<host>\S*),
    .*
    #排除部份
    ignoreregex  = (?: Disconnected: Logged out).*
    • failrege:可自行使用正規表示式修改成需要的內容(由於小弟不熟,直接套用網路上的設定後再做測試)

測試 filter 內設定是否正確:
  • fail2ban-regex [log路徑] [filter路徑]
    fail2ban-regex /var/log/dovecot.log /etc/fail2ban/filter.d/dovecot-check.conf 
啟動 fail2ban 的服務:
  •  service fail2ban start
    {start|stop|status|restart}
重新載入 fail2ban 的設定:
  • fail2ban-client reload
查看iptable的設定:
  • iptables –L
查看 fail2ban 的狀態:
  • fail2ban-client status 
查看某服務過濾情況:
  • fail2ban-client status [jail.conf 設定的名稱]
    fail2ban-client status dovecot-check
 設定 fail2ban 開機時自動啟動:
  • chkconfig fail2ban on


補充說明:
  • 如果在 dovecot 有另外指定log位置,jail.local內的設定要指到相對應的log。
  • dovecot 會將登入失敗的訊息會放在 /var/log/secure /var/log/maillog(預設) 內,2邊都做測試會比較保險。



參考:

2012年11月9日 星期五

mailbox to maildir





mailbox 與 maildir 格式不多做說明


所需套件
mb2md

安裝方式:
yum -y install mb2md

建立執行檔: 
vim /usr/local/bin/allmb2md
內容:
#!/bin/sh
MBOXDIR="/var/spool/mail"
cd $MBOXDIR
for user in *; do
  MAILDIR="/home/$user/Maildir"
  mkdir -p $MAILDIR/
  echo  "user $user"
 
  mb2md -s $MBOXDIR/$user -d $MAILDIR/
  chmod -R 700 $MAILDIR/
  chown -R $user $MAILDIR/
done
變更為可執行:
chmod +x /usr/local/bin/allmb2md
執行:
allmb2md
注意事項:
MAILDIR="/home/$user/Maildir"
會這樣設定,是因為在dovecot 內有做
mail_location = maildir:~/Maildir的設定。

2012年10月18日 星期四

FreeBSD 帳號密碼移轉至 linux


FreeBSD的帳號密碼及其他資訊都存在master.passwd,Linux則分別存在passwd及shadow中。
master.passwd@FreeBSD
帳號:密碼:UID:GID:Login Class:Change:Expire:Full Name:家目錄:Login SHELL
  • Login Class:幾乎沒在用了,通常是空的
  • Change:強迫使用者改密碼的時間週期, 0 表示不設定
  • Expire:使用者帳號的使用期限, 0 表示不設定
passwd@Linux
帳號:密碼:UID:GID:Full Name:家目錄:Login SHELL
FreeBSD比Linux多了三個欄位
所以我們將那三個欄位捨棄,並把密碼那欄設為x,因為Linux的密碼是存在shadow
cat master.passwd.bsd | awk -F":" '$3>=1002&&$3<=60000{printf"%s:x:%s:%s:%s:%s:%s\n",$1,$3,$4,$8,$9,$10}' > passwd.linux


shadow@Linux
帳號:密碼:3:4:5:6:7:8:9
  • 3.last password change
  • 4.days until change allowed
  • 5.days before change required
  • 6.days warning for expiration
  • 7.days before account inactive
  • 8.date when account expires
  • 9.reserved for future use
接著處理shadow
cat master.passwd.bsd | awk -F":" '$3>=1002&&$3<=60000{printf "%s:%s:13367:0:99999:7:::\n",$1,$2 }' > shadow.linux

再來處理group
cat group.bsd | awk -F":" '$3 >=1002&&$3<=60000{printf "%s::%s:%s\n",$1,$3,$4 }' > group.linux

接著把他們附加到原本的檔案後面
cat shadow.linux >> /etc/shadow
cat passwd.linux >> /etc/passwd
cat group.linux >> /etc/group



home、mail的移轉只需要用tar將資料夾打包即可。

如果不移轉home的資料,但是需要建立user home,寫迴圈來建立。
cd /tmp
vim create_user_home.sh
#!/usr/bin/ksh
for users in `awk -F: '{print $1}' passwd.linux`
do
mkdir /home/$users
chown $users:
$users /home/$users
chmod 700
done
執行sh
./create_user_home.sh




註:$3 >=1002  的部份是uid,需按照系統預設起始值修改


參考:
http://mail.lsps.tp.edu.tw/~gsyan/freebsd2001/Linux2FreeBSD.html
[轉錄] FreeBSD帳號密碼轉移至Linux

2012年10月3日 星期三

CentOS 6.3 + dovecot + postfix + SquirrelMail

起因:
目前公司mail架構為 freebsd + postfix +openwebmail (mailbox)
mailbox的最大缺點就是在於鎖定的問題,隨著公司人數上升,問題的發生率就越來越頻繁
對客服單位(信件量大、即時處理)發生的機率更大。
於是幫客服部門另外架設一台備份、線上查詢用的mail server
這台mail server改用maildir的架構,將每封信單獨成一個檔案存放,雖然效能下降,但是能有效解決lock的問題。

環境:
由於機器的raid驅動問題,freebsd在安裝時便無法抓到硬碟,freebsd官方的硬體支援列表也沒列出該raid晶片(要裝也是可以,不過太費工了),故改用CentOS
搭配套件:
dovecot(imap、pop3)
postfix (smtp)
SquirrelMail  (webmail)
httpd (apache)
php

安裝方式:
一切以最簡單的yum安裝

  1. 安裝dovecot

    • yum install dovecot

    • 修改設定檔
      vi /etc/dovecot/dovecot.conf

      將protocols設為imap
      protocols = imap

    • 修改mail存放位置
      vi /etc/dovecot/conf.d/10-mail.conf

      mail_location = maildir:~/Maildir
       
    • 修改認證
      vi /etc/dovecot/conf.d/10-auth.conf
      disable_plaintext_auth = no
       
  2. postfix (系統內建,centos安裝時要選擇 basic server)
    • vi /etc/postfix/main.cf
    • inet_interfaces = localhost 這行前面加上 #號註解
       
    • 設定domain、host
      myhostname = (自行帶入)
      mydomain =
      (自行帶入)
     
  3. 安裝httpd、php(不贅述)
     
  4. 安裝SquirrelMail
    SquirrelMail目前在centos6.3的yum上面找不到,
    於是我到http://rpmfind.net/尋找
    找到 squirrelmail-1.4.8-5.el5.centos.13.noarch.rpm

    • 抓取rpm
      wget ftp://rpmfind.net/linux/centos/5.8/updates/x86_64/RPMS/squirrelmail-1.4.8-5.el5.centos.13.noarch.rpm

    • 安裝
      rpm -i squirrelmail-1.4.8-5.el5.centos.13.noarch.rpm
      如果有跳出有相依性套件,再依說明安裝所需套件

    • 環境設定
      cd /usr/share/squirrelmail/config/

      ./conf.pl

      進入設定介面 

      D
      輸入 dovecot
       
    • 設定語系,選 10
      squirrelmail_default_language = 'zh_TW';
      default_charset       = 'big5';

       
    • 其他的設定很明確,進去看一看就知道怎麼用了,基本上不用改,故不贅述。

    • 存檔 S,退出 Q
      
    • 新增change passwd plugins
      到官方網站:http://squirrelmail.org/plugin_view.php?id=117 下載適合的版本。
      (依照squirrelmail對應版本下載,筆者squirrelmail為1.4.8-5,可選擇Version 4.0,Requires: SquirrelMail 1.2.8, Compatibility plugin 1.3

      cd /usr/share/squirrelmail/plugins
       
      wget http://www.squirrelmail.org/plugins/change_passwd-4.0-1.2.8.tar.gz
       
      tar -zxvf change_passwd-4.0-1.2.8.tar.gz
       
      cd /usr/share/squirrelmail/config
       
      ./conf.pl
      
      # 選 8.  Plugins -> 將 Available Plugins: 內的 change_passwd 加入模組 -> 選 S 儲存設定 -> 選 Q 後離開
       
    • 安裝 Compatibility plugin 1.3 SquirrelMail 官方plugins下載)官方網站:http://squirrelmail.org/plugin_view.php?id=152找1.3版
      cd /usr/share/squirrelmail/plugins/
        
      wget http://www.squirrelmail.org/plugins/compatibility-1.3.tar.gz
        
      tar -zxvf compatibility-1.3.tar.gz
       
      cd /usr/share/squirrelmail/config
       
      ./conf.pl
      
      # 選 8.  Plugins -> 將 Available Plugins: 內的 Compatibility 加入模組 
      
      
    • 安裝 vacation(auto reply)套件
      官方網站:http://squirrelmail.org/plugin_view.php?id=172
      Requires: SquirrelMail 0.5 or above
      (需求說明的部份,官方網頁上漏掉2個需求。1.ftp server (直接yum安裝vsftp,不贅述)  2.vacation 程式)

      cd /usr/share/squirrelmail/plugins/
       
      wget http://www.squirrelmail.org/plugins/autorespond-0.5.1-1.4.tar.gz
       
      tar -zxvf autorespond-0.5.1-1.4.tar.gz 
       
      cd /usr/share/squirrelmail/config
       
      ./conf.pl
      
      # 選 8.  Plugins -> 將 Available Plugins: 內的 autorespond 加入模組 
      
      
    • 安裝 vacation 程式
      官方網站:http://www.csamuel.org/software/vacation
      直接抓最新版的來裝(目前為1.2.7.1)

      cd /tmp

      wget http://downloads.sourceforge.net/project/vacation/vacation/1.2.7.1/vacation-1.2.7.1.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fvacation%2Ffiles%2Fvacation%2F1.2.7.1%2F&ts=1351066441&use_mirror=nchc

      tar -zxvf vacation-1.2.7.1.tar.gz

      cd vacation-1.2.7.1

      make


      執行make後會產生執行檔 vacation

      cp vacation /usr/bin




設定開機自動啟動:
chkconfig dovecot on
chkconfig httpd on
或是
ntsysv
進入services選擇
webmail網址:http://{host IP}/webmail

一開始登入時遇到
ERROR
Error connecting to IMAP server: localhost.
13 : Permission denied
這個錯誤訊息,找了老半天找不出結果,maillog也沒有紀錄,最後查到
setsebool httpd_can_network_connect=1
直接下這行就可解決。

檢測config狀況,可以瞭解SquirrelMail 哪邊出狀況
http://{host IP}/webmail/src/configtest.php

最後,我把seLinux關閉,他給我不少困擾....
vi /etc/selinux/config
SELINUX=disabled



reboot



參考:
http://blog.pmail.idv.tw/?p=363
http://www.wretch.cc/blog/jerry0822/13870081
http://www.fedoraforum.org/forum/archive/index.php/t-59291.html
http://www.ichiayi.com/wiki/tech/poppassd


更新日誌:
20121024
  • 更新change passwd模組安裝說明。原使用的模組需另外安裝poppassd server,但poppassd遇到密碼中有空白字元時會造成判斷錯誤。
  • 新增vacation(auto reply)安裝方式。