在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
大于254台机器的网段划分,route命令讲解
oldboy.blog.51cto.com下搜索route