給未來的裕翔
iptables-save > /etc/sysconfig/iptables和service iptables save
都是把當下的規則存到/etc/sysconfig/iptables
很明顯的, service iptables save比較簡短^^
打個岔
iptables -F的當下馬上生效
因為我馬上無法操作
還有iptables -F清的是RULE
我新增的chain不會被清掉
Showing posts with label iptables. Show all posts
Showing posts with label iptables. Show all posts
Wednesday, August 4, 2010
遠端修改iptables注意事項
給未來的裕翔
遠端修改iptables時
最好不要輕易sudo service iptables restart
我把iptables清空後, INPUT的policy改為DROP
重新啟動後就突然斷線了
是沒有顯示啦, PS1依然顯示我在server
不過操作就不能動了
我在猜, 是因為ssh那條規則被我移除掉了?
還是那個ESTABLISHED,RELATED?
再來就是, 我直接跑去server上操作
結果ssh原來的client和ping外面主機都沒結果
不知道依舊是那ESTABLISHED,RELATED?
還是icmp的規則尚未增加?
先記下來供以後釐清
(沒有以後了!!!)
遠端修改iptables時
最好不要輕易sudo service iptables restart
我把iptables清空後, INPUT的policy改為DROP
重新啟動後就突然斷線了
是沒有顯示啦, PS1依然顯示我在server
不過操作就不能動了
我在猜, 是因為ssh那條規則被我移除掉了?
還是那個ESTABLISHED,RELATED?
再來就是, 我直接跑去server上操作
結果ssh原來的client和ping外面主機都沒結果
不知道依舊是那ESTABLISHED,RELATED?
還是icmp的規則尚未增加?
先記下來供以後釐清
(沒有以後了!!!)
Monday, July 19, 2010
用iptables新增一個chain
給未來的裕翔
iptables -N CLASS-RULES
這樣就會在filter這個table新增一個chain, CLASS-RULES
iptables -A INPUT -j CLASS-RULES
這樣到INPUT的都會到CLASS-RULES
service iptables save
簡單講一下, filter是一個table, 同等級的還有nat和mangle
而filter有三個chain: input, output, forward
它們的關係就是這樣~
iptables -N CLASS-RULES
這樣就會在filter這個table新增一個chain, CLASS-RULES
iptables -A INPUT -j CLASS-RULES
這樣到INPUT的都會到CLASS-RULES
service iptables save
簡單講一下, filter是一個table, 同等級的還有nat和mangle
而filter有三個chain: input, output, forward
它們的關係就是這樣~
Tuesday, June 8, 2010
iptables在redhat預設不存在
給未來的裕翔
iptables在redhat預設不存在
如果想要把現有的iptables寫出
iptables-save > /etc/sysconfig/iptables
不過老師建議先統統flush調
再一個個建
老師說, 預設的RULE應該是內建在kernel裡面
如果/etc/sysconfig/iptables存在就不會讀kernel預設RULE
老師也說考試建議預設都ACCEPT
實務上建議預設DROP
iptables在redhat預設不存在
如果想要把現有的iptables寫出
iptables-save > /etc/sysconfig/iptables
不過老師建議先統統flush調
再一個個建
老師說, 預設的RULE應該是內建在kernel裡面
如果/etc/sysconfig/iptables存在就不會讀kernel預設RULE
老師也說考試建議預設都ACCEPT
實務上建議預設DROP
Tuesday, May 25, 2010
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了
Thursday, May 20, 2010
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
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還要外層一些~
Saturday, March 20, 2010
iptables註解
給未來的裕翔
如果像要對iptables進行註解
必須注意, 註解和設定不能同一行
以下是可以的
# ssh
-A CLASS-RULES -p tcp --dport 22 -j ACCEPT
以下是會錯誤的
-A CLASS-RULES -p tcp --dport 22 -j ACCEPT # ssh
如果像要對iptables進行註解
必須注意, 註解和設定不能同一行
以下是可以的
# ssh
-A CLASS-RULES -p tcp --dport 22 -j ACCEPT
以下是會錯誤的
-A CLASS-RULES -p tcp --dport 22 -j ACCEPT # ssh
Monday, March 15, 2010
iptables指令方式操作
給未來的裕翔
iptables雖然可以用指令操作
原則上還是建議直接編輯, 因為比較直覺
以下僅介紹兩個iptables指令操作
首先, 對iptables進行超簡介
iptables就是防火牆
由3個預設table組成(可自訂)
每個table含2~3個chain(也可自訂)
如何自訂一個chain? ex: CLASS-RULES
iptables -N CLASS-RULES
-N: new一個chain出來
如何把這個chain安插在INPUT(內建chain)之前?
iptables -I INPUT -j CLASS-RULES
-I: insert
-j: jump to
指令做出來的chain, 是不會存回/etc/sysconfig/iptables的
如果想要存回去
service iptables save
iptables雖然可以用指令操作
原則上還是建議直接編輯, 因為比較直覺
以下僅介紹兩個iptables指令操作
首先, 對iptables進行超簡介
iptables就是防火牆
由3個預設table組成(可自訂)
每個table含2~3個chain(也可自訂)
如何自訂一個chain? ex: CLASS-RULES
iptables -N CLASS-RULES
-N: new一個chain出來
如何把這個chain安插在INPUT(內建chain)之前?
iptables -I INPUT -j CLASS-RULES
-I: insert
-j: jump to
指令做出來的chain, 是不會存回/etc/sysconfig/iptables的
如果想要存回去
service iptables save
Subscribe to:
Posts (Atom)