iptables

http://www.netfilter.org/projects/iptables/index.htmlhtml

【老男孩教育IPTABLES】 35期課堂筆記
Iptables是什麼?
開源的基於數據包過濾的防火牆工具。
還能夠作NAT映射:1)網關:局域網共享上網。2)IP或端口映射。web

Iptables主要工做在OSI七層的2、三四層,若是從新編譯內核,
Iptables也能夠支持7層控制(squid代理+iptables)。安全

Iptables企業應用場景
一、主機防火牆(filter表的INPUT鏈)。
二、局域網共享上網(nat表的POSTROUTING鏈)。半個路由器,NAT功能。
三、端口及IP映射(nat表的PREROUTING鏈),硬防的NAT功能。
四、IP一對一映射。bash

【商用防火牆】
華爲
深信服
思科
H3C
Juniper
天融信
飛塔
網康
綠盟科技
金盾服務器

 


Iptables工做流程
iptables是採用數據包過濾機制工做的,因此它會對請求的數據包的包頭數據進行分析,並根據咱們預先設定的規則進行匹配來決定是否能夠進入主機。網絡


iptables工做流程小結:
一、防火牆是一層層過濾的。實際是按照配置規則的順序從上到下,從前到後進行過濾的。
二、若是匹配上了規則,即明確代表是阻止仍是經過,此時數據包就不在向下匹配新規則了。
三、若是全部規則中沒有明確代表是阻止仍是經過這個數據包,也就是沒有匹配上規則,向下進行匹配,直到匹配默認規則獲得明確的阻止仍是經過。
四、防火牆的默認規則是對應鏈的全部的規則執行完之後纔會執行的(最後執行的規則)。併發

 

iptables表(tables)和鏈(chains)
iptables==>4個表(tables)===>5個鏈=(chains)==>規則(policy)
4表
filter(主機防火牆)
nat(端口或IP映射或共享上網)
mangle(配置路由標記 ttl tos mark)
raw
表:
filter:INPUT,OUTPUT,FORWARD
NAT :POSTROUTING,PREROUTING,OUTPUT
mangle:INPUT,OUTPUT,FORWARD,POSTROUTING,PREROUTING
raw
鏈:
*INPUT:進入主機的數據包。主機防火牆(filter表的INPUT鏈)
OUTPUT:流出主機的數據包。
FORWARD:流經主機的數據包。
*PREROUTING:進入服務器最早通過的鏈,NAT端口或IP映射。(nat表的PREROUTING鏈)
*POSTROUTING:在流出服務器最後通過的鏈,NAT共享上網。局域網共享上網(nat表的POSTROUTING鏈)tcp


iptables工做原理工具


實戰:
[root@web01 ~]# /etc/init.d/iptables start
iptables: Applying firewall rules: [ OK ]oop

查看啓動狀態命令:
iptables -nL --line-number
-n #<==以數字的形式顯示規則
-L #<==列表鏈裏的全部規則
--line-number #<==打印規則序號
-t 指定表(default: `filter')


命令:
iptables [-t table] -A chain rule-specification
iptables [-t table] -I chain [rulenum] rule-specification
iptables [-t table] -D chain rulenum #<==根據規則號刪除。
iptables [-t table] -D chain rule-specification
註釋:
-t 指定表(default: `filter')
-A #<==把規則添加到指定的鏈上,默認添加到最後一行。
-I #<==插入規則,默認插入到第一行。
-D #<==刪除鏈上的規則


根據規則號刪除:
iptables -D INPUT 4 #<==4是規則號。

-F #<==清除一個鏈或全部鏈上的規則
-Z #<==鏈的記數器清零
-X #<==刪除用戶自定義的鏈。

實踐:
[root@web02 ~]# iptables -Z
[root@web02 ~]# iptables -X
[root@web02 ~]# iptables -F
[root@web02 ~]# iptables -nL

封22端口:
[root@web02 ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j DROP
規則註釋:
-p #<==指定過濾的協議-p(tcp,udp,icmp,all)
--dport #<==指定目標端口(用戶請求的端口)。
-j #<==對規則的具體處理方法(ACCEPT,DROP,REJECT,SNAT/DNAT)
--sport #<==指定源端口。

禁止10.0.0.253訪問
[root@web01 ~]# iptables -I INPUT -p tcp -s 10.0.0.253 -i eth0 -j DROP
[root@web02 ~]# iptables -A INPUT -p tcp ! -s 10.0.0.2 -i eth0 -j DROP
-s #<==指定源地址。 ! 取反。
-d #<==指定目的地址。
-i #<==進入的網絡接口(eth0,eth1)。
-o #<==出去的網絡接口(eth0,eth1)。

匹配端口範圍:
iptables -I INPUT -p tcp -m multiport --dport 21,22,23,24 -j DROP
iptables -I INPUT -p tcp --dport 3306:8809 -j ACCEPT
iptables -I INPUT -p tcp --dport 18:80 -j DROP #<==最佳

 

匹配ICMP類型
iptables -A INPUT -p icmp --icmp-type 8
例:iptables -A INPUT -p icmp --icmp-type 8 -j DROP
iptables -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -p icmp -m icmp --icmp-type any -j ACCEPT


匹配網絡狀態
-m state --state
NEW:已經或將啓動新的鏈接
ESTABLISHED:已創建的鏈接
RELATED:正在啓動的新鏈接
INVALID:非法或沒法識別的
#容許關聯的狀態包 ftp協議
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


限制指定時間包的容許經過數量及併發數
-m limit --limit n/{second/minute/hour}:
指定時間內的請求速率"n"爲速率,後面爲時間分別爲:秒、分、時
iptables -I INPUT -p icmp --icmp-type 8 -m limit --limit 6/min -j DROP

--limit-burst [n]
在同一時間內容許經過的請求"n"爲數字,不指定默認爲5
iptables -I INPUT -s 10.0.0.0/24 -p icmp --icmp-type 8 -m limit --limit 6/min --limit-burst 2 -j ACCEPT


http://blog.csdn.net/gnicky/article/details/51334793

 


部署一個最安全的企業級防火牆(案例)

實戰部署:
[root@web02 ~]# iptables -F
[root@web02 ~]# iptables -X
[root@web02 ~]# iptables -Z
[root@web02 ~]# iptables -A INPUT -s 10.0.0.0/24 -j ACCEPT


[root@web02 ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@web02 ~]# iptables -P INPUT DROP
[root@web02 ~]# iptables -P FORWARD DROP
[root@web02 ~]# iptables -P OUTPUT ACCEPT
[root@web02 ~]# iptables -nL
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 10.0.0.0/24 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22

Chain FORWARD (policy DROP)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination


[root@web02 ~]# iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT
[root@web02 ~]# iptables -A INPUT -s 172.16.1.0/24 -j ACCEPT
[root@web02 ~]# iptables -A INPUT -i lo -j ACCEPT
[root@web02 ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

命令都在內存中生效。

 

掃描測試:使用雲主機部署,用筆記本虛擬機掃描
[root@web02 ~]# nmap www.baidu.com
Starting Nmap 5.51 ( http://nmap.org ) at 2017-04-04 12:23 CST
Nmap scan report for www.baidu.com (119.75.217.109)
Host is up (0.020s latency).
Other addresses for www.baidu.com (not scanned): 119.75.218.70
Not shown: 998 filtered ports
PORT STATE SERVICE
80/tcp open http
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 13.60 seconds

 


永久生效:
[root@web02 ~]# /etc/init.d/iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
[root@web02 ~]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.7 on Tue Apr 4 12:24:43 2017
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [159:10664]
-A INPUT -s 10.0.0.0/24 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -s 172.16.1.0/24 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Tue Apr 4 12:24:43 2017


生產維護iptables:
一、平常改/etc/sysconfig/iptables配置
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

生效:
1)/etc/init.d/iptables reload
2)iptables -I INPUT 3 -p tcp -m tcp --dport 3306 -j ACCEPT

二、臨時封Ip(-I)
iptables -I INPUT -s 203.71.78.10 -j DROP


三、經常使用的規則放在前面生效
[root@web01 ~]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.7 on Mon Apr 17 12:03:54 2017
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [371:25376]
-A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -s 172.16.1.0/24 -j ACCEPT
-A INPUT -s 10.0.0.0/24 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Mon Apr 17 12:03:54 2017


寫成腳本:

#!/bin/bash
#this is a server firewall created by oldboy 17:03 2006-7-26
#updated by oldboy on 10:30 2009-6-23
#http://blog.etiantian.org
#qq:49000448
#define variable PATH
IPT=/sbin/iptables

#Remove any existing rules
$IPT -F
$IPT -X
$IPT -Z

#setting default firewall policy
$IPT --policy OUTPUT ACCEPT
$IPT --policy FORWARD DROP
$IPT -P INPUT DROP

#setting for loopback interface
$IPT -A INPUT -i lo -j ACCEPT

#setting access rules
#one,ip access rules,allow all the ips of 
$IPT -A INPUT -s 202.81.17.0/24 -p all -j ACCEPT
$IPT -A INPUT -s 202.81.18.0/24 -p all -j ACCEPT
$IPT -A INPUT -s 124.43.62.96/27 -p all -j ACCEPT
$IPT -A INPUT -s 192.168.1.0/24 -p all -j ACCEPT
$IPT -A INPUT -s 10.0.0.0/24 -p all -j ACCEPT

#icmp
$IPT -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT

#others RELATED
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

 

重點:
一、iptables包過濾流程。
二、iptables4表5鏈。
三、iptables工做原理。
四、iptables經常使用命令參數。
五、部署一個企業級主機防火牆案例。


部署iptables防火牆的最高境界?
不用防火牆,服務器照樣安全。
一、儘量不給服務器配置外網IP。能夠經過代理轉發或者經過防火牆映射。
二、併發不是特別大狀況再外網IP的環境,要開啓iptables防火牆。
若是併發量很大,不能開iptables,影響性能,買硬件防火牆。
其餘http://edu.51cto.com/course/course_id-772.html

下次內容:iptables NAT企業案例講解一、局域網共享上網案例。二、端口映射案例。三、IP映射案例。

相關文章
相關標籤/搜索