iptables 簡單的學習知識

iptables應用,學習知識


本文是我自己的一些學習iptables的心得,給大家拿出來來曬曬!

filter #用於過濾

nat #做NAT

input =>filter #目的ip是本機的數據包

forward =>filter #穿過本機的數據包

prerouting =>nat #修改目的地址(DNAT)

postrouting =>nat #修改源地址(SNAT)

iptables -t 要操作的表 操作命令 要操作的鏈 規則號碼 匹配條件 -j 匹配到以後的命令

iptables -I INPUT -j DROP #-t 默認爲filter

iptables -I INPUT 3 -j DROP #鏈接裏插入一條規則(插入第三條)

iptables -D INPUT 3 #按號碼匹配刪除

iptables -D INPUT -s 192.168.0.1 -j DROP #按內容匹配刪除

iptables -R INPUT 3 -j ACCEPT #將原來3的規則改爲-j ACCEPT

iptables -P INPUT DROP #設置默認規則

iptables -F INPUT #清空filter表INPUT鏈中的所有規則

iptables -t nat -F PREROUTING

iptables -t nat vxnL PREROUTING

--# v: 顯示詳細信息

--# x: 在v的基礎上,禁止自動單位換算

--# n: 只顯示IP地址和端口號碼,不顯示域名和服務名稱

========匹配條件

-i -i eth0 #流入接口(是否從網口eth0進來)

-o #流出接口

-s -s 192.168.1.0/24 #來源地址

-d #目的地址

-p -p icmp --icmp-type #協議類型

--sport --sport 1000:3000 #來源的端口

--dport --dport 1000: :3000 #目的的端口1000:(1000端口以上) :3000(3000端口以下)

-s 192.168.0.1 -d www.sina.com -p tcp -dport 80

================================

iptables -A INPUT -j ACCEPT #允許所有訪問本機IP的數據包通過

iptables -A FORWARD -s 192.168.0.1 -j DROP #阻止來源地址爲192.168.80.39的數據包通過本機

-j DNAT #目的地址轉換,DNAT支持轉換爲單IP,也支持轉換到IP址



iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.0.3:80

#把從ppp0進來的要訪問tcp/80的數據包的地址改爲192.168.0.3

-j SNAT #源地址轉換

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1

#將內網192.168.0.0/24的源地址改爲1.1.1.1,用於nat表

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1-1.1.1.10

#修改成爲一個地址池

-j MASQUERADE #動態源地址轉換

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

#將源地址爲192.168.0.0/24的數據包進行地址僞裝

state #按包狀態匹配

mac #按來源mac匹配

limit #按包速率匹配

multiport #多端口匹配

--state

-m state #new,related,established,invalid

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

#包狀態 RELATED(衍生態),ESTABLISHED(連接態),NEW(有別於tcp的syn),INVALID(不被識別的)

iptables -A FORWARD -m mac --mac-source XX:XX:XX:XX:XX:XX -j DROP

#阻斷來自某MAC地址的數據包通過本機

iptables -A FORWARD -d 192.168.0.1 -m limit --limit 50/s -j ACCEPT

#用一定速率去匹配數據包

iptables -A INPUT -p tcp -m multiport --dports 21,22,25,80,110 -j ACCEPT

#一次匹配多個端口

=======================================實例分析===================================

單服務器的防護:

iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -p tcp -m multiport --dport 22,80 -j ACCEPT

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

iptables -P INPUT DROP

製作網關:

echo "1" > /proc/sys/net/ipv4/ip_forward #啓用路由轉發

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE

限制內網用戶:filter->forward

iptables -A FORWARD -s 192.168.0.3 -j DROP

iptables -A FORWARD -m mac --mac-source 11:22:33:44:55:66 -j DROP

iptables -A FORWARD -d www.163.com -j DROP

內網做對外服務器:

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.1.1

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 81 -j DNAT --to 192.168.1.2:80

========================================連接追蹤模塊=================================

主動模式(ACTIVE)

使用連接追蹤模塊(打開tcp/20,防火牆打開高範圍端口,配置ftp,減小被動模式端口範圍)

modprobe ip_nat_ftp

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

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

iptables -P INPUT DROP

被動模式(PASSIVE)

=============================網關策略=================================

echo "1" > /proc/sys/net/ipv4/ip_forward

echo "1" > /proc/sys/net/ipv4/tcp_syncookies

echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

modprobe ip_nat_ftp

堵:

iptables -A FORWARD -p tcp --dport 80 -j DROP

iptables -A FORWARD -p tcp --dport yyy:zzz -j DROP

通:

iptables -A FORWARD -p tcp --dport xxx -j ACCEPT

iptables -A FORWARD -p tcp --dport yyy:zzz -j ACCEPT

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

iptables -P FORWARD DROP

==========================三大紀律五項注意=============================

3: filter nat mangle

5: prerouting,input,forward,output,postrouting

==========================注意事項==============================

#養車好的習慣

iptables -vnL

iptables -t nat -vnL

iptables-save

#注意邏輯順序

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

iptables -I INPUT -p tcp --dport yyy -j ACCEPT

==========================FAQ======================================

iptables -m 模塊名 -h

/lib/modules/`uname -r`/kernel/net/ipv4/netfilter #模塊存放的路徑

modprobe ip_nat_ftp #加載模塊

=========================實戰======================================

iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT

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

iptables -P INPUT DROP

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 j SNAT --to 202.106.0.254

iptables -t nat -A POSTROUTING -d 202.106.0.254 -p tcp --dport 80 -j DNAT --to 172.17.0.1

iptables -A FORWARD -i eth2 -p eth1 -m state --state NEW -j DROP

iptables 簡單的學習知識,內容僅供參考,希望大家喜歡!

發佈了22 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章