Linux 防火墙工具--iptables
iptables介紹
iptables是基于內(nèi)核的防火墻,功能非常強(qiáng)大,iptables內(nèi)置了“三表五鏈”
????三張表
????1.filter ????定義允許或者不允許的
????2.nat ???? ?定義地址轉(zhuǎn)換的?
? ? ?3.mangle???? 修改報(bào)文原數(shù)據(jù)
????五個(gè)規(guī)則鏈
????1.PREROUTING (路由前)
????2.INPUT (數(shù)據(jù)包流入口)
????3.FORWARD (轉(zhuǎn)發(fā)管卡)
????4.OUTPUT(數(shù)據(jù)包出口)
????5.POSTROUTING(路由后)
? 對(duì)于filter來(lái)講只能做在3個(gè)鏈上:INPUT ,FORWARD ,OUTPUT
? 對(duì)于nat來(lái)講只能做在3個(gè)鏈上:PREROUTING ,OUTPUT ,POSTROUTING
? 對(duì)于mangle來(lái)講5個(gè)鏈都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
iptables寫法及參數(shù)
iptables [-t 表名] 命令選項(xiàng) [鏈名] [條件匹配] [-j 動(dòng)作或跳轉(zhuǎn)]
所有鏈名必須大寫,表名必須小寫,動(dòng)作必須大寫,條件匹配必須小寫
常用參數(shù):
????-A????向規(guī)則鏈中添加一條規(guī)則,默認(rèn)被添加到末尾
? ? ?-T????指定要操作的表,默認(rèn)是filter
????-D????從規(guī)則鏈中刪除規(guī)則,可以指定序號(hào)或者匹配的規(guī)則來(lái)刪除
????-R????進(jìn)行規(guī)則替換
????-I????插入一條規(guī)則,默認(rèn)被插入到首部
????-F????清空所選的鏈,重啟后恢復(fù)
????-N????新建用戶自定義的規(guī)則鏈
????-X????刪除用戶自定義的規(guī)則鏈
????-p????用來(lái)指定協(xié)議可以是tcp,udp,icmp等也可以是數(shù)字的協(xié)議號(hào),
????-s????指定源地址
????-d????指定目的地址
????-i????進(jìn)入接口(網(wǎng)卡)
????-o????流出接口(網(wǎng)卡)
????-m????多狀態(tài)
????-j????采取的動(dòng)作,accept,drop,snat,dnat,masquerade
????--sport ?源端口
????--dport ?目的端口,端口必須和協(xié)議一起來(lái)配合使用
觸發(fā)動(dòng)作:(-j后面)
????ACCEPT????允許數(shù)據(jù)包通過(guò)
????DROP???? ?丟棄數(shù)據(jù)包
????REJECT????拒絕數(shù)據(jù)包通過(guò)
????LOG???? ?將數(shù)據(jù)包信息記錄到syslog日志
????DNAT???? ?目標(biāo)地址轉(zhuǎn)換
????SNAT???? ?源地址轉(zhuǎn)換
????MASQUERADE????地址欺騙
? ? ?REDIRECT????重定向
iptables示例
基本操作
????iptables -L? ????列出iptables規(guī)則
????iptables -F? ????清除iptables內(nèi)置規(guī)則
????iptables -X? ????清除iptables自定義規(guī)則
配置ssh登錄規(guī)則
????iptables -A INPUT -p tcp --dport 22 -j ACCEPT
????iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
只允許192.168.0.100的機(jī)器進(jìn)行SSH連接
iptables -A INPUT -s 192.168.0.100 -p tcp --dport 22 -j ACCEPT
目的地址轉(zhuǎn)換,映射內(nèi)部地址
iptables -t nat -A PREROUTING -i eth0 -p tcp --dprot 81 -j DNAT --to 192.168.0.2:80
源地址轉(zhuǎn)換,隱藏內(nèi)部地址
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1
開啟轉(zhuǎn)發(fā)功能
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT 只允許已建連接及相關(guān)鏈接對(duì)內(nèi)轉(zhuǎn)發(fā)
ptables -A FORWARD -i eth1 -o eth0 -j ACCEPT 允許對(duì)外轉(zhuǎn)發(fā)
過(guò)濾某個(gè)MAC
iptables -A FORWARD -m mac --mac -source MAC地址 -j DROP
數(shù)據(jù)包整流
iptables -A FORWARD -d 192.168.0.1 -m limit --limit 50/s -j ACCEPT
iptables -A FORWARD -d 192.168.0.1 -j DROP
一次匹配多個(gè)端口
iptables -A INPUT -p tcp -m muliport --dport 21,22,25,80,110 -j ACCEPT
丟棄非法連接
iptables -A INPUT ?-m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables-A FORWARD -m state --state INVALID -j DROP
實(shí)例
1 將192.168.0.1主機(jī)發(fā)送給本機(jī)22端口的所有數(shù)據(jù)記錄到messages日志中
iptables -I INPUT -s 192.168.0.1 -p tcp --dport 22 -j LOG
2 允許任何機(jī)器通過(guò)eth1訪問(wèn)本機(jī)80端口
iptables -I INPUT -i eth1 -p tcp --dport 80 -j ACCEPT
3 公司192.168.0.0/24網(wǎng)段通過(guò)128.166.122.1連接外網(wǎng)
echo "net.ipv4.ip_forward = 1" /etc/sysctl.conf
sysctl -p 加載配置
iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 128.166.122.1
4 一個(gè)公有IP128.166.122.1對(duì)外開放,要求內(nèi)部web服務(wù)器192.168.0.1可以被訪問(wèn)
iptables -t nat -I POSTROUTING -d 128.166.122.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1
5 數(shù)據(jù)包過(guò)大,被分切為多個(gè)片發(fā)送,保證數(shù)據(jù)接收后可以組合在一起用-f
iptables -A OUTPUT -f -d 192.168.1.2 -j DROP (丟棄發(fā)送到192.168.1.2上)
6 限制某個(gè)時(shí)間段內(nèi)數(shù)據(jù)包的個(gè)數(shù),超過(guò)則拒絕
iptables -I INPUT -m limit --limit 500/sec -j ACCEPT
iptables -P INPUT DROP
7 拒絕轉(zhuǎn)發(fā)含有某些關(guān)鍵字的數(shù)據(jù)連接 --string 拒絕qq的數(shù)據(jù)包
iptables -I FORWARD -m string --algo bm --string "qq" -j REJECT
8 轉(zhuǎn)發(fā)某個(gè)IP段的數(shù)據(jù)包
iptables -A FORWARD -m iprange --src-range 192.168.0.1-192.168.0.10 -p tcp --dport 80 -j ACCEPT
轉(zhuǎn)載于:https://blog.51cto.com/superleedo/1886999
總結(jié)
以上是生活随笔為你收集整理的Linux 防火墙工具--iptables的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: AIX和linux SSH互信
- 下一篇: 如何设置windows下xampp的ph