防火墻Firewall設(shè)置方法
防火墻Firewall設(shè)置方法
Firewall 防火墻,工作在網(wǎng)絡(luò)或主機的邊緣,對進出本網(wǎng)絡(luò)或主機的數(shù)據(jù)包根據(jù)事先設(shè)置好的規(guī)則進行檢查并且能夠在數(shù)據(jù)包匹配到之后由預(yù)置的動作進行處理的組件的組合,有規(guī)則(符合條件,就有規(guī)則指定的動作進行處理),下面是小編整理的相關(guān)知識!
主機防火墻:管理本主機;
網(wǎng)絡(luò)防火墻:管理整個網(wǎng)絡(luò);
防火墻的分類:
1、包過濾型防火墻:工作在TCP/IP層,根據(jù)tcp首部或ip首部數(shù)據(jù)進行判斷,安全性較
低,效率較高;
1、簡單包過濾;
2、帶狀態(tài)檢測的包過濾;
1)NEW狀態(tài);-建立連接;
2)ESTABLISHED狀態(tài);-建立連接并傳輸數(shù)據(jù);
3)INVALID狀態(tài)(無法識別的狀態(tài));
4)RELATED(相關(guān)聯(lián)的狀態(tài));
2、應(yīng)用層網(wǎng)關(guān)防火墻:工作在應(yīng)用層,根據(jù)數(shù)據(jù)包傳輸?shù)膶嶋H數(shù)據(jù)進行判斷,安全性較高,效率較低;
防火墻工作在內(nèi)核空間,需要在內(nèi)核空間開口子去定義規(guī)則(只有管理員可以定義規(guī)則,命令是否正確等),在內(nèi)核上開的口子稱為Netfilter(網(wǎng)絡(luò)過濾器);
地址轉(zhuǎn)換功能:NAT 網(wǎng)絡(luò)地址轉(zhuǎn)換;
1)SNAT 源網(wǎng)絡(luò)地址轉(zhuǎn)換;在POSTROUTING上做轉(zhuǎn)換;
連接跟蹤;
2)DNAT目標地址轉(zhuǎn)換;在PREROUTING上做轉(zhuǎn)換;
mangle 數(shù)據(jù)包每經(jīng)過一次路由減1然后將ip首部打開修改TTL值加1,讓訪問用戶不知
道有防火墻;
raw----沒多做解釋;
filter過濾在INPUT,OUTPUT和FORWARD接口上;
nat地址轉(zhuǎn)換在PREROUTING,POSTROUTING,OUTPUT接口上;
mangle撕裂在PREROUTING,INPUT,F(xiàn)ORWARD,OUTPUT,POSTROUTING接口上;
raw在PREOUTING和OUTPUT接口上;
優(yōu)先級排序:raw--->mangle--->nat--->filter
iptables命令用法:
iptables [-t TABLE] COMMAND CHAIN [creteria] -j ACTION
-t {raw|mangle|nat|filter},默認filter
COMMAND的分類:
規(guī)則管理類:
-A 追加到最后一條(append);
-I # 插入第幾條(insert);
-D # 表示刪除第幾條(delete);
-R # 表示替換某條規(guī)則;
鏈接管理類:
-F 清空(flush)鏈中規(guī)則,加鏈表示清空某條鏈;
-N 新建鏈(new),可以用-j跳轉(zhuǎn)到這個鏈上;
-X 刪除自己定義的空鏈;
-E 重命名(rename);
默認策略:
-P (policy);
清空計數(shù)器:
-Z (zero);
每條規(guī)則(包括默認策略)都有兩個計算器;
1)被此規(guī)則匹配到的所有數(shù)據(jù)包的個數(shù);
2)被此規(guī)則匹配到的所有數(shù)據(jù)包的大小之和;
查看類:
-L (list)列表的格式顯示;
-L的子選項:-n (以純數(shù)字的格式顯示numeric);
-v 詳細的信息(verbose),-vv或-vvv更詳細;
-x 顯示精確信息不做單位換算(exactly);
--line-numbers 規(guī)則顯示行號;
匹配條件creteria:
基本匹配:
-s SOURCE:(IP,NETWORK)或加!表示取反(例:! -s NETWORK);(可以省略表示多有主機)
-d DESTIONIP(目標地址);
-p {tcp|udp|icmp};
-i INTERFACE 表示從哪個網(wǎng)卡流進來;(僅用于INPUT,FORWARD,POSTROUTING)
-o INTERFACE 表示從哪個網(wǎng)卡流出去;(僅用于OUTPUT,FORWARD,PRETROUTING)
擴展匹配:指的是調(diào)用iptables的模塊,以便擴展iptables的匹配功能;
隱含擴展
-p tcp
--sport PORT
--dport PORT
--tcp-flags 檢查tcp的標志位;
只檢查ACK,SYN,RST,FIN
SYN的簡寫--syn
-p udp
--sport PORT
--dport PORT
-p icmp
--icmp-type
ping命令的TYPE:
echo-request請求用8代替; www.jb51.net
echo-reply 回應(yīng)用0代替;
3----自己查看TCP/IP詳解書;
顯示擴展(必須用-m指定檢測狀態(tài));
-m state --state 檢測狀態(tài)
-m multiport這個模塊匹配一組源或目標端口,可以指定多達15個端口;
--source-ports 22,53,80
--destination-ports 22,53,80
--ports 22,53,80
-m iprange(指定ip范圍)
--src-range ip-ip
--dst-range ip-ip
-m connlimit(并發(fā)連接限定)
--connlimit-above # (超過#個)
-m limit
--limit rate 限定速率;
--limit-burst number 限定峰值;
-m string 字符串匹配;
--algo bm|kmp(算法);
--string “STRING”
-m time 時間限制;
--timestart value(10:00);
--timestop value
--days lsitofday
--datestart date
--datestop date
-j ACTION(ACTION的選項);
ACCEPT 允許;
DROP 拒絕(悄悄的丟棄);
REJECT 拒絕(直接拒絕);
SNAT 源地址轉(zhuǎn)換;
DNAT 目標地址轉(zhuǎn)換;
REDIRECT 重定向端口;
RETURN 返回INPUT鏈;
如何開放FTP服務(wù):
主動模式下:
tcp 20(數(shù)據(jù)),21(命令);
被動模式下:
tcp 21,>1023的端口;
上述需要將RELATED(相關(guān)聯(lián)的狀態(tài))打開;
modprobe ip_nat_ftp
lsmod | grep tcp
redhat中iptables的腳本文件為/etc/rc.d/init.d/iptables
service iptables start 啟用保存的規(guī)則;
service iptables stop 清空鏈;
/etc/sysconfig/iptables 保存規(guī)則的文件;
/etc/sysconfig/iptables-config 向iptables腳本提供配置文件的文件;
將規(guī)則保存到配置文件中的方法:
1)service iptables save 將規(guī)則保存到配置文件中的命令;
2)iptables-save > /etc/sysconfig/iptables-test (將生效的規(guī)則保存至自己指定文件中);
iptables-restore < /etc/sysconfig/iptables-test (從另外自己指定的規(guī)則文件啟用規(guī)則);
地址轉(zhuǎn)換:
源地址轉(zhuǎn)換:
-j SNAT --to-source 192.168.100.1 指定源地址轉(zhuǎn)換成其它地址;
-j MASQUERADE(地址偽裝,比SNAT占用更多的資源,當ADSL撥號上網(wǎng)做轉(zhuǎn)換時比較常用);
目標地址轉(zhuǎn)換:一般要限定協(xié)議和端口;
-j DNAT --to-destination 192.168.100.2
PNAT端口轉(zhuǎn)換:
-j DNAT --to-destination 192.168.100.2[:port]請求的和轉(zhuǎn)發(fā)的相同可省略,不相
同不省略;
-j LOG 轉(zhuǎn)發(fā)日志;
--log-prefix “DNAT for web”可以與-m limit --limit 3/minute --limit-burst 3合用;
利用iptables的recent模塊來抵御DOS攻擊;(以拒絕服務(wù)的方式實現(xiàn),很有限)
-m recent
--set --name SSH
--update --seconds 300 --hitcount 3
利用iptables的recent模塊來抵御DOS攻擊示例;
ssh: 遠程連接,
iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j DROP
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 3 --name SSH -j DROP
1.利用connlimit模塊將單IP的并發(fā)設(shè)置為3,會誤殺使用NAT上網(wǎng)的用戶,可以根據(jù)實際情況增大該值;
2.利用recent和state模塊限制單IP在300s內(nèi)只能與本機建立3個新連接,被限制一分鐘后即可恢復訪問;
下面對最后兩句做一個說明:
1.第一句是記錄訪問tcp 22端口的新連接,記錄名稱為SSH;
--set 記錄數(shù)據(jù)包的來源IP,如果IP已經(jīng)存在將更新已經(jīng)存在的條目;
2.第三句是指SSH記錄中的IP,300s內(nèi)發(fā)起超過3次連接則拒絕此IP的連接;
--update 是指每次建立連接都更新列表;
--seconds必須與--rcheck或者--update同時使用;
--hitcount必須與--rcheck或者--update同時使用;
3.iptables的記錄:/proc/net/ipt_recent/SSH