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

No comments:

Post a Comment