您好,登錄后才能下訂單哦!
Netfilter/Iptables(以下簡稱Iptables)是unix/linux自帶的一款優秀且開放源代碼的安全自由的**基于包過濾的防火墻工具**,它的功能十分強大,使用非常靈活,可以對流入和流出服務器的數據包進行很精細的控制。特別是它可以在一臺非常低的硬件配置下跑的非常好
Iptables是Linux2.4及2.6內核中集成的服務。其功能與安全性比其**ipfwadm,ipchains**強大的多,iptables主要工作在OSI七層的二、三、四層,如果重新編譯內核,iptables也可以支持**7層控制**(squid代理+iptables)
容器:包含和被包含的關系
iptables是表的容器
iptables包含表 (4張表)表是鏈的容器,每個表都包含若干個鏈
鏈是規則的容器,真正過濾規則是屬于鏈里面的
級別介紹
iptables 國家
表 省
鏈 市
規則 縣
iptables是采用數據包過濾機制工作的,所以它會對請求的數據包的包頭數據進行分析,并根據我們預先設定的規則來進行匹配是否可以進入到主機。
iptables工作流程小結
iptables根據功能和表的定義劃分包含三個表,filter,nat,mangle,其每個表又包含不同的操作鏈(Chains)
Filter表 是真正的防火墻功能
INPUT 進服務器 OUTPUT出服務器 FORWARD 流經服務器
Nat 表 負責數據包改寫 網關共享上網、IP和端口映射
OUTPUT
PREROUTING
POSTROUTING
Mangle表 路由標記 用的不多
####所有鏈全有
RAW 表 用處很少和Mangle一樣
我們可以通過man iptables 來獲取
對于filter表的控制是我們實現本機防火墻的重要手段,特別是對INPUT鏈的控制
提示: iptables主要由2個作用,第一是防火墻,第二是路由。
企業案例:1)局域網上網共享(路由和網關)NAT POSTROUTING
2)外部IP和端口映射為內部IP和端口(DMZ功能),NAT PREROUTING
即防火墻FILTER INPUT FORWARD
企業案例:主要應用于服務器防火墻
iptables默認已經安裝 [root@web02 ~]# iptables -V iptables v1.4.7 [root@web02 ~]# rpm -qa iptables iptables-1.4.7-16.el6.x86_64 [root@web02 ~]# /etc/init.d/iptables status iptables: Firewall is not running.
查看iptables規則
[root@web02 ~]# iptables -nL Chain INPUT (policy ACCEPT)
表示針對input鏈 ACCEPT是默認規則,默認是運行通過的
target prot opt source destination input鏈下面具體的規則 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) target prot opt source destination REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) target prot opt source destination
如果沒有指定表,默認就是filfer表
iptables默認加載的內核模塊 [root@web02 ~]# lsmod |egrep "nat|filter|ipt" ipt_REJECT 2351 2 iptable_filter 2793 1 ip_tables 17831 1 iptable_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
再次過濾,查看生效情況
[root@web02 ~]# lsmod |egrep "nat|filter|ipt" nf_nat_ftp 3443 0 nf_conntrack_ftp 11953 1 nf_nat_ftp iptable_nat 5923 0 nf_nat 22676 2 nf_nat_ftp,iptable_nat ipt_REJECT 2351 2 nf_conntrack_ipv4 9154 5 iptable_nat,nf_nat nf_conntrack 79206 6 nf_nat_ftp,nf_conntrack_ftp,iptable_nat,nf_nat,nf_conntrack_ipv4,xt_state iptable_filter 2793 1 ip_tables 17831 2 iptable_nat,iptable_filter
清空所有的規則,只留下默認規則
[root@web02 ~]# iptables -F [root@web02 ~]# iptables -X [root@web02 ~]# iptables -Z
iptables -F 清除所有規則
iptables -X 刪除用戶自定義規則
iptables -Z 鏈的計數器清零
查看端口
[root@web02 ~]# netstat -lntup|grep ssh tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1329/sshd tcp 0 0 :::22 :::* LISTEN 1329/sshd
命令如下:
iptables -t filter -A INPUT -p tcp --dport 22 -j DROP
-A 添加規則到指定鏈的結尾,最后一條
-I 添加規則到指定鏈的開頭,第一條
-t 指定表,也可以不指定默認是filter
-p 指定協議(all.tcp,udp.icmp)默認all
--dport 指定端口
-j 處理的行為
ACCPET接收、DROP丟棄、REJECT拒絕
最好使用ACCPET和DROP,因為拒絕會返回給用戶信息。
清除規則可以使用iptables -F
還可以使用iptables -D INPUT 1
-D指定刪除的鏈
--line-number 顯示序列號
iptables -nl --line-number
提示:需要寫上鏈和序列號
溫馨提示:恢復剛才斷掉的SSH連接
1)去機房重啟系統或登錄服務器刪除剛才的禁止規則
2)讓機房人員重啟服務器或者讓機房人員拿用戶密碼登錄進去
3)通過服務器的遠程管理卡管理(推薦)
4)先寫一個定時任務,每5分鐘就停止防火墻
5)測試環境測試好,寫成腳本,批量執行
[root@web02 ~]# iptables -A INPUT -p tcp --dport 80 -j DROP [root@web02 ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
按照iptables匹配規則,首先會先匹配第一行,依次向下。這樣設置拒絕就沒有用
如果想在中間插入可以指定插入行號
[root@web02 ~]# iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
還可以通過序列號插入iptables 命令
[root@web02 ~]# iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT [root@web02 ~]# iptables -nL --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 3 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination
1. iptables -D INPUT -p tcp --dport 8080 -j DROP
2. iptables -F 刪所有規則
3. /etc/init.d/iptables restart (用iptables命令行配置的命令都是臨時生效)
4. iptables -D INPUT 規則序號
基于客戶端網段控制
[root@web02 ~]# iptables -A INPUT -s 10.0.0.0/24 -j DROP
-s指定源地址
還可以使用不是這個網段的進行操作
[root@web02 ~]# iptables -A INPUT ! -s 10.0.0.0/24 -j DROP
案例:控制22端口 eth0網卡進來的數據
iptables -A INPUT -p tcp --dport 22 -i eth0 ! -s 10.0.0.0/24 -j DROP iptables -A INPUT -p tcp --dport 22 -i eth0 ! -s 192.168.1.1 -j DROP
封掉3306端口
iptables -A INPUT -p tcp --dport 3306 -j DROP
匹配指定的協議
iptables -A INPUT -p tcp iptables -A INPUT -p udp
匹配指定協議外的所有協議
iptables -A INPUT ! -p tcp
``匹配單一端口**
iptables -A INPUT -p tcp --sport 22 源端口 iptables -A INPUT -p udp --dport 22 目的端口
匹配端口范圍:
iptables -A INPUT -p tcp --sport 22:80 iptables -A INPUT -p tcp --dport 21,22,23 -j DROP---->錯誤語法 iptables -I INPUT -p tcp -m multiport --dport 22,23,24,25 -j DROP iptables -I INPUT -p tcp -m multiport ! --dport 22,23,24,25 -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-type 8
icmp中有很多類型,其中8代表ping
例:
iptables -A INPUT -p icmp --icmp-type 8 -j DROP iptables -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
因為icmp類型很多可以使用any,icmp的所有類型全禁
iptables -A INPUT -s 192.168.1.0/24 -p icmp -m icmp --icmp-type any -j ACCEPT
企業場景禁ping
iptables -A INPUT -p icmp --icmp-type 8 -s 10.0.0.0/24 -j ACCEPT
匹配網絡狀態
-m state --state
NEW:已經或啟動新的連接
ESTABLISHED:已建立的連接
RELATED:正在啟動的新連接
INVALID:非法或無法識別的
FTP服務是特殊的,需要配狀態連接
允許關聯的狀態包通過(Web服務不要使用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
iptables -I INPUT -s 10.0.1.0/24 -p icmp --icmp-type 8 -m limit --limit 5/min --limit-burst 2 -j ACCEPT
生產環境配置主機防火墻的兩種模式
1. 允許所有程序,對操作傷害的進行拒絕操縱 應用場景:企業配置上網網關路由
2. 拒絕所有操作,允許指定的操作 應用場景:服務器主機防火墻
[root@web02 ~]# iptables -F [root@web02 ~]# iptables -X [root@web02 ~]# iptables -Z
1.設置允許SSH登錄端口
[root@web02 ~]# iptables -A INPUT -p tcp --dport 22 -j ACCETP [root@web02 ~]# iptables -A INPUT -p tcp -s 10.0.0.1/24 -j ACCEPT
2.設置允許本機lo通信規則
[root@web02 ~]# iptables -A INPUT -i lo -j ACCEPT [root@web02 ~]# iptables -A OUTPUT -o lo -j ACCEPT
3.設置默認規則
[root@web02 ~]# iptables -P INPUT DROP [root@web02 ~]# iptables -P OUTPUT ACCEPT [root@web02 ~]# iptables -P FORWARD DROP
查看規則(現在的服務器是最安全的)
[root@web02 ~]# iptables -nL --line-number Chain INPUT (policy DROP) num target prot opt source destination 1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 2 ACCEPT tcp -- 10.0.0.0/24 0.0.0.0/0 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy DROP) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4.開啟信任的IP網段
允許IDC LAN/WAN 和辦公網IP的訪問,及對外合作機構訪問
iptables -A INPUT -s 124.23.62.96/27 -p all -j ACCEPT #辦公室固定IP段 iptables -A INPUT -s 192.168.2.0/24 -p all -j ACCEPT #IDC機房的內網網段 iptables -A INPUT -s 10.0.0.0/24 -p all -j ACCEPT #其他機房的內網網段 iptables -A INPUT -s 203.82.24.0/24 -p all -j ACCEPT #IDC機房的外網網段 iptables -A INPUT -s 203.82.23.0/24 -p all -j ACCEPT #其他IDC機房的外網網段
現在還只是我們可以訪問,對外還無法訪問
5.允許icmp類型協議通過
iptables -A INPUT -p icmp -m icmp-type any -j ACCEPT
提示:如果不想開,就不執行此命令
iptables -A INPUT -p icmp -s 10.0.0.0/24 -m icmp --icmp-type any -j ACCEPT
6.允許關聯的狀態包通過(Web服務不要使用FTP服務)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
提示:以上配置就是合格服務器應該配置的
默認使用iptables并沒有永久保存,重啟失效。
第一種方法:
/etc/init.d/iptables save
保存到/etc/sysconfig/iptables 下面
顯示如下格式
[root@web02 ~]# cat /etc/sysconfig/iptables # Generated by iptables-save v1.4.7 on Mon Aug 15 01:33:44 2016 *nat :PREROUTING ACCEPT [1413:153792] :POSTROUTING ACCEPT [132:8834] :OUTPUT ACCEPT [132:8834] COMMIT # Completed on Mon Aug 15 01:33:44 2016 # Generated by iptables-save v1.4.7 on Mon Aug 15 01:33:44 2016 *filter :INPUT DROP [1798:662465] :FORWARD DROP [0:0] :OUTPUT ACCEPT [288:21100] -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -s 10.0.0.0/24 -p tcp -j ACCEPT -A INPUT -i lo -j ACCEPT -A OUTPUT -o lo -j ACCEPT COMMIT # Completed on Mon Aug 15 01:33:44 2016
第二種方法:
[root@web02 ~]# iptables-save >/etc/sysconfig/iptables
推薦使用第一種方式
測試:我通過其他服務器掃描我們配置的防火墻
使用nmap工具進行分析,此工具需要安裝
[root@web02 ~]# yum -y install nmap
使用如下:更多可以使用nmap --help
[root@web02 ~]# nmap 10.0.0.8 -p 1-65535 Starting Nmap 5.51 ( http://nmap.org ) at 2016-08-15 04:28 CST Nmap scan report for 10.0.0.8 Host is up (0.0000070s latency). Not shown: 65532 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 3306/tcp open mysql Nmap done: 1 IP address (1 host up) scanned in 14.21 seconds
(1)確定的規則;
編輯/etc/sysconfig/iptables
加入想要的規則:例如
-A INPUT -p tcp -m tcp --dport 873 -j ACCEPT /etc/init.d/iptables reload
或者改配置的同時命令在執行,也是永久生效。
(2)命令試錯,沒問題了,然后放配置文件,這時不需要重啟了
封IP,在第一行封。10.0.0.1 這個機器攻擊我們服務器或者在BBS里發垃圾帖子
手工封IP:
iptables -I INPUT -s 10.0.0.1 -j DROP #粗,范圍大,外部攻擊者 Iptables -I INPUT -s 10.0.0.1 -j DROP iptables -I INPUT -p tcp -s 10.0.0.1 --dport 80 -j DROP #細,范圍小。內部
自動封IP:分析Web或應用日志或者網絡連接狀態封掉垃圾IP
腳本:
#!/bin/bash #this is a server firewall created by oldboy 17:03 2006-7-26 # e_mail:31333741@qq.com # qqinfo:49000448 # function: a server firewall # version:1.1 ################################################ # oldboy trainning info. # QQ 1986787350 70271111 # site: http://www.etiantian.org # blog: http://oldboy.blog.51cto.com # oldboy trainning QQ group: 208160987 45039636 ################################################ #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 $IPT -A OUTPUT -o lo -j ACCEPT #setting access rules #one,ip access rules,allow all the ips of $IPT -A INPUT -s 10.0.10.0/24 -p all -j ACCEPT $IPT -A INPUT -s 10.0.0.0/24 -p all -j ACCEPT ##下面的是重復的,作為知識點保留,單個服務的配置 #second,port access rules #nagios $IPT -A INPUT -s 10.0.10.0/24 -p tcp --dport 5666 -j ACCEPT $IPT -A INPUT -s 10.0.0.0/24 -p tcp --dport 5666 -j ACCEPT #db $IPT -A INPUT -s 10.0.0.0/24 -p tcp --dport 3306 -j ACCEPT $IPT -A INPUT -s 10.0.0.0/24 -p tcp --dport 3307 -j ACCEPT $IPT -A INPUT -s 10.0.10.0/24 -p tcp --dport 3306 -j ACCEPT $IPT -A INPUT -s 10.0.10.0/24 -p tcp --dport 3307 -j ACCEPT #ssh difference from other servers here.>> $IPT -A INPUT -s 10.0.0.0/24 -p tcp --dport 52113 -j ACCEPT $IPT -A INPUT -s 10.0.10.0/24 -p tcp --dport 52113 -j ACCEPT $IPT -A INPUT -p tcp --dport 22 -j ACCEPT #http $IPT -A INPUT -p tcp --dport 80 -j ACCEPT #snmp $IPT -A INPUT -s 10.0.0.0/24 -p UDP --dport 161 -j ACCEPT $IPT -A INPUT -s 10.0.10.0/24 -p UDP --dport 161 -j ACCEPT #rsync $IPT -A INPUT -s 10.0.0.0/24 -p tcp -m tcp --dport 873 -j ACCEPT $IPT -A INPUT -s 10.0.10.0/24 -p tcp -m tcp --dport 873 -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 $IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
企業案例:寫一個腳本解決DOS攻擊生產案例
提示:根據web日志或者或者網絡連接數,監控當某個IP并發連接數或者短時內PV達到100,即調用防火墻命令封掉對應的IP,監控頻率每隔3分鐘。防火墻命令為:iptables -I INPUT -s 10.0.1.10 -j DROP
本腳本使用測試文件進行編寫
[root@db02 scripts]# cat test_6.sh #!/bin/sh # [ -f /etc/init.d/functions ] && . /etc/init.d/functions IP_file="/server/scripts/ddos.txt" IP_filter_command="iptables -I INPUT -j DROP -s" IP_recover_command="iptables -D INPUT -j DROP -s" function IP_check(){ grep "EST" ${IP_file}|awk -F "[ |:]+" '{print $6}'|sort |uniq -c|sort -rn -k1 > /server/scripts/ip.txt } function IP_filter(){ exec < /server/scripts/ip.txt while read line do IP_count=`echo $line|awk '{print $1}'` IP=`echo $line|awk '{print $2}'` IP_fil=`iptables -L -n|grep "\b${IP}\b"|wc -l` if [ ${IP_count} -gt 25 -a ${IP_fil} -eq 0 ];then ${IP_filter_command} ${IP} echo "${IP}" >> /server/scripts/ip_filtered.txt action "Filter ${IP}" /bin/true fi done } function IP_recover(){ exec < /server/scripts/ip.txt while read line do IP_count=`echo $line|awk '{print $1}'` IP=`echo $line|awk '{print $2}'` IP_fil=`iptables -L -n|grep "\b${IP}\b"|wc -l` if [ ${IP_count} -le 25 -a ${IP_fil} -eq 1 ];then ${IP_recover_command} ${IP} echo "${IP}" >> /server/scripts/ip_filtered.txt action "Recover ${IP}" /bin/true fi done } function main(){ case "$1" in filter) IP_check echo "$(date +%F-%H:%M:%S) filtered by $(whoami)" >> /server/scripts/ip_filtered.txt IP_filter ;; recover) IP_check echo "$(date +%F-%H:%M:%S) recovered by $(whoami)" >> /server/scripts/ip_filtered.txt IP_recover ;; *) echo "USAGE:$0 {filter|recover}" exit 1 esac } main $*
技巧:具備外網IP的服務器不對外的服務最好要做源地址限制。對外提供的服務,不能做源地址限制,例如:80 端口
問題:企業硬件防火墻和IPTABLES防火墻是否要同時用。
解決:可以同時使用企業硬件防火墻一般放在網關位置,相當于大廈的保安,但是樓里的每個屋子還是需要有人鎖門的iptables
問題: IDC機房部署了硬件防火墻,我們的服務器可以不開防火墻嗎?
解答:絕對不可以,大廈有了保安,你的辦公室門就不鎖了嗎?
共享上網設置
linux網關B:
局域網共享的兩條命令方法:
方法1:適合于有固定外網地址的:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.7
(1)-s192.168.1.0/24 辦公室或IDC內網網段。
(2)-oeth0 為網關的外網卡接口。
(3)-jSNAT --to-source 10.0.0.7 是網關外網卡IP地址。
方法2:適合變化外網地址(ADSL):
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE #偽裝。
配置如下
第一步:外網服務器配置
[root@lb01 ~]# iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 10.0.0.5 [root@lb01 ~]# iptables -t nat -L -n
開啟內核轉發
net.ipv4.ip_forward = 1 vim /etc/sysctl.conf sysctl -p #生效
需要上網服務器設置
添加路由
route add default gw 172.16.1.5#此處寫提供外網的IP地址 vim /etc/resolv.conf
添加 nameserver 223.5.5.5
route -n 檢查
案例2:實現把訪問10.0.0.5:80的請求轉到172.16.1.8:80
[root@web02 ~]# iptables -t nat -A PREROUTING -d 10.0.0.5 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.8:80 [root@web02 ~]# iptables -P FORWARD DROP
1、Linux主機防火墻(表:FILTER 控制鏈:INPUT)
2、局域網機器共享上網(表:NAT 控制鏈:POSTROUTING)
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.7
3、外部地址和端口,映射為內部地址和端口(表:NAT 控制的鏈:PREROUTING)
iptables -t nat -A PREROUTING -d 10.0.0.7 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.8:9000
企業案例:實現外部IP 124.42.34.112 一對一映射到內部server 10.0.0.8
網關Ip:eth0:124.42.60.109 eth2:10.0.0.254
首先在路由網關上綁定VIP 124.42.34.112,可以是別名或輔助IP的方式。
-A POSTROUTING -s 10.0.0.0/255.255.240.0 -d 124.42.34.112 -j SNAT --to-source 10.0.0.254 -A PREROUTING -d 124.42.34.112 -j DNAT --to-destination 10.0.0.8 -A POSTROUTING -s 10.0.0.8 -o eth0 -j SNAT --to-source 124.42.34.112
1)局域網共享上網(適合做企業內部局域網上網網關,以及IDC機房內網的上網網關[nat POSTROUTING])
2)服務器防火墻功能(適合IDC機房具有外網IP的服務器)(主要是filter INPUT的控制)
3)把外部IP及端口映射到局域網內部(可以一對一IP映射,也可以針對某一個端口映射)也可能是IDC把網站的外網VIP及網站端口映射到負載均衡器上(硬件防火墻)。(nat PREROUTING)
4)辦公路由器+網關功能(zebra路由+iptables過濾及NAT+squid正向透明代理)80+ntop/iftop/iptraf流量查看+tc/cbq流量控制限速
5)郵件的網關
1)主機防火墻
2)網關的應用(IP映射,端口映射)
3)過濾信息,監控限制流量及員工上網行為(squid(正向代理緩存加過濾)+ntop(圖形流量監控)+通常(流量限制)+iptraf/iftop(流量查看))
如果IPTABLES的服務器升級內核可以實現類似squid的過濾功能
4)網關裝殺毒軟件監聽9999端口,(網關殺毒)
iptables -A PREROUTING -i eth0 -d 211.167.253.109 -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.10.6:9025
5)結合zebra配置企業級路由器
iptables -t nat -A POSTROUTING -s 10.0.0.1/255.255.255.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 192.168.1.0/22 -o eth0 -j SNAT --to-source 10.0.0.241-10.0.0.249
問題:
1、2000人被封
2、可用65535端口資源有限
企業案例: ip_conntrack: table full, dropping packet.的錯誤提示
以下是我的生產環境的某個服務器的配置:
net.ipv4.tcp_fin_timeout = 2 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_keepalive_time = 600 net.ipv4.ip_local_port_range = 4000 65000 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_max_tw_buckets = 36000 net.ipv4.route.gc_timeout = 100 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_synack_retries = 1 #5、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
調整內核參數/etc/sysctl.conf后,需執行/sbin/sysctl -p使得修改生效。
強調:如果并發比較大,或者日PV多的情況下,開啟防火墻要注意,很可能導致網站訪問緩慢
大并發(并發1萬,PV日3000萬)要么購買硬件防火墻,要么不開iptables防火墻
-n 數字
-L 列表
-F 清除所有規則,不會處理默認規則
-X 刪除用戶自定義的鏈
-Z鏈的計數器清零
-A 添加規則到指定鏈的結尾,最后一條
-I 添加規則到指定鏈的開頭,第一條
-t指定表,也可以不指定默認是filter
-p 指定協議(all.tcp,udp.icmp)默認all
-P 設置默認規則
-s指定源地址
-d 目的地址
--dport 指定端口
-j處理的行為 ACCPET接收、DROP丟棄、REJECT拒絕
-iinput 匹配進入的網卡接口
-ooutput 匹配出去的網卡接口
-m state --state 匹配網絡狀態
更多關于linux防墻iptables詳細介紹請查看下面的相關鏈接
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。