給未來的裕翔
想要絢麗的螢幕保護程式
請安裝xscreensaver套件
Monday, May 31, 2010
Thursday, May 27, 2010
httpd的htaccess
給未來的裕翔
關於.htaccess
裡面的AuthName後接的字串如果沒有雙引號
似乎會錯
client端如果一直輸完密碼又出現視窗要求輸入密碼
可能是帳號大小寫錯誤
或是沒有為該帳號設密碼
被保護的資料夾可以放/var/www下
而不需要每次什麼都丟到/var/www/html裡面去
關於.htaccess
裡面的AuthName後接的字串如果沒有雙引號
似乎會錯
client端如果一直輸完密碼又出現視窗要求輸入密碼
可能是帳號大小寫錯誤
或是沒有為該帳號設密碼
被保護的資料夾可以放/var/www下
而不需要每次什麼都丟到/var/www/html裡面去
ifconfig設定虛擬interface
給未來的裕翔
使用ifconfig建立一個虛擬interface
這樣重開機之後就不見了, 僅供本次使用
ifconfig eth0:1 192.168.0.X netmask 255.255.255.0 up
拿來當ip based的virtual host使用
重新啟動後, ifconfig看不到我剛建立的虛擬interface
不過還是可以ping到!!!
使用ifconfig建立一個虛擬interface
這樣重開機之後就不見了, 僅供本次使用
ifconfig eth0:1 192.168.0.X netmask 255.255.255.0 up
拿來當ip based的virtual host使用
重新啟動後, ifconfig看不到我剛建立的虛擬interface
不過還是可以ping到!!!
httpd雜亂筆記
給未來的裕翔
對httpd而言, mod_ssl是跟加密相關的模組
/etc/httpd/conf.d/* 裡面是跟ssl相關的東東
在/etc/httpd/conf/httpd.conf裡面的設定
其中有個叫order, ex:
order deny, allow
deny from xxx
allow from all
因為放在order後面的那項優先度比較高
所以一旦衝突有它為優先
所以上面設定中的deny from xxx是白搭
網頁建立好後, 可用links指令來快速檢查是否有開成功
links -dump http://blabla...
dump就是把網頁的文字內容秀到console
不然會進到網頁裡去
至於virtual host, name based的那個
如果現在新增virt1和virt2在/var/www裡面
那之後除非在本機
links -dump http://localhost
不然是看不到/var/www/html裡面的網頁的
打IP也只會一直看到第一台設定的virtual host
建置virtual host重要的設定只有兩個
DocumentRoot和Servername, 不過IP要記得改三處
(事後細節驗證, 第一處不改會失效, 所以網址都指向第一個virtual host)
(而第二處和第三處可以改成ip也可改成網址)
(如果不改, 保持星號, 那就會跟第一處不改的結果一樣, 都指向第一個virtual host)
兩個virtual host的段落加上面的NameVirtualHost設定
對httpd而言, mod_ssl是跟加密相關的模組
/etc/httpd/conf.d/* 裡面是跟ssl相關的東東
在/etc/httpd/conf/httpd.conf裡面的設定
其中有個叫order, ex:
order deny, allow
deny from xxx
allow from all
因為放在order後面的那項優先度比較高
所以一旦衝突有它為優先
所以上面設定中的deny from xxx是白搭
網頁建立好後, 可用links指令來快速檢查是否有開成功
links -dump http://blabla...
dump就是把網頁的文字內容秀到console
不然會進到網頁裡去
至於virtual host, name based的那個
如果現在新增virt1和virt2在/var/www裡面
那之後除非在本機
links -dump http://localhost
不然是看不到/var/www/html裡面的網頁的
打IP也只會一直看到第一台設定的virtual host
建置virtual host重要的設定只有兩個
DocumentRoot和Servername, 不過IP要記得改三處
(事後細節驗證, 第一處不改會失效, 所以網址都指向第一個virtual host)
(而第二處和第三處可以改成ip也可改成網址)
(如果不改, 保持星號, 那就會跟第一處不改的結果一樣, 都指向第一個virtual host)
兩個virtual host的段落加上面的NameVirtualHost設定
Tuesday, May 25, 2010
pam雜亂小筆記
給未來的裕翔
pam有一堆模組
我也不是很懂, 先把懂的記下來
/etc/pam.d裡面放的都是可以用pam控管的
/etc/securetty如果註解哪一個, root就不能在那一個登入
/etc/nologin如果存在, non-root user就會無法登入
把/etc/pam.d/vsftpd秀出來看的話
auth pam_listfile.so sense=deny file=/etc/vsftpd/ftpusers
sense如果是deny, 那後面file就是黑名單
如果是deny, 那就面file就是白名單
pam有一堆模組
我也不是很懂, 先把懂的記下來
/etc/pam.d裡面放的都是可以用pam控管的
/etc/securetty如果註解哪一個, root就不能在那一個登入
/etc/nologin如果存在, non-root user就會無法登入
把/etc/pam.d/vsftpd秀出來看的話
auth pam_listfile.so sense=deny file=/etc/vsftpd/ftpusers
sense如果是deny, 那後面file就是黑名單
如果是deny, 那就面file就是白名單
xinetd雜亂小筆記
給未來的裕翔
雖然ldd in.telnetd看不到libwrap.so
不過因為它屬於xinetd控管
而xinetd有用到libwrap.so
所以依舊可以使用TCPWRAPPER來控管
練習時請先確定有安裝套件xinetd和telnet-server
注意: 如果我要開放telnet
只需要在hosts.allow增加in.telnetd即可
不需要增加xinetd
不過xinetd的service要開
service xinetd start
雖然ldd in.telnetd看不到libwrap.so
不過因為它屬於xinetd控管
而xinetd有用到libwrap.so
所以依舊可以使用TCPWRAPPER來控管
練習時請先確定有安裝套件xinetd和telnet-server
注意: 如果我要開放telnet
只需要在hosts.allow增加in.telnetd即可
不需要增加xinetd
不過xinetd的service要開
service xinetd start
關於hosts.allow和hosts.deny機制
給未來的裕翔
關於hosts.allow和hosts.deny是有個機制存在的
當有個client跟我要求一個TCPWRAPPER控管的服務
它會先比對hosts.allow
有寫進去的就allow, 廢話
如果client不符和裡面寫的!?
就繼續比對hosts.deny
沒被寫進去的話視同allow
寫進去的當然就是deny
如果多個服務想寫在同一行, 以逗號區隔
如果多個網段或IP想寫在同一行, 以空白區隔
還可以用spawn接shell script
ex: sshd: ALL: spawn echo "%c try to login %s" | mail -s warning root
那個echo不需要完整路徑
通常可以用TCPWRAPPER控管的有:
sendmail
vsftpd
xinetd
in.telnetd 這是/etc/xinetd.d/telnet裡面的server設定
portmap
關於hosts.allow和hosts.deny是有個機制存在的
當有個client跟我要求一個TCPWRAPPER控管的服務
它會先比對hosts.allow
有寫進去的就allow, 廢話
如果client不符和裡面寫的!?
就繼續比對hosts.deny
沒被寫進去的話視同allow
寫進去的當然就是deny
如果多個服務想寫在同一行, 以逗號區隔
如果多個網段或IP想寫在同一行, 以空白區隔
還可以用spawn接shell script
ex: sshd: ALL: spawn echo "%c try to login %s" | mail -s warning root
那個echo不需要完整路徑
通常可以用TCPWRAPPER控管的有:
sendmail
vsftpd
xinetd
in.telnetd 這是/etc/xinetd.d/telnet裡面的server設定
portmap
NAT簡介
給未來的裕翔
NAT是一個IP轉址的服務
內部網路如果要連外面
必須要改封包的source, 不然到目標機器後
回傳的destination(就是一開始的source)非公用IP
傳不回來
因此我需要NAT在我封包丟出的時候幫我改source
改source的NAT稱為SNAT
由於是在ROUTER(SNAT)決定destination是外部還是內部網路
是外部就改source, 是內部就不改, 所以是POSTROUTING
那如果是外面的機器跟我要求服務, 像是網路或是FTP
那我就要修改它的destination才可以通道內部網路
改destination的 NAT稱為DNAT
由於是先改再決定要傳到哪
所以是PREROUTING
如果我只有申請一個合法IP
以跟我要求服務的port來決定要怎麼改它們的destination
那就稱為NAPT
指令部份請參考筆記, 感覺現在打出來不太好
NAT是一個IP轉址的服務
內部網路如果要連外面
必須要改封包的source, 不然到目標機器後
回傳的destination(就是一開始的source)非公用IP
傳不回來
因此我需要NAT在我封包丟出的時候幫我改source
改source的NAT稱為SNAT
由於是在ROUTER(SNAT)決定destination是外部還是內部網路
是外部就改source, 是內部就不改, 所以是POSTROUTING
那如果是外面的機器跟我要求服務, 像是網路或是FTP
那我就要修改它的destination才可以通道內部網路
改destination的 NAT稱為DNAT
由於是先改再決定要傳到哪
所以是PREROUTING
如果我只有申請一個合法IP
以跟我要求服務的port來決定要怎麼改它們的destination
那就稱為NAPT
指令部份請參考筆記, 感覺現在打出來不太好
iptables的ESTABLISHED和RELATED
給未來的裕翔
終於懂了~
什麼是iptables裡面的ESTABLISHED和RELATED?
假設我是A我要找C, 中間必須透過B
所以, A->B->C, 然後C回一個封包給我
那就是ESTABLISHED
如果我在B救出問題了
A->B, 然後B回我一個封包, 那就是RELATED
ESTABLISHED是RELATED
但RELATED不一定是ESTABLISHED
不過現在大家都乾脆兩個一起寫了~
報告完畢
終於懂了~
什麼是iptables裡面的ESTABLISHED和RELATED?
假設我是A我要找C, 中間必須透過B
所以, A->B->C, 然後C回一個封包給我
那就是ESTABLISHED
如果我在B救出問題了
A->B, 然後B回我一個封包, 那就是RELATED
ESTABLISHED是RELATED
但RELATED不一定是ESTABLISHED
不過現在大家都乾脆兩個一起寫了~
報告完畢
iptables為何需要自訂chain?
給未來的裕翔
iptables可以自訂chain
哪時會用到?
假設我現在iptables有三十條rule
1~10是關於192.168.0.0的
11~20是關於192.168.1.0的
21~30是關於192.168.2.0的
只要有個來自192.168.2.X的
總是會白白比對20條rule
可否改進? custom chain^^
自訂3個chain, 假設叫做chainA, chainB, chainC
新增三個規則chain 在INPUT
... 192.168.0.0 -J chainA
... 192.168.1.0 -J chainB
... 192.168.2.0 -J chainC
現在變成只要比對兩條就好了~
注意, custom chain沒有預設policy
比對沒成功的話, 就回剛剛來的地方繼續比對
實作:
iptables -N my-custom-chain
iptables -A my-custom-chain -s XXX.XXX.XXX.XXX -p icmp -j DROP
iptables -A INPUT -s XXX.XXX.XXX.0/24 -j my-custom-chain
要刪掉的話
iptables -X my-custom-chain 這樣會失敗
因為還有rule在my-custom-chain裡面
iptables -D my-custom-chain 1
iptables -X my-custom-chain 這樣還是會失敗, 哈哈哈
因為INPUT裡面有用到my-custom-chain
等chain INPUT裡面關於my-custom-chain那條也砍掉
就可以iptables -X my-custom-chain了
iptables可以自訂chain
哪時會用到?
假設我現在iptables有三十條rule
1~10是關於192.168.0.0的
11~20是關於192.168.1.0的
21~30是關於192.168.2.0的
只要有個來自192.168.2.X的
總是會白白比對20條rule
可否改進? custom chain^^
自訂3個chain, 假設叫做chainA, chainB, chainC
新增三個規則chain 在INPUT
... 192.168.0.0 -J chainA
... 192.168.1.0 -J chainB
... 192.168.2.0 -J chainC
現在變成只要比對兩條就好了~
注意, custom chain沒有預設policy
比對沒成功的話, 就回剛剛來的地方繼續比對
實作:
iptables -N my-custom-chain
iptables -A my-custom-chain -s XXX.XXX.XXX.XXX -p icmp -j DROP
iptables -A INPUT -s XXX.XXX.XXX.0/24 -j my-custom-chain
要刪掉的話
iptables -X my-custom-chain 這樣會失敗
因為還有rule在my-custom-chain裡面
iptables -D my-custom-chain 1
iptables -X my-custom-chain 這樣還是會失敗, 哈哈哈
因為INPUT裡面有用到my-custom-chain
等chain INPUT裡面關於my-custom-chain那條也砍掉
就可以iptables -X my-custom-chain了
Monday, May 24, 2010
Sunday, May 23, 2010
檔案搜尋指令whereis, locate, find, which
給未來的裕翔
鳥哥建議先用whereis和locate, 找不到再考慮用find
當我whereis xxx的時候
會列出最後路徑最後一欄含有xxx的
如果是locate xxx
則路徑當中有etc的都會列出
ex:
which ps
=> /bin/ps
whereis
=> ps: /bin/ps /usr/share/man/man1/ps.1.gz
鳥哥建議先用whereis和locate, 找不到再考慮用find
當我whereis xxx的時候
會列出最後路徑最後一欄含有xxx的
如果是locate xxx
則路徑當中有etc的都會列出
ex:
which ps
=> /bin/ps
whereis
=> ps: /bin/ps /usr/share/man/man1/ps.1.gz
Thursday, May 20, 2010
各種服務的網段表示
給未來的裕翔
在此紀錄各服務網段表示供日後方便比較
iptables: 192.168.0.0/24 192.168.0.0/255.255.255.0 yahoo.com
192.168.0無效, 192.168.0.語法不行, 192.168.0.0無效, .yahoo.com語法不行
--------------------------------------------------
TCPWRAPPER: 192.168.0. 192.168.0.0/255.255.255.0
192.168.0無效, 192.168.0.0無效, 192.168.0.0/24無效
或是192.168.0. 以點結束
如果是名稱
.example.com 以點開頭
--------------------------------------------------
mail, 192.168.0 非以點結束
如果是xinetd的設定, 像是only_from或no_access
要用192.168.0.0/24或是.domain.com 以點開頭
--------------------------------------------------
在/etc/httpd/conf/httpd.conf的order的allow和deny
如果要接網段, 192.168.0.0/24
--------------------------------------------------
在squid裡的squid.conf, 如果要寫網域
192.168.0.0/24或192.168.0.0/255.255.255.0
如果要以網址表示單一台, ex: yahoo.com
acl xxx dst yahoo.com
如果要以網址表示domain, ex: yahoo.com
acl xxx dstdomain .yahoo.com
--------------------------------------------------
在named.conf裡面
網段可以是
192.168.0.0/24
或是192.168.0.
在IP或是網段前面加!就是not的意思
--------------------------------------------------
在/etc/exports裡面
如果要表示網段
192.168.0.0/255.255.255.0
或*.somdomain.blabla
192.168.0.0/255.255.255.0 可以
192.168.0. 語法錯
192.168.0.0 語法沒錯, 但不能用
192.168.0.0/24 可以耶! 以前好像不能用
.ee.nthu 語法錯
nvlab193.ee.nthu 可以, 不過這是針對一台......
*.somdomain.blabla 語法錯!? 以前好像可以
所以是要怎麼文字表示網域阿......
--------------------------------------------------
在/etc/samba/smb.conf裡面
網段表示是192.168.0.
在此紀錄各服務網段表示供日後方便比較
iptables: 192.168.0.0/24 192.168.0.0/255.255.255.0 yahoo.com
192.168.0無效, 192.168.0.語法不行, 192.168.0.0無效, .yahoo.com語法不行
--------------------------------------------------
TCPWRAPPER: 192.168.0. 192.168.0.0/255.255.255.0
192.168.0無效, 192.168.0.0無效, 192.168.0.0/24無效
或是192.168.0. 以點結束
如果是名稱
.example.com 以點開頭
--------------------------------------------------
mail, 192.168.0 非以點結束
如果是xinetd的設定, 像是only_from或no_access
要用192.168.0.0/24或是.domain.com 以點開頭
--------------------------------------------------
在/etc/httpd/conf/httpd.conf的order的allow和deny
如果要接網段, 192.168.0.0/24
--------------------------------------------------
在squid裡的squid.conf, 如果要寫網域
192.168.0.0/24或192.168.0.0/255.255.255.0
如果要以網址表示單一台, ex: yahoo.com
acl xxx dst yahoo.com
如果要以網址表示domain, ex: yahoo.com
acl xxx dstdomain .yahoo.com
--------------------------------------------------
在named.conf裡面
網段可以是
192.168.0.0/24
或是192.168.0.
在IP或是網段前面加!就是not的意思
--------------------------------------------------
在/etc/exports裡面
如果要表示網段
192.168.0.0/255.255.255.0
或*.somdomain.blabla
192.168.0.0/255.255.255.0 可以
192.168.0. 語法錯
192.168.0.0 語法沒錯, 但不能用
192.168.0.0/24 可以耶! 以前好像不能用
.ee.nthu 語法錯
nvlab193.ee.nthu 可以, 不過這是針對一台......
*.somdomain.blabla 語法錯!? 以前好像可以
所以是要怎麼文字表示網域阿......
--------------------------------------------------
在/etc/samba/smb.conf裡面
網段表示是192.168.0.
DNS的tcp和udp port
給未來的裕翔
DNS會聽tcp和udp的port 53
udp的port 53是開放查詢的
tcp的port 53是提供DNS slave server作zone transfer
DNS會聽tcp和udp的port 53
udp的port 53是開放查詢的
tcp的port 53是提供DNS slave server作zone transfer
iptables雜亂小筆記
給未來的裕翔
老師說netfilter和iptables不是同一個東西
我一直以為是同一個說~
syslog裡面的格式是: facility.level action
而iptables裡面的LOG是屬於kernel facility
因此會依照syslog的設定紀錄到指定的log檔去
通常是/var/log/messages
防火牆有三個table(據說現在是四個)
filter, nat, mangle
每個talbe又有各自的chain
通常我們都是對filter作處理
filter裡面有三個chain: INPUT, OUTPUT, FORWARD
以iptables指令設定防火牆時
不指定-t就是使用預設的filter table
原則上建議直接以IP作設定, 而不是hostname
因為還需要另外解析, 耗資源
如果我把對方對我的icmp擋掉
它就不能ping我, 但我依然可以ping它
不過它被我ping之後, 回傳給我的icmp reply依然被我擋掉
所以我會不知道我ping它成功了
所以我不讓它ping的代價是我ping它也無法得知?
我們可以對icmp作更細部的規範免此問題
現在iptables -p icmp -h
-h是help的意思
這樣可以列出一堆關於icmp的東東
有八大類, 其中常用的是echo-request和echo-reply
所以我們剛才的設定可以改成
... -p icmp --icmp-type echo-request -j DROP
或是
... -p icmp --icmp-type echo-reply -j ACCEPT
另外, 作設定時, 如果沒有指定-p, protocol
但是有指定port, 這樣會失敗
因為沒指定protocol, 那就是指tcp, udp, icmp三個全部
可是icmp是沒有port概念的, 所以這樣會造成失敗
在設定過程, 驚嘆號的意思是not
如果想要表示連續port, 21:25就是21到25
如果是不連續port?
im multiport --dports 21,23,25
那就是針對21,23,25這三個port進行設定
以下列出個人認為比較有用的iptables指令
iptables -F chain 清掉所有規則, 不加chain就是清掉所有
iptables -L chain 列出chain的所有規則
iptables -P INPUT DROP 對input這個chain的預設policy是drop
自己依此類推OUTPUT, FORWARD和ACCEPT
這樣設定完後要記得service iptables save
老師是建議可以寫一個script放在/etc/rc.d/rc.local
不過我個人偏好直接修改/etc/sysconfig/iptables
老師說netfilter和iptables不是同一個東西
我一直以為是同一個說~
syslog裡面的格式是: facility.level action
而iptables裡面的LOG是屬於kernel facility
因此會依照syslog的設定紀錄到指定的log檔去
通常是/var/log/messages
防火牆有三個table(據說現在是四個)
filter, nat, mangle
每個talbe又有各自的chain
通常我們都是對filter作處理
filter裡面有三個chain: INPUT, OUTPUT, FORWARD
以iptables指令設定防火牆時
不指定-t就是使用預設的filter table
原則上建議直接以IP作設定, 而不是hostname
因為還需要另外解析, 耗資源
如果我把對方對我的icmp擋掉
它就不能ping我, 但我依然可以ping它
不過它被我ping之後, 回傳給我的icmp reply依然被我擋掉
所以我會不知道我ping它成功了
所以我不讓它ping的代價是我ping它也無法得知?
我們可以對icmp作更細部的規範免此問題
現在iptables -p icmp -h
-h是help的意思
這樣可以列出一堆關於icmp的東東
有八大類, 其中常用的是echo-request和echo-reply
所以我們剛才的設定可以改成
... -p icmp --icmp-type echo-request -j DROP
或是
... -p icmp --icmp-type echo-reply -j ACCEPT
另外, 作設定時, 如果沒有指定-p, protocol
但是有指定port, 這樣會失敗
因為沒指定protocol, 那就是指tcp, udp, icmp三個全部
可是icmp是沒有port概念的, 所以這樣會造成失敗
在設定過程, 驚嘆號的意思是not
如果想要表示連續port, 21:25就是21到25
如果是不連續port?
im multiport --dports 21,23,25
那就是針對21,23,25這三個port進行設定
以下列出個人認為比較有用的iptables指令
iptables -F chain 清掉所有規則, 不加chain就是清掉所有
iptables -L chain 列出chain的所有規則
iptables -P INPUT DROP 對input這個chain的預設policy是drop
自己依此類推OUTPUT, FORWARD和ACCEPT
這樣設定完後要記得service iptables save
老師是建議可以寫一個script放在/etc/rc.d/rc.local
不過我個人偏好直接修改/etc/sysconfig/iptables
selinux的簡單雜亂筆記
給未來的裕翔
那個星星是由一個叫setroubleshootd的程式負責的
永久性修改selinux的狀態的話
到/etc/sysconfig/selinux
如果想讓某個服務脫離selinux控管
setsebool -P xxx_disable_trans 1
想看process的selinux context的話
ps -Z
要改變檔案的context, 別忘記加-t
chcon -t xxx_xxx_xxx_t file
如果對像是目錄, 且希望裡面的檔案context一次改完
chcon -R -t xxx_xxx_xxx_t dir
那個星星是由一個叫setroubleshootd的程式負責的
永久性修改selinux的狀態的話
到/etc/sysconfig/selinux
如果想讓某個服務脫離selinux控管
setsebool -P xxx_disable_trans 1
想看process的selinux context的話
ps -Z
要改變檔案的context, 別忘記加-t
chcon -t xxx_xxx_xxx_t file
如果對像是目錄, 且希望裡面的檔案context一次改完
chcon -R -t xxx_xxx_xxx_t dir
ssh套件&相關小筆記
給未來的裕翔
想要使用ssh時
請安裝openssh, openssh-clients, openssh-server
ssh server會以tcp的port 22來等待服務, ssh client則不是以port 22連過去
client端的~/.ssh/known_hosts會紀錄連過線的ssh server
要設定ssh server時
記住是/etc/ssh/sshd_config
而不是/etc/ssh/ssh_config
裡面有幾個設定可以注意一下
PermitRootLogin建議設為no
PermitRootLogin without-password, 這是讓開放root以passphrase登入
Banner /file/path, 可以在/file/path裡面加入文字, 秀給ssh client登入時看
sftp老師很喜歡
因為它有lls
get file [local-path]
put local-path [remote-path]
另外, 以下兩個指令通常很少用, -L是local, -R是remote
ssh -L client-port:hosta:hosta-port hostb
我聽本機的client-port, 然後直接丟給hostb, 請hostb幫我丟給hosta的hosta-port
ssh -R serverport:hosta:hosta-port hostb
我聽遠端的server-port, 有服務請求到它那的話, 我幫它丟給hosta的hosta-port
想要使用ssh時
請安裝openssh, openssh-clients, openssh-server
ssh server會以tcp的port 22來等待服務, ssh client則不是以port 22連過去
client端的~/.ssh/known_hosts會紀錄連過線的ssh server
要設定ssh server時
記住是/etc/ssh/sshd_config
而不是/etc/ssh/ssh_config
裡面有幾個設定可以注意一下
PermitRootLogin建議設為no
PermitRootLogin without-password, 這是讓開放root以passphrase登入
Banner /file/path, 可以在/file/path裡面加入文字, 秀給ssh client登入時看
sftp老師很喜歡
因為它有lls
get file [local-path]
put local-path [remote-path]
另外, 以下兩個指令通常很少用, -L是local, -R是remote
ssh -L client-port:hosta:hosta-port hostb
我聽本機的client-port, 然後直接丟給hostb, 請hostb幫我丟給hosta的hosta-port
ssh -R serverport:hosta:hosta-port hostb
我聽遠端的server-port, 有服務請求到它那的話, 我幫它丟給hosta的hosta-port
ssh passphrase
給未來的裕翔
如果client和ssh server想建立key passphrase
請照以下操作
首先在client端
ssh-keygen -t -rsa
這樣會在~/.ssh裡面產生
id_rsa, 這是private key
id_rsa.pub, 這是public key
接著使用ssh-copy-id -i ~/.ssh/id_rsa.pub target-user@ssh-server
(上面那個id_rsa.pub的確實位置要指定, 不然會找不到)
注意, ssh server的target一開始~/.ssh並不需要存在
因為不存在的話, client作ssh-copy-id時會自動在ssh server上建立它
那個ssh-keygen建立時如果沒輸入passphrase
之後就可以直接登入ssh server的target user
如果有輸入pass phrase
client可以ssh-agent bash
然後ssh-add, 輸入一次passphrase之後, 之後就不需要再輸入了
不過之後是到多之後我不知道
註記: ssh server的target user的~target-user權限不能是777
.ssh必須是700
authorized_keys必須是600
不然passphrase機制會出問題
如果client和ssh server想建立key passphrase
請照以下操作
首先在client端
ssh-keygen -t -rsa
這樣會在~/.ssh裡面產生
id_rsa, 這是private key
id_rsa.pub, 這是public key
接著使用ssh-copy-id -i ~/.ssh/id_rsa.pub target-user@ssh-server
(上面那個id_rsa.pub的確實位置要指定, 不然會找不到)
注意, ssh server的target一開始~/.ssh並不需要存在
因為不存在的話, client作ssh-copy-id時會自動在ssh server上建立它
那個ssh-keygen建立時如果沒輸入passphrase
之後就可以直接登入ssh server的target user
如果有輸入pass phrase
client可以ssh-agent bash
然後ssh-add, 輸入一次passphrase之後, 之後就不需要再輸入了
不過之後是到多之後我不知道
註記: ssh server的target user的~target-user權限不能是777
.ssh必須是700
authorized_keys必須是600
不然passphrase機制會出問題
Tuesday, May 18, 2010
openssl對檔案加密
給未來的裕翔
openssl des3 -in filename -out filename2
輸入密碼兩次後, 把filename2傳給對方
對方執行
openssl des3 -d -in filename2 -out filename3
輸入你告知對方的密碼
如果只想看檔案內容而不另存新檔的話, -out filename3可以不用打
雖然看似平常
其實有個問題, 我如何安全的把密碼告知對方?
而以上加密解密都是同一把key, 稱為symmetric加密
openssl des3 -in filename -out filename2
輸入密碼兩次後, 把filename2傳給對方
對方執行
openssl des3 -d -in filename2 -out filename3
輸入你告知對方的密碼
如果只想看檔案內容而不另存新檔的話, -out filename3可以不用打
雖然看似平常
其實有個問題, 我如何安全的把密碼告知對方?
而以上加密解密都是同一把key, 稱為symmetric加密
加密介紹&指令
給未來的裕翔
先很快講一下md5sum
對任意檔案md5sum filename可以跑出一串固定長度的亂碼
這就是one-way hase
非加密, 只是拿來驗證用
接著介紹symmetric加密
symmetric的意思就是加密解密都用同一把key
那問題來了, 怎麼安全的把key傳給對方
萬一中間被誰拿到這把key
不就誰都可以解我加密過的東西了?
於是產生了asymmetric加密
asymmetric加密就是產生兩把key, private key和public key
用其中任一把解另一把加密的資料
舉例來說, 現在有兩個角色, client和server
當client對server請求https服務時
server會產生private key和public key, 簡稱server-pri & server-pub
server接著傳server-pub給client
然後client自己有把session key
利用server-pub把自己的session-key加密變成server-pub(session-key)
傳給server後, server利用server-pri解server-pub(session-key)
這樣依然有個問題
一開始client怎麼知道它請求服務的對象, 就是真正的server?
於是我們需要公正的第三方, CA
有了CA之後, 真正的sever為了要請公正的CA證明自己是真的server
填一張CSR(Certificate Service Request)給CA
裡面包含
1. Server info
2. Server pub
加上CA自己的
3. CA info
4. Expiration
然後CA對這四個資訊進行onw-way hash得到一個叫fingerprint的東東
利用CA自己的private key, 簡稱CA-pri, 來對它加密成CA-pri(fingerprint)
剛才的四個資訊+CA-pri(fingerprint)合稱D.C.(digital certificate)
回傳給server
之後, 如果有client跟server請求https服務
server就回傳給它一個D.C.(數位憑證)
那client對D.C.裡面的四個資訊進行one-way hash得到自己算的fingerprint
再使用隨處可得的CA的public key, 簡稱CA-pub
來解D.C.裡面的CA-pri(fingerprint)
比較兩個fingerprint
如果一樣, 就表示"server不但自稱就是我要找的它, CA也說就是它"
這樣就可以相信"我要找的它"
以上, 上課聽了兩次, 這次終於把它記下來了^^
屁了一堆, 接著講解怎麼操作
由於跟真的CA申請憑證要錢的, 不過就是承認我嘛......
所以我要自己當CA
到/etc/pki/tls/misc, 裡面有個叫CA的script
首先, 我要扮演server的角色, 跟CA申請一個CSR(certificate service request)
./CA -newreq
自己填需要的資料吧~ 中間會需要建server的passphrase, 要給(理由我忘了)
會產生newkey.pem(server的private key)
和newreq.pem(含有1. Server info, 2. Server pub)
我要為自己建立一個偽CA公司^^
./CA -newca
照舊, 自己填需要的資料, 這也需要建一個CA的passphrase
搞定後, 會多出一個/etc/pki/CA資料夾, 這就是我的偽CA公司^^
再來, 身為一個CA公司, 我當然要同意server跟我申請的CSR囉
操作位置依然是在/etc/pki/tls/misc
./CA -sign
它會對newreq.pem產生newcert.pem, 這就是D.C.(數位憑證)了
目前先到這裡, 因為老師也只講到這裡
註記: 老師說只要扯到private key就需要一個passphrase
註記: 一定要./CA -xxx, 不能/etc/pki/tls/misc/CA -xxx
因為CA script裡面用到很多相對位置
根據執行CA script所在位置的相對位置, 所以預設是在/etc/pki/tls/misc/底下執行
那我們就別耍酷/etc/pki/tls/misc/CA -xxx
報告完畢, 未來的裕翔一定會很感謝我^^
先很快講一下md5sum
對任意檔案md5sum filename可以跑出一串固定長度的亂碼
這就是one-way hase
非加密, 只是拿來驗證用
接著介紹symmetric加密
symmetric的意思就是加密解密都用同一把key
那問題來了, 怎麼安全的把key傳給對方
萬一中間被誰拿到這把key
不就誰都可以解我加密過的東西了?
於是產生了asymmetric加密
asymmetric加密就是產生兩把key, private key和public key
用其中任一把解另一把加密的資料
舉例來說, 現在有兩個角色, client和server
當client對server請求https服務時
server會產生private key和public key, 簡稱server-pri & server-pub
server接著傳server-pub給client
然後client自己有把session key
利用server-pub把自己的session-key加密變成server-pub(session-key)
傳給server後, server利用server-pri解server-pub(session-key)
這樣依然有個問題
一開始client怎麼知道它請求服務的對象, 就是真正的server?
於是我們需要公正的第三方, CA
有了CA之後, 真正的sever為了要請公正的CA證明自己是真的server
填一張CSR(Certificate Service Request)給CA
裡面包含
1. Server info
2. Server pub
加上CA自己的
3. CA info
4. Expiration
然後CA對這四個資訊進行onw-way hash得到一個叫fingerprint的東東
利用CA自己的private key, 簡稱CA-pri, 來對它加密成CA-pri(fingerprint)
剛才的四個資訊+CA-pri(fingerprint)合稱D.C.(digital certificate)
回傳給server
之後, 如果有client跟server請求https服務
server就回傳給它一個D.C.(數位憑證)
那client對D.C.裡面的四個資訊進行one-way hash得到自己算的fingerprint
再使用隨處可得的CA的public key, 簡稱CA-pub
來解D.C.裡面的CA-pri(fingerprint)
比較兩個fingerprint
如果一樣, 就表示"server不但自稱就是我要找的它, CA也說就是它"
這樣就可以相信"我要找的它"
以上, 上課聽了兩次, 這次終於把它記下來了^^
屁了一堆, 接著講解怎麼操作
由於跟真的CA申請憑證要錢的, 不過就是承認我嘛......
所以我要自己當CA
到/etc/pki/tls/misc, 裡面有個叫CA的script
首先, 我要扮演server的角色, 跟CA申請一個CSR(certificate service request)
./CA -newreq
自己填需要的資料吧~ 中間會需要建server的passphrase, 要給(理由我忘了)
會產生newkey.pem(server的private key)
和newreq.pem(含有1. Server info, 2. Server pub)
我要為自己建立一個偽CA公司^^
./CA -newca
照舊, 自己填需要的資料, 這也需要建一個CA的passphrase
搞定後, 會多出一個/etc/pki/CA資料夾, 這就是我的偽CA公司^^
再來, 身為一個CA公司, 我當然要同意server跟我申請的CSR囉
操作位置依然是在/etc/pki/tls/misc
./CA -sign
它會對newreq.pem產生newcert.pem, 這就是D.C.(數位憑證)了
目前先到這裡, 因為老師也只講到這裡
註記: 老師說只要扯到private key就需要一個passphrase
註記: 一定要./CA -xxx, 不能/etc/pki/tls/misc/CA -xxx
因為CA script裡面用到很多相對位置
根據執行CA script所在位置的相對位置, 所以預設是在/etc/pki/tls/misc/底下執行
那我們就別耍酷/etc/pki/tls/misc/CA -xxx
報告完畢, 未來的裕翔一定會很感謝我^^
取代service network start或stop
給未來的裕翔
如果單純以字數多少來建議的話
可以考慮用ifup eth0和ifdown eth0來取代原來的
service network start和service network stop
不過老師自己是習慣用ifconfig, 改天來比較一下
如果單純以字數多少來建議的話
可以考慮用ifup eth0和ifdown eth0來取代原來的
service network start和service network stop
不過老師自己是習慣用ifconfig, 改天來比較一下
yum的grouplist, search, provides
給未來的裕翔
有些套件是以達成某功能再聚成一個group的
可以用yum groupinstall來安裝
安裝前可以先yum grouplist來看有哪些
另外, 如果不知到確實的套件名稱
可利用yum search string
string的搜尋範圍包括套件的name, summary, description
列出符合關鍵字的套件
最後, 以前都用yum whatprovides來看什麼檔是由什麼套件提供的
似乎yum provides就可以了?
改天來試試
有些套件是以達成某功能再聚成一個group的
可以用yum groupinstall來安裝
安裝前可以先yum grouplist來看有哪些
另外, 如果不知到確實的套件名稱
可利用yum search string
string的搜尋範圍包括套件的name, summary, description
列出符合關鍵字的套件
最後, 以前都用yum whatprovides來看什麼檔是由什麼套件提供的
似乎yum provides就可以了?
改天來試試
如果缺檔或壞檔想從rpm補救
給未來的裕翔
簡單一點
rpm -ivh xxx.rpm --force
缺點是, 少的補上, 有的也蓋過了(沒親自嘗試過)
另一個方法是
rpm2cpio xxx.rpm | cpio -idmv ./bin/ps
上例是假設我缺ps執行檔
產生後就直接複製到原來ps應該在的位置
當然, 基本上有yum還是用yum吧
簡單一點
rpm -ivh xxx.rpm --force
缺點是, 少的補上, 有的也蓋過了(沒親自嘗試過)
另一個方法是
rpm2cpio xxx.rpm | cpio -idmv ./bin/ps
上例是假設我缺ps執行檔
產生後就直接複製到原來ps應該在的位置
當然, 基本上有yum還是用yum吧
rpm簡查那些檔案有更動
給未來的裕翔
rpm -V --root=/ --define '_dbpath /var/lib/prm' procps
如果是在rescue mode
--root=/mnt/sysimg
rpm -V --root=/ --define '_dbpath /var/lib/prm' procps
如果是在rescue mode
--root=/mnt/sysimg
Monday, May 17, 2010
client端寄信
給未來的裕翔
從client端寄信時
因為只是client
別三八去修改/etc/postfix/main.cf的mydestination
保持預設就好
不然不管怎樣都會"成功"寄給本機的帳號
從client端寄信時
因為只是client
別三八去修改/etc/postfix/main.cf的mydestination
保持預設就好
不然不管怎樣都會"成功"寄給本機的帳號
Sunday, May 16, 2010
使用postfix寄信
給未來的裕翔
當我使用postfix寄信時
在同一台機器上寄給其他使用者
一開始會錯誤, /var/log/maillog有紀錄
原因是/etc/postfix/main.cf裡面的
mydomain的值是dorm.nthu, 無法反查, 所以信拒收
改成
myhostname是ru129.dorm.nthu, 可以反查
這樣就可以在同一機器上寄信給對方了
當我使用postfix寄信時
在同一台機器上寄給其他使用者
一開始會錯誤, /var/log/maillog有紀錄
原因是/etc/postfix/main.cf裡面的
myorigin=$mydomain
mydomain的值是dorm.nthu, 無法反查, 所以信拒收
改成
myorigin=$myhostname
myhostname是ru129.dorm.nthu, 可以反查
這樣就可以在同一機器上寄信給對方了
Saturday, May 15, 2010
dovecot, sendmail, postfix練習時哪些要開?
給未來的裕翔
當我裝好dovecot時, 啟動這項服務
原本以為它跟sendmail和postfix是同角色的
不過以alternatives --config mta來查看時
卻似乎不是
所以, sendmail和postfix至少要開啟一個才可以練習
postfix也許少設定什麼, 沒有成功
所以暫時以sendmail來練習
補充:
如果我現在要關掉sendmail開啟postfix
最好是先把sendmail服務停掉
service sendmail stop
然後再改mta
alternatives --config mta
當我裝好dovecot時, 啟動這項服務
原本以為它跟sendmail和postfix是同角色的
不過以alternatives --config mta來查看時
卻似乎不是
所以, sendmail和postfix至少要開啟一個才可以練習
postfix也許少設定什麼, 沒有成功
所以暫時以sendmail來練習
補充:
如果我現在要關掉sendmail開啟postfix
最好是先把sendmail服務停掉
service sendmail stop
然後再改mta
alternatives --config mta
Tuesday, May 11, 2010
Sunday, May 9, 2010
named的allow query
給未來的裕翔
如果要開放DNS服務給允許的對象
ex: 140.114.28.187
注意, IP是要加到named.conf的allow-query
而不是listen-on port 53
如果要開放DNS服務給允許的對象
ex: 140.114.28.187
注意, IP是要加到named.conf的allow-query
而不是listen-on port 53
Saturday, May 8, 2010
cp和mv對context的影響
給未來的裕翔
如果現在有個檔案
我把它cp到ftp資料夾裡
它會自動變成可以下載的context
如果是mv到ftp資料夾裡
就必須手動restorecon一下
當然, 如果是cp -a, 那應該也需要手動restorecon一下
如果現在有個檔案
我把它cp到ftp資料夾裡
它會自動變成可以下載的context
如果是mv到ftp資料夾裡
就必須手動restorecon一下
當然, 如果是cp -a, 那應該也需要手動restorecon一下
Friday, May 7, 2010
sendmail: local delivery
給未來的裕翔
如果想要稍微了解local端email寄信流程
mail -v bob
不過要記得在/etc/hosts.allow裡面加入127.0.0.1
當然, /etc/mail/local-host-names和/etc/mail/access我也有設定
/etc/mail/local-host-names
/etc/mail/access
不過我不確定這些是不是關鍵
先紀錄下來而已
如果想要稍微了解local端email寄信流程
mail -v bob
不過要記得在/etc/hosts.allow裡面加入127.0.0.1
當然, /etc/mail/local-host-names和/etc/mail/access我也有設定
/etc/mail/local-host-names
ru129.dorm.nthu
nvlab187.ee.nthu
localhost.localdomain
/etc/mail/access
Connect:localhost.localdomain RELAY
Connect:localhost RELAY
Connect:127.0.0.1 RELAY
From:localhost.localdomain OK
不過我不確定這些是不是關鍵
先紀錄下來而已
Tuesday, May 4, 2010
iptables v.s. tcpdump
給未來的裕翔
iptables是Linux的防火牆
tcpdump是一個sniffer工具
現在如果我在server端設定ftp不開放
並且用tcpdump監聽我的port 21
ssh到client端
ftp回server端
請問, tcpdump會不會探測到?
答案是會^^
所以, tcpdump似乎比iptables還要外層一些~
iptables是Linux的防火牆
tcpdump是一個sniffer工具
現在如果我在server端設定ftp不開放
並且用tcpdump監聽我的port 21
ssh到client端
ftp回server端
請問, tcpdump會不會探測到?
答案是會^^
所以, tcpdump似乎比iptables還要外層一些~
Sunday, May 2, 2010
檔案和資料夾權限
給未來的裕翔
最近到處接觸一些新東西
動輒談到權限
因此在此簡單釐清一下:
對資料夾而言
沒有x權限就進不去
進去後沒有r權限就看不到裡面的東西, ex: 檔案, 資料夾
沒有w權限就無法在該資料夾裡面新增或移除檔案
對檔案而言
rwx真是太簡單, 不講了^^
那~ 如果一個資料夾對我而言沒有r權限
我可以讀裡面的檔案或在進到子資料夾裡嗎?
可以的呦! 只要確實知道檔案或子資料夾的名稱即可
最近到處接觸一些新東西
動輒談到權限
因此在此簡單釐清一下:
對資料夾而言
沒有x權限就進不去
進去後沒有r權限就看不到裡面的東西, ex: 檔案, 資料夾
沒有w權限就無法在該資料夾裡面新增或移除檔案
對檔案而言
rwx真是太簡單, 不講了^^
那~ 如果一個資料夾對我而言沒有r權限
我可以讀裡面的檔案或在進到子資料夾裡嗎?
可以的呦! 只要確實知道檔案或子資料夾的名稱即可
NextGen Gallery顯示相簿
給未來的裕翔
這裡先記大概
等我熟悉一點再紀錄完整一點
新增一個Page
內容[album=3,extend]
再到Manage Gallery設定連到剛設定的Page
就可以再部落格上看到了
不過真是陽春到爆!
這裡先記大概
等我熟悉一點再紀錄完整一點
新增一個Page
內容[album=3,extend]
再到Manage Gallery設定連到剛設定的Page
就可以再部落格上看到了
不過真是陽春到爆!
Gallery突然可以用了?
給未來的裕翔
本來不管怎樣update database都不會離開鬼跳牆的Gallery
突然可以用了?
這就麻煩了, 這樣我哪知道哪步是關鍵步驟?
登出登入?
我覺得chown bob.bob -r wordpress這倒是更有可能
本來不管怎樣update database都不會離開鬼跳牆的Gallery
突然可以用了?
這就麻煩了, 這樣我哪知道哪步是關鍵步驟?
登出登入?
我覺得chown bob.bob -r wordpress這倒是更有可能
Saturday, May 1, 2010
WordPress: 張貼程式碼
給未來的裕翔
如果直接在WordPress裡面張貼程式碼
會被當成一般文字處理
也就是說, 關鍵字不會有色彩, 這當然......
空格模擬的縮排也會被無視
這樣程式碼就沒架構了, 難以閱讀
請安裝WP-syntax這個外掛
Download from WordPress
安裝好且啟動它後
在想要插入程式碼的地方, 切換成HTML編輯模式
然後
<pre lang="your-language">
想插入的程式碼
</pre>
支援的程式碼列表可以到以下網址查看
GeSHi - Generic Syntax Highlighter :: Home
似乎就算沒支援也有預設的highlight?
Matlab好像就是
如果直接在WordPress裡面張貼程式碼
會被當成一般文字處理
也就是說, 關鍵字不會有色彩, 這當然......
空格模擬的縮排也會被無視
這樣程式碼就沒架構了, 難以閱讀
請安裝WP-syntax這個外掛
Download from WordPress
安裝好且啟動它後
在想要插入程式碼的地方, 切換成HTML編輯模式
然後
<pre lang="your-language">
想插入的程式碼
</pre>
支援的程式碼列表可以到以下網址查看
GeSHi - Generic Syntax Highlighter :: Home
似乎就算沒支援也有預設的highlight?
Matlab好像就是
matlab: 變數存在且非空
給未來的裕翔
如果想要測試一個變數是否存在且非空
上面的意思是
如果options.D是options的一個成員&&有賦值
那就把options.D指定給D
如果想要測試一個變數是否存在且非空
if isfield(options, 'D') && not(isempty(options.D))
D = options.D;
end
上面的意思是
如果options.D是options的一個成員&&有賦值
那就把options.D指定給D
Subscribe to:
Posts (Atom)