iptables 簡單學習筆記
本文是我自己的一些學習iptables的心得,給大家拿出來來曬曬!
filter #用于過濾
nat #做NAT
input =>filter #目的ip是本機的數(shù)據(jù)包
forward =>filter #穿過本機的數(shù)據(jù)包
prerouting =>nat #修改目的地址(DNAT)
postrouting =>nat #修改源地址(SNAT)
iptables -t 要操作的表 操作命令 要操作的鏈 規(guī)則號碼 匹配條件 -j 匹配到以后的命令
iptables -I INPUT -j DROP #-t 默認為filter
iptables -I INPUT 3 -j DROP #鏈接里插入一條規(guī)則(插入第三條)
iptables -D INPUT 3 #按號碼匹配刪除
iptables -D INPUT -s 192.168.0.1 -j DROP #按內容匹配刪除
iptables -R INPUT 3 -j ACCEPT #將原來3的規(guī)則改為-j ACCEPT
iptables -P INPUT DROP #設置默認規(guī)則
iptables -F INPUT #清空filter表INPUT鏈中的所有規(guī)則
iptables -t nat -F PREROUTING
iptables -t nat vxnL PREROUTING
--# v: 顯示詳細信息
--# x: 在v的基礎上,禁止自動單位換算
--# n: 只顯示IP地址和端口號碼,不顯示域名和服務名稱
========匹配條件
-i -i eth0 #流入接口(是否從網(wǎng)口eth0進來)
-o #流出接口
-s -s 192.168.1.0/24 #來源地址
-d #目的地址
-p -p icmp --icmp-type #協(xié)議類型
--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的數(shù)據(jù)包通過
iptables -A FORWARD -s 192.168.0.1 -j DROP #阻止來源地址為192.168.80.39的數(shù)據(jù)包通過本機
-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的數(shù)據(jù)包的地址改為192.168.0.3
-j SNAT #源地址轉換
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1
#將內網(wǎng)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 #動態(tài)源地址轉換
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
#將源地址為192.168.0.0/24的數(shù)據(jù)包進行地址偽裝
#p#
===================附加模塊
state #按包狀態(tài)匹配
mac #按來源mac匹配
limit #按包速率匹配
multiport #多端口匹配
--state
-m state #new,related,established,invalid
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#包狀態(tài) RELATED(衍生態(tài)),ESTABLISHED(連接態(tài)),NEW(有別于tcp的syn),INVALID(不被識別的)
iptables -A FORWARD -m mac --mac-source XX:XX:XX:XX:XX:XX -j DROP
#阻斷來自某MAC地址的數(shù)據(jù)包通過本機
iptables -A FORWARD -d 192.168.0.1 -m limit --limit 50/s -j ACCEPT
#用一定速率去匹配數(shù)據(jù)包
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
制作網(wǎng)關:
echo "1" > /proc/sys/net/ipv4/ip_forward #啟用路由轉發(fā)
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
限制內網(wǎng)用戶: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
內網(wǎng)做對外服務器:
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)
=============================網(wǎng)關策略=================================
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
==========================注意事項==============================
#養(yǎng)車好的習慣
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 #加載模塊
=========================實戰(zhàn)======================================
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 簡單的學習知識,希望大家喜歡!
【編輯推薦】
- 搭建基于netfilter/iptables的實驗環(huán)境
- 用IPtables限制BT、電驢等網(wǎng)絡流量
- 如何使用IPTables實現(xiàn)字符串模式匹配
- iptables相關腳本
- 如何使用 IPTables
- 如何用iptables實現(xiàn)NAT
- iptables配置工具
- iptables與stun