CentOS 7 在postfix郵件伺服器上加裝spf檢查功能,防堵垃圾郵件
SPF 是一種透過dns設定, 用於認證郵件伺服器是否合法, 進而阻擋拉圾郵件的機制, 咖啡偶管理的郵件伺服器老舊了, 從CentOS 6 改成CentOS7 , 安裝spf的方式不一樣, 因此記錄下來,
請進 10021號 IT地窖練功吧
SPF 是一種透過dns設定, 用於認證郵件伺服器是否合法, 進而阻擋拉圾郵件的機制, 咖啡偶管理的郵件伺服器老舊了, 從CentOS 6 改成CentOS7 , 安裝spf的方式不一樣, 因此記錄下來,
請進 10021號 IT地窖練功吧
咖啡偶上班的公司使用fortigate 80c , 已經很久沒更新了, 也沒使用到一些特異功能, 甚至vpn也關掉避免安全性問題發生.
可是呢, 公司高層忽然想看同仁上網行為, 身為IT人員當然要接受而且拒絕,
何謂接受呢?就是我能做到基本綜合統計,例如流量,瀏覽網頁數量與上網時間.
其實就是委婉拒絕, 理由:
1.拿個資法來向上管理
2.以系統老舊,無法提供詳細的網站行為分析( 除非花個2,30萬買設備,外加每年15%的維護費用,這時候通常上頭就退縮了).
接下來, 若高階主管想看統計資料的時候跟我要,而不是隨時可以看,並且要給我一個合理的理由,例如:上班時間上網,然後狂加班之類的.
好了, 話不多說, fortigate 能將log透過udp 514 port導到能接收的主機上, 咖啡偶使用 CentOS 6接收,
如何開啟fortigate就不多講了, 因為版本複雜. 這裡只講CentOS6設定
修改/etc/rsyslog.conf, 開啟udp 514監聽功能,並且寫下過濾規則
#### MODULES ####
# 聆聽 UDP/514
$ModLoad imudp
$UDPServerRun 514
#### RULES ####
# 若 facility 為 local6 且內容含 traffic 記錄到 /var/log/fortigate.log
if $syslogfacility-text == ‘local6’ and $msg contains ‘traffic’ then /var/log/fortigate.log
這樣相關的log都會被記錄下來, 再使用Sawmill這套軟體分析fortigate的log, 就可以交差了
CentOS 7 預設防火牆的區域為public , 若我們有兩個網路卡, 一個接內部一個接外部.
這時候就必須區分內外, 對外還是public , 對內就是trusted
使用ifconfig 找出對內網卡代號 xxx
firewall-cmd --permanent --zone=trusted --change-interface=xxx firewall-cmd --reload
sshd port 預設是22 , 因為容易被入侵, 因此需要變更
1.修改 /etc/ssh/sshd_config, 將port 22改成想要的,例如2244
2.允選使用2244
semanage port -a -t ssh_port_t -p tcp 2244
3.加上防火牆後,重新開機
firewall-cmd –permanent –zone=public –add-port=2244/tcp
postfix郵件加上postgrey灰名單功能很簡單 , 步驟如下:
1. 安裝postgrey
CentOS 可於rpmfind.net找尋相對應的RPM版本安裝
Ubuntu 18.04 可直接安裝不用另外下載
sudo apt install postgrey
2. 找出啟動script的OPTIONS選項, 加上自動白名單功能, 與延遲120秒
centos 6:
vi /etc/rc.d/init.d/postgrey
—————————————————
OPTIONS=”–unix=$SOCKET –auto-whitelist-clients=5 –delay=120″
—————————————————
centos 7:
vi /var/lib/systemd/system/postgrey or
vi /usr/lib/systemd/system/postgrey.service
—————————————————
ExecStart=…
–auto-whitelist-clients=5
—————————————————
執行時候會長這樣
/usr/sbin/postgrey -d –unix=/var/spool/postfix/postgrey/socket –auto-whitelist-clients=5 –delay=120
3. 修改postfix的main.cf檔案, 加上check_policy_service unix:postgrey/socket
Centos: vi /etc/postfix/main.cf
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_helo_hostname,
reject_non_fqdn_recipient,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname,
check_sender_access hash:/etc/postfix/sender_vip,
reject_rbl_client dnsbl.sorbs.net,
reject_rbl_client bl.spamcop.net,
reject_rbl_client cbl.abuseat.org,
check_policy_service unix:postgrey/socket
4. 產生報表
cat /var/log/maillog | postgreyreport --nosingle_line --check_sender=mx,a --show_tries --separate_by_subnet=":=================================================================\n"
這種作法經過實做, 不建議使用, 原因很簡單, 就是延遲的問題, 收個信會延遲, 這是非常麻煩的
雖然可以自動加入白名單, 但是有些不常聯絡, 一聯絡就要馬上收的狀況大有人在,
除非IT人員在公司很強大, 否則不要用這種方式
GIT 從1.8.2起, 為大家帶來了大檔案的解法.
這裡說一下GIT LFS 需要注意的兩三事:
咖啡偶提供簡單的管理策略
那就是安裝”網站代理伺服器proxy” , 任何要存取網站的行為, 都需請proxy存取真正的網站.
這樣一來, IT 只要定期更新proxy, 修補資安漏洞, 就不會因為真正的網站版本不一致或是有相容性問題, 導致後續維護困難, 例如:
老舊php 3網站,存在嚴重資安漏洞, 程式又因故無法升級,此時使用代理伺服器是好作法.
那款好用? 不外乎 apache httpd 或是 nginx 囉
想要深入了解或安裝httpd?請參考10004_(CentOS)apache httpd代理內部伺服器(proxy).txt
1. vi /etc/dovecot/conf.d/10-auth.conf uncommand the following setting #!include auth-ldap.conf.ext as !include auth-ldap.conf.ext
2. vi /etc/dovecot/conf.d/auth-ldap.conf.ext
auth_username_format = %Lu
passdb ldap {
args = /etc/dovecot/dovecot-ldap.conf.ext
}
userdb static {
args = uid=501 gid=501 home=/home/vmail/%u
}
3. vi /etc/dovecot/dovecot-ldap.conf.ext
hosts = ad_server_ip
base = dc=test,dc=com,dc=tw
ldap_version = 3
auth_bind = yes
ldap_version = 3
auth_bind_userdn = test%u
pass_filter = (&(objectclass=person)(uid=%u))
ps. uid and gid must the same with postfix and directory in linux server
ex: create one user “vmail”
user id is 501 , gid is 501
4. postfix’s main.cf
virtual_mailbox_domains = $mydomain
virtual_mailbox_base = /home/vmail/
virtual_mailbox_maps = ldap:/etc/postfix/ldap-users.cf
virtual_uid_maps = static:501
virtual_gid_maps = static:501
virtual_alias_maps = hash:/etc/aliases,ldap:/etc/postfix/ldap-aliases-inner.cf
#smtp auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = no
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
#additional param
message_size_limit = 40960000
smtpd_helo_required = yes
disable_vrfy_command = yes
strict_rfc821_envelopes = yes
bounce_queue_lifetime = 1d
maximal_queue_lifetime = 1d
data_directory = /var/db/postfix
header_checks = regexp:/etc/postfix/header_checks
smtp_host_lookup = native, dns
…
5. vi /etc/postfix/ldap-users.cf
server_host = ad_server_ip
search_base = dc=test,dc=com,dc=tw
version = 3
query_filter = (&(objectclass=*)(mail=%s))
result_attribute = samaccountname #Account from DC
result_format = %s/Maildir/
bind = yes
bind_dn = cn=ldap,cn=Users,dc=test,dc=com,dc=tw
bind_pw = ldappassword
6. vi //etc/sysconfig/saslauthd
# Directory in which to place saslauthd’s listening socket, pid file, and so
# on. This directory must already exist.
SOCKETDIR=/var/run/saslauthd
# Mechanism to use when checking passwords. Run “saslauthd -v” to get a list
# of which mechanism your installation was compiled with the ablity to use.
#MECH=pam
MECH=ldap
# Additional flags to pass to saslauthd on the command line. See saslauthd(8)
# for the list of accepted flags.
FLAGS=”-O /etc/postfix/saslauthd.conf -c -r”
7. vi /etc/postfix/saslauthd.conf
ldap_servers: ldap://ad_server_ip:389/
ldap_search_base: dc=test,dc=com,dc=tw
ldap_auth_method: bind
ldap_version: 3
ldap_bind_dn: cn=ldap,cn=Users,dc=test,dc=com,dc=tw
ldap_bind_pw: ldappassword
ldap_filter: (sAMAccountName=%u)
8. vi /etc/postfix/ldap-aliases-inner.cf
server_host = ad_server_ip
search_base = dc=test,dc=com,dc=tw
#scope = sub
query_filter = (memberOf:1.2.840.113556.1.4.1941:=CN=%s,OU=aliases_inner,DC=test,DC=com,DC=tw)
result_attribute = mail
result_format = %s
version = 3
bind = yes
bind_dn = cn=ldap,cn=Users,dc=test,dc=com,dc=tw
bind_pw = ldappassword