最近有位學長的網站常被打

讓我想到我還有很多文章都還沒弄上來

所以趁這個機會把之前寫的iptables筆記貼上來

一般狀況下,server是不會隨便讓任何人存取一些服務的

這個時候就需要iptables來幫助我們!

首先可以先看看目前環境中iptables的規則

iptables -L -n

-L :列出目前的 table 的規則
-n :不進行IP與hostname的反查,速度較快

列出完整的防火牆規則

iptables-save

清除規則

iptables -F

iptables -X

iptables -Z

-F :清除所有的規則
-X :刪除所有使用者自訂的chain
-Z :將所有的 chain 的計數與流量統計都歸零

定義預設政策(policy)

-P:定義政策

iptables -P INPUT   DROP
iptables -P OUTPUT  ACCEPT
iptables -P FORWARD ACCEPT

將localhost設定為信任

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -j ACCEPT

信任本機存取時相關的response

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

-m 外掛模組:常見的有state和mac
--stat 封包狀態:
INVALID :無效的封包,例如資料破損的封包狀態
ESTABLISHED:已經連線成功的連線狀態;
NEW :想要新建立連線的封包狀態;
RELATED :與主機送出去的封包有關係的封包

port 21 存取設定

iptables -A INPUT -p tcp --dport 21 -j DROP
iptables -A INPUT -s 192.168.0.0/16 -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -s 120.119.0.0/16 -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -s 59.127.184.43 -p tcp --dport 21 -j ACCEPT

(拒絕所有存取,只接受192.168.0.0/16、120.119.0.0/16和59.127.184.43)

--sport 埠口範圍:限制來源port,port可連續,ex 1024:65535
--dport 埠口範圍:限制目標port

-A :新增加一條規則,規則是加在最後面
-I :插入一條規則。如果沒有指定此規則的順序,預設是插入變成第一條規則

-p 協定:設定此規則適用於哪種封包格式,主要的封包格式有:tcp、udp、icmp及all

-s 來源IP/網域:設定此規則之封包的來源項目,可指定單純的 IP 或包括網域

-d 目標 IP/網域

-j :後面接動作,主要的動作有ACCEPT、DROP、REJECT及LOG

ssh設定

iptables -A INPUT -s 192.168.0.0/16 -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -s 120.119.0.0/16 -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -s 59.127.184.43 -p tcp –dport 22 -j ACCEPT

http設定

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

開機自動啟動防火牆
Ubuntu:

chmod 755 firewall.sh
cd /etc/rcS.d
ln -s /home/web/firewall.sh S100firewall.sh

rcS.d目錄中,只有大寫S開頭的檔案,會被執行,S後面的號碼,是執行的優先順序

CentOS:

/etc/init.d/iptables save

最後完成機器上的設定

#!/bin/bash

iptables -F
iptables -X
iptables -Z
iptables -P INPUT   DROP
iptables -P OUTPUT  ACCEPT
iptables -P FORWARD ACCEPT

iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -p all -s 120.119.28.0/255.255.254.0 -j ACCEPT # bypass DNS

iptables -A INPUT -s 192.168.0.0/16 -p tcp --dport 20:22 -j ACCEPT
iptables -A INPUT -s 120.119.0.0/16 -p tcp --dport 20:22 -j LOG --log-level "NOTICE" #紀錄log
iptables -A INPUT -s 120.119.0.0/16 -p tcp --dport 20:22 -j ACCEPT
iptables -A INPUT -s 59.127.184.43 -p tcp --dport 20:22 -j ACCEPT

iptables -A INPUT -s 120.119.0.0/16 -p tcp --dport 60000:61000 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/16 -p tcp --dport 60000:61000 -j ACCEPT
iptables -A INPUT -s 59.127.184.43 -p tcp --dport 60000:61000 -j ACCEPT

iptables -A INPUT -p tcp --dport 113 -j ACCEPT #auth認證
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --sport 80 -j ACCEPT

如果測試ftp時一直卡在MLDS進不去,就是被動port被擋住囉

Categories: Linux

1 Comment

佛祖球球 » Blog Archive » [CentOS]Apache啟動後無法顯示網頁 · 31 7 月, 2012 at 10:05 下午

[…] 加入Rule(防火牆設定可參考這篇) […]

Comments are closed.