Showing posts with label iptables. Show all posts
Showing posts with label iptables. Show all posts

Wednesday, August 4, 2010

iptables-save

給未來的裕翔

iptables-save > /etc/sysconfig/iptables和service iptables save

都是把當下的規則存到/etc/sysconfig/iptables

很明顯的, service iptables save比較簡短^^

打個岔

iptables -F的當下馬上生效

因為我馬上無法操作

還有iptables -F清的是RULE

我新增的chain不會被清掉

遠端修改iptables注意事項

給未來的裕翔

遠端修改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

它們的關係就是這樣~

Tuesday, June 8, 2010

iptables在redhat預設不存在

給未來的裕翔

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

指令部份請參考筆記, 感覺現在打出來不太好

iptables的ESTABLISHED和RELATED

給未來的裕翔

終於懂了~

什麼是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了

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

Tuesday, May 4, 2010

iptables v.s. tcpdump

給未來的裕翔

iptables是Linux的防火牆

tcpdump是一個sniffer工具

現在如果我在server端設定ftp不開放

並且用tcpdump監聽我的port 21

sshclient

ftpserver

請問, 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

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