iptables防火牆

1.1防火牆簡介安全

在普通l服務器上用iptables提供幾百號人的網關和路由功能上,iptables 絲絕不輸於真實的交換機和路由器。服務器

1.2 iptables 名詞和術語app

1.2.1 什麼是容器?ssh

在iptables中是用來描述包含和屬於的關係。tcp

1.2.2 什麼是netfilter/iptables?學習

netfilter是表(tables)的容器。把小區中的一棟樓比做netfilter,表比做大家家的一套房子,那麼表tables 就屬於netfilter。this

1.2.3什麼是表(tables)?spa

tables是鏈的容器,即 全部的鏈chains都屬於表tables。把鏈chains比做房間,那麼chains就屬於tables。命令行

1.2.4 什麼是鏈chains?3d

鏈chains是規則policys的容器,鏈屬於表。把tables比做一間房,那麼chains就至關因而房子中的桌子或者櫃子等傢俱。

1.2.5 什麼是規則policy?

規則policy 屬於chains, 就是iptables一系列過濾信息規範和具體操做方法。能夠理解爲規定各個傢俱的擺放。

 

 

 

1.3.防火牆的執行規則表:

 

 

 

小結:

1)匹配規則,從上到下,已經匹配,再也不向下。

2)若是最終還沒找到匹配項,則根據防火牆的默認匹配規則來決定是否經過仍是丟棄。

 

1.4 iptables的表tables和連chains的分類

經常使用表和鏈的對應關係:

 

1.4.2filter表介紹

 

1.4.3 NAT表介紹

 

 

1.4.4 mangle表

 

 

1.5iptables的表和鏈的工做流程

 

 

因爲工做中不多用到mangle表,爲了學習須要學習一下工做流程就夠了:

 

 

 


[root@wr ~]# iptables -h

iptables v1.4.7

Usage: iptables -[AD] chain rule-specification [options]

iptables -I chain [rulenum] rule-specification [options]

iptables -R chain rulenum rule-specification [options]

iptables -D chain rulenum [options]

iptables -[LS] [chain [rulenum]] [options]

iptables -[FZ] [chain] [options]

iptables -[NX] chain

iptables -E old-chain-name new-chain-name

iptables -P chain target [options]

iptables -h (print this help information)

 

Commands:

Either long or short options are allowed.

--append -A chain Append to chain

--delete -D chain Delete matching rule from chain

--delete -D chain rulenum

Delete rule rulenum (1 = first) from chain

--insert -I chain [rulenum]

Insert in chain as rulenum (default 1=first)

--replace -R chain rulenum

Replace rule rulenum (1 = first) in chain

--list -L [chain [rulenum]]

List the rules in a chain or all chains

--list-rules -S [chain [rulenum]]

Print the rules in a chain or all chains

--flush -F [chain] Delete all rules in chain or all chains

--zero -Z [chain [rulenum]]

Zero counters in chain or all chains

--new -N chain Create a new user-defined chain

--delete-chain

-X [chain] Delete a user-defined chain

--policy -P chain target

Change policy on chain to target

--rename-chain

-E old-chain new -chain

Change chain name, (moving any references)

Options:

[!] --proto -p proto protocol: by number or name, eg. `tcp' or 'TCP' or 'ALL'

[!] --source -s address[/mask][...]

source specification

[!] --destination -d address[/mask][...]

destination specification

[!] --in-interface -i input name[+]

network interface name ([+] for wildcard)

--jump -j target

target for rule (may load target extension)

--goto -g chain

jump to chain with no return

--match -m match

extended match (may load extension)

--numeric -n numeric output of addresses and ports

[!] --out-interface -o output name[+]

network interface name ([+] for wildcard)

--table -t table table to manipulate (default: `filter')

--verbose -v verbose mode

--line-numbers print line numbers when listing

--exact -x expand numbers (display exact values)

[!] --fragment -f match second or further fragments only

--modprobe=<command> try to insert modules using this command

--set-counters PKTS BYTES set the counter during insert/append

[!] --version -V print package version.


經常使用命令:(不指定-t, 默認就是fillter表)

1.查看錶規則

# iptables -L -n -t nat //列出相應表中的規則。

2.清楚表規則(命令行的清除,iptabls重啓後不會生效

# iptables -F //清除全部

# iptables -X //刪除用戶自定義的鏈

# iptables -Z //鏈的計數器清零

# iptables -n nat -F //清空nat的全部表。

 

3.禁止ssh默認的22端口:

# iptables -A INPUT -p tcp --dport 22 -j DROP

# iptables -D INPUT -p TCP --dport 22 -j DROP

* 其中 INPUT和DROP等關鍵字,必須是大寫。

* 行爲參數:

--jump -j target

提示:target常見處理方法有ACCEPT、DROP(丟棄)、REJECT(拒絕),其中,通常不用REJECT ,存在安全隱患。更多跳轉,如:SNAT(源地址轉換)、DNAT(目的地址轉換)、MASQUERADE(假裝),這幾個長用於處理nat表的規則。

 

4.經過顯示行號,而後行號刪除

# iptables -L -n --line-numbers

# iptables -D INPUT 1 刪除第二條規則

 

5.禁止網段連入:

# iptables -t filter -A INPUT -i eth0 -s 10.1.0.0/24 -j DROP

6.除了10.1.0.152發入的請求,其餘都拒絕。

# iptables -t filter -A INPUT -i eth0 -s ! 10.1.0.152 -j DROP

7.企業實戰:封IP(-I, 插入到第一行)

# iptables -I INPUT -s 10.1.0.15 -j DROP 封某個IP地址。

非內部機器禁ping:

# iptables -I INPUT -p icmp -s 10.1.0.0/24 -j DROP

 

匹配端口範圍:

# iptables -A INPUT -p tcp --dport 22:80 -j DROP //端口範圍

# iptables -A INPUT -p tcp -m multiport --dport 21,23,27 -j DROP //多個端口

 

 


 

電影院模式設置防火牆規則(最小化設置)

 

1.清空全部

# iptables -F //清除全部鏈的規則,默認是filter

# iptables -X //刪除用戶自定義的鏈,默認是filter

# iptables -Z //鏈的計數器清零,默認是filter

# iptables -n nat -F //清空nat的全部表。

2.配置容許SSH登錄端口進入

# iptables -A INPUT -p tcp --dport 22 -s 10.1.0.0/24 -j ACCEPT

3.配置容許lo接口的進入和流出

# iptables -A INPUT -i lo -j ACCEPT

# iptables -A OUTPUT -o lo -j ACCEPT

4.設置默認的禁止和容許規則(改爲了電影院模式)

# 設置默認DROP掉FORWARD ,INPUT,容許output。

# iptables --policy OUTPUT ACCEPT

# iptables -P FORWARD DROP

# iptables -P INPUT DROP

5.開啓信任的IP網段(容許本身人經過)

#容許IDC LAN和辦公網IP的訪問

# iptables -A INPUT -s 211.166.0.0/16 -p all -j ACCEPT

# ptables -A INPUT -s 172.16.1.0/24 -p all -j ACCEPT

# iptables -A INPUT -s 10.1.0.0/24 -p all -j ACCEPT

6.容許http服務經過

#容許外部訪問80端口

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

7.容許icmp類型協議經過

iptables -A INPUT -p icmp -s 10.1.0.0/24 -j ACCEPT //容許指定ping

iptables -A INPUT -p icmp -j ACCEPT //容許全部ping

8.容許關聯的狀態包經過(相似ftp的服務)

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

# iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

9. 保存

# service iptables save

10.最小化的一個配置

#之後添加容許規則,直接在配置文件中添加規則就行了。

 

# Generated by iptables-save v1.4.7 on Thu Feb 23 20:55:43 2017

*nat

:PREROUTING ACCEPT [125:19490]

:POSTROUTING ACCEPT [12:1029]

:OUTPUT ACCEPT [12:1029]

COMMIT

# Completed on Thu Feb 23 20:55:43 2017

# Generated by iptables-save v1.4.7 on Thu Feb 23 20:55:43 2017

*filter

:INPUT DROP [0:0]

:FORWARD DROP [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -s 10.1.0.0/24 -p tcp -m tcp --dport 22 -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -s 10.1.0.0/24 -j ACCEPT

-A INPUT -s 211.166.0.0/16 -j ACCEPT

-A INPUT -s 172.16.1.0/24 -j ACCEPT

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

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

-A OUTPUT -o lo -j ACCEPT

-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

COMMIT

# Completed on Thu Feb 23 20:55:43 2017


1.防止ddos攻擊:

iptables -I INPUT -s 202.10.5.9 -j DROP

2.經過腳本去設置iptables

3.直接更改配置文件。

相關文章
相關標籤/搜索