在yewufangwenbijiaoman/var/log/message中出現 ip(nf)_conntrack: table full 使得企業訪問較慢的解決方法:
禁止某個網段連入:無論什麼服務都連不進來
iptables -A INPUT -i eth0 -s 172.1.1.0/24 -j DROP
取消該網段連入
iptables -A INPUT -i eth0 !-s 172.1.1.0/24 -j DROP
封一下ICMP協議(不讓ping),其餘服務可使用:
iptables -A INPUT -p icmp-type 8(any) -i eth0 !-s 172.1.1.2 -j DROP
更改ssh和rootuankouzhihoude防火牆操做
iptables -A INPUT -p tcp --dport 65535 ! -s 172.1.1.0/24 -j DROP
封掉3306端口
iptables -A INPUT -p tcp --dport 3306 -j DROP
匹配DNS端口:tcp&udp
iptables -A INPUT -p tcp --sport 53
iptables -A INPUT -p udp --sport 53
匹配指定端口之外的端口:
iptables -A INPUT -p tcp --dport ! 22
iptables -A INPUT -p tcp ! --doprt 22 -s 172.1.1.0/24 -j DROP
端口匹配範圍:
iptables -A INPUT -p tcp --sport 22:80
iptables -A INPUT -p tcp -m mulport --dport 21,25,24,80 -j ACCEPT
匹配網絡狀態
-m state --state
NEW:創建的或者將啓動新的鏈接
ESTABLISHED:已經創建的鏈接
RELATED:正在啓動新鏈接
INVALID:非法鏈接
FTP
容許關聯的狀態包:
iptables -A INPUT -m state --state ESTABLISHE,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHE,RELATED -j ACCEPT
-m limit
--limit n/{second/minute/hour}:指定時間內的請求速度「n」爲速率,後面的時間分別是秒分時
--limit-burst [n]:在同一時間容許經過的請求「n」位數字,不能指定爲默認的5
限制每分鐘請求和併發不超過6個
iptables -A INPUT -s 172.1.1.0/24 -d 172.1.1.2 -p icmp --icmp-type 8 -m limit --limit 20/min --limit-burst 6 -j ACCEPT
iptables -A OUTPUT -s 172.1.1.2 -d 172.1.1.0/24 -p icmp --icmp-type 0 -j ACCEPT
企業實戰
企業及防火前實戰模式:逛公園模式和看電影模式
看電影模式:
(1)清理全部的防火牆規則
iptables -F
iptables -X
iptables -Z
(2)設置ssh登陸
iptables -A INPUT -p tcp --dport 65535 -s 172.1.1.0/24 -j ACCEPT
(3)容許本機lo通訊機制
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
(4)設置默認的防火牆容許和禁止規則
iptables -P OUTPUT ACCEPT
iptables --policy FORWARD DROP
iptables --policy INPUT DROP
(5)開啓信任的網段
iptables -A INPUT -s 172.1.1.1/24 -p all -j ACCEPT
iptables -A INPUT -s 172.168.1.2/24 -p all -j ACCEPT
這邊開啓的信任包括:辦公室指定ip,idc內網ip,其餘機房的ip
(6)容許業務訪問的端口開啓
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type any -j ACCEPT(能夠聚聚ping的)
(7)容許關聯的狀態包經過(web服務不要使用FTP服務)
iptables -A INPUT -m state --state ESTABLISHED,RELEATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
使用nmap測試開啓的端口
nmap IP -p 1-65535
(8)永久保存配置
/etc/init.d/iptables save
(9)企業面試規則
自定義鏈,處理syn攻擊
iptables -N syn-flood
iptables -A INPUT -i eth0 -syn -j syn-flood
iptabls -A syn-flood -m limit --limit 5000/s --limit-burst 200 -j RETURN
iptables -A syn-flood DROP
自動封IP腳本(計劃任務結合執行)
#!/bin/sh
/bin/netstat -na | grep ESTABLISHED | awk {print $5} |awk -F: '{print $1}' |sort |uniq -c |sort -rn | head -10| grep -v -E '192.168|127.0' |awk '{if ($2!=null && $1>4) {print $2}}' > /home/shell/dropip
for i in $(cat /home/shell/dropip)
do
/sbin/iptables -I INPUT -s $i -j DROP
echo "$i kill at `date`" >> /var/log/ddos.txt
done
經常使用服務的iptables設置
##nagios監控
iptables -A INPUT -s 172.1.1.0/24 -p tcp --dport 5666 -j ACCEPT
##mysql
iptables -A INPUT -s 172.1.1.0/24 -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -s 172.1.1.0/24 -p tcp --dport 3307 -j ACCEPT
###snmp
iptables -A INPUT -s 172.1.1.0/24 -p UDP --dport 161 -j ACCEPT
##rsync
iptables -A INPUT -s 171.0.0.1/24 -p tcp -m tcp --dport 873 -j ACCEPT
##nfs2049,portmap 111
iptables -A INPUT -s 172.1.1.0/24 -p udp -m multiport --dport 111,892,2049 -j ACCEPT
iptables -A INPUT -s 172.1.1.0/24 -p tcp -m multiport --dport 111,892,2049 -j ACCEPT
##icmp
iptables -A INPUT -s 172.1.1.0/24 -p icmp -m icmp --icmp-type any -j ACCEPT
網關服務器配置:
須要具有的條件
(1)、物理條件是具有雙網卡(eth0和外網的網關要有,eth1是內網且不具有網關)
(2)、網關服務器要能上網
(3)、開啓轉發功能。修改/etc/sysctl.conf下的net.ipv4.ip_forward = 1,以後再sysctrl -p使得配置生效
(4)、iptables的forward鏈容許轉發[iptables -P INPUT ACCEPT]
(5)、清空防火牆規則iptables -F;iptables -P FORWARD ACCEPT
(6)、載入模塊
先查看lsmod |egrep ^ip
在導入
modprobe ip_contrack
modprobe ip_nat_ftp
modprobe ipt_state
modprobe ip_contrack_ftp
modprobe iptable_filter
(7)、而後再網關服務器上執行
iptables -t nat -A POSTROUTING -s 172.1.1.0/24 -o eth0 -j SNAT --to-source 外網IP(路由器內網ip)
iptables -t nat -A POSTROUTING -s 172.1.1.0/24 -j MASQUERADE
(8)、訪問外網映射到內網的服務器上
iptables -t nat -A PREROUTING -d 服務器內網IP -p tcp --dport 80 -j DNAT --to-destination 內網IP:端口
iptables的企業案例:
(1)、linux主機防火牆(filter)
(2)、共享上網(nat postrouting)
(3)、web地址和端口映射
(4)、ip的一對一映射
企業應用:實現外網ip(124.42.34.112)一對一映射到內網的server(10.0.0.8)上
網關ipeth0:124.42.60.109 eth1:10.0.0.254
首先在路由網關上綁定124.42.34.112,能夠用別名的方式:
iptables -t nat -A PREROUTING -d 124.42.34.112 -j DNAT --to-destination 10.0.0.8
iptables -t nat -A POSTROUTING -s 10.0.0.8 -o eth0 -j SNAT --to-source 124.42.34.112
iptables -t nat -A POSTROUTING -s 10.0.0.0/255.255.255.0 -d 124.24.34.112 -j SNAT --to-source 10.0.0.254
映射多個外網ip上網:
iptables -t nat -A POSTROUTING -s 10.0.0.0/255.255.255.0 -o eth0 -j SNAT 124.42.60.11 -124.42.60.16
iptables -t NAT -A POSTROUTING -s 172.0.0.0/255.255.255.0 -o eth0 -j SNAT 124.42.60.103-124.42.60.106