用iptables搭建一套强大的安全防护盾

iptables功能:

搭建一套防火墙规则

进行攻击防护、访问策略

进行数据包转发

Netfilter:

Linux系统核心层内部的一个数据包处理模块

Hook point:(PRE_ROUTING、INPUT、OUTPUT、FORWARD、POST_ROUTING)

数据包在Netfilter中的挂载点

iptables规则组成:

四张表 + 五条链(Hook point) + 规则

四张表:filter表、nat表、mangle表、raw表

filter表:访问控制、规则匹配

nat表:地址转发

数据包访问控制:ACCEPT、DROP、REJECT

数据包改写:SNAT、DNAT

信息记录:LOG

iptables -nL  #列出已经设置的规则-n不显示主机名

iptables -F   #清除之前设置的规则

场景1:

对所有的地址开放本机的TCP(80、22、10-21)端口的访问

允许对所有的地址开放本机的基于ICMP协议数据包的访问

其他未被允许的端口则禁止访问

iptables -F
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -p tcp --dport 10:21 -j ACCEPT
iptables -I INPUT -p icmp -j ACCEPT
iptables -A INPUT -j REJECT

以上配置存在的问题:① 本机无法访问本机   ② 本机无法访问其他主机   解决如下

iptables -I INPUT -i lo -j ACCEPT
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

修改只允许10.103.188.233访问本机的httpd服务

iptables -D INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp -s 10.103.188.233 --dport 80 -j ACCEPT

场景2:

FTP主动模式 iptables 设置:

iptables -F
iptables -I INPUT -p tcp --dport 21 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -p icmp -j ACCEPT
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -j REJECT

FTP被动模式 iptables 设置:

iptables -I INPUT -p tcp --dport 50000:6000 -j ACCEPT

场景3:公司常用简单 iptables 规则

员工在公司内部(10.10.155.0/24;10.10.188.0/24)能访问服务器上的任何服务

员工出差上海,通过VPN访问

公司有一个网站允许公网访问

iptables -F
iptables -I INPUT -i lo -j ACCEPT
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 10.10.155.0/24 -j ACCEPT
iptables -A INPUT -s 10.10.188.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT  #VPN访问
iptables -I INPUT -p icmp -j ACCEPT
iptables -A INPUT -j REJECT

执行 /etc/init.d/iptables save 命令;iptables的当前配置会保存在 /etc/sysconfig/iptables 文件中

iptables中NAT模式设置

SNAT:源地址转换   DNAT:目的地址转换

SNAT规则设置:

环境:webserver:10.10.188.173  SNATserver:eth0:10.10.188.232:eth1:10.10.177.232  client:10.10.177.233

SNATserver配置:

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1  #打开此配置

sysctl -p  #让此配置生效

iptables -t nat -A POSTROUTING -s 10.10.177.0/24 -j SNAT --to 10.10.188.232

client配置:

配置client路由;可以将client的默认网关设为SNATserver;vim /etc/sysconfig/network ; GATEWAY=10.10.177.232

配置完成client可以直接访问webserver:10.10.188.173

DNAT规则设置:

环境:webserver:10.10.177.233:80  DNATserver:10.10.177.232 10.10.188.232:80  client:10.10.188.173

DNATserver配置:

iptables -t nat -A PREROUTING -d 10.10.188.232 -p tcp --dport 80 -j DNAT --to 10.10.177.233:80
iptables -t nat -L

client测试:curl http://10.10.188.232

client表面访问的是10.10.188.232,实际访问的是10.10.177.233:80

iptables防CC攻击

connlimit模块:限制每一个客户端IP的并发连接数

-connlimit-above n  #限制并发个数

iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT

limit模块:限速、控制流量

iptables -A INPUT -p icmp -m limit --limit 1/m --limit-burst 10 -j ACCEPT
iptables -A INPUT -p icmp -j DROP
时间: 2024-10-16 22:25:00

用iptables搭建一套强大的安全防护盾的相关文章

教你如何配置一套强大的防火墙——iptabels配置详解(一)

今天我来带领大家给自己的服务器搭建一套强大的防火墙!废话不多说,我们开始吧- 啥是iptables? ipbtales是集成再Linux内核中的一套防火墙软件.它能够对外界发过来的在进入我们的系统之前,进行一系列的筛选,我们可以自己定义筛选规则,决定哪些数据包可以进入我们的电脑,哪些数据包不允许进入.从而能够使我们的服务器更加安全地运行在公网的环境中. 下面大家一起跟我动手,在实践中掌握知识. 动手前的准备工作 首先你需要找两台主机,一台当作客户机,一台当作服务器.让这两台主机处于同一个局域网中

搭建一套自己实用的.net架构(4)【CodeBuilder-RazorEngine】

工欲善其事必先利其器,  下面来说说代码生成器. 现在代码生成器品种繁多各式各样, 什么codesmith.T4. 动软也算.那么每款代码生成器都有自己模板解析引擎. 现在比较流行的 NVelocity(之前我用这个,不过在实际过程中遇到了很多关键字冲突的问题.不单单是$), 最后只好改成了RazorEngine. Razorengine源码: http://razorengine.codeplex.com/ 如果你在mvc项目中,原项目和mvc的Antlr3.Runtime.dll版本有冲突,

搭建一套自己实用的.net架构(2)【日志模块-log4net】

先谈谈简单的模块,日志.在系统中日志模块是必须的,什么系统日志,操作日志,调试日志.这里用的是log4net. 对log4net还不熟悉的小伙伴们赶快去搜索基础教程哦, 我这里就不温故了. 那么有人要问了,log4net确实很强大,而且我们也会用.还要单独写一篇文章来介绍,有必要吗? 我简单的举两个场景: 1:log4net写入DB 还需要在 log4net中配置数据库连接字符串,   我想log4net 和 我的 connectionStrings 用1个配置不行吗? 2:log4net写入参

从原理到代码:大牛教你如何用 TensorFlow 亲手搭建一套图像识别模块 | AI 研习社

从原理到代码:大牛教你如何用 TensorFlow 亲手搭建一套图像识别模块 | AI 研习社 PPT链接: https://pan.baidu.com/s/1i5Jrr1N 视频链接: https://v.qq.com/x/page/n0386utnrb0.html?start=492

搭建一套自己实用的.net架构(3)续 【ORM Dapper+DapperExtensions+Lambda】

前言 继之前发的帖子[ORM-Dapper+DapperExtensions],对Dapper的扩展代码也进行了改进,同时加入Dapper 对Lambda表达式的支持. 由于之前缺乏对Lambda的知识,还是使用了拿来主义.研究了些案例,总归有些问题: 1.只能生成sql.不能将值进行参数化. 2.lambda解析的代码对sql语法的多样式支持不够 3.不开源,反编译后发现可扩展性不强. 最后选择了Dos.ORM(lambda支持的很好,开源的),在这里尊重原创,大家有兴趣去支持下哈. [作者博

【干货】手动搭建一套可自动化构建的微服务框架

如何阅读 本文篇幅较长,我花了两天的时间完成,大约需要半小时阅读. 本文分为理论篇和实践篇,由于代码在手机端展示并不理想,建议大家收藏之后在PC端阅读.实践篇边动手边阅读更有助于理解. 在阅读的同时,也麻烦各位大佬多多分享! 本文你将学到什么? 本文将以原理+实战的方式,首先对"微服务"相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统. 这套微服务框架能干啥? 这套系统搭建完之后,那可就厉害了: 微服务架构你的整个应用程序将会被拆分成一个个功能独立的子系统,独立运行

如何管理团队知识?快速搭建一套管理工具

阅读全文需要15分钟,动手实践需要30分钟,请收藏点赞后再读. 演示地址:http://birddoc.jayh.club Github链接:https://github.com/Jackson0714/BirdDoc   记得点个Star 一.用互联网思维来看知识管理工具 1.1 用户故事 我是一名开发人员,经常会迷失在寻找团队内的各种开发文档中,我期望有一个网站,所有文档都集中在这个网站中,我可以进行根据目录浏览,最好能支持搜索,而且我贡献的文档别人不知道,会再跑过来问我. 1.2 用户痛点

linux+iptables搭建网关服务器

公司购买的一批云服务器只带内网,配置了一个负载均衡器(lb),这批服务器通过lb可以对外提供服务,但是这批服务器不能主动连接外网,例如使用wget下载文件,或者curl访问ttlsa.com站点. 额外购买一台带外网的云服务器,将这台服务器配置成网关服务器,其他服务器网关改为这台服务器,问题得到解决.方法很简单 网关服务器IP:172.16.0.1客户端IP:172.16.0.0/24 1. 开启forward 1 2 # cat /etc/sysctl.conf | grep forw net

搭建一套Java开发环境以及使用eclipse从头一步步创建java项目

一.java 开发环境的搭建 在windows 环境下怎么配置环境. 1.首先安装JDK java的sdk简称JDK ,去其官方网站下载JDK. https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.环境变量配置 运行下载的  jdk-7u13-windows-i586.exe 配置.检查JAVA_HOME,PATH, CLASSPATH 三个属性. windows10,右键