2011年5月24日 星期二

讓 Spamassassin 學習辨別垃圾郵件

Spamassassin 的 Spam 分數可以由“學習”的方式來調整, 最好的方式是分別建立 blacklist (黑名單, 垃圾郵件) 和 whitelist (白名單, 非垃圾郵件) 的信箱:

CODE:

#useradd -M blacklist

#useradd -M whitelist
以後如果收到垃圾信的話, 就把信 "以附加檔案方式轉寄" 給自己 Server 上的 blacklist 信箱; 如果是被 Spamassassin 誤判為垃圾信的郵件, 就把它轉寄給 whitelist. 也就是說, 讓這兩個信箱收集可以給 Spamassassin 學習的範本. 學習的指令如下:

學習黑名單:

CODE:

#sa-learn -D --showdots --spam --mbox /var/mail/blacklist學習白名單:

CODE:

#sa-learn -D --showdots --ham --mbox /var/mail/whitelist學習完成後, 即可將 blacklist 與 whitelist 信箱清空:

CODE:

#true > /var/mail/blacklist; true > /var/mail/whitelist讓系統每小時自動學習黑/白名單: 於 /etc/cron.hourly 建立一個可執行的 shell 檔, 內容為:

CODE:

#!/bin/sh

if [ -s /var/spool/mail/blacklist ]; then

sa-learn --spam --mbox /var/spool/mail/blacklist > /dev/null 2>&1
true > /var/spool/mail/blacklist

fi

if [ -s /var/spool/mail/whitelist ]; then

sa-learn --ham --mbox /var/spool/mail/whitelist > /dev/null 2>&1
true > /var/spool/mail/whitelist

fi

CentOS 5.3 Mail建置流程1_Postfix+dovect+Mailscanner+Clamav+spamassassin

"更改預設開機run level
vi /etc/inittab
id:5:initdefault: 改成---> id:3:initdefault:
開機直接進入Full multi-user mode(完整含有網路功能的純文字模式)


SSH基本設定
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak #備份設定檔
vi /etc/ssh/sshd_config
AllowUsers sysadm
在檔案最後面加上這一行,這樣就只有sysadm可以使用ssh連線了
若要設定多人,就用空格隔開:AllowUsers sysadmsysadm2
/etc/rc.d/init.d/sshd restart(重新讀取ssh設定檔)

修改IP、FQDN
查看IP:ifconfig
修改IP:/etc/sysconfig/network-scripts/ifcfg-eth0
FQDN 設定:/etc/sysconfig/network
DNS 設定: /etc/resolv.conf
重新啟動網卡:/etc/rc.d/init.d/network restart
ping:ping -c 5 tw.yahoo.com.tw
traceroute:traceroute tw.yahoo.com.tw

關閉SELinux
vi /etc/sysconfig/selinux
SELINUX=enforcing 改成---> SELINUX=disabled

關閉、啟動基本服務
執行ntsysv指令,只留下以下服務:
acpid anacron cpuspeed crond network sshd syslog yum-updatesd
service XXX start #啟動服務
service XXX stop #停止服務
chkconfig XXX on #開機啟動
chkconfig XXX off #開機不啟動

安裝RPMforge
rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
RPMforge是Dag, Dries和其他的打包者合作的套件庫,提供CentOS超過4000種以上的套件

更新套件
yum -y update

網路校時
yum -y install ntp #安裝NTP
/usr/sbin/ntpdate tock.stdtime.gov.tw #執行網路校時針對tock.stdtime.gov.tw
/usr/sbin/hwclock -w #將時間寫入BIOS
vi /etc/crontab
10 5 * * * root /usr/sbin/ntpdate tock.stdtime.gov.tw && /sbin/hwclock –w #排程自動校時每天5:10校時

RPM基本指令
安裝:rpm -ivh xxx
移除:rpm -e xxx
升級:rpm -Uvh xxx
查詢:rpm -qa | grep xxx

安裝Postfix

1.移除sendmail安裝postfix
/etc/init.d/sendmail stop #停用sendmail
yum install postfix #安裝postfix
rpm -e sendmail #移除sendmail
service postfix start #啟動postfix服務

2. postfix設定
版本: postfix- 2.3.3 -2.1.el5_2
設定檔位置 /etc/postfix/main.cf
設定 postfix 可接收外部連線
vi /etc/postfix/main.cf
將inet_interfaces = all 這一行#號拿掉
將inet_interfaces = localhost 這行前面加上#號註解
mydomain = no-ip.org
myhostname = pororo.no-ip.org
service postfix restart #重新啟動postfix服務
測試連線
[root@mail2 postfix]# telnet 192.168.1.1 25
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
220 pororo.no-ip.org ESMTP Postfix

3. 設定postfix SMTP 驗證
安裝 cyrus-sasl-md5 cyrus-sasl-plain cyrus-sasl 套件
yum install cyrus-sasl-md5 cyrus-sasl-plain cyrus-sasl
vi /etc/postfix/main.cf #加入下面設定
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
chkconfig saslauthd on #設定開機啟動
service saslauthd restart #啟動saslauthd服務
利用telnet 測式smtp認證功能是否生效(要有出現LOGIN PLAIN才算)
[root@mail2 postfix]# telnet 192.168.1.1 25
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
220 pororo.no-ip.org ESMTP Postfix
ehlo localhost
250-mail2.pmail.idv.tw
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

安裝dovecot pop3服務
yum install dovecot #安裝dovecot
vi /etc/dovecot.conf
protocols = imap imaps pop3 pop3s 將#註解拿掉
設定啟動 dovecot 服務,並設定開機自動啟動
chkconfig dovecot on
service dovecot start

安裝MailScanner
官方網站 : http://www.mailscanner.info/
安裝版本 : Mailscanner-4.77.10-1
1. yum install gcc rpm-build perl-MIME-tools #安裝必要套件

2. wget http://www.mailscanner.info/files/4/rpm/MailScanner-4.77.10-1.rpm.tar.gz

3. tar -zxvf MailScanner-4.77.10-1.rpm.tar.gz #解壓縮

4. cd MailScanner-4.77.10-1 #切換至該目錄下

5. ./install.sh #安裝需要一點時間,安裝好後使用sendmail不需特別設定,以下為搭配postfix設定
service postfix stop #停用postfix
chkconfig postfix off # postfix設定開機不啟動
chkconfig MailScanner on #設定開機啟動(MailScanner會自動呼叫postfix Spamassassin&clamav)
service MailScanner start #啟用MailScanner

6. MailScanner和postfix搭配使用時所需的設定:
vi /etc/postfix/main.cf
header_checks = regexp:/etc/postfix/header_checks 將#註解拿掉
vi /etc/postfix/header_checks
/^Received:/ HOLD #加上這一行
這是為了讓Postfix收進來的mail 先儲存在某一個Directory裡面,等待MailScanner 來進行Scan
vi /etc/MailScanner/MailScanner.conf如下:
Run As User = postfix #設定執行postfix 的使用者名稱
Run As Group = postfix #設定執行postfix 的群組名稱
Incoming Queue Dir = /var/spool/postfix/hold #內送郵件的佇列目錄,設定為postfix目前的佇列目錄下的hold目錄
Outgoing Queue Dir = /var/spool/postfix/incoming #外送郵件的佇列目錄,設定為postfix目前的佇列目錄下的incoming目錄
MTA = postfix #設定mailscanner 和 postfix 搭配使用

ps:可利用下面這一串指令查詢
postconf|grep -E 'mail_owner|setgid_group|queue_directory' #執行這一段指令
mail_owner = postfix --->這是執行postfix 的使用者名稱
queue_directory = /var/spool/postfix --->這是postfix的佇列目錄
setgid_group = postdrop --->這是執行postfix的群組名稱

修改權限:
chown postfix.postdrop /var/spool/MailScanner/incoming
chown postfix.postdrop /var/spool/MailScanner/quarantine

註:我在安裝完MailScanner檢視一下Maillog都會出下以下錯誤訊息
MailScanner[2248]: Could not create Processing Attempts Database '/var/spool/MailScanner/incoming/Processing.db'
解決方法: chown postfix.postfix Processing.db

安裝Clamav
套件可以到以下網站來下載 http://packages.sw.be/clamav/
安裝版本clamav-0.95.2-4
1.下載安裝套件
wget http://packages.sw.be/clamav/clamav-0.95.2-4.el5.rf.i386.rpm
wget http://packages.sw.be/clamav/clamav-db-0.95.2-4.el5.rf.i386.rpm
wget http://packages.sw.be/clamav/clamav-devel-0.95.2-4.el5.rf.i386.rpm
wget http://packages.sw.be/clamav/clamd-0.95.2-4.el5.rf.i386.rpm
如果你是使用sendmail的話要多下載clamav-milter <= for sendmail only此套件如果使用postfix就只要下載上面4個rpm就可以了

2.下載完後先將所有舊的clamav移除
yum remove clamav-* #移除,如果先前有安裝舊版本
rpm -ivh clam*.rpm #安裝
freshclam  #更新病毒碼
service clamd start  #啟動服務(有搭配MailScanner就不需要做這一步驟)

3. 設定MailScanner使用的掃毒軟體 vi /etc/MailScanner/MailScanner.conf
將Virus Scanners = auto改為 Virus Scanners = clamav

4. 排程每天0,12點更新病毒碼
vi /etc/crontab
0 0,12 * * * root /usr/bin/freshclam

5. 測試,EICAR病毒測試檔http://tw.trendmicro.com/tw/support/virus-primer/eicar-test-files/

過濾廣告信軟體spamassassin
1.安裝spamassassin
yum install spamassassin
service spamassassin start #啟動服務

2. 修改MailScanner設定檔
vi /etc/MailScanner/MailScanner.conf
Use SpamAssassin = yes #預設是YES 若不搭配spamassassin使用改為no
Required SpamAssassin Score = 6 #超過6等級就視為廣告信,當然可以依照使用者自已設定啦
High SpamAssassin Score = 10 #超過10分列為高等級廣告信
SpamAssassin Auto Whitelist = yes #可以測量從不同位址發出的廣告信及非廣告信的比率如果寄信位的信件大多不為廣告信,系統會自動的增加位址至它本身擁有的非廣告信清單(whitelist)
SpamAssassin Timeout = 75 #處理的郵件的最大等待時間(秒)
Spam Score Character = * #設定分數用*號表示,預設是用s,要如何表示當然由自已設定囉
修改主旨設定(如果被判定為spam時會在信件主旨加上特註記)
Spam Modify Subject = start #no就是不修改主旨
Spam Subject Text = {Spam?} #可以自行修改想要的註記
High Scoring Spam Modify Subject = start
High Scoring Spam Subject Text = {Spam?} #如果被判定為病毒信時會在信件主旨加上特註記)
Virus Modify Subject = start #no就是不修改主旨
Virus Subject Text = {Virus?} #可以自行修改想要的註記
設定spamassass 狀態目錄
SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin (將#取消)
SpamAssassin User State Dir = (加上#)

3.建立目錄
mkdir /var/spool/MailScanner/spamassassin
chown postfix.postdrop spamassassin #修改此目錄權限
MailScanner中的白名單設定方法:
用白名單功能時請請檢查MailScanner.conf 中的白名單設定是否有開啟喔
vi /etc/MailScanner/MailScanner.conf
Is Definitely Not Spam = %rules-dir%/spam.whitelist.rules
vi /etc/MailScanner/rules/spam.whitelist.rules針對你希望不被標示的範圍進行加註
常用語法:
對象:
From: 針對信件的寄件者進行比對
To: 針對信件的收件者進行比對
FromOrTo: 針對寄件者或收件者進行比對
FromAndTo: 針對寄件者及收件者共同進行比對
比對的樣本
user@sub.domain.com 單一的郵件位址
user@* 單一帳號(不限定領域)
*@*.domain.com domain.com下轄 subdomin下的任何帳號
*@donain.com 特定 domain.com 的任何帳號
192.168. SMTP client IP 範圍 192.168.0.0/16
/^192.168.1[4567]./ SMTP client IP 範圍 192.168.14~17
範例
希望今天所有來自 *@*.mlc.edu.tw 及 *@mlc.edu.tw 的信件都不被標示為spam
值為yes表示不會被標記為spam
From: *@*.mlc.edu.tw yes
From: *@mlc.edu.tw yes

- 已使用 Google 工具列寄出"

CentOS yum的詳細使用方法

yum是什麽
yum = Yellow dog Updater, Modified
主要功能是更方便的添加/刪除/更新RPM包.
它能自動解決包的倚賴性問題.
它能便於管理大量系統的更新問題

yum特點
可以同時配置多個資源庫(Repository)
簡潔的配置文件(/etc/yum.conf
自動解決增加或刪除rpm包時遇到的倚賴性問題
使用方便
保持與RPM數據庫的一致性

yum安裝
CentOS自帶(yum-*.noarch.rpm)
#rpm -ivh yum-*.noarch.rpm
在第一次啟用yum之前首先需要導入系統的RPM-GPG-KEY:
#rpm --import /usr/share/doc/centos-release-3(4)/RPM-GPG-KEY-CentOS-3(4)

yum指令
註:當第一次使用yum或yum資源庫有更新時,yum會自動下載所有所需的headers放置於/var/cache/yum目錄下,所需時間可能較長.

rpm包的更新
檢查可更新的rpm包
#yum check-update
更新所有的rpm包
#yum update
更新指定的rpm包,如更新kernel和kernel source
#yum update kernel kernel-source
大規模的版本升級,與yum update不同的是,連舊的淘汰的包也升級
#yum upgrade

rpm包的安裝和刪除
安裝rpm包,如xmms-mp3
#yum install xmms-mp3
刪除rpm包,包括與該包有倚賴性的包
#yum remove licq
註:同時會提示刪除licq-gnome,licq-qt,licq-text

yum暫存(/var/cache/yum/)的相關參數
清除暫存中rpm包文件
#yum clean packages
清除暫存中rpm頭文件
#yum clearn headers
清除暫存中舊的rpm頭文件
#yum clean oldheaders
清除暫存中舊的rpm頭文件和包文件
#yum clearn 或#yum clearn all
註:相當於yum clean packages + yum clean oldheaders

包列表
列出資源庫中所有可以安裝或更新的rpm包
#yum list
列出資源庫中特定的可以安裝或更新以及已經安裝的rpm包
#yum list mozilla#yum list mozilla*
註:可以在rpm包名中使用匹配符,如列出所有以mozilla開頭的rpm包
列出資源庫中所有可以更新的rpm包
#yum list updates
列出已經安裝的所有的rpm包
#yum list installed
列出已經安裝的但是不包含在資源庫中的rpm包
#yum list extras
註:通過其它網站下載安裝的rpm包

rpm包信息顯示(info參數同list)
列出資源庫中所有可以安裝或更新的rpm包的信息
#yum info
列出資源庫中特定的可以安裝或更新以及已經安裝的rpm包的信息
#yum info mozilla#yum info mozilla*
註:可以在rpm包名中使用匹配符,如列出所有以mozilla開頭的rpm包的信息
列出資源庫中所有可以更新的rpm包的信息
#yum info updates
列出已經安裝的所有的rpm包的信息
#yum info installed
列出已經安裝的但是不包含在資源庫中的rpm包的信息
#yum info extras
註:通過其它網站下載安裝的rpm包的信息

搜索rpm包
搜索匹配特定字符的rpm包
#yum search mozilla
註:在rpm包名,包描述等中搜索
搜索有包含特定文件名的rpm包
#yum provides realplay

增加資源庫
例如:增加rpm.livna.org作為資源庫
安裝Livna.org rpms GPG key
#rpm --import http://rpm.livna.org/RPM-LIVNA-GPG-KEY
檢查GPG Key
# rpm -qa gpg-pubkey*
顯示Key信息
#rpm -qi gpg-pubkey-a109b1ec-3f6e28d5
(註:如果要刪除Key,使用#rpm -e gpg-pubkey-a109b1ec-3f6e28d5)

yum常用的命令

# yum install xxx 安裝xxx軟件

# yum info xxx 查看xxx軟件的信息

# yum remove xxx 刪除軟件包

# yum list 列出軟件包

# yum clean 清除緩衝和就的包

# yum provides xxx 以xxx為關鍵字搜索包(提供的信息為關鍵字)

# yum search xxx 搜索軟件包(以名字為關鍵字)

# yum groupupdate xxx

# yum grouplist xxx

# yum groupremove xxx

這三個都是一組為單位進行升級 列表和刪除的操作。。比如 'Mysql Database'就是一個組會同時操作相關的所有軟件包;

# yum update 系統升級

# yum list available 列出所有升級源上的包;

# yum list updates 列出所有升級源上的可以更新包;

# yum list installed 列出已經安裝的包;

# yun update kernel 升級內核;

yum常用的源

1) 自動選擇最快的源

由於yum中有的mirror速度是非常慢的,如果yum選擇了這個mirror,這個時候yum就會非常慢,對此,可以下載fastestmirror插件,它會自動選擇最快的mirror:

#yum install yum-fastestmirror

配置文件:(一般不用動)/etc/yum/pluginconf.d/fastestmirror.conf

你的yum鏡像的速度測試記錄文件:/var/cache/yum/timedhosts.txt

(2)使用圖形界面的yum

如果覺得命令行的yum不方便,那麽可以使用圖形化的yumex,這個看起來更方便,因為可以自由地選擇軟件倉庫:

#yum install yumex

然後在系統工具中就可以看到yum extender了。實際上系統自帶的“添加/刪除程序“也可以實現圖形化的軟件安裝,但有些yumex的功能它沒有。

- 已使用 Google 工具列寄出"

2011年5月23日 星期一

為 Linux 安裝 telnet 遠端連線系統

為 Linux 安裝 telnet 遠端連線系統

☆說明☆
遠端連線伺服器對一般管理員來說是非常方便又好用的工具,若你的伺服器位在不同的地方,透過遠端管理系統,只要一台電腦就能管理數個不同位置的伺服器系統,但安全性稍低,所以有需要的人要好好考慮啊~

☆telnet 安裝步驟☆

1.利用 YUM 安裝 telnet
指令:yum -y install telnet telnet-server

2. 確認系統是否有載入 telnet
指令:rpm -qa telnet | grep telnet
項目:telnet-0.17-39.el5
telnet-server-0.17-39.el5

3.修改 telnet
指令:vi /etc/xinetd.d/telnet
預設:disable = yes
修改:disable = no

4.啟動、停止方法
啟動指令:service xinetd start
停止指令:service xinetd stop

5.設定開機啟動 telnet 或 開機停止啟動 telnet
啟動指令:chkconfig xinetd on
停止指令:chkconfig xinetd off

2011年5月19日 星期四

Linux讓記錄檔內容歸零的方法

Linux讓記錄檔內容歸零的方法

如果要將記錄內容清空,移除再建立是一個方法,但不是很好的方法,可以採用下面這個指令

cat /dev/null > /var/log/log_filename

例如:

# cat /dev/null > /var/log/xferlog

# cat /dev/null > /var/log/httpd-error.log

就可以輕鬆的將記錄檔清空
END

- 已使用 Google 工具列寄出"

解決 SSH 登入延遲

解決 SSH 登入延遲

sshd login delay 登入要等很久,才會跳出輸入密碼的視窗,怎麼解決?

後來看到這一篇的解決法,也順利了解決了,真是感謝。

修改 /etc/ssh/sshd_config

# linux 預設是 yes

UseDNS no

- 已使用 Google 工具列寄出"

SSH 限制登入的帳號或群組 次要群組

"SSH 限制登入的帳號或群組 次要群組 [網際技術::IPv6] 列印 推薦
作者或來源 瘦河馬 2010-02-12 11:52:18
關鍵字 1ssh 2網路安全
此文完整連結 http://note.tcc.edu.tw/375.html


SSH 限制登入的帳號或群組

在unix系統中常用的SSH,常會遭到駭客的掃描和暴力法破解密碼,就算密碼夠強,我還是希望駭客一點機會也沒有,所以要限制可以登入的使用者和來源 IP/ IP6

修改 /etc/ssh/sshd_config

允許root從192.168.1.32登入:
AllowUsers root@192.168.1.32
如果要讓 root 只能從192.168.1.32登入,找到這行並修改如下:
PermitRootLogin yes

允許admin 任何地方登入,只需列出用戶名:
AllowUsers admin

可以在同一行指定多個帳戶登入用,例如:
AllowUsers root@192.168.1.32 admin

允許整個網段登入
AllowUsers root@10.200.*

注意IPv6 的寫法
AllowUsers axer@163.* axer@120.109.* axer@2001:288:*

只有允許群組 user 登入

AllowGroups user

設定完記得重啟 ssh

[LINUX] # service sshd restart
[FREEBSD] # /etc/rc.d/sshd reload

* 重啟 ssh 後原有連線不會斷,請再開連線測試,確定正確再關閉現有連線,否則設定錯誤,機器又在遠端的話,就沒救了
END

- 已使用 Google 工具列寄出"