標籤:
- 認識防火牆
- 概念
- 作用
- Linux上防火牆類別
- 封包過濾機制Netfilter
- 程式管控機制TCP Wrappers
- 一般網路布線
- 使用能力限制
- TCP Wrappers程式管控
- 概念:
簡單來說,TCP wrappers就是透過/etc/hosts.allow和/etc/hosts.deny這兩個檔案來管理,但並非所有軟體都可以。
- 支援的服務
- super daemon (xinetd)管理的服務
chkconfig --list 顯示內容下的xinetd based services:
- 支援libwrap.so模組的服務
由於支援tcp wrappers的服務必定包含libwrap這個動態庫,所以可以通過ldd來觀察:
ldd `which sshd` | grep libwrap
libwrap.so.0 => /lib/libwrap.so.0 (0x00145000)
- /etc/hosts.{allow|deny}的設定方式
- 文法結構
<service(program_name)>:<IP,domain,hostname>
例如rsync:192.168.1.0/255.255.255.0
- 規則優先順序
- /etc/hosts.allow
- /etc/hosts.deny
- 以上都不符合,則允許存取
- 封包過濾軟體:iptables
Kernel2.4和2.6以上使用iptables這個機制,PS:uname -r查看核心版本
- 比對與分析順序
rule1
rule2
policy預設封包動作
- table和chain
- table(表):filter(過濾器)、nat()、mangle()
- filter:INPUT、OUTPUT、FORWARD
- nat:PREROUTING、POSTROUTING、OUTPUT
- mangle:多個
- chain(鏈)
- INPUT:主要負責制定想要進入Linux主機的封包的規則
- OUTPUT
- FORWARD
- 文法結構
- 規則的查看
iptables [-t tables] [-L] [-nv]
- -t
- -L:列出table的規則內容
- -n
- -v
- iptables內容構成
target prot opt source destination
- target
- prot
- opt
- source
- destination
- 規則的清除
iptables [-t tables] [-FXZ]
- -F:清除所有已存在的規則(不是永久改變,除非寫入設定檔)
- -X:殺掉所有自訂
- -Z:將所有chain統計歸零
- 定義預設封包動作policy
policy:當你的封包不在設定的規則之內時,則該封包的通過與否,是以Policy的設定為準(即最後一條規則)
iptables [-t tables] -P [chain] [ACCEPT,DROP]
- ACCEPT
- DROP
- 封包的比對設定
用法:iptables [-AI chain] [-io 網路介面] [-p 協議] [-s 源IP] [-d 目標IP] -j [ACCEPT|DROP|REJECT|LOG]
例子:
iptables -I INPUT -i eth0 -d --dport 22 -j DROP #禁止遠程主機SSH串連
如果沒有指定的項目,則表示該項目完全接受
- -A:新增新規則
- -I:插入新規則
- -i:入口網路介面,需與INPUT鏈配合使用
- -o:出口網路介面
- -p:設定此規則適用那種協議,主要有tcp,udp,icmp,all
- -s
- -d
- -j
- -p [tcp|udp] --sport
- -p [tcp|udp] --dport
- iptables外掛模組
用法:-m [state|mac] --state | --mac
例子:
iptables -A INPUT -m state --state RELATED -j ACCEPT
iptables -I INPUT -m mac --mac-source aa:bb:cc:dd:ee:ff
- --state:一些封包的狀態
INVALID
ESTABLISHED
NEW
RELATED
- --mac:根據mac地址設定規則
- icmp封包規則的比對:針對是否響應ping
用法:-m icmp --icmp-type
- icmp-type對應
| 0 |
3 |
4 |
8 |
11 |
12 |
| Echo Reply |
不可達 |
Source quench |
Echo request |
TTL=0 |
壞包 |
- 禁止遠程主機ping包
iptables -I INPUT -p icmp --icmp-type 8 -j DROP #不接受echo request
或者
iptables -I OUTPUT -p icmp --icmp-type 0 -j DROP #不發出echo reply
- 寫入防火牆規則設定檔
設定檔/etc/sysconfig/iptables
/etc/init.d/iptables save #將防火牆規則寫入到/etc/sysconfig/iptables
#iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
- IPv4的核心管理功能:/proc/sys/net/ipv4/*
防火牆基礎知識--TCP Wrappers和IPtables兩種機制