iptables基礎

iptables----4張表----5個鏈---規則(過濾/控制作用)

-n 數字
-L 列表
-t 指定表 默認filter

加載如下模塊到linux內核
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state

lsmod |egrep "filter|nat"

iptables - F 清除所有規則
iptables -X 刪除自定義的鏈
iptables -Z 清除計數器

-A 在末尾行添加規則
-C 檢查
-D 刪除
-I 在第一條添加規則
-s 指定源地址處理
-i 指定進入接口 INPUT
-o(小寫)指定 出去接口 OUTPUT

iptables -t filter -A INPUT -p tcp --dport 22 -j DROP #自殺
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT

--dport 目的端口
--sport 源端口
-j 行爲
行爲包括(DROP丟棄)(ACCEPT接受)(REJECT拒絕)

iptables -nL --line-numbers 顯示規則序列號

iptables -t filter -D INPUT 2 刪除第二行

/etc/init.d/iptables restart(用iptables命令行配置的命令都是臨時生效)。

iptables -t filter -A INPUT -i eth0 -p icmp -s 10.0.0.8 -j DROP #指定進入網卡爲eth0 源地址爲.8

取反
[root@oldboy ~]# iptables -t filter -A INPUT -i eth0 -p icmp ! -s 10.0.0.8 -j DROP
[root@oldboy ~]# iptables -t filter -I INPUT -i eth0 -p icmp ! -s 10.0.0.10 -j DROP

匹配主機源IP,目的IP
iptables -A INPUT -s 10.0.0.14
iptables -A INPUT -s ! 10.0.0.14
iptables -t nat -A PREROUTING -d 10.0.0.14
iptables -t nat -A PREROUTING -d ! 10.0.0.14

匹配網段
iptables -A INPUT -s 10.0.0.0/24
iptables -A INPUT -s ! 10.0.0.0/24

匹配單一端口
iptables -A INPUT -p tcp --sport 53
iptables -A INPUT -p udp --dport 53

匹配指定端口之外的端口
iptables -A INPUT -p tcp --dport ! 22
iptables -I INPUT -p tcp ! --dport 22 -s 10.0.0.123 -j DROP

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

●7.允許關聯的狀態包通過(web服務不要使用FTP服務)
#others RELATED ftp協議
#允許關聯的狀態包
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

限制指定時間包的允許通過數量及併發數
-m limit --limit n/{second/minute/hour}:
指定時間內的請求速率"n"爲速率,後面爲時間分別爲:秒、分、時
--limit-burst [n]:
在同一時間內允許通過的請求"n"爲數字,不指定默認爲5
[root@nginx01 ~]# iptables -I INPUT -s 10.0.1.0/24 -p icmp --icmp-type 8 -m limit --limit 5/min --limit-burst 2 -j ACCEPT

=======================================
配置防火牆

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

[root@oldboy ~]# iptables -F
[root@oldboy ~]# iptables -X
[root@oldboy ~]# iptables -Z
[root@oldboy ~]# iptables -nL
[root@oldboy ~]# iptables -A INPUT -p tcp --dport 22 -s 10.0.0.0/24 -j ACCEPT
[root@oldboy ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@oldboy ~]# iptables -A INPUT -p tcp -s 192.168.1.0/24 -j ACCEPT
[root@oldboy ~]# iptables -A INPUT -p tcp -s 172.16.1.0/24 -j ACCEPT
[root@oldboy ~]# iptables -P INPUT DROP

iptables -P FORWARD DROP
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

iptables -A INPUT -i lo -j ACCEPT #允許迴環端口訪問

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p icmp -s 10.0.0.0/24 -m icmp --icmp-type any -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

nmap 10.0.0.19 -p 1-65535 ç時間很長
回執:
Starting Nmap 5.51 ( http://nmap.org ) at 2013-12-21 12:08 CST
Nmap scan report for C58-server-C (10.0.0.19)
Host is up (0.00028s latency).
Not shown: 65533 filtered ports
PORT STATE SERVICE
80/tcp open http

/etc/init.d/iptables save #保存
iptables-save >/etc/sysconfig/iptables #保存

=====================================
考試題:

局域網共享上網(nat表的POSTROUTING鏈(內網上外網)

db-01上:
ifdown eth0
route add default gw 172.16.1.5
route -n

lb-01上:
[root@lb01 ~]# vim /etc/sysctl.conf
[root@lb01 ~]# grep forward /etc/sysctl.conf

Controls IP packet forwarding

net.ipv4.ip_forward = 1
[root@lb01 ~]# sysctl -p
net.ipv4.ip_forward = 1
#地址轉換
iptables -t nat -A POSTROUTING -o eth0 -s 172.16.1.0/24 -j SNAT --to-source 10.0.0.5
#查看
iptables -nL -t nat
vim /etc/resolv.conf

局域網共享的兩條命令方法:
方法1:適合於有固定外網地址的:
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.8
(1)-s 172.16.1.0/24 辦公室或IDC內網網段。
(2)-o eth0 爲網關的外網卡接口。
(3)-j SNAT --to-source 10.0.0.8 是網關外網卡IP地址。
方法2:適合變化外網地址(ADSL):
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE ç僞裝。

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

#在10段主機可以通過訪問lb01 10.0.0.7:9999,即可訪問到172.16.1.51:22 SSH

#LB-01上:
ip addr add 10.0.0.7/24 dev eth0 label eth0:0
#添加規則
iptables -t nat -A PREROUTING -d 10.0.0.7 -p tcp --dport 9999 -j DNAT --to-destination 172.16.1.51:22

#web-01上:
ssh -p9999 10.0.0.7

==================================
跨不同網段IP服務器通信問題
(1)生產環境大於254臺機器網段劃分及路由解決方案詳解01
http://v.youku.com/v_show/id_XNTAyMjAwMzI0.html
(2) linux route命令深入淺出與實戰案例精講
http://oldboy.blog.51cto.com/2561410/1119453
http://oldboy.blog.51cto.com/2561410/974194
必看3遍以上。
映射多個外網IP上網
iptables -t nat -A POSTROUTING -s 10.0.1.0/255.255.240.0 -o eth0 -j SNAT --to-source 124.42.60.11-124.42.60.16
iptables -t nat -A POSTROUTING -s 172.16.1.0/255.255.255.0 -o eth0 -j SNAT --to-source 124.42.60.103-124.42.60.106
#iptables -t nat -A POSTROUTING -s 172.16.1.0/22 -o eth0 -j SNAT --to-source 10.0.0.241-10.0.0.249
問題:
1、2000人被封
2、可用65535端口資源有限

===========================
iptables優化,瞭解即可
放到/etc/sysctl.conf下
sysctl -p 生效

dmesg裏面顯示 ip_conntrack: table full, dropping packet.的錯誤提示.如何解決。
#以下參數是對iptables防火牆的優化,防火牆不開會提示,可以忽略不理。
c58:
net.ipv4.ip_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_max=25000000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120
################################################################
C64:
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章