一、iptables使用场景:
内网情况下使用;在大并发的情况下不要开iptables否则影响性能
二、iptables出现下面的问题:
在yewufangwenbijiaoman/var/log/message中出现 ip(nf)_conntrack: table full 使得企业访问较慢的解决方法:
vim /etc/sysctl.conf
#加大 ip_conntrack_max 值
net.ipv4.ip_conntrack_max =393216
net.ipv4.netfilter.ip_conntrack_max =393216#降低 ip_conntrack timeout时间
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established =300
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
三、安全优化
尽可能不给服务器分配外网IP,可以通过代理转发;并发布不是特别大的外网ip环境,尽量开启防火墙
四、iptables简介
基于数据包过滤的防火墙工具,主要工作在osi模型的二三四层(经过内核编译可以实现七层控制)
五、基本名词介绍
四表:filter(INPUT,FORWARD,OUTPUT),NAT(OUTPUT,PREROUTING,POSTROUTING), MANGLE(五链),RAW
五链(要大写):INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING
链(chain)是规则(policy)的容器
六、详细介绍
filter表:主要和主机自身相关,真正负责防火墙功能的(过滤流入流出主机的数据包)。
INPUT:负责过滤所有进入主机的数据包(最主要)
FORWARD:负责流经主机的数据包
OUTPUT:处理所有源地址都是本机地址的数据包(也就是主机发出去的数据包)
nat表:主要负责网络地址之间的转换,包括来源和目的端口以及ip(PREROUTING),可以共享上网(POSTROUTING),端口转换,企业路由和网关
OUTPUT:和从主机发出去的数据包有关,改变数据包的目的地址
PREROUTING:在数据包到达防火墙时进行路由判断之前的的规则,作用是改变数据包的目的地址,目的端口等
POSTROUTING:离开防火墙时进行路由判断之后执行的规则,作用是改变数据包的源地址和源端口
mangle:路由标记(TTL,TOS,mark)。。。。
七、iptables的工作流程
采用的是数据包过滤的机制,会对请求的数据包的包头数据进行分析,按照规则从上到下匹配
小结:防火墙是层层过滤的,通过匹配上规则来允许或者组织数据包的走向,默认规则是最后处理的。
八、iptables 表和链的工作流程图
总结:在使用nat表的时候要注意和nat的PREROUTING,filter的FORWARD和nat的POSTROUTING一起使用
在使用filter的时候只是在INPUT链加以控制即可
九、实战演练
(0)、查看防火墙:
iptables -L -n (-v -x)
iptables -L -n --line-numbers 带序号显示配合删除
无法启动iptables的解决(setup)
lsmod | egrep "nat | filter" 查看加载的内核文件
modprobe +内核加载文件 可以添加内核加载文件
(1)、清理参数
iptables -F :清除所有的防火墙规则
iptables -X [chain] :删除自定义的链 iptables -N chain 新建自定义的链
iptables -Z: 对链计数器的清零
(2)、禁止规则
iptables -t filter -A INPUT -p tcp --dport 22 -j DROP 禁止ssh远程登录
-t 指定表 -A 追加 -p 指定协议 --dport 指定目的端口 -j 采取的方式
掉ssh的处理方法:下机房,管理卡,计划任务关防火墙,
iptables -t filter -A INPUT -p tcp --dport 80 -j DROP 会造成找不到网页不会造成404
(3)、添加规则
封IP实战演练:
首先要分析日志中的ip连接数:
awk '{print $1}' /opt/nginx/access.log | sort |uniq -c | sort -rn -k1
然后再封ip
iptables -I INPUT -p tcp -s IP --dport 80 -j DROP 将此规则置顶
iptables -I INPUT 2 -p tcp -s IP --dport 8080 -j DROP 将此规则放到第二位
iptables -t filter -A INPUT -i eth0 -s 172.1.1.2 -j DROP 封ip
禁止某个网段连入:不管什么服务都连不进来
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
- 实用Linux命令,不求最全但求实用-------iptables命令实战
开始配置 我们来配置一个filter表的防火墙. (1)查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCE ...
- 企业级iptables防火墙实战
iptables生产中在内网一般是关闭的,外围需要开启 大并发情况下,不能开启iptables,会影响性能,使用硬件外网防火墙 学好iptables的基础 1,OSI7层模型以及不同层对应哪些协议 2 ...
- iptables基础实战练习
目录: 一.基本规则练习 二.SNAT源地址转移 三.DNAT目标地址转移 一.基础规则练习 (1) 放行ssh (端口:22) 1 iptables -A INPUT -d 192.168.42.1 ...
- mysql优化整理(索引)
什么是索引? 索引是表记录的单个或多个字段重新组织的一种方法,其目的是提高数据库的查询速度,本质上就是一种数据结构. 索引的类型:primary(主键).secondary(其他) 索引的数据结构 I ...
- IPtables/NetFilter
前提知识 任何主机若要与非同网络中的主机通信,则必须将报文发送到默认网关: 对Linux而言,IP地址是属于主机(内核中)的,不属于网卡,只要属于当前主机的IP地址间,都可直接响应,不称为转发 私有地 ...
- iptables服务器主机防火墙
iptables参数说明: Commands: Either long or short options are allowed. --append -A chain 链尾部追加一条规则 --dele ...
- Iptables的命令与用法
目录 一:iptables的用法 1.iptables简介 二:Iptables链的概念 1.那四个表,有哪些作用? 2.那五条链,运行在那些地方? 3.Iptables流程图 三:iptables的 ...
- (1)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- 什么是微服务架构,.netCore微服务选型
开发工具:VS2017 .Net Core 2.1 什么是微服务?单体结构: 缺点: 1)只能采用同一种技术,很难用不同的语言或者语言不同版本开发不同模块: 2)系统耦合性强,一旦其中一个模块有问题, ...
- (1).NET CORE微服务 Micro-Service ---- 什么是微服务架构,.netCore微服务选型
开发工具:VS2017 .Net Core 2.1 什么是微服务?单体结构: 缺点:1)只能采用同一种技术,很难用不同的语言或者语言不同版本开发不同模块:2)系统耦合性强,一旦其中一个模块有问题,整个 ...
随机推荐
- 新浪微博登录接口(PHP版)
CI框架下 新浪微博登录接口完整版说明:本贴只适合CI框架.功能实现:登录接口跳转链接成功,获取用户信息(包括最重要的u_id)成功,将用户与本地平台连接起来,用户登录成功后信息的存储,本地数据库第三 ...
- NotePad++更改背景颜色
白色的编辑框看得眼睛不舒服,怎么样更改NotePad++的背景颜色使眼睛更舒服些? 1.设置--语言格式设置 2.设置背景色 “背景色”一栏,选择背景色颜色 “使用全局背景色”一栏要打上√,否则无 ...
- 怎么利用ultraISO对一个文件夹制作ISO镜像
1. 运行UltraISO软件,选择好需要转换成ISO的文件,直接拖到UltraISO的界面中. 2.点击“另存为”按钮,选择存放路径并写上ISO文件的名称,文件保存类型选择为ISO格式,点击“保存” ...
- Http 状态码详解
状态码 含义 100 客户端应当继续发送请求.这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应.服务器必须在 ...
- ios:如何将自己编写的软件放到真正的iPhone上运行(转)
想要将自己编写的软件放到真正的iPhone上去运行,首先你需要成为Apple Developer计划的成员.其次,你需要设置程序ID和认证书,在这之后你就可以在你指定的iPhone上运行你的程序了.下 ...
- jquery经验1
1.Javascript刷新页面的几种方法: location.reload()// 真刷新 location=location location.assign(location) document. ...
- linux禁止root用户直接登录sshd并修改默认端口
linux最高权限用户root,默认可以直接登录sshd.为了提高服务器的安全度,需要对它进行禁止,使得攻击者无法通过暴力破解来获取root权限. 1,新建一个用户: #useradd xxx (xx ...
- JS实现精确加减乘除
说明:项目中要使用 JS 实现自动计算的功能,进行一些浮点数运算时,计算结果却是一长串的值,这里提供一个解决方法,问题基本上可以解决. 具体代码如下: //加法函数 function accAdd(a ...
- sql server中创建链接服务器图解教程
转自sql server中创建链接服务器图解教程 1.展开服务器对象-->链接服务器-->右击"新建链接服务器" 注意:必须以数据库管理员身份登录(通常也就是sa帐号) ...
- 【HDU 5233】Tree chain problem (树形DP+树剖+线段树|树状数组)最大权不相交树链集
[题目] Tree chain problem Problem Description Coco has a tree, whose vertices are conveniently labeled ...