<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>〈Linux〉彙整頁面 - MIS 的流水年華</title>
	<atom:link href="https://jameschien.mooo.com/wordpress/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>https://jameschien.mooo.com/wordpress/category/linux/</link>
	<description>流水記事</description>
	<lastBuildDate>Wed, 10 Mar 2021 06:39:51 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>
	<item>
		<title>使用 certbot 申請 Let&#8217;s Encrypt Wildcard 憑證</title>
		<link>https://jameschien.mooo.com/wordpress/2020/08/25/%e4%bd%bf%e7%94%a8-certbot-%e7%94%b3%e8%ab%8b-lets-encrypt-wildcard-%e6%86%91%e8%ad%89/</link>
					<comments>https://jameschien.mooo.com/wordpress/2020/08/25/%e4%bd%bf%e7%94%a8-certbot-%e7%94%b3%e8%ab%8b-lets-encrypt-wildcard-%e6%86%91%e8%ad%89/#respond</comments>
		
		<dc:creator><![CDATA[James]]></dc:creator>
		<pubDate>Tue, 25 Aug 2020 05:29:43 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[certbot]]></category>
		<category><![CDATA[Let&#039;s Encrypt]]></category>
		<category><![CDATA[Wildcard 憑證]]></category>
		<category><![CDATA[教學]]></category>
		<guid isPermaLink="false">https://jameschien.no-ip.biz/wordpress/?p=230</guid>

					<description><![CDATA[<p>系統: Centos 7需求: 包含自行管理DNS的網域(bind)以及免費 no-ip網域, 若為其它代管業 &#8230; <a href="https://jameschien.mooo.com/wordpress/2020/08/25/%e4%bd%bf%e7%94%a8-certbot-%e7%94%b3%e8%ab%8b-lets-encrypt-wildcard-%e6%86%91%e8%ad%89/" class="more-link">閱讀全文 <span class="screen-reader-text">使用 certbot 申請 Let&#8217;s Encrypt Wildcard 憑證</span></a></p>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2020/08/25/%e4%bd%bf%e7%94%a8-certbot-%e7%94%b3%e8%ab%8b-lets-encrypt-wildcard-%e6%86%91%e8%ad%89/">使用 certbot 申請 Let&#8217;s Encrypt Wildcard 憑證</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">系統: Centos 7<br>需求: 包含自行管理DNS的網域(bind)以及免費 no-ip網域, 若為其它代管業者可以到certbot查詢是否有範本或plugin.</p>



<p class="has-large-font-size wp-block-paragraph"><strong>安裝</strong></p>



<p class="wp-block-paragraph">在提供服務的主機</p>



<p class="has-white-color has-dark-gray-background-color has-text-color has-background wp-block-paragraph">yum install certbot<br>yum install python2-pip</p>



<p class="wp-block-paragraph">DNS若為自行管理, 需要安裝 certbot-dns-rfc2136 PLUGIN以自動更新DNS TXT RECORD讓 Let&#8217;s Encrypt 確認您擁有網域管理權</p>



<p class="has-white-color has-dark-gray-background-color has-text-color has-background wp-block-paragraph">pip install certbot-dns-rfc2136</p>



<p class="has-large-font-size wp-block-paragraph"><strong>設定</strong></p>



<p class="wp-block-paragraph">在提供服務的主機上新增 /etc/letsencrypt/rfc2136.ini 檔案, 檔案權限須為0600, 內容如下</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p class="has-white-color has-dark-gray-background-color has-text-color has-background wp-block-paragraph"># Target DNS server<br>dns_rfc2136_server = 10.0.0.1<br># Target DNS port<br>dns_rfc2136_port = 53<br># TSIG key name<br>dns_rfc2136_name = rndckey<br># TSIG key secret<br>dns_rfc2136_secret = mP1z2QD3R156ULti97TbdsRbPBcxe8zoBlaBla<br># TSIG key algorithm<br>dns_rfc2136_algorithm = HMAC-MD5</p>
</div></div>



<p class="wp-block-paragraph">TSIG Key 是用來更新 named.conf 中區域的字串 , 產生方式如下</p>



<p class="has-white-color has-dark-gray-background-color has-text-color has-background wp-block-paragraph">dnssec-keygen -a HMAC-SHA512 -b 512 -n HOST rndckey</p>



<p class="wp-block-paragraph">修改 DNS 管理主機上的 named.conf ,  指定需要自動更新的ZONE &amp; 增加控制的TSIG KEY</p>



<p class="has-white-color has-dark-gray-background-color has-text-color has-background wp-block-paragraph">key rndckey {<br>                algorithm hmac-md5;<br>                secret  &#8220;mP1z2QD3R156ULti97TbdsRbPBcxe8zoBlaBla&#8221;;<br>                };<br><br>zone &#8220;example.com&#8221; {<br>                type master;<br>                file &#8220;/var/named/example.com.hosts&#8221;;<br>                allow-update {<br>                                key &#8220;rndckey&#8221;;<br>                                };<br>                };</p>



<p class="wp-block-paragraph">若考慮安全性可用 update-policy 取代 allow-update, 但需要Bind9以上的版本</p>



<p class="wp-block-paragraph">測試是否能動態更新DNS</p>



<p class="has-white-color has-dark-gray-background-color has-text-color has-background wp-block-paragraph">certbot certonly &#8211;dry-run &#8211;dns-rfc2136 &#8211;dns-rfc2136-credentials /etc/letsencrypt/rfc2136.ini &#8211;dns-rfc2136-propagation-seconds 30 -d example.com -d *.example.com</p>



<p class="wp-block-paragraph">若訊息顯示沒有問題就可以以正式取得憑證</p>



<p class="has-white-color has-dark-gray-background-color has-text-color has-background wp-block-paragraph">certbot certonly &#8211;dns-rfc2136 &#8211;dns-rfc2136-credentials /etc/letsencrypt/rfc2136.ini &#8211;dns-rfc2136-propagation-seconds 30 -d example.com -d *.example.com</p>



<p class="wp-block-paragraph">若為no-ip 網域因無法使用DNS驗證則測試方式改為(非wildcard憑證)</p>



<p class="has-white-color has-dark-gray-background-color has-text-color has-background wp-block-paragraph">certbot certonly &#8211;dry-run &#8211;webroot -w /var/www/html -d yourdomain.no-ip.com</p>



<p class="wp-block-paragraph">正式取得</p>



<p class="has-white-color has-dark-gray-background-color has-text-color has-background wp-block-paragraph">certbot certonly &#8211;webroot -w /var/www/html -d yourdomain.no-ip.com</p>



<p class="wp-block-paragraph">申請完成後因為憑證期限為3個月 所以我們需要排成3個約一次執行該指令 另外需要重啟相關使用憑證的服務, 例如:</p>



<p class="has-white-color has-dark-gray-background-color has-text-color has-background wp-block-paragraph">certbot certonly &#8211;dns-rfc2136 &#8211;dns-rfc2136-credentials /etc/letsencrypt/rfc2136.ini &#8211;dns-rfc2136-propagation-seconds 30 -d example.com -d *.example.com &#8211;post-hook &#8216;systemctl restart httpd;systemctl restart dovecot;systemctl restart sendmail&#8217;</p>



<p class="wp-block-paragraph">如果管理的網域很多也可以直接使用 certbot renew , 但因為certbot版本更新很快, 不是很確定所有狀況 renew 都可以正確更新 , 所以這邊直接使用完整指令更新</p>



<p class="wp-block-paragraph">參考文獻:</p>


<p>https://certbot-dns-rfc2136.readthedocs.io/en/stable/<br />https://certbot.eff.org/docs/using.html?highlight=renew<br />https://evermeet.cx/wiki/Let%27s_Encrypt_with_Apache,_dovecot,_and_sendmail</p>


<p class="wp-block-paragraph"></p>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2020/08/25/%e4%bd%bf%e7%94%a8-certbot-%e7%94%b3%e8%ab%8b-lets-encrypt-wildcard-%e6%86%91%e8%ad%89/">使用 certbot 申請 Let&#8217;s Encrypt Wildcard 憑證</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jameschien.mooo.com/wordpress/2020/08/25/%e4%bd%bf%e7%94%a8-certbot-%e7%94%b3%e8%ab%8b-lets-encrypt-wildcard-%e6%86%91%e8%ad%89/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>OpenVPN + PAM + SSSD + Active Directory</title>
		<link>https://jameschien.mooo.com/wordpress/2020/02/19/openvpn-pam-sssd-active-directory/</link>
					<comments>https://jameschien.mooo.com/wordpress/2020/02/19/openvpn-pam-sssd-active-directory/#respond</comments>
		
		<dc:creator><![CDATA[James]]></dc:creator>
		<pubDate>Wed, 19 Feb 2020 05:42:51 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[AD]]></category>
		<category><![CDATA[OpenVPN]]></category>
		<category><![CDATA[pam]]></category>
		<category><![CDATA[SSSD]]></category>
		<category><![CDATA[VPN]]></category>
		<guid isPermaLink="false">http://jameschien.no-ip.biz/wordpress/?p=201</guid>

					<description><![CDATA[<p>OpenVPN伺服器: 系統: Centos8 IP: 10.0.0.10/24 AD驗證伺服器(dc): W &#8230; <a href="https://jameschien.mooo.com/wordpress/2020/02/19/openvpn-pam-sssd-active-directory/" class="more-link">閱讀全文 <span class="screen-reader-text">OpenVPN + PAM + SSSD + Active Directory</span></a></p>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2020/02/19/openvpn-pam-sssd-active-directory/">OpenVPN + PAM + SSSD + Active Directory</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></description>
										<content:encoded><![CDATA[
<pre class="wp-block-preformatted">OpenVPN伺服器:

系統: Centos8
IP: 10.0.0.10/24

AD驗證伺服器(dc):
Windows 2012 DC (網域功能等級 2003)
網域: mydomain.com
主機FQDN: dc.mydomain.com

憑證伺服器(caserver):
Windows 2003 CA 加密方式SHA1
主機FQDN: caserver.mydomain.com</pre>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="699" height="506" src="http://jameschien.no-ip.biz/wordpress/wp-content/uploads/2020/02/openvpn.jpg" alt="" class="wp-image-203" srcset="https://jameschien.mooo.com/wordpress/wp-content/uploads/2020/02/openvpn.jpg 699w, https://jameschien.mooo.com/wordpress/wp-content/uploads/2020/02/openvpn-300x217.jpg 300w" sizes="(max-width: 699px) 100vw, 699px" /></figure>



<pre class="wp-block-preformatted">1. 安裝OpenVPN , 使用路由模式(原生android client不支援 TAP橋接模式)
<p style="background: black;"><span style="color: #ffffff;"># 安裝EPEL軟體庫
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf config-manager --set-enabled PowerTools
dnf repolist epel
# 安裝 git
dnf -y install git
cd ~
# 從github下載安裝命令檔
git clone https://github.com/Nyr/openvpn-install.git
cd openvpn-install/
chmod +x openvpn-install.sh
# 執行安裝檔 ./openvpn-install.sh</span></p>
接下來依指示輸入你的設定值, 完成後自動產生設定檔

修改 /etc/openvpn/server/server.conf 讓OpenVPN支援PAM
<p style="background: black;"><span style="color: #ffffff;">local 10.0.0.10 #主機IP
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-crypt tc.key
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 10.0.0.1"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem
explicit-exit-notify
plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so login #啟用PAM驗證, 使用預設設定檔/etc/pam.d/login</span></p>
重新啟動openvpn
<p style="background: black;"><span style="color: #ffffff;">systemctl restart openvpn-server@server</span></p>
修改Client 端的預設值, 由於用戶端要使用與主機不同網段10.1.0.0/24的資源故需要增加路由
/etc/openvpn/server/client-common.txt
<p style="background: black;"><span style="color: #ffffff;">client dev tun
proto udp
remote 1.2.3.4 1194 # 外部實體IP
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
ignore-unknown-option block-outside-dns
block-outside-dns
auth-user-pass # 除了openvpn本身的金鑰驗證, 另外開啟AD使用者帳號密碼驗證
verb 3
route 10.1.0.0 255.255.255.0 10.0.0.253 # 增加通往10.1.0.0/24網斷路由, 網關為10.0.0.253</span></p>
更改完成後重新執行安裝命令產生新的client端 .ovpn 設定檔
<p style="background: black;"><span style="color: #ffffff;">./openvpn-install.sh</span></p>
過程中選 Add a new user, 至於第一次產生的user設定可以選擇 Revoke an existing user
移除掉. 產生的 .ovpn 檔會在/root資料夾下

2. 取得網域憑證伺服器的Public key ,通常會在以下位址且檔名類似
\\caserver\CertEnroll\caserver_MYDOMAIN Root Certification Authority.crt
使用cifs工具掛載目錄後 下載到centos8上並轉為PEM格式
<p style="background: black;"><span style="color: #ffffff;"># 掛載cifs, server2003使用smb1.0所以參數須加上vers=1.0
mount.cifs //ca_server/CertEnroll /mnt/cifs -o user=administrator,pass=password,dom=mydomain,vers=1.0
cp /mnt/cifs/xxxx.crt xxxx.crt
# 將der 轉換為 pem
openssl x509 -inform der -in xxxx.crt -out xxxx.pem
# 搬移到 trust資料夾
mv xxxx.pem /etc/pki/ca-trust/source/anchors
# 將憑證更新至主機信任憑證裡
update-ca-trust </span></p>
3. 設定sssd 連接 Active Directory
修改/etc/sssd/sssd.conf
<p style="background: black;"><span style="color: #ffffff;">[sssd]
services = nss, pam, ssh
config_file_version = 2
domains = mydomain

[sudo]

[nss]

[pam]
offline_credentials_expiration = 60

[domain/mydomain]
cache_credentials = True
ldap_search_base = dc=mydomain,dc=com
id_provider = ldap
ldap_uri = ldaps://dc.mydomain.com:636   #AD主機, 使用ssl協定連線
ldap_schema = AD
ldap_default_bind_dn = cn=administrator,cn=users,dc= mydomain,dc=com  # 這裡為了方便使用管理員帳號, 為安全起見可以使用唯讀的網域帳號
ldap_default_authtok = password_for_administrator  # 管理員密碼
ldap_tls_reqcert = demand
ldap_tls_cacert = /etc/pki/tls/certs/ca-bundle.crt
ldap_tls_cacertdir = /etc/pki/tls/certs
ldap_search_timeout = 50
ldap_network_timeout = 60
ldap_id_mapping = True
ldap_referrals = false

enumerate = False
fallback_homedir = /home/%u
default_shell = /bin/bash</span></p>
修改 /etc/openlap/ldap.conf
<p style="background: black;"><span style="color: #ffffff;">URI ldaps://dc.mydomain.com:636
base    dc=mydomain,dc=com
TLS_CACERT  /etc/pki/tls/certs/ca-bundle.crt
SASL_NOCANON    on</span></p>
強制啟用sssd
<p style="background: black;"><span style="color: #ffffff;">authselect select sssd –force
systemctl enable --now sssd
systemctl restart sssd</span></p>
由於Windows 2003 CA仍使用舊版SHA1, 因此需要改crypto政策
<p style="background: black;"><span style="color: #ffffff;">update-crypto-policies --set LEGACY</span></p>
完成後重新開機

4. 防火牆上設定允許連向1.2.3.4 UDP1194的流量並引導至內部10.0.0.10

5. 用戶端安裝OpenVPN Client軟體後匯入.ovpn檔
Windows7/8/10 Client: OpenVPN-GUI (嘗試過OpenVPN Connect for Windows無法匯入.ovpn)
iOS/Android Client: OpenVPN Connect

參考資料:
<blockquote class="wp-embedded-content" data-secret="LaqGLYlgZC"><a href="https://computingforgeeks.com/install-and-configure-openvpn-server-on-rhel-centos-8/">OpenVPN Server Configuration on RHEL / Rocky / Alma</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="“OpenVPN Server Configuration on RHEL / Rocky / Alma” — ComputingForGeeks" src="https://computingforgeeks.com/install-and-configure-openvpn-server-on-rhel-centos-8/embed/#?secret=92D7WvEnk2#?secret=LaqGLYlgZC" data-secret="LaqGLYlgZC" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
https://www.redhat.com/en/blog/consistent-security-crypto-policies-red-hat-enterprise-linux-8
https://medium.com/jerrynotes/linux-authentication-windows-ad-without-join-domain-7963c3fd44c5</pre>



<p class="wp-block-paragraph"></p>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2020/02/19/openvpn-pam-sssd-active-directory/">OpenVPN + PAM + SSSD + Active Directory</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jameschien.mooo.com/wordpress/2020/02/19/openvpn-pam-sssd-active-directory/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Zoneminder 安裝設定</title>
		<link>https://jameschien.mooo.com/wordpress/2016/10/20/zoneminder-%e5%ae%89%e8%a3%9d%e8%a8%ad%e5%ae%9a/</link>
					<comments>https://jameschien.mooo.com/wordpress/2016/10/20/zoneminder-%e5%ae%89%e8%a3%9d%e8%a8%ad%e5%ae%9a/#respond</comments>
		
		<dc:creator><![CDATA[James]]></dc:creator>
		<pubDate>Thu, 20 Oct 2016 07:35:53 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[yoosee]]></category>
		<category><![CDATA[zoneminder]]></category>
		<category><![CDATA[安裝]]></category>
		<category><![CDATA[設定]]></category>
		<guid isPermaLink="false">http://jameschien.no-ip.biz/wordpress/?p=169</guid>

					<description><![CDATA[<p>Zoneminder優點: Web介面, 使用MJPEG格式進行影像判別, 可集中管理多廠牌IP CAM. 使 &#8230; <a href="https://jameschien.mooo.com/wordpress/2016/10/20/zoneminder-%e5%ae%89%e8%a3%9d%e8%a8%ad%e5%ae%9a/" class="more-link">閱讀全文 <span class="screen-reader-text">Zoneminder 安裝設定</span></a></p>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2016/10/20/zoneminder-%e5%ae%89%e8%a3%9d%e8%a8%ad%e5%ae%9a/">Zoneminder 安裝設定</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></description>
										<content:encoded><![CDATA[<p>Zoneminder優點: Web介面, 使用MJPEG格式進行影像判別, 可集中管理多廠牌IP CAM. 使用者幾乎不須安裝任何軟體即可觀看. IP CAM附贈的軟體雖功能多, 但如果在外且有防火牆, 那麼可能受限PORT沒開即無法使用.</p>
<p>缺點: 由於使用MJPEG , 只有影像無聲音, 若開啟動作偵測則耗費CPU效能.</p>
<p>目前網路上有許多大陸海思hisilicon方案號稱960P且支援ONVIF的便宜IP CAM, 索性買了兩個來測試. 雖說號稱960P, 安裝時它的解析度只能到1280&#215;720, 詢問過老闆說確定是130萬畫素, 但怎麼測都無法在ZM及機器原本的操控軟體(yoosee)上達到960P效果 , 看在便宜價格上就算了….<br />
http://goods.ruten.com.tw/item/show?21638660503268<br />
<img decoding="async" src="http://jameschien.no-ip.biz/wordpress/wp-content/uploads/2016/10/102016_0735_Zoneminder1.jpg" alt="" /></p>
<p>安裝zoneminder</p>
<p>到zoneminder repo下載相對應的rpm package方便安裝<br />
<a href="https://zmrepo.zoneminder.com/">https://zmrepo.zoneminder.com/</a></p>
<p>因為系統是64bit Centos7</p>
<p style="background: black;"><span style="color: #ffffff;">wget http://zmrepo.zoneminder.com/el/7/x86_64/zmrepo-7-7.el7.centos.noarch.rpm<br />
yum install &#8211;nogpgcheck zmrepo-7-7.el7.centos.noarch.rpm<br />
yum install zoneminder<br />
</span></p>
<p>由於本身的系統apache使用者非預設的apache帳戶 有權限問題導致無法啟動需要做些修改</p>
<p style="background: black;"><span style="color: #ffffff;">chmod -R asterisk:asterisk /var/run/zoneminder /var/log/zoneminder /var/lib/zoneminder</span></p>
<p>修改 systemd啟動檔 /usr/lib/systemd/system/zoneminder.service</p>
<p style="background: black;"><span style="color: #ffffff;"># ZoneMinder systemd unit file for CentOS 7<br />
[Unit]<br />
Description=ZoneMinder CCTV recording and security system<br />
After=network.target mariadb.service httpd.service<br />
Requires=mariadb.service httpd.service<br />
[Service]<br />
User=asterisk # 修改成你的apache啟動user<br />
Type=forking<br />
ExecStart=/usr/bin/zmpkg.pl start<br />
ExecReload=/usr/bin/zmpkg.pl restart<br />
ExecStop=/usr/bin/zmpkg.pl stop<br />
PIDFile=&#8221;/var/run/zoneminder/zm.pid&#8221;<br />
[Install]<br />
WantedBy=multi-user.target<br />
</span></p>
<p>匯入資料庫schema (這邊使用的是mariadb)</p>
<p style="background: black;"><span style="color: #ffffff;">mysql -uroot -p rootpassword &lt; /usr/share/zoneminder/db/zm_create.sql<br />
mysql -uroot -p -e &#8220;grant all on zm.* to &#8216;zmuser&#8217;@localhost identified by &#8216;zmpass&#8217;;&#8221;<br />
mysqladmin -uroot -p rootpassword reload<br />
</span></p>
<p>zmuser/zmpass為該資料庫的帳號及密碼, rootpassword為資料庫root的密碼</p>
<p>修改/etc/zm/zm.conf 將帳密 及 服務啟動身分 填入</p>
<p style="background: black;"><span style="color: #ffffff;"># Username and group that web daemon (httpd/apache) runs as<br />
ZM_WEB_USER=asterisk<br />
ZM_WEB_GROUP=asterisk<br />
# ZoneMinder database user<br />
ZM_DB_USER=zmuser<br />
# ZoneMinder database password<br />
ZM_DB_PASS=zmpass</span></p>
<p>修改/etc/php.ini的區域時間</p>
<p style="background: black;"><span style="color: #ffffff;">[Date]<br />
; Defines the default timezone used by the date functions<br />
; http://php.net/date.timezone<br />
;date.timezone =<br />
date.timezone = Asia/Taipei</span></p>
<p>預設cetos7的apache沒有安裝mod_ssl. ZM會使用系統預設的自簽憑證, 所以要安裝ssl模組</p>
<p style="background: black;"><span style="color: #ffffff;">yum install mod_ssl<br />
systemctl restart httpd</span></p>
<p>修改完即可啟動ZM</p>
<p style="background: black;"><span style="color: #ffffff;">systemctl enable zoneminder<br />
systemctl start zoneminder</span></p>
<p>設定zoneminder</p>
<p>登入<a href="https://your.ip/zm">https://your.ip/zm</a><br />
預設沒有帳密所以我們先開啟帳號驗證及更改版面風格</p>
<p>右上options -&gt; system<br />
CSS_DEFAULT 改成flat<br />
LANG_DEFAULT 改成big5_big5<br />
OPT_USE_AUTH 勾選<br />
AUTH_TYPE 選builtin<br />
AUTH_RELY 選hashed<br />
AUTH_HASH_SECRET 填入您用來加密密碼的字串<br />
存檔</p>
<p>options -&gt; display<br />
ZM_CSS 選擇 flat<br />
存檔</p>
<p>重新後登入就會需要帳密了. 預設帳密 admin/admin<br />
如果要修改帳密就到 options -&gt; user<br />
開啟admin帳戶設定填入 新密碼/確認密碼 存檔即可<br />
接下來就是最重要的IP CAM設定 先依手冊將IP CAM設定完成</p>
<p>點選ZM主畫面 -&gt; 新增監視器 -&gt; 一般<br />
名稱: 隨意<br />
來源形式: ffmpeg<br />
功能: Monitor (依需求選擇 這裡只監看)<br />
<img decoding="async" src="http://jameschien.no-ip.biz/wordpress/wp-content/uploads/2016/10/102016_0735_Zoneminder2.jpg" alt="" /></p>
<p>來源頁籤部分<br />
Source Path: rtsp://admin:your_password_of_ipcam@your_ip:554/onvif1<br />
請填入IP CAM帳密及IP位址, PORT為554, 路徑為onvif1<br />
Remote Method: RTP/Unicast<br />
寬度: 1280<br />
高度: 720<br />
<img decoding="async" src="http://jameschien.no-ip.biz/wordpress/wp-content/uploads/2016/10/102016_0735_Zoneminder3.png" alt="" /></p>
<p>Control頁籤部分<br />
Controllable: 勾選<br />
Control Type: Netcat ONVIF<br />
Control Address: admin:password@your_ip:5000<br />
請填入IP CAM帳密及IP位址, PORT為5000<br />
<img decoding="async" src="http://jameschien.no-ip.biz/wordpress/wp-content/uploads/2016/10/102016_0735_Zoneminder4.jpg" alt="" /><br />
重複步驟加入所有的IP CAM, 不同廠牌可以到官網Wiki找看看是否有支援<br />
<a href="https://wiki.zoneminder.com/">https://wiki.zoneminder.com/</a><br />
如果你的IP CAM有支援netcatc或ONVIF可以在新增時試試在上方的Probe/ONVIF功能. 由於自己的主機跟IP CAM是在不同網段只能自己新增<br />
<img decoding="async" src="http://jameschien.no-ip.biz/wordpress/wp-content/uploads/2016/10/102016_0735_Zoneminder5.jpg" alt="" /></p>
<p>完成測試後可以慢慢深入研究去嘗試系統的錄影, 動作偵測錄影(使用電腦主機效能非IP CAM本身硬體偵測), 警報等功能</p>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2016/10/20/zoneminder-%e5%ae%89%e8%a3%9d%e8%a8%ad%e5%ae%9a/">Zoneminder 安裝設定</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jameschien.mooo.com/wordpress/2016/10/20/zoneminder-%e5%ae%89%e8%a3%9d%e8%a8%ad%e5%ae%9a/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Samba4 AD DC + DHCPD + BIND (Dynamic DNS)</title>
		<link>https://jameschien.mooo.com/wordpress/2014/12/29/samba4-ad-dc-dhcpd-bind-dynamic-dns/</link>
					<comments>https://jameschien.mooo.com/wordpress/2014/12/29/samba4-ad-dc-dhcpd-bind-dynamic-dns/#comments</comments>
		
		<dc:creator><![CDATA[James]]></dc:creator>
		<pubDate>Mon, 29 Dec 2014 03:58:56 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[samba]]></category>
		<category><![CDATA[AD]]></category>
		<category><![CDATA[bind9]]></category>
		<category><![CDATA[DC]]></category>
		<category><![CDATA[dhcp]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[dynamic DNS]]></category>
		<category><![CDATA[samba4]]></category>
		<guid isPermaLink="false">http://jameschien.no-ip.biz/wordpress/?p=142</guid>

					<description><![CDATA[<p>Samba 4 已經釋出很長一段時間了 因此趁著升級電腦與 centos 6 順便將 Samba 3 AD D &#8230; <a href="https://jameschien.mooo.com/wordpress/2014/12/29/samba4-ad-dc-dhcpd-bind-dynamic-dns/" class="more-link">閱讀全文 <span class="screen-reader-text">Samba4 AD DC + DHCPD + BIND (Dynamic DNS)</span></a></p>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2014/12/29/samba4-ad-dc-dhcpd-bind-dynamic-dns/">Samba4 AD DC + DHCPD + BIND (Dynamic DNS)</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></description>
										<content:encoded><![CDATA[<p>Samba 4 已經釋出很長一段時間了 因此趁著升級電腦與 centos 6 順便將 Samba 3 AD DC + dhcpd + bind 更新為 Samba 4 + bind 9 dlz 模組 + dhcpd</p>
<p>DC DQDN名稱 : samba4dc</p>
<p>DC IP : 192.168.0.1/24</p>
<ol>
<li>首先到 https://portal.enterprisesamba.com/users/sign_up 註冊. 方便使用 yum 升級 samba , 如果使用 source 安裝就不需申請. 登入後把給 centos6 用的 sernet-samba-4.1.repo 檔下載回來並修改檔案中 USERNAME:ACCESSKEY 的部分.</li>
<li>升級前先備份 /etc/samba, /var/lib/samba, /etc/dhcp, /etc/named.conf, /var/named, /var/cache/samba 等目錄</li>
<li>安裝 samba 4
<pre># yum install sernet-samba -y</pre>
</li>
<li>升級 Samba AD 網域<br />
移動設定檔</p>
<pre>mv /etc/smb.conf /etc/smb.PDC.conf</pre>
<p>將舊資料庫等檔案移到其他位置</p>
<pre># mv /var/lib/samba/ /var/lib/samba.PDC/
# mv /var/cache/samba/ /var/cache/samba.PDC/</pre>
<p>新增資料夾. 並將升級時會用到的資料庫檔案複製到該目錄</p>
<pre># mkdir /var/lib/samba.PDC/dbdir/
# cp -p /var/lib/samba.PDC/private/secrets.tdb /var/lib/samba.PDC/dbdir/
# cp -p /var/lib/samba.PDC/private/schannel_store.tdb /var/lib/samba.PDC/dbdir/
# cp -p /var/lib/samba.PDC/private/passdb.tdb /var/lib/samba.PDC/dbdir/
# cp -p /var/cache/samba.PDC/gencache_notrans.tdb /var/lib/samba.PDC/dbdir/
# cp -p /var/cache/samba.PDC/group_mapping.tdb /var/lib/samba.PDC/dbdir/
# cp -p /var/cache/samba.PDC/account_policy.tdb /var/lib/samba.PDC/dbdir/</pre>
<p>升級資料庫以及使用 bind_dlz 模組</p>
<pre># samba-tool domain classicupgrade --dbdir=/var/lib/samba.PDC/dbdir/ --use-xattrs=yes --realm=home.com --dns-backend=BIND9_DLZ /etc/smb.PDC.conf --option="interfaces=lo eth0" --option="bind interfaces only=yes"</pre>
<pre>PS: --option="interfaces=lo eth0" --option="bind interfaces only=yes" 這是限定 samba 只作用在網卡 loopback 及 eth0</pre>
</li>
<li>調整產生的 samba 設定即啟動檔<br />
/etc/samba/smb.conf</p>
<pre>[global]
        workgroup = HOME
        realm = home.com
        netbios name = SAMBA4DC
        interfaces = lo, eth0
        bind interfaces only = Yes
        server role = active directory domain controller
        server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate
        idmap_ldb:use rfc2307 = yes
        log level = 2
        log file = /var/log/samba/log.%m
        max log size = 50
        wins support = yes
        syslog = 0
        username map = /etc/samba/smbusers
        domain master = yes
        domain logons = yes
        local master = yes
        preferred master = yes

[netlogon]
        path = /var/lib/samba/sysvol/home.com/scripts
        read only = No

[sysvol]
        path = /var/lib/samba/sysvol
        read only = No

[homes]
        comment = Home Directories
        browseable = no
        read only = No
        valid users = %S
        create mask = 0700
        directory mask = 0700

[nas]
        comment = storage
        path = /home/data
        public = yes
        writable = yes
        printable = no
        write list = +adm</pre>
<p>因為是作為 dc , 只要開啟 sernet-samba-ad 服務. 其餘 sernet-samba-nmbd, sernet-samba-smbd, sernet-samba-winbindd 不須啟動.</p>
<pre># chkconfig --level 2345 sernet-samba-ad on</pre>
</li>
<li>調整 bind9 &amp; kerberos 設定<br />
/etc/named.conf</p>
<pre>options {
        listen-on port 53 { 127.0.0.1; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";

        forwarders {
                168.95.1.1;
                };
        forward first;
        listen-on {
                home;
        };
        allow-recursion {home;};
        allow-update { home; };
        allow-query { home; };
        allow-transfer { home;};
        listen-on-v6 { none; };
        <span style="color: #ff0000;">tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";</span> #加入這行
        auth-nxdomain yes;
        empty-zones-enable no;
        version none;
        hostname none;
        server-id none;
};

logging {
        channel Named_log {
            file "data/named.run";# versions 5 size 5m;
            severity dynamic;
            print-severity  yes;
            print-time yes; };
        category default {Named_log; };
        category xfer-out {Named_log; };
        category queries {Named_log; };
};

acl "home" { 192.168.0.0/24; 127.0.0.1;};

controls {
        inet 127.0.0.1 allow { localhost; } keys { rndc-key; };
};

zone "." IN {
        type hint;
        file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
include "/etc/rndc.key";
<span style="color: #ff0000;">include "/var/lib/samba/private/named.conf";</span>   #加入這行</pre>
<p>/var/lib/samba/private/named.conf</p>
<pre>lz "AD DNS Zone" {
    # For BIND 9.8.0
    database "dlopen /usr/lib64/samba/bind9/dlz_bind9.so"; #選擇對應的 bind 版本

    # For BIND 9.9.0
    # database "dlopen /usr/lib64/samba/bind9/dlz_bind9_9.so";
};</pre>
<p>修改 keytab 檔案權限讓 bind 可以用其來動態更新 zone</p>
<pre># chgrp named /var/lib/samba/private
# chgrp named /var/lib/samba/private/dns.keytab
# chmod g+r /var/lib/samba/private/dns.keytab</pre>
<p>連結 kerberos 設定檔到 /etc 下</p>
<pre># ln -sf /var/lib/samba/private/krb5.conf /etc/krb5.conf</pre>
<p>重啟 named</p>
<pre># service named restart</pre>
<p>增加反解析區域</p>
<pre># samba-tool dns zonecreate <strong>samba4dc.home.com</strong> <b>0</b>.<b>168</b>.<b>192</b>.in-addr.arpa</pre>
<p>將 DC 的 PTR 加入反解區域</p>
<pre># samba-tool dns add <b>samba4dc</b>.<strong>h</strong><b>ome</b>.<b>com</b> <b>0</b>.<b>168</b>.<b>192</b>.in-addr.arpa <b>1</b> PTR <b>samba4dc</b>.<b>home</b>.<b>com</b><b></b></pre>
<p>如果有設定 ntpd (選擇性) 請修改 socket 的位址讓 samba 可以讀取</p>
<pre>driftfile /var/lib/ntp/drift
logfile         /var/log/ntp
<span style="color: #ff0000;">ntpsigndsocket  /var/lib/samba/ntp_signd</span>

restrict default kod nomodify notrap nopeer mssntp noquery
restrict -6 default kod nomodify notrap nopeer noquery

restrict 127.0.0.1
restrict -6 ::1

restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

includefile /etc/ntp/crypto/pw

keys /etc/ntp/keys</pre>
<p>修改權限及重啟 ntpd</p>
<pre># chown root:ntp /var/lib/<wbr />samba/ntp_<wbr />signd
# chmod 750 /var/lib/<wbr />samba/ntp_<wbr />signd
# service ntpd restart</pre>
<p>重啟 samba</p>
<pre># service smbd stop
# service nmbd stop
# service sernet-samba-ad start</pre>
</li>
<li>DHCPD 設定<br />
在 AD 裡新增 dhcp 這個使用者並給予權限讓它可以動態更新 DNS(也可以使用 Windows 遠端伺服器管理工具 RSAT 來新增)</p>
<pre># samba-tool user create dhcp --description="Unprivileged user for DNS updates via DHCP server"
# samba-tool group addmembers DnsAdmins dhcp</pre>
<p>將該使用者憑證匯出成 keytab 檔</p>
<pre># cd /etc/dhcp
# samba-tool domain exportkeytab --principal=dhcp@HOME.COM dhcpd.keytab
# chown root:dhcpd /etc/dhcp/dhcpd.keytab
# chmod 440 /etc/dhcp/dhcpd.keytab
# chgrp dhcpd /etc/dhcp</pre>
<p>新增以下兩個執行檔<br />
/usr/local/sbin/dhcp-dyndns.sh</p>
<pre>#!/bin/bash
$(dirname $0)/dns-krbnsupdate.sh $@ 2&gt;&amp;1 | logger &amp;</pre>
<p>/usr/local/sbin/dns-krbnsupdate.sh</p>
<pre>#!/bin/bash

# This script is for secure DDNS updates using GSS/TSIG
# Version: 0.1

## CONFIGURATION ##
# Kerberos realm
realm="HOME.COM"
# Kerberos principal
principal="dhcp@$realm"
# Kerberos keytab
keytab="/etc/dhcp/dhcpd.keytab"
# Kerberos credentials cache
krb5cc="/tmp/krb5cc_0"
# Use MIT kerberos args instead of heimdal.
KRB5MIT="YES"

# Domain appended to hostname
domain="home.com"
# Space separated list of DNS servers for sending updates to
NSRVS="cchisheng.home.com"
# Default DNS resource records TTL
RRTTL="3600"
# Do not use TXT RRs (rfc4701)
NOTXTRRS="YES"

# Additional nsupdate flags (-g already applied), e.g. "-d" for debug
#NSUPDFLAGS="-d"
# Run in the foreground (for manual run only!!!), it's better to use "-d" as script's first argument
#DEBUG="YES"

######################################################

## VARIABLES ##
[ "$1" = "-d" ] &amp;&amp; DEBUG="YES" &amp;&amp; shift
action=$1
ip=$2
DHCID=$3
name=${4%%.*}
[ -n "$5" ] &amp;&amp; RRTTL="$5"

_usage() {
echo "Usage:"
echo " `basename $0` [-d] add ip-address dhcid|mac-address hostname [dns-ttl]"
echo " `basename $0` [-d] delete ip-address dhcid|mac-address"
}

_kerberos() {
export KRB5_KTNAME="$keytab"
export KRB5CCNAME="$krb5cc"

if [ "$KRB5MIT" = "YES" ]; then
 KLISTARG="-s"
else
 KLISTARG="-t"
fi

klist $KLISTARG || kinit -k -t "$keytab" -c "$krb5cc" "$principal" || { echo "DDNS: kinit failed"; exit 1; }
}

_main() {
umask 77

if [ -z "$ip" ] || [ -z "$DHCID" ]; then
 _usage
 exit 1
fi


## NSUPDATE ##
case "$action" in
 add)
 RRPTR="$name.$domain"
 if [ "$NOTXTRRS" != "YES" ]; then
 NOTXTRRS=""
 RRAOLD=`host $RRPTR | awk '/has address/ {print $4}'`
 if [ -n "$RRAOLD" ]; then
 RRTXTOLD=`host -t txt "$RRPTR" | sed -n '/descriptive text/s/^.*[[:space:]]descriptive text[[:space:]]*"\(.*\)"$/\1/p'`
 [ -z "$RRTXTOLD" ] &amp;&amp; echo "DDNS: adding records for $ip ($RRPTR) FAILED: has A record but no DHCID, not mine" &amp;&amp; exit 1

 RRTXT=`echo "$DHCID$RRPTR" | sha256sum`
 RRTXT="000101${RRTXT%% *}"
 [ "$RRTXT" != "$RRTXTOLD" ] &amp;&amp; echo "DDNS: adding records for $ip ($RRPTR) FAILED: has A record but DHCID is wrong" &amp;&amp; exit 1
 else
 RRTXT=`echo "$DHCID$RRPTR" | sha256sum`
 RRTXT="000101${RRTXT%% *}"
 fi
 else
 NOTXTRRS=";"
 fi

 RRPTRNAME=`echo $ip | awk -F '.' '{print $4"."$3"."$2"."$1".in-addr.arpa"}'`

 _kerberos

 for NSRV in $NSRVS; do
 nsupdate -g $NSUPDFLAGS &lt;&lt; UPDATE
server $NSRV
realm $realm
update delete $RRPTR. $RRTTL A
${NOTXTRRS}update delete $RRPTR. $RRTTL TXT
${NOTXTRRS}update add $RRPTR. $RRTTL TXT $RRTXT
update add $RRPTR. $RRTTL A $ip
send
update delete $RRPTRNAME. $RRTTL PTR
update add $RRPTRNAME. $RRTTL PTR $name.$domain.
send
UPDATE
  result=$?
 [ "$result" -eq "0" ] &amp;&amp; echo "DDNS: adding records for $ip ($RRPTR) succeeded" &amp;&amp; exit 0
 done

 [ "$result" != "0" ] &amp;&amp; echo "DDNS: adding records for $ip ($RRPTR) FAILED: nsupdate status $result" &amp;&amp; exit "$result"
 ;;
 delete)
 RRPTR=`host $ip | awk '/domain name pointer/ { sub(/\.$/, "", $5); print $5}'`
 if [ "$NOTXTRRS" != "YES" ]; then
 NOTXTRRS=""
 if [ -n "$RRPTR" ]; then
 RRTXTOLD=`host -t txt "$RRPTR" | sed -n '/descriptive text/s/^.*[[:space:]]descriptive text[[:space:]]*"\(.*\)"$/\1/p'`
 [ -z "$RRTXTOLD" ] &amp;&amp; echo "DDNS: removing records for $ip ($RRPTR) FAILED: has A record but no DHCID, not mine" &amp;&amp; exit 1

 RRTXT=`echo "$DHCID$RRPTR" | sha256sum`
 RRTXT="000101${RRTXT%% *}"
 [ "$RRTXT" != "$RRTXTOLD" ] &amp;&amp; echo "DDNS: removing records for $ip ($RRPTR) FAILED: has A record but DHCID is wrong" &amp;&amp; exit 1
 else
 echo "DDNS: removing records for $ip FAILED: has no PTR, can not determine A record" &amp;&amp; exit 1
 fi
 else
 NOTXTRRS=";"
 fi

 RRPTRNAME=`echo $ip | awk -F '.' '{print $4"."$3"."$2"."$1".in-addr.arpa"}'`

 _kerberos

 for NSRV in $NSRVS; do
 nsupdate -g $NSUPDFLAGS &lt;&lt; UPDATE
server $NSRV
realm $realm
update delete $RRPTR. $RRTTL A
${NOTXTRRS}update delete $RRPTR. $RRTTL TXT
send
update delete $RRPTRNAME. $RRTTL PTR
send
UPDATE
 result=$?
 [ "$result" -eq "0" ] &amp;&amp; echo "DDNS: removing records for $ip ($RRPTR) succeeded" &amp;&amp; exit 0
 done

 [ "$result" != "0" ] &amp;&amp; echo "DDNS: removing records for $ip ($RRPTR) FAILED: nsupdate status $result" &amp;&amp; exit "$result"
 ;;
 *)
 _usage &amp;&amp; exit 1
 ;;
esac
}

if [ "$DEBUG" = "YES" ]; then
 _main
else
 :
 _main | logger -s -t dhcpd &amp;
fi</pre>
<p>修改 /etc/dhcp/dhcpd.conf</p>
<pre>subnet 192.168.0.0 netmask 255.255.255.0 {
 authoritative;
 option netbios-name-servers 192.168.0.1;
 option domain-name-servers 192.168.0.1;
 option domain-name "home.com";
 option netbios-node-type 8;
 option routers 192.168.1.1;
 option subnet-mask 255.255.255.0;
 default-lease-time 259200;
 range 192.168.0.10 192.168.1.250;
 on commit {
 set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
 set ClientName = pick-first-value(option host-name, host-decl-name);
 set ClientDHCID = binary-to-ascii(16, 8, ":", hardware);
 execute("/usr/local/sbin/dhcp-dyndns.sh", "add", ClientIP, ClientDHCID, ClientName);
 }
 on release {
 set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
 set ClientName = pick-first-value(option host-name, host-decl-name);
 set ClientDHCID = binary-to-ascii(16, 8, ":", hardware);
 execute("/usr/local/sbin/dhcp-dyndns.sh", "delete", ClientIP, ClientDHCID);
 }
 on expiry {
 set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
 set ClientName = pick-first-value(option host-name, host-decl-name);
 set ClientDHCID = binary-to-ascii(16, 8, ":", hardware);
 execute("/usr/local/sbin/dhcp-dyndns.sh", "delete", ClientIP, ClientDHCID);
 }
}</pre>
<p>改變檔案權限</p>
<pre># chmod 755 /usr/local/sbin/dhcp-dyndns.sh
# chmod 755 /usr/local/sbin/dns-krbnsupdate.sh</pre>
<p>重啟 dhcpd</p>
<pre># service dhcpd restart</pre>
</li>
<li>測試
<pre># samba_dnsupdate --verbose --all-names</pre>
<p>若上述指令沒有錯誤表示 bind9 設定正確. 若有錯誤請檢查檔案及目錄權限, 讓 bind9 可以讀取  dns.keytab<br />
當 dhcp client 端開機或者在 Windows 命令提示視窗執行 ipconfig /renew 時, server上的 syslog 會有以下紀錄, 表示動態更新成功</p>
<pre>Dec  9 00:00:15 samba4dc dhcpd: DDNS: adding records for 192.168.0.186 (win7.home.com) succeeded
Dec  9 00:00:15 samba4dc logger: dhcpd: DDNS: adding records for 192.168.0.186 (win7.home.com) succeeded</pre>
</li>
<li>問題<br />
I.Windows client本身會執行 secure dns update, 因此 named 紀錄裡會有更新失敗的錯誤. 由於我們是透過dhcpd更新dns, 因此該錯誤可以忽略.<br />
II.Samba4目前對於讓 dc 及file server 在同台伺服器上尚未完整支援, 因此 client 端在網路芳鄰內找不到 server, 需要手動輸入 \\server 連結伺服器. 如果在登入指令檔或者 RSAT 的使用者管理裡指定連線磁碟機就可以解決該問題<br />
III. RSAT 的 DNS 管理員可以新增刪除紀錄但有時會有錯誤訊息但不影響</li>
<li>參考文獻<br />
https://wiki.samba.org/index.php/User_Documentation</p>
<blockquote class="wp-embedded-content" data-secret="qL7ryiZgDf"><p><a href="https://blog.michael.kuron-germany.de/2011/02/isc-dhcpd-dynamic-dns-updates-against-secure-microsoft-dns/">ISC DHCPd: Dynamic DNS updates against secure Microsoft DNS</a></p></blockquote>
<p><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="“ISC DHCPd: Dynamic DNS updates against secure Microsoft DNS” — Michael Kuron&amp;apos;s Blog" src="https://blog.michael.kuron-germany.de/2011/02/isc-dhcpd-dynamic-dns-updates-against-secure-microsoft-dns/embed/#?secret=pHOwPN1pIi#?secret=qL7ryiZgDf" data-secret="qL7ryiZgDf" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe><br />
https://wiki.archlinux.org/index.php/Samba_4_Active_Directory_Domain_Controller</li>
</ol>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2014/12/29/samba4-ad-dc-dhcpd-bind-dynamic-dns/">Samba4 AD DC + DHCPD + BIND (Dynamic DNS)</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jameschien.mooo.com/wordpress/2014/12/29/samba4-ad-dc-dhcpd-bind-dynamic-dns/feed/</wfw:commentRss>
			<slash:comments>18</slash:comments>
		
		
			</item>
		<item>
		<title>SASL + PAM 無法紀錄 rhost 以配合 fail2ban 的解法</title>
		<link>https://jameschien.mooo.com/wordpress/2014/01/27/sasl-pam-%e7%84%a1%e6%b3%95%e7%b4%80%e9%8c%84-rhost-%e4%bb%a5%e9%85%8d%e5%90%88-fail2ban-%e7%9a%84%e8%a7%a3%e6%b3%95/</link>
					<comments>https://jameschien.mooo.com/wordpress/2014/01/27/sasl-pam-%e7%84%a1%e6%b3%95%e7%b4%80%e9%8c%84-rhost-%e4%bb%a5%e9%85%8d%e5%90%88-fail2ban-%e7%9a%84%e8%a7%a3%e6%b3%95/#respond</comments>
		
		<dc:creator><![CDATA[James]]></dc:creator>
		<pubDate>Mon, 27 Jan 2014 08:23:51 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[pam]]></category>
		<category><![CDATA[rhost]]></category>
		<category><![CDATA[sasl]]></category>
		<category><![CDATA[sendmail]]></category>
		<guid isPermaLink="false">http://jameschien.no-ip.biz/wordpress/?p=128</guid>

					<description><![CDATA[<p>如果cnetos5系統使用 saslauthd + PAM + sendmail 時, 當遠端使用 sasl  &#8230; <a href="https://jameschien.mooo.com/wordpress/2014/01/27/sasl-pam-%e7%84%a1%e6%b3%95%e7%b4%80%e9%8c%84-rhost-%e4%bb%a5%e9%85%8d%e5%90%88-fail2ban-%e7%9a%84%e8%a7%a3%e6%b3%95/" class="more-link">閱讀全文 <span class="screen-reader-text">SASL + PAM 無法紀錄 rhost 以配合 fail2ban 的解法</span></a></p>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2014/01/27/sasl-pam-%e7%84%a1%e6%b3%95%e7%b4%80%e9%8c%84-rhost-%e4%bb%a5%e9%85%8d%e5%90%88-fail2ban-%e7%9a%84%e8%a7%a3%e6%b3%95/">SASL + PAM 無法紀錄 rhost 以配合 fail2ban 的解法</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></description>
										<content:encoded><![CDATA[<p>如果cnetos5系統使用 saslauthd + PAM + sendmail 時, 當遠端使用 sasl 認證發生錯誤時相關紀錄檔並不會紀錄遠端的 ip 位址</p>
<p>/var/log/messages</p>
<p>Jan 26 07:14:12 fedora saslauthd[27264]: do_auth         : auth failure: [user=user1] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error]<br />
Jan 26 07:14:18 fedora saslauthd[27267]: do_auth         : auth failure: [user=user1] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error]<br />
Jan 26 07:14:22 fedora saslauthd[27262]: do_auth         : auth failure: [user=user1] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error]<br />
Jan 26 07:14:26 fedora saslauthd[27265]: do_auth         : auth failure: [user=user1] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error]<br />
Jan 26 07:14:32 fedora saslauthd[27267]: do_auth         : auth failure: [user=user1] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error]</p>
<p>/var/log/maillog</p>
<p>Jan 26 07:14:13 fedora sendmail[29536]: s0PNE8Zh029536: [78.93.245.133] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA<br />
Jan 26 07:14:18 fedora sendmail[29537]: s0PNED8R029537: [78.93.245.133] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA<br />
Jan 26 07:14:23 fedora sendmail[29538]: s0PNEItR029538: [78.93.245.133] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA<br />
Jan 26 07:14:28 fedora sendmail[29539]: s0PNENjN029539: [78.93.245.133] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA<br />
Jan 26 07:14:32 fedora sendmail[29540]: s0PNESYI029540: [78.93.245.133] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA</p>
<p>/var/log/secure</p>
<p>Jan 26 07:14:10 fedora saslauthd[27264]: pam_unix(smtp:auth): check pass; user unknown<br />
Jan 26 07:14:10 fedora saslauthd[27264]: pam_unix(smtp:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=<br />
Jan 26 07:14:10 fedora saslauthd[27264]: pam_succeed_if(smtp:auth): error retrieving information about user chi<br />
Jan 26 07:14:15 fedora saslauthd[27267]: pam_unix(smtp:auth): check pass; user unknown<br />
Jan 26 07:14:15 fedora saslauthd[27267]: pam_unix(smtp:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=<br />
Jan 26 07:14:15 fedora saslauthd[27267]: pam_succeed_if(smtp:auth): error retrieving information about user chi<br />
Jan 26 07:14:21 fedora saslauthd[27262]: pam_unix(smtp:auth): check pass; user unknown<br />
Jan 26 07:14:21 fedora saslauthd[27262]: pam_unix(smtp:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=<br />
Jan 26 07:14:21 fedora saslauthd[27262]: pam_succeed_if(smtp:auth): error retrieving information about user chi<br />
Jan 26 07:14:25 fedora saslauthd[27265]: pam_unix(smtp:auth): check pass; user unknown<br />
Jan 26 07:14:25 fedora saslauthd[27265]: pam_unix(smtp:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=<br />
Jan 26 07:14:25 fedora saslauthd[27265]: pam_succeed_if(smtp:auth): error retrieving information about user chi<br />
Jan 26 07:14:30 fedora saslauthd[27267]: pam_unix(smtp:auth): check pass; user unknown<br />
Jan 26 07:14:30 fedora saslauthd[27267]: pam_unix(smtp:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=<br />
Jan 26 07:14:30 fedora saslauthd[27267]: pam_succeed_if(smtp:auth): error retrieving information about user chi</p>
<p>主要原因是因為 cyrus-sasl 當初設計只紀錄四個欄位不包含遠端 ip , 網路上有 patch 可以增加 rhost 欄 , 但是因為它會影響其他軟體目前並未被納入正式的 package. 相關資訊可以參考以下討論串<br />
<a title="https://bugzilla.cyrusimap.org/show_bug.cgi?id=3468" href="https://bugzilla.cyrusimap.org/show_bug.cgi?id=3468">https://bugzilla.cyrusimap.org/show_bug.cgi?id=3468</a><br />
<a title="https://bugzilla.redhat.com/show_bug.cgi?id=683797" href="https://bugzilla.redhat.com/show_bug.cgi?id=683797">https://bugzilla.redhat.com/show_bug.cgi?id=683797</a></p>
<p>rhost 為空值的話 fail2ban 就無法阻擋 smtp-auth 密碼猜測的攻擊. 測試版的 fail2ban 0.9 增加了一樣令人興奮的功能 , 可以在過濾器裡進行多行比對!!如此一來只要增加 sendmail 的 log level (預設為 9) , 就可以看出遠端 ip 及認證錯誤的關聯性再利用 fail2ban 加以阻擋.</p>
<p>首先修改 sendmail.mc 檔, 變更以下行</p>
<p style="background: black;"><span style="color: #ffffff;">dnl define(`confLOG_LEVEL&#8217;, `9&#8242;)dnl</span></p>
<p>改為</p>
<p style="background: black;"><span style="color: #ffffff;">define(`confLOG_LEVEL&#8217;, `<span style="color: #ff0000;">10</span>&#8216;)dnl<br />
</span></p>
<p>執行指令後並重新啟動 sendmail</p>
<p style="background: black;"><span style="color: #ffffff;">[root@mailhost /]# m4 /etc/mail/senmail.mc &gt; /etc/mail/sendmail.cf<br />
[root@mailhost /]# service sendmail restart</span></p>
<p>此時檢視 /var/log/maillog 會發現 sasl 認證錯誤時訊息如下</p>
<p style="background: black;"><span style="color: #ffffff;">Jan 26 19:30:01 fedora sendmail[2370]: NOQUEUE: connect from 223.59.18.218.broad.sz.gd.dynamic.163data.com.cn [218.18.59.223] (may be forged)<br />
Jan 26 19:30:05 fedora sendmail[2370]: s0QBU1Ir002370: AUTH failure (LOGIN): authentication failure (-13) SASL(-13): authentication failure: checkpass failed<br />
Jan 26 19:30:06 fedora sendmail[2370]: s0QBU1Ir002370: 223.59.18.218.broad.sz.gd.dynamic.163data.com.cn [218.18.59.223] (may be forged) did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA</span></p>
<p>這時紀錄了 pid 及 mail ID 及驗證錯誤相關訊息 . 原來的 Log Level 只會紀錄最後一行, 但是該行錯誤在某些為了快速發信的軟體或者電子報等的不嚴謹的軟體連接伺服器時都可能發生, 因此光靠該行無法明確判斷是否為垃圾郵件. 現在在本例中我們可以確認它是在使用PLAIN TEXT驗證後才發生該錯誤 . 注意在繁忙的 server 中 ,該錯誤並不一定會連在一起, 因為server同時會處理其他服務如dovecot , 所以我們該使用 pid 或者 mail ID 來關聯這些錯誤.</p>
<p>接下來就是在 fail2ban 的 git 下載 0.9 版並安裝(略)<br />
<a title="https://github.com/fail2ban/fail2ban/tarball/0.9" href="https://github.com/fail2ban/fail2ban/tarball/0.9">https://github.com/fail2ban/fail2ban/tarball/0.9</a></p>
<p>0.9版設定上有些差異 , 說明有提到盡量將各別設定或者自訂部份放在 /etc/fail2ban/jail.local 或者 /etc/fail2ban/jail.d 下</p>
<p>/etc/fail2ban/fail2ban.conf</p>
<p style="background: black;"><span style="color: #ffffff;">[Definition]<br />
loglevel = 3<br />
logtarget = /var/log/fail2ban.log #個人比較喜歡紀錄在個別檔案中(預設值 SYSLOG)<br />
socket = /var/run/fail2ban/fail2ban.sock<br />
pidfile = /var/run/fail2ban/fail2ban.pid</span></p>
<p>/etc/fail2ban/jail.conf  這邊只列一些預設項目和重要設定, logpath部份注意一下, 當然也可以在jail.d下面覆蓋預設值.其他要新增的設定我們會加到/etc/fail2ban/jail.d/local.conf</p>
<p style="background: black;"><span style="color: #ffffff;">[DEFAULT]<br />
ignoreip = 127.0.0.1/8 10.0.18.0/24 10.160.8.0/23 #內部 ip 不阻擋<br />
ignorecommand =<br />
bantime  = 1200 #擋20分鐘<br />
findtime  = 600<br />
maxretry = 5 #出現五次紀錄即觸發<br />
backend = auto<br />
usedns = warn<br />
logencoding = auto<br />
enabled = false #預設不啟用任何服務 要啟用各別服務請在 jail.d下設定<br />
filter = %(__name__)s<br />
destemail = root@localhost<br />
sender = root@localhost<br />
mta = sendmail<br />
protocol = tcp<br />
chain = INPUT<br />
port = 0:65535<br />
banaction = iptables-multiport<br />
action_ = %(banaction)s[name=%(__name__)s, port=&#8221;%(port)s&#8221;, protocol=&#8221;%(protocol)s&#8221;, chain=&#8221;%(chain)s&#8221;]<br />
action_mw = %(banaction)s[name=%(__name__)s, port=&#8221;%(port)s&#8221;, protocol=&#8221;%(protocol)s&#8221;, chain=&#8221;%(chain)s&#8221;]<br />
%(mta)s-whois[name=%(__name__)s, dest=&#8221;%(destemail)s&#8221;, protocol=&#8221;%(protocol)s&#8221;, chain=&#8221;%(chain)s&#8221;]<br />
action_mwl = %(banaction)s[name=%(__name__)s, port=&#8221;%(port)s&#8221;, protocol=&#8221;%(protocol)s&#8221;, chain=&#8221;%(chain)s&#8221;]<br />
%(mta)s-whois-lines[name=%(__name__)s, dest=&#8221;%(destemail)s&#8221;, logpath=%(logpath)s, chain=&#8221;%(chain)s&#8221;]<br />
action_xarf = %(banaction)s[name=%(__name__)s, port=&#8221;%(port)s&#8221;, protocol=&#8221;%(protocol)s&#8221;, chain=&#8221;%(chain)s&#8221;]<br />
xarf-login-attack[service=%(__name__)s, sender=&#8221;%(sender)s&#8221;, logpath=%(logpath)s, port=&#8221;%(port)s&#8221;]<br />
action_blocklist_de  = blocklist_de[email=&#8221;%(sender)s&#8221;, service=%(filter)s, apikey=&#8221;%(blocklist_de_apikey)s&#8221;]<br />
action = %(action_)s<br />
[sshd]<br />
port    = ssh<br />
logpath = /var/log/secure<br />
[sshd-ddos]<br />
port    = ssh<br />
logpath = /var/log/secure<br />
[dovecot]<br />
port    = pop3,pop3s,imap,imaps,submission,465,sieve<br />
logpath = /var/log/maillog<br />
[dovecot-auth]<br />
filter  = dovecot<br />
port    = pop3,pop3s,imap,imaps,submission,465,sieve<br />
logpath = /var/log/secure</span></p>
<p>新增我們的過濾規則 /etc/fail2ban/filter.d/sendmail-sasl.conf</p>
<p style="background: black;"><span style="color: #ffffff;">[Definition]<br />
#比對規則 msgid 為多行比對中的關聯值 也就是mail ID<br />
failregex = sendmail.*: (?P&lt;msgid&gt;[^:]+): AUTH failure.*\n(?:.*\n)*?.+ sendmail.*: (?P=msgid): .*\[&lt;HOST&gt;\] .*to MTA<br />
ignoreregex =<br />
[Init]<br />
#設定LOG一次讀取到buffer的行數, 如果sever很忙碌導致符合的行中間插入很多其它的log , 你可以增加buffer行數值<br />
maxlines = 10</span></p>
<p>啟用我們要檢查的服務 /etc/fail2ban/jail.d/local.conf</p>
<p style="background: black;"><span style="color: #ffffff;">[DEFAULT]<br />
[sshd]<br />
enabled  = true<br />
filter   = sshd<br />
action   = iptables-allports[name=FTP, port=ftp, protocol=tcp]<br />
logpath  = /var/log/secure<br />
[vsftpd]<br />
enabled  = true<br />
filter   = vsftpd<br />
action   = iptables-allports[name=FTP, port=ftp, protocol=tcp]<br />
logpath  = /var/log/secure<br />
[sendmail]<br />
enabled  = true<br />
filter   = sendmail<br />
action   = iptables-allports[name=SENDMAIL, port=smtp, protocol=tcp]<br />
logpath  = /var/log/maillog<br />
[dovecot]<br />
enabled  = true<br />
filter   = dovecot<br />
action   = iptables-allports[name=DOVECOT, port=&#8221;pop3,pop3s,imap,imaps&#8221;, protocol=tcp]<br />
logpath  = /var/log/maillog<br />
[dovecot-auth]<br />
enabled  = true<br />
filter  = dovecot<br />
action   = iptables-allports[name=DOVECOT, port=&#8221;pop3,pop3s,imap,imaps&#8221;, protocol=tcp]<br />
logpath = /var/log/secure<br />
[sendmail-sasl]<br />
enabled  = true<br />
filter   = sendmail-sasl<br />
action   = iptables-allports[name=SENDMAIL, port=smtp, protocol=tcp]<br />
logpath  = /var/log/maillog</span></p>
<p>開始測試過濾規則 , 由於繁忙的server maillog 相當大 , 建議先複製小部份到測試用的檔案</p>
<p style="background: black;"><span style="color: #ffffff;">[root@mailhost /]# fail2ban-regex /tmp/test.log .conf /etc/fail2ban/filter.d/sendmail-sasl.conf</span></p>
<p>若有符合的結果則顯示如下</p>
<p style="background: black;"><span style="color: #ffffff;">Running tests<br />
=============<br />
Use   failregex file : sendmail-sasl.conf<br />
Use         maxlines : 10<br />
Use         log file : test.log<br />
Use         encoding : UTF-8<br />
Results<br />
=======<br />
Failregex: 21 total<br />
|-  #) [# of hits] regular expression<br />
|   1) [21] sendmail.*: (?P&lt;msgid&gt;[^:]+): AUTH failure.*\n(?:.*\n)*?.+ sendmail.*: (?P=msgid): .*\[&lt;HOST&gt;\] .*to MTA<br />
`-<br />
Ignoreregex: 0 total<br />
Date template hits:<br />
|- [# of hits] date format<br />
|  [102] MON Day 24hour:Minute:Second<br />
`-<br />
Lines: 102 lines, 0 ignored, 42 matched, 60 missed<br />
Missed line(s):: too many to print.  Use &#8211;print-all-missed to print all 60 lines</span></p>
<p>最後啟動 fail2ban 服務</p>
<p style="background: black;"><span style="color: #ffffff;">[root@mailhost /]# service fail2ban start</span></p>
<p>接下來就是觀察/var/log/fail2ban.log , 看看是否有 BAN 掉惡意的 ip 來源囉</p>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2014/01/27/sasl-pam-%e7%84%a1%e6%b3%95%e7%b4%80%e9%8c%84-rhost-%e4%bb%a5%e9%85%8d%e5%90%88-fail2ban-%e7%9a%84%e8%a7%a3%e6%b3%95/">SASL + PAM 無法紀錄 rhost 以配合 fail2ban 的解法</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jameschien.mooo.com/wordpress/2014/01/27/sasl-pam-%e7%84%a1%e6%b3%95%e7%b4%80%e9%8c%84-rhost-%e4%bb%a5%e9%85%8d%e5%90%88-fail2ban-%e7%9a%84%e8%a7%a3%e6%b3%95/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>使用Squid 3.2 建立Fully Transparent Proxy（TPROXY4.1+）</title>
		<link>https://jameschien.mooo.com/wordpress/2013/06/07/%e4%bd%bf%e7%94%a8squid-3-2-%e5%bb%ba%e7%ab%8bfully-transparent-proxy%ef%bc%88tproxy4-1%ef%bc%89/</link>
					<comments>https://jameschien.mooo.com/wordpress/2013/06/07/%e4%bd%bf%e7%94%a8squid-3-2-%e5%bb%ba%e7%ab%8bfully-transparent-proxy%ef%bc%88tproxy4-1%ef%bc%89/#respond</comments>
		
		<dc:creator><![CDATA[James]]></dc:creator>
		<pubDate>Fri, 07 Jun 2013 07:14:01 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[bridge]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[squid]]></category>
		<category><![CDATA[tproxy]]></category>
		<category><![CDATA[transparent]]></category>
		<guid isPermaLink="false">http://jameschien.no-ip.biz/wordpress/?p=105</guid>

					<description><![CDATA[<p>環境中有使用NLTM驗證 + IIS7.5的應用服務並且會檢查Client端IP位址. 原來的transpar &#8230; <a href="https://jameschien.mooo.com/wordpress/2013/06/07/%e4%bd%bf%e7%94%a8squid-3-2-%e5%bb%ba%e7%ab%8bfully-transparent-proxy%ef%bc%88tproxy4-1%ef%bc%89/" class="more-link">閱讀全文 <span class="screen-reader-text">使用Squid 3.2 建立Fully Transparent Proxy（TPROXY4.1+）</span></a></p>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2013/06/07/%e4%bd%bf%e7%94%a8squid-3-2-%e5%bb%ba%e7%ab%8bfully-transparent-proxy%ef%bc%88tproxy4-1%ef%bc%89/">使用Squid 3.2 建立Fully Transparent Proxy（TPROXY4.1+）</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></description>
										<content:encoded><![CDATA[<p>環境中有使用NLTM驗證 + IIS7.5的應用服務並且會檢查Client端IP位址. 原來的transparent proxy無法通過檢查, 需改成TPROXYv4.1+ (Fully Transparent Proxy), 如此一來伺服器看到Client的IP才不會是Proxy Server的IP.</p>
<p>安裝過程發現Squid 3.2.0的ntlm支援有問題, IE會不段重複跳出要求使用者輸入帳號密碼, 查了論壇發現該版本有bug, 改成3.2.7就解決了.</p>
<p>&nbsp;</p>
<p>系統：Centos 6.4</p>
<p>軟體：squid-3.2.7,bridge-utils,ebtables,libcap,libecap. Squid網路上都有包好的rpm檔,下載回來裝即可.若自行編譯核心或想自行編譯squid者請參考<a href="http://wiki.squid-cache.org/Features/Tproxy4">http://wiki.squid-cache.org/Features/Tproxy4</a>. 其他package使用yum安裝.</p>
<p>網路架構：IPv4,主機為bridge模式接在gateway後<br />
<img decoding="async" alt="" src="http://jameschien.no-ip.biz/wordpress/wp-content/uploads/2013/06/060713_0713_Squid32F1.png" /></p>
<p>軟體設定</p>
<ol>
<li>
<div>將主機設定為Bridge.記得先關閉NetworkManager以免設定衝突<br />
建立 /etc/sysconfig/network-scripts/ifcfg-br0 內容如下</div>
<p style="background: black;"><span style="color: #ffffff;">DEVICE=&#8221;br0&#8243;<br />
NM_CONTROLLED=&#8221;no&#8221;<br />
TYPE=&#8221;Bridge&#8221;<br />
BOOTPROTO=&#8221;none&#8221;<br />
IPADDR=&#8221;10.0.0.2&#8243;<br />
NETMASK=&#8221;255.255.255.0&#8243;<br />
BROADCAST=&#8221;10.0.0.255&#8243;<br />
NETWORK=&#8221;10.0.0.0&#8243;<br />
ONBOOT=&#8221;yes&#8221;<br />
GATEWAY=&#8221;10.0.0.1&#8243;<br />
DNS1=10.0.0.3<br />
DNS2=10.0.0.4<br />
DOMAIN=mydomain.com</span></p>
<div>外部網卡 /etc/sysconfig/network-scripts/ifcfg-eth0 內容如下</div>
<p style="background: black;"><span style="color: #ffffff;">DEVICE=&#8221;eth0&#8243;<br />
NM_CONTROLLED=&#8221;no&#8221;<br />
ONBOOT=&#8221;yes&#8221;<br />
TYPE=&#8221;Ethernet&#8221;<br />
BRIDGE=&#8221;br0&#8243;<br />
</span></p>
<div>內部網卡 /etc/sysconfig/network-scripts/ifcfg-eth1 內容如下</div>
<p style="background: black;"><span style="color: #ffffff;">DEVICE=&#8221;eth1&#8243;<br />
NM_CONTROLLED=&#8221;no&#8221;<br />
ONBOOT=&#8221;yes&#8221;<br />
TYPE=&#8221;Ethernet&#8221;<br />
BRIDGE=&#8221;br0&#8243;</span></p>
<div>設定完成後重新開機或重起network服務.</div>
</li>
<li>
<div>確認 /etc/sysctl.conf的相關設定包含下面幾行</div>
<p style="background: black;"><span style="color: #ffffff;">net.ipv4.ip_forward = 1<br />
net.bridge.bridge-nf-call-ip6tables = 01<br />
net.bridge.bridge-nf-call-iptables = 01<br />
net.bridge.bridge-nf-call-arptables = 01<br />
net.ipv4.conf.default.rp_filter = 01<br />
net.ipv4.conf.all.rp_filter = 01<br />
net.ipv4.conf.eth0.rp_filter = 01<br />
net.ipv4.conf.eth1.rp_filter = 01</span></p>
<div>執行以下指令使設定生效</div>
<p style="background: black;"><span style="color: #ffffff;">[root@centos6 etc]# sysctl –p</span></p>
</li>
<li>
<div>設定iptables及ebtables規則</div>
<p>建立執行檔 /usr/local/bin/tproxy.init</p>
<p style="background: black;"><span style="color: #ffffff;">#!/bin/bash<br />
# IPv4-only<br />
# 在lo介面上建立代號為100的路由表格給iptables比對fwmark<br />
ip -f inet rule add fwmark 1 lookup 100<br />
ip -f inet route add local default dev lo table 100<br />
# 以下是不需要進入squid的例外規則, 例如本機有提供web服務<br />
iptables -t mangle -A PREROUTING -d 127.0.0.1 -p tcp &#8211;dport 80 -j ACCEPT<br />
#加入Divert規則將TCP80埠的流量重導到TCP3129<br />
iptables -t mangle -N DIVERT<br />
iptables -t mangle -A DIVERT -j MARK &#8211;set-mark 1<br />
iptables -t mangle -A DIVERT -j ACCEPT<br />
iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT<br />
iptables -t mangle -A PREROUTING -p tcp &#8211;dport 80 -j TPROXY &#8211;tproxy-mark 0x1/0x1 &#8211;on-port 3129<br />
# 將橋接模式的封包移到路由模式<br />
ebtables -t broute -A BROUTING -i eth1 -p ipv4 &#8211;ip-proto tcp &#8211;ip-dport 80 -j redirect &#8211;redirect-target DROP<br />
ebtables -t broute -A BROUTING -i eth0 -p ipv4 &#8211;ip-proto tcp &#8211;ip-sport 80 -j redirect &#8211;redirect-target DROP<br />
</span></p>
<div>賦予執行權限</div>
<p style="background: black;"><span style="color: #ffffff;">[root@centos6 bin]# chmod 755 tproxy.init</span></p>
<div>將上面檔案加入開機程序 /etc/rc.d/rc.local</div>
<p style="background: black;"><span style="color: #ffffff;">#!/bin/sh<br />
#<br />
# This script will be executed *after* all the other init scripts.<br />
# You can put your own initialization stuff in here if you don&#8217;t<br />
# want to do the full Sys V style init stuff.<br />
touch /var/lock/subsys/local<br />
/usr/local/bin/tproxy.init</span></p>
<p style="background: black;">
</li>
<li>
<div>修改squid設定檔 /etc/squid/squid.conf .確認下面2行存在</div>
<p style="background: black;"><span style="color: #ffffff;">#限定IPv4, 避免LOG有錯誤訊息<br />
http_port 0.0.0.0:3128<br />
http_port 0.0.0.0:3129 tproxy</span></p>
<div>重起squid服務.</div>
<p style="background: black;">
</li>
<li>
<div>雖然主機為橋接模式, 但為了讓Squid服務可以運作所以仍需給予伺服IP及相關路由, DNS以存取Web. 另外若使用selinux則另需以下設定：</div>
<p style="background: black;"><span style="color: #ffffff;">setsebool squid_connect_any=yes<br />
setsebool squid_use_tproxy=yes</span></p>
</li>
<li>檢查 /var/log/squid/access.log 若有client的瀏覽紀錄表示squid開始運作.</li>
</ol>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2013/06/07/%e4%bd%bf%e7%94%a8squid-3-2-%e5%bb%ba%e7%ab%8bfully-transparent-proxy%ef%bc%88tproxy4-1%ef%bc%89/">使用Squid 3.2 建立Fully Transparent Proxy（TPROXY4.1+）</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jameschien.mooo.com/wordpress/2013/06/07/%e4%bd%bf%e7%94%a8squid-3-2-%e5%bb%ba%e7%ab%8bfully-transparent-proxy%ef%bc%88tproxy4-1%ef%bc%89/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MailWatch 1.1.5.1 UTF-8 中文化版本</title>
		<link>https://jameschien.mooo.com/wordpress/2012/01/18/mailwatch-1-1-5-1-%e4%b8%ad%e6%96%87%e5%8c%96%e7%89%88%e6%9c%ac/</link>
					<comments>https://jameschien.mooo.com/wordpress/2012/01/18/mailwatch-1-1-5-1-%e4%b8%ad%e6%96%87%e5%8c%96%e7%89%88%e6%9c%ac/#comments</comments>
		
		<dc:creator><![CDATA[James]]></dc:creator>
		<pubDate>Wed, 18 Jan 2012 09:46:43 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MailScanner]]></category>
		<category><![CDATA[MailWatch]]></category>
		<category><![CDATA[UTF-8]]></category>
		<category><![CDATA[中文]]></category>
		<guid isPermaLink="false">http://jameschien.no-ip.biz/wordpress/?p=82</guid>

					<description><![CDATA[<p>MailWatch 1.1.5.1 UTF-8 中文化版本 介面部分使用gettext國際化, 繁體中文部份大 &#8230; <a href="https://jameschien.mooo.com/wordpress/2012/01/18/mailwatch-1-1-5-1-%e4%b8%ad%e6%96%87%e5%8c%96%e7%89%88%e6%9c%ac/" class="more-link">閱讀全文 <span class="screen-reader-text">MailWatch 1.1.5.1 UTF-8 中文化版本</span></a></p>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2012/01/18/mailwatch-1-1-5-1-%e4%b8%ad%e6%96%87%e5%8c%96%e7%89%88%e6%9c%ac/">MailWatch 1.1.5.1 UTF-8 中文化版本</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></description>
										<content:encoded><![CDATA[<p>MailWatch 1.1.5.1 UTF-8 中文化版本<br />
介面部分使用gettext國際化, 繁體中文部份大致翻譯完成<br />
UTF-8主旨及郵件都可正確顯示,解壓縮覆蓋原來的mailscanner目錄即可<br />
若使用舊的 conf.php 裏要增加下面這行將介面切換至繁體<br />
define(&#8216;SYSTEM_LOCALE&#8217;,&#8217;zh_TW&#8217;);<br />
簡體漢化 (直接 iconv 轉換 po 檔)<br />
define(&#8216;SYSTEM_LOCALE&#8217;,&#8217;zh_CN&#8217;);<br />
若要讓MailWatch報表裏的jpgraph圖形正確顯示中文則另外要設定字型<br />
# cp /usr/path_to_truetype_font/ukai.ttf /path_to_mailwatch/jpgraph/src/fonts/ukai.ttf<br />
# ln -s /path_to_mailwatch/jpgraph/src/fonts/ukai.ttf /path_to_mailwatch/jpgraph/src/fonts/bkai00mp.ttf</p>
<p><a title="MailWatch 1.1.5.1 UTF-8 中文化版本" href="http://www.box.com/s/bgghzrrej46ftv7d1afy">MailWatch 1.1.5.1 UTF-8 中文化版本</a></p>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2012/01/18/mailwatch-1-1-5-1-%e4%b8%ad%e6%96%87%e5%8c%96%e7%89%88%e6%9c%ac/">MailWatch 1.1.5.1 UTF-8 中文化版本</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jameschien.mooo.com/wordpress/2012/01/18/mailwatch-1-1-5-1-%e4%b8%ad%e6%96%87%e5%8c%96%e7%89%88%e6%9c%ac/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>mailwatch 與 php 5.3</title>
		<link>https://jameschien.mooo.com/wordpress/2011/05/18/mailwatch-%e8%88%87-php-5-3/</link>
					<comments>https://jameschien.mooo.com/wordpress/2011/05/18/mailwatch-%e8%88%87-php-5-3/#comments</comments>
		
		<dc:creator><![CDATA[James]]></dc:creator>
		<pubDate>Wed, 18 May 2011 02:16:06 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[ereg_replace]]></category>
		<category><![CDATA[MailWatch]]></category>
		<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[UTF-8]]></category>
		<category><![CDATA[中文]]></category>
		<guid isPermaLink="false">http://jameschien.no-ip.biz/wordpress/2011/05/18/mailwatch-%e8%88%87-php-5-3/</guid>

					<description><![CDATA[<p>將Centos5的php5.1升級到5.3後mailwatch 1.04的log會出現： Deprecated &#8230; <a href="https://jameschien.mooo.com/wordpress/2011/05/18/mailwatch-%e8%88%87-php-5-3/" class="more-link">閱讀全文 <span class="screen-reader-text">mailwatch 與 php 5.3</span></a></p>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2011/05/18/mailwatch-%e8%88%87-php-5-3/">mailwatch 與 php 5.3</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></description>
										<content:encoded><![CDATA[<p>將Centos5的php5.1升級到5.3後mailwatch 1.04的log會出現：<br />
Deprecated: Function ereg_replace() is deprecated in /var/www/html/mailscanner/functions.php on line 936<br />
5.3版的php不建議繼續使用ereg_replace()函數, 可以改用preg_replace(). 改完後log還是有些其他錯誤. 拜完google後搜尋到mailwatch的mailing list這篇完整的教學<br />
<a title="http://permalink.gmane.org/gmane.mail.virus.mailscanner.mailwatch.general/8861" href="http://permalink.gmane.org/gmane.mail.virus.mailscanner.mailwatch.general/8861">http://permalink.gmane.org/gmane.mail.virus.mailscanner.mailwatch.general/8861</a></p>
<p>按說明將所有pear模組及jpgraph升級到最新版本, 順便將之前的中文utf-8修改以及官版mailwatch 1.05的增修部份整併, 整個web目錄打包. 下載：<br />
<a href="http://www.box.net/shared/bpe4gc8deprpem3oygrb">http://www.box.net/shared/bpe4gc8deprpem3oygrb</a></p>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2011/05/18/mailwatch-%e8%88%87-php-5-3/">mailwatch 與 php 5.3</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jameschien.mooo.com/wordpress/2011/05/18/mailwatch-%e8%88%87-php-5-3/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
			</item>
		<item>
		<title>mysar</title>
		<link>https://jameschien.mooo.com/wordpress/2010/12/31/mysar/</link>
					<comments>https://jameschien.mooo.com/wordpress/2010/12/31/mysar/#respond</comments>
		
		<dc:creator><![CDATA[James]]></dc:creator>
		<pubDate>Fri, 31 Dec 2010 06:55:47 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[analyzer]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[mysar]]></category>
		<category><![CDATA[squid]]></category>
		<category><![CDATA[UTF-8]]></category>
		<category><![CDATA[中文]]></category>
		<category><![CDATA[分析]]></category>
		<guid isPermaLink="false">http://jameschien.no-ip.biz/wordpress/?p=45</guid>

					<description><![CDATA[<p>Squid3 安裝完成後接下來就是LOG分析.目前測試過比較即時的就是squidview跟mysar. squ &#8230; <a href="https://jameschien.mooo.com/wordpress/2010/12/31/mysar/" class="more-link">閱讀全文 <span class="screen-reader-text">mysar</span></a></p>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2010/12/31/mysar/">mysar</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></description>
										<content:encoded><![CDATA[<p>Squid3 安裝完成後接下來就是LOG分析.目前測試過比較即時的就是squidview跟mysar. squidview可在console即時觀看log及簡易統計但無資料庫功能, mysar雖然沒那麼即時但是具有較完整的分析功能. 因此這邊採用mysar做為分析工具. 在經過一段時間統計後發現squid會產生一些欄位不全的LOG, 以至於欄位錯亂. 官網開發幾乎停滯, 目前原作者才剛找到別的開發者接手, 暫時只好用三腳貓的工夫自己改, 加上內部有使用AD網域順便增加部門欄位, 讓importer連到AD取得電腦所屬的組織單位(OU)當作部門, 當然也可以自行在網頁上修改, 不過只能一台台修改就是. 另外加上中文體的樣版, 資料庫也改為UTF-8.</p>
<p><a href="http://jameschien.no-ip.biz/wordpress/wp-content/uploads/2010/12/mysar.jpg"><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-47" title="mysar" src="http://jameschien.no-ip.biz/wordpress/wp-content/uploads/2010/12/mysar-300x277.jpg" alt="" width="300" height="277" srcset="https://jameschien.mooo.com/wordpress/wp-content/uploads/2010/12/mysar-300x277.jpg 300w, https://jameschien.mooo.com/wordpress/wp-content/uploads/2010/12/mysar.jpg 899w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Mysar 2.1.4 jccc修改版. 修改內容</p>
<ol>
<li>新增&#8221;部門&#8221;欄位, 可網頁主機資訊增加部門, 或由 myar-resolver.php取得(需有AD環境並開啟功能)</li>
<li>修改mysar-importer.php, 忽略有問題的 squid log 避免欄位錯亂</li>
<li>資料庫改為UTF-8</li>
<li>新增中文樣版並作為預設樣版</li>
</ol>
<p>PS: 資料庫預設語言修改所以只適用新安裝</p>
<p>下載: <a href="http://jameschien.no-ip.biz/wordpress/wp-content/uploads/2010/12/mysar-2.1.4jccc.tar.bz2">mysar-2.1.4jccc.tar.bz2</a></p>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2010/12/31/mysar/">mysar</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jameschien.mooo.com/wordpress/2010/12/31/mysar/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Netscreen + Squid (Transparent) + c-icap + ClamAV</title>
		<link>https://jameschien.mooo.com/wordpress/2010/11/03/netscreen-squidtransparent-c-icap-clamav/</link>
					<comments>https://jameschien.mooo.com/wordpress/2010/11/03/netscreen-squidtransparent-c-icap-clamav/#respond</comments>
		
		<dc:creator><![CDATA[James]]></dc:creator>
		<pubDate>Wed, 03 Nov 2010 09:24:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[防火牆]]></category>
		<category><![CDATA[c-icap]]></category>
		<category><![CDATA[clamav]]></category>
		<category><![CDATA[netscreen]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[squid]]></category>
		<category><![CDATA[transparent]]></category>
		<category><![CDATA[防毒]]></category>
		<guid isPermaLink="false">http://jameschien.no-ip.biz/wordpress/2010/11/03/netscreen-squidtransparent-c-icap-clamav/</guid>

					<description><![CDATA[<p>架構圖： 目的： 原始流往網際網路的WEB流量經過防火牆Netscreen-25重新導向內部的Squid pr &#8230; <a href="https://jameschien.mooo.com/wordpress/2010/11/03/netscreen-squidtransparent-c-icap-clamav/" class="more-link">閱讀全文 <span class="screen-reader-text">Netscreen + Squid (Transparent) + c-icap + ClamAV</span></a></p>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2010/11/03/netscreen-squidtransparent-c-icap-clamav/">Netscreen + Squid (Transparent) + c-icap + ClamAV</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></description>
										<content:encoded><![CDATA[<p>架構圖：</p>
<p><a href="http://jameschien.no-ip.biz/wordpress/wp-content/uploads/2010/11/squid.jpg"><img loading="lazy" decoding="async" style="display: inline; border: 0px;" title="squid" src="http://jameschien.no-ip.biz/wordpress/wp-content/uploads/2010/11/squid_thumb.jpg" alt="squid" width="450" height="262" border="0" /></a></p>
<p>目的：<br />
原始流往網際網路的WEB流量經過防火牆Netscreen-25重新導向內部的Squid proxy伺服器並提供掃毒需求.</p>
<p>方法：<br />
透通式SQUID可以省去客戶端設定的麻煩, 但需將 TCP 80 流量重新導向. Netscreen 支援兩種導向方式, 介紹如下</p>
<ul>
<li>NAT-DST(DNAT)<br />
NETSCREEN NAT-DST的限制如下(來源：ScreenOS參考指南)<br />
「注意 : 原始目的地IP位址及已轉譯的目的地IP位址必須在相同的安全區內」<br />
由於向外WEB流量在untrust (any), 因此SQUID伺服器也必須在DMZ或有MIP, 且必須允許untrust介面IP流向SQUID位址DMZ/MIP TCP:3128流量. 另外內部流量向untrust的TCP:80封包必須DNAT到SQUID伺服器MIP位址的TCP:3128. 該方式會造成統計SQUID流量時看到的都是防火牆作NAT介面的外部IP, 無法統計實際流量. 原本想把SQUID 內部IP加進untrust-vr, 然後DNAT到內部IP 也是不可行. 此方式可以在舊版ScreenOS(5.4之前)使用.</li>
<li>PBR(Policy Base Routing. Screenos 5.4.0以上支援)<br />
此方法可以直接將特定服務流量到向指定的IP但是不支援PAT, 也就是可以轉寄流量但是不能更改目的埠, 因此需要搭配在SQUID主機上執行IPTABLES以達成目的埠轉換..</li>
</ul>
<p>考量流量分析精確性, Server安全性及架構, 這裡採用PBR以達到cache目的</p>
<ol>
<li>CentOS5主機安裝Squid 3.1<br />
上http://rpm.pbone.net搜尋下載squid3-3.1.8-1.el5.pp.i386.rpm<br />
[root@centos5]# rpm –Uvh squid3-3.1.8-1.el5.pp.i386.rpm<br />
修改 /etc/squid/squid.conf (只列出重點設定)</p>
<p style="background: black;"><span style="color: #ffffff;">#上層伺服器<br />
cache_peer proxy.hinet.net parent 80 0 no-query no-digest no-netdb-exchange</span></p>
<p>#將連到youtube.com要求轉發給上層伺服器<br />
cache_peer_domain proxy.hinet.net .youtube.com</p>
<p>#預設存取設定<br />
acl manager proto cache_object<br />
acl localhost src 127.0.0.1/32 ::1<br />
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1<br />
acl localnet src 10.0.0.0/8     # RFC1918 possible internal network<br />
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network<br />
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network<br />
acl localnet src fc00::/7       # RFC 4193 local private network range<br />
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines</p>
<p># ACL for Youtube<br />
acl youtube dstdomain .youtube.com</p>
<p>acl SSL_ports port 443<br />
acl Safe_ports port 80          # http<br />
acl Safe_ports port 21          # ftp<br />
acl Safe_ports port 443         # https<br />
acl Safe_ports port 70          # gopher<br />
acl Safe_ports port 210         # wais<br />
acl Safe_ports port 1025-65535  # unregistered ports<br />
acl Safe_ports port 280         # http-mgmt<br />
acl Safe_ports port 488         # gss-http<br />
acl Safe_ports port 591         # filemaker<br />
acl Safe_ports port 777         # multiling http<br />
acl CONNECT method CONNECT</p>
<p># 讓Youtube 使用上層, 其餘由squid本身直接存取<br />
never_direct allow youtube<br />
http_access allow manager localhost<br />
http_access deny manager<br />
http_access deny !Safe_ports<br />
http_access deny CONNECT !SSL_ports<br />
http_access allow localnet<br />
http_access allow localhost</p>
<p># ssl代理<br />
ssl_bump deny localhost<br />
ssl_bump allow all<br />
http_access deny all</p>
<p># 透通代理http<br />
http_port 3128 intercept</p>
<p># 透通代理https.基本上不建議在透通模式下啟用.必須置換憑證以解密ssl流量, 因此需要正式憑證, 若使用測試憑證client端會跳出此網站不安全的訊息<br />
https_port 3129 intercept ssl-bump cert=/etc/pki/tls/certs/testcert.pem</p>
<p>hierarchy_stoplist cgi-bin ?</p>
<p># 將儲存區上限改為1gb.<br />
cache_dir ufs /var/cache/squid 1000 16 256<br />
coredump_dir /var/cache/squid<br />
refresh_pattern ^ftp:           1440    20%     10080<br />
refresh_pattern ^gopher:        1440    0%      1440<br />
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0<br />
refresh_pattern .               0       20%     4320</p>
<p>#ICAP設定<br />
icap_enable on<br />
icap_preview_enable on<br />
icap_preview_size 128<br />
icap_send_client_ip on<br />
icap_service service_avi_req reqmod_precache 0 icap://localhost:1344/srv_clamav<br />
icap_service service_avi respmod_precache 1 icap://localhost:1344/srv_clamav<br />
adaptation_access service_avi_req allow all<br />
adaptation_access service_avi allow all</p>
<p>#將錯誤顯示頁面設為中文<br />
error_default_language zh-tw</p>
<p>設定開機即啟用服務</p>
<p style="background: black;"><span style="color: #ffffff;">[root@centos5]# chkconfig &#8211;add &#8211;level 2345 squid </span></p>
</li>
<li>設定iptables<br />
加入規則</p>
<p style="background: black;"><span style="color: #ffffff;">[root@centos5]# iptables -A PREROUTING -i eth0 -p tcp -m tcp -m multiport tcp -d 10.0.0.2 &#8211;dport 80,443 -j ACCEPT<br />
[root@centos5]# iptables -A PREROUTING -i eth0 -p tcp -m tcp ! -d localhost &#8211;dport 80 -j REDIRECT &#8211;to-port 3128<br />
[root@centos5]# iptables -A PREROUTING -i eth0 -p tcp -m tcp ! -d localhost &#8211;dport 443 -j REDIRECT &#8211;to-port 3129 </span></p>
<p>Squid伺服器本身有提供Web服務, 因此第一行需放行目的為本機IP的TCP 80,443封包, 第二行將連往網際網路TCP 80的封包重新導向Squid服務的TCP 3128. 第三行則將連往網際網路TCP 443的封包重新導向Squid服務的TCP 3129.<br />
啟動並儲存規則</p>
<p style="background: black;"><span style="color: #ffffff;">[root@centos5]# service iptables start<br />
[root@centos5]# iptables-save &gt; /etc/sysconfig/iptables<br />
[root@centos5]# chkconfig &#8211;add &#8211;level 2345 iptables </span></p>
</li>
<li>設定NetScreen<br />
PBR流程<br />
<a href="http://jameschien.no-ip.biz/wordpress/wp-content/uploads/2010/11/policy.jpg"><img loading="lazy" decoding="async" style="display: inline; border: 0px;" title="policy" src="http://jameschien.no-ip.biz/wordpress/wp-content/uploads/2010/11/policy_thumb.jpg" alt="policy" width="406" height="156" border="0" /></a>3-1. 建立兩個acl存取名單. 第一組為來源IP是區域網路封包目標為網際網路網頁存取.第二組則為Squid伺服器本身的網際網路存取, 避免本身連向網路封包變成迴圈. CLI (指令模式)</p>
<p style="background: black;"><span style="color: #ffffff;">set access-list extended 1 src-ip 10.0.0.0/24 dst-port 80-80 protocol tcp entry 1<br />
set access-list extended 1 src-ip 10.0.0.0/24 dst-port 443-443 protocol tcp entry 2<br />
set access-list extended 2 src-ip 10.0.0.2/32 dst-port 80-80 protocol tcp entry 1<br />
set access-list extended 2 src-ip 10.0.0.2/32 dst-port 443-443 protocol tcp entry 2 </span></p>
<p>3-2. 第一組acl加入Http_Traffic群組(match-group), 第二組acl則加入Direct_Http_Traffic群組(match-group). CLI (指令模式)</p>
<p style="background: black;"><span style="color: #ffffff;">set match-group name Direct_Http_Traffic<br />
set match-group Direct_Http_Traffic ext-acl 2 match-entry 1<br />
set match-group name Http_Traffic<br />
set match-group Http_Traffic ext-acl 1 match-entry 1 </span></p>
<p>3-3. Tproxy的執行動作設定為當符合Http_Traffic群組的封包到達時直接送往Squid伺服器(10.0.0.2). Direct_Http則將符合Direct_Http_Traffic群組送往untrust介面(eth3). CLI (指令模式)</p>
<p style="background: black;"><span style="color: #ffffff;">set action-group name Tproxy<br />
set action-group Tproxy next-hop 10.0.0.2 action-entry 1<br />
set action-group name Direct_Http<br />
set action-group Direct_Http next-interface ethernet3 action-entry 1 </span></p>
<p>3-4. 建立政策(policy). 第一個先讓Squid本機連往網際網路, 若為其他客戶端則為順序2, 轉到Squid主機..</p>
<p style="background: black;"><span style="color: #ffffff;">set pbr policy name trust_policy<br />
set pbr policy trust_policy match-group Direct_Http_Traffic action-group Direct_Http 1<br />
set pbr policy trust_policy match-group Http_Traffic action-group Tproxy 2<br />
set pbr trust_policy<br />
exit </span></p>
<p>3-5. 將政策連結到trust介面(eth1).CLI (指令模式)</p>
<p style="background: black;"><span style="color: #ffffff;">set interface ethernet1 pbr trust_policy </span></p>
</li>
<li>安裝Clamav<br />
#搭配MailScanner 因此安裝 Clamd</p>
<p style="background: black;"><span style="color: #ffffff;">[root@centos5]# yum install clamav clamav-db clamd </span></p>
</li>
<li>安裝c-icap<br />
上http://rpm.pbone.net搜尋下載c-icap , c-icap-modules的source rpm回來編譯</p>
<p style="background: black;"><span style="color: #ffffff;">[root@centos5]# rpmbuild &#8211;rebuild c-icap-0.1.1-1.el5.pp.src.rpm </span></p>
<p>編譯完成後會有多個檔案主要安裝下面幾個<br />
c-icap-0.1.1-1.el5.pp.i386.rpm      # c-icap主程式<br />
c-icap-libs-0.1.1-1.el5.pp.i386.rpm   # library<br />
c-icap-progs-0.1.1-1.el5.pp.i386.rpm  # client程式<br />
c-icap-devel-0.1.1-1.el5.pp.i386.rpm  # 編譯c-icap-modules用<br />
下載的c-icap-modules並無開啟clamv, 需自行修改並編譯</p>
<p style="background: black;"><span style="color: #ffffff;">[root@centos5]# rpmbuild -i c-icap-modules-0.1.1-1.el5.pp.src.rpm<br />
[root@centos5]# cd /usr/src/redhat/SPECS </span></p>
<p>更改c-icap-modules.spec檔案, 註釋掉」&#8211;without-clamav」</p>
<p style="background: black;"><span style="color: #ffffff;"> CFLAGS=&#8221;${RPM_OPT_FLAGS} -fno-strict-aliasing&#8221; \<br />
&#8211;enable-shared                                \<br />
&#8211;with-bdb<br />
#       &#8211;without-clamav  # Still not in RedHat/CentOS </span></p>
<p>重編</p>
<p style="background: black;"><span style="color: #ffffff;">[root@centos5]# rpmbuild -bb c-icap-modules-0.1.1-1.el5.pp.src.rpm<br />
[root@centos5]# cd ../RPMS/i386<br />
[root@centos5]# rpm –Uvh c-icap-modules-0.1.1-1.el5.rpm </span></p>
<p>修改c-icap server設定 /etc/c-icap/c-icap.conf</p>
<p style="background: black;"><span style="color: #ffffff;">PidFile /var/run/c-icap/c-icap.pid<br />
CommandsSocket /var/run/c-icap/c-icap.ctl<br />
Timeout 300<br />
MaxKeepAliveRequests 100<br />
KeepAliveTimeout 600<br />
StartServers 3<br />
MaxServers 10<br />
MinSpareThreads     10<br />
MaxSpareThreads     20<br />
ThreadsPerChild     10<br />
MaxRequestsPerChild  0<br />
Port 1344<br />
ServerAdmin 你的管理員郵件<br />
ServerName 你的主機名稱<br />
TmpDir /var/tmp<br />
MaxMemObject 131072<br />
DebugLevel 1<br />
ModulesDir /usr/lib/c_icap<br />
ServicesDir /usr/lib/c_icap<br />
TemplateDir /usr/share/c_icap/templates/<br />
TemplateDefaultLanguage en<br />
LoadMagicFile /etc/c-icap/c-icap.magic<br />
RemoteProxyUsers off<br />
RemoteProxyUserHeader X-Authenticated-User<br />
RemoteProxyUserHeaderEncoded on<br />
#本機存取位址<br />
acl localhost src 127.0.0.1/255.255.255.255<br />
#所有位置<br />
acl all src 0.0.0.0/0.0.0.0<br />
#允許本機存取<br />
icap_access allow localhost<br />
#拒絕所有存取<br />
icap_access deny all<br />
#Log檔位置<br />
ServerLog /var/log/c-icap/server.log<br />
AccessLog /var/log/c-icap/access.log<br />
#以下三行設定病毒紀錄檔格式及位置<br />
acl VIRUS icap_resp_header{X-Infection-Found} /Type=.*/<br />
LogFormat viruslog &#8220;%tl, %&gt;a %im %iu %is %{X-Infection-Found}&lt;ih:&#8221;<br />
AccessLog /var/log/c-icap/viruses.log viruslog VIRUS<br />
Service echo srv_echo.so<br />
#開啟clamav模組掃瞄功能<br />
Include srv_clamav.conf </span></p>
<p>修改c-icap-modules設定, 基本上維持預設值即可</p>
<p style="background: black;"><span style="color: #ffffff;">Service antivirus_module srv_clamav.so<br />
ServiceAlias  avscan srv_clamav?allow204=on&amp;sizelimit=off&amp;mode=simple<br />
srv_clamav.ScanFileTypes TEXT DATA EXECUTABLE ARCHIVE GIF JPEG MSOFFICE<br />
srv_clamav.SendPercentData 5<br />
srv_clamav.StartSendPercentDataAfter 2M<br />
srv_clamav.MaxObjectSize  5M<br />
srv_clamav.ClamAvTmpDir /var/tmp<br />
srv_clamav.ClamAvMaxFilesInArchive 0<br />
srv_clamav.ClamAvMaxFileSizeInArchive 100M<br />
srv_clamav.ClamAvMaxRecLevel 5 </span></p>
<p>此rpm所提供的init script以c-icap身份啟動, 經測試無法正常啟動.改以root啟動卻無問題, 因此修改/etc/sysconfig/c-icap</p>
<p style="background: black;"><span style="color: #ffffff;">#改掉下面這行, 將使用者改為root<br />
#RUN_AS=&#8221;c-icap&#8221;<br />
RUN_AS=&#8221;root&#8221; </span></p>
<p>也可以到官網<a href="http://c-icap.sourceforge.net">http://c-icap.sourceforge.net</a> 下載最新0.1.2版自行安裝, 但原始package並未包含init script/syconfig/logrotate檔.<br />
設定開機啟動</p>
<p style="background: black;"><span style="color: #ffffff;">[root@centos5]# chkconfig &#8211;add &#8211;level 2345 c-icap </span></p>
</li>
<li>啟動相關服務
<p style="background: black;"><span style="color: #ffffff;">[root@centos5]# service c-icap start</span></p>
<p>[root@centos5]# service squid start</li>
<li>測試掃毒功能
<p style="background: black;"><span style="color: #ffffff;">[root@centos5]# c-icap-client -f /path_to_clamav/test/clam.exe -s &#8220;srv_clamav?allow204=on&amp;force=on&amp;sizelimit=off&amp;mode=simple&#8221;<br />
ICAP server:localhost, ip:127.0.0.1, port:1344<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;!&#8211;C-ICAP/0.1.2 srvClamAV module &#8211;&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;H1&gt;VIRUS FOUND&lt;/H1&gt; You try to upload/download a file that contain the virus&lt;br&gt;<br />
ClamAV-Test-File<br />
&lt;p&gt;This message generated by C-ICAP/0.1.2 srvClamAV/antivirus module<br />
&lt;!&#8211; And this is a silly HTML comment just to make this error bigger than 512 bytes<br />
is allowed to be displayed in IE. Yes, IE has a &#8220;feature&#8221; which does not allow<br />
error messages smaller than 512 bytes to be displayed, because they are not considered<br />
&#8220;friendly&#8221; enough.<br />
(Hmm&#8230;I think this stupid comment is better than embedding viruses or porn images in this error message like a bad guy suggested me!)&#8211;&gt; &lt;/body&gt;</span></p>
<p>顯示掃到毒(clamav原始package內附的樣本)</li>
<li>結論：大致上需要的功能皆已完成, Squid部份可以進行校調以增加cache命中率.</li>
</ol>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2010/11/03/netscreen-squidtransparent-c-icap-clamav/">Netscreen + Squid (Transparent) + c-icap + ClamAV</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jameschien.mooo.com/wordpress/2010/11/03/netscreen-squidtransparent-c-icap-clamav/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
