天道酬勤,学无止境

How can I block some special User-agents Via IPTables

I need to block packets from any source that includes some special User agents using IPTables. But I don’t want to manage it via .htaccess or Apache. Is there any way?

评论

You can do it like this:

iptables -A INPUT -p tcp --dport 80 -m string --algo bm --string "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)" -j DROP

Short answer: No.

Long answer: You could try something using the string match with iptables (see iptables -m string -h). However, the clients would still be able to connect to your server, the only thing you could do is interrupt the connection in the middle of the request. And if the user agent header happens to be split across multiple IP packets, you are out of luck.

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 什么是适用于移动应用程序的OAuth 2.0流程(What's the right OAuth 2.0 flow for a mobile app)
    问题 我正在尝试使用OAuth 2.0在Web API中为移动应用程序实现委托授权。 根据规范,隐式授予流不支持刷新令牌,这意味着在特定时间段内授予访问令牌后,令牌到期或被吊销后,用户必须再次向应用授予权限。 我猜这对于规范中提到的在浏览器上运行的一些javascript代码是一个很好的方案。 我试图尽量减少用户必须授予应用程序权限以获取令牌的时间,因此授权代码流似乎是一个不错的选择,因为它支持刷新令牌。 但是,此流程似乎严重依赖于Web浏览器来执行重定向。 我想知道,如果使用嵌入式Web浏览器,那么对于移动应用程序来说,这种流程是否仍然是一个不错的选择。 还是我应该顺应隐式流程? 回答1 说明:移动应用=本地应用 如其他评论和在线上的一些消息所述,隐式似乎很适合移动应用程序,但是最好的解决方案并不总是很明确(实际上,出于下面讨论的原因,不建议使用隐式)。 本机应用OAuth2最佳做法 无论选择哪种方法(都需要权衡考虑),都应注意此处概述的使用OAuth2的本机应用程序的最佳做法:https://tools.ietf.org/html/rfc8252 考虑以下选项 隐含的 我应该使用隐式吗? 引用第8.2节https://tools.ietf.org/html/rfc8252#section-8.2 OAuth 2.0隐式授予授权流程(在OAuth 2.0 [RFC6749]的4
  • 使用 htaccess 进行移动重定向(Mobile Redirect using htaccess)
    问题 我的网站是:example.com 我的手机版本:m.example.com 个人资料页面是 example.com/profile 或 m.example.com/profile 或发布页面 example.com/posts 或 m.example.com/posts 手机版的网址是类似的。 那么,如何重定向同一个页面呢? 例如:用户(从 facebook)进入 example.com/posts 但他使用移动设备,那么如何通过 .htaccess 重定向到 m.example.com/posts 我看到了这一威胁,但我对制定正确的规则感到困惑。 谢谢 :) 回答1 您的问题与此问题类似,只是您要重定向用户。 首先,您需要一个移动用户代理列表。 我不打算推​​荐一个列表,但我认为你应该能够找到一个适合你的列表。 接下来,您要转到 .htaccess 文件并添加如下内容: RewriteCond %{HTTP_USER_AGENT} ^(user-agent1|user-agent2|user-agent3|etc)$ RewriteCond %{HTTP_HOST} !^m\.example\.com$ RewriteRule ^(.*)$ http://m.example.com/$1 [R,L] 第一个RewriteCond包含您要重定向的所有用户代理。 请记住
  • 如何阻止100,000+个单独的IP地址(How to Block 100,000+ Individual IP addresses)
    问题 介绍 如何阻止Web应用程序/服务器中的大量IP address 。 显然,可以使用PHP或任何编程语言轻松完成 $ipList = []; // array list or from database if (in_array(getIP(), $ipList)) { // Log IP & Access information header("https://www.google.com.ng/search?q=fool"); // redirect exit(); // exit } 或使用htaccess order allow,deny deny from 123.45.6.7 deny from 012.34.5. # .... the list continues allow from all 问题 我试图阻止整个100k plus individual IPs而不是subnets 我试图避免用户在阻止此类IP之前进入PHP 100000+超过1.5MB,如果信息一直都在htaccess加载,这将是很多 IP数据库仍在增长...他们将需要动态添加更多价值在iptables为100000+设置禁令简直是荒谬的(可能是错误的) 愚蠢的主意 order allow,deny deny from database <-------- Not sure if this
  • 如何阻止所有手机访问我的网站(How can I block all mobile phones from accessing my website)
    问题 我正在IIS 7.5上构建ASP.Net/C#网站,我想阻止所有手机访问该网站。 如何阻止/拒绝所有类型的手机访问该网站(使用Windows身份验证)? 我正在构建一个内部应用程序,我只希望使用IE的桌面才能访问它。 这比任何其他事情更重要的是安全性需求。 理想情况下,我想先检查一下用户是否在任何Windows质询/响应发生之前通过手机(或仅批准的浏览器)访问此网站。 我一直在寻找Google的指针(没有运气),以及URL重写选项。 由于我对Web编程这方面的知识还比较陌生,因此对于从哪里开始寻找或什至在正确的位置寻找东西,我有些茫然。 我不确定是否应该允许一个批准的浏览器通过或阻止所有手机。 回答1 您唯一希望它检查HTTP请求上的User-Agent标头属性,并拒绝来自手机的User-Agent的内容。 以下是移动设备的用户代理列表:http://www.zytrax.com/tech/web/mobile_ids.html 您必须使用HttpResquest 。 UserAgent属性:http://msdn.microsoft.com/en-us/library/system.web.httprequest.useragent.aspx 祝你好运。 回答2 您可能必须使用IIS模块(例如URL Rewrite v2)并执行以下操作:http://forums.iis
  • 是否可以在一行中列出多个用户代理?(Is it possible to list multiple user-agents in one line?)
    问题 是否可以在robots.txt中向多个机器人发出一条指令,而不必重复提及? 例子: User-agent: googlebot yahoobot microsoftbot Disallow: /boringstuff/ 回答1 实际上,很难给出一个明确的答案,因为robots.txt没有非常明确的标准,而且很多文档都含糊不清或自相矛盾。 Google的漫游器可以理解的格式描述非常全面,其中包含以下略显乱码的句子: 紧随其后的多组起始行将跟随最终组起始行之后的组成员记录。 以下示例中显示的内容似乎正在摸索: user-agent: e user-agent: f disallow: /g 根据下面的解释,这构成一个单一的“组”,不允许两个不同的用户代理使用相同的URL。 因此,所需的正确语法(对于任何与Google相同的机器人均适用)将是: User-agent: googlebot User-agent: yahoobot User-agent: microsoftbot Disallow: /boringstuff/ 然而,正如吉姆·米歇尔指出,存在robots.txt文件其中一些机器人会正确解释是没有意义的,但其他人可能窒息,所以它可能是最好的去与重复块的“最小公分母”可能是通过使用简单的“配方”和更新脚本动态生成文件的方式。 回答2 我认为原始的robots
  • 压缩从浏览器发送的HTTP Post数据(Compressing HTTP Post Data sent from browser)
    问题 我想使用Javascript将压缩的POST数据发送到我控制的服务器。 有什么方法可以让HTTP层处理压缩。 我正在发送JSON。 如果将内容类型设置为GZIP / deflate,浏览器会自动压缩它,然后带有deflate mod的Apache自动将其解压缩,这样我的应用程序就不必考虑要压缩的数据了吗? 我知道它可以以其他方式起作用,但是有什么办法可以使其以这种方式起作用? 回答1 浏览器会自动为您的数据进行gzip编码吗? 最简洁的答案是不。 长答案是,某些用户代理可以执行此类操作,但您绝对不能依赖它。 apache mod_deflate docs状态: 实际上,某些特殊应用程序确实支持请求压缩,例如某些WebDAV客户端。 所以,不,那是行不通的。 您需要自己生成适当的HTTP请求消息。 在这种情况下,合适的标头是Content-Encoding: gzip而不是Content-Type:因为内容本身是application/json ,所以您只是想对HTTP请求消息的实体正文进行编码以进行传输。 请注意,还需要添加适当的Content-Length:标头,指定压缩后消息实体主体的大小(以字节为单位)-或-使用Transfer-Encoding: chunked发送HTTP消息,并放弃内容长度规范。 在接收端,您可以指示mod_deflate使用输入过滤器解压缩信息:
  • Iptables 规则用法小结
    iptables是组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。在日常Linux运维工作中,经常会设置iptables防火墙规则,用来加固服务安全。以下对iptables的规则使用做了总结性梳理:iptables首先需要了解的:1)规则概念规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息 包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept),拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作是添加,修改和删除等规则。其中:匹配(match):符合指定的条件,比如指定的 IP 地址和端口。丢弃(drop):当一个包到达时,简单地丢弃,不做其它任何处理。接受(accept):和丢弃相反,接受这个包,让这个包通过。拒绝(reject):和丢弃相似,但它还会向发送这个包的源主机发送错误消息。这个错误消息可以指定,也可以自动产生。目标(target):指定的动作
  • Linux 防火墙:iptables、firewalld、SELinux
    主机防火墙(一般是软件防火墙):针对单个主机进行防护网络防火墙(一般是硬件防火墙):作为网络的分界点,防护内网之外的*** 无论是iptables还是firewalld都只是配置防火墙的工具,真正实现数据包连接和转发的是系统内核中的netfilter模块 iptables 规则链 iptables有5个规则链,如果流量经过规则链,就会从该链由上至下匹配遇到的第一条规则。 INPUT控制进入的流量 OUTPUT控制发出的流量 FORWORD控制转发的流量 POSTROUTING负责SNAT PREROUTING负责DNAT 查看规则 #查看 INPUT OUTPUT FORWORD 规则 [root@localhost ~]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination # 查看 POSTROUTING和PREROUTING snat和dnat 规则 [root@localhost ~]# iptables -L -t nat
  • 如何以编程方式即时管理iptables规则?(How can I programmatically manage iptables rules on the fly?)
    问题 我需要查询现有规则,以及能够轻松添加和删除规则。 我还没有找到执行此操作的任何API。 有什么我想念的吗? 我最接近解决方案的是使用iptables-save | iptables-xml iptables-save | iptables-xml用于查询和手动调用iptables命令本身以添加/删除规则。 我考虑过的另一个解决方案是,从应用程序的数据库中重新生成整个规则集,然后刷新整个链,然后再次应用它。 但是我想避免这种情况,因为我不想丢弃任何数据包-除非有一种方法可以自动执行此操作。 我想知道是否有更好的方法。 用C编写的API会很棒。 但是,当我计划将其构建为独立的suid程序时,以任何语言进行此操作的库也可以。 回答1 从netfilter常见问题解答: 不幸的是,答案是:否。 现在您可能会想“但是libiptc呢?”。 正如在邮件列表上多次指出的那样,libiptc绝不打算用作公共接口。 我们不保证接口稳定,因此计划在Linux数据包过滤的下一个版本中将其删除。 libiptc太底层了,因此无论如何都不能合理使用。 我们深知,此类API根本缺乏,我们正在努力改善这种情况。 在此之前,建议您使用system()或在iptables-restore的stdin中打开管道。 后者将为您提供更好的性能。 回答2 使用iptables-save和iptables
  • .htaccess允许所有来自特定用户代理(.htaccess Allow All from Specific User Agent)
    问题 我有一个正在开发的网站,该网站也将被整合到一个Web应用程序中。 我的.htaccess文件中包含以下代码,以防止来自不在允许的IP上的任何人的访问: Order deny,allow Deny from all AuthName "Restricted Area - Authorization Required" AuthUserFile /home/content/html/.htpasswd AuthType Basic Require valid-user Allow from 12.34.567.89 Satisfy Any 问题:我想添加一个Allow from规则,该规则还将允许特定的HTTP用户代理访问该站点。 如果不是用户代理,我发现此代码可以重定向: RewriteEngine on RewriteCond %{HTTP_USER_AGENT} !=myuseragent RewriteRule ^files/.*$ / [R=302,L] 但是我似乎无法弄清楚如何将其转变为“ Allow from规则。 帮助? 更新 我找到了下面的代码来阻止特定的用户代理...我想说“如果不是myuseragent ,则阻止”。 <IfModule mod_rewrite.c> SetEnvIfNoCase ^User-Agent$ .*(libwww-perl
  • 在Ubuntu下docker + ufw的最佳实践是什么(What is the best practice of docker + ufw under Ubuntu)
    问题 我刚刚试用了Docker。 它很棒,但似乎不能与ufw一起很好地工作。 默认情况下,docker将对iptables进行一些操作。 结果不是错误,但不是我所期望的。 有关更多详细信息,请阅读UFW + Docker的危险 我的目标是建立一个像 Host (running ufw) -> docker container 1 - nginx (as a reverse proxy) -> docker container 2 - node web 1 -> docker container 3 - node web 2 -> ....... 我想通过ufw管理传入流量(例如,限制访问),因此我不希望docker触摸我的iptables。 这是我的测试 环境: 新安装的Ubuntu 14.04(内核:3.13.0-53) Docker 1.6.2 启用UFW转发。(启用UFW转发) --iptables=false已添加到Docker守护程序中。 第一次尝试 docker run --name ghost -v /home/xxxx/ghost_content:/var/lib/ghost -d ghost docker run --name nginx -p 80:80 -v /home/xxxx/nginx_site_enable:/etc/nginx/conf.d:ro -
  • 如何保护phpMyAdmin(How to secure phpMyAdmin)
    问题 我注意到我的网站上有奇怪的请求,试图找到phpmyadmin,例如 /phpmyadmin/ /pma/ 等等。 现在,我已经通过apt在Ubuntu上安装了PMA,并希望通过不同于/ phpmyadmin /的网址访问它。 我该怎么做才能改变它? 谢谢 更新 对于Ubuntu 9.10和Apache2,相应的设置位于文件/etc/apache2/conf.d/phpmyadmin.conf ,该文件是/etc/phpmyadmin/apache.conf的链接。 该文件包含 Alias /phpmyadmin /usr/share/phpmyadmin 如果希望避免不必要的活动,则应将第一个/phpmyadmin更改为其他内容,例如: Alias /secret /usr/share/phpmyadmin 回答1 最大的威胁是攻击者可能利用诸如以下的漏洞: 目录遍历,或使用SQL Injection调用load_file()读取配置文件中的纯文本用户名/密码,然后使用phpmyadmin或通过tcp端口3306登录。 这是锁定phpmyadmin的好方法: 禁止远程root登录! 相反,可以将phpmyadmin配置为使用“ Cookie身份验证”来限制哪些用户可以访问系统。 如果您需要一些root特权,请创建一个可以添加/删除/创建但没有grant或file
  • iptables--表/命令/选项/匹配/目标
    iptables--表/命令/选项/匹配/目标 1.基本语法2.表3.命令4.选项5.匹配5.1 通用匹配5.2 隐含匹配5.2.1 TCP匹配5.2.2 UDP匹配5.2.3 ICMP匹配 5.3 显式匹配5.3.1 Limit匹配5.3.2 MAC匹配5.3.3 Mark匹配5.3.4 Multiport匹配5.3.5 State匹配5.3.6 TOS匹配5.3.7 TTL匹配 6.目标/跳跃6.1 ACCEPT target6.2 DNAT target6.3 DROP target6.4 LOG target6.5 MARK target6.6 MASQUERADE target6.7 REDIRECT target6.8 REJECT target6.9 RETURN target6.10 SNAT target6.11 TOS target6.12 TTL target 1.基本语法 基本语法如下: iptables [-t table ] command [match] [target/jump] 对于这个句法没什么可说的,但注意 target 指令必须在最后。为了易读,我们一般用这种语法。总之,你将见到的大部分规则都是按这种语法写的。在[table]处指定表名。一般情况下没有必要指定使用的表,因为 iptables 默认使用 filter 表来执行所有的命令
  • 打开Redis端口进行远程连接(Open Redis port for remote connections)
    问题 我可以在服务器上乒乓Redis: # redis-cli ping PONG 但是从远程来看,我遇到了问题: $ src/redis-cli -h REMOTE.IP ping Could not connect to Redis at REMOTE.IP:6379: Connection refused 在配置中,我得到了标准端口: # Accept connections on the specified port, default is 6379. # If port 0 is specified Redis will not listen on a TCP socket. port 6379 因此,也许我应该在远程Ubuntu计算机上打开端口6379? 我该怎么做? 回答1 您是否设置了绑定选项以允许Redis服务器上的远程访问? 之前(文件/etc/redis/redis.conf ) bind 127.0.0.1 后 bind 0.0.0.0 并运行sudo service redis-server restart重新启动服务器。 如果这不是问题,则可能要检查所有可能阻止访问的防火墙。 重要:如果您不使用防火墙(iptables,ufw ..)来控制谁连接到正在使用的端口,则任何人都可以连接到此Redis实例。 如果不使用Redis的AUTH
  • 码头工人:如何重新创建码头工人的其他iptables规则?(Docker: How to re-create dockers additional iptables rules?)
    问题 当docker-demon启动时,它会向iptables添加一些规则。 当通过iptables -F删除所有规则时,我必须停止并重新启动docker恶魔,以重新创建dockers规则。 有没有办法让docker重新添加它的其他规则? 回答1 最好的方法是重启docker服务,然后将docker规则重新添加到iptables中。 (基于deb: sudo service docker restart ) 但是,如果您只是想恢复这些规则而无需重新启动服务,我保存了我的我的文件,以便您可以检查并对其进行调整以适合您,然后使用sudo iptables-restore ./iptables-docker-ports.backup 编辑并将其保存到./iptables-docker-ports.backup # Generated by iptables-save v1.4.21 on Thu Apr 30 20:48:42 2015 *nat :PREROUTING ACCEPT [18:1080] :INPUT ACCEPT [18:1080] :OUTPUT ACCEPT [22:1550] :POSTROUTING ACCEPT [22:1550] :DOCKER - [0:0] -A PREROUTING -m addrtype --dst-type LOCAL -j
  • 短信接口被恶意调用(二)肉搏战-阻止恶意请求
    **我们都知道流量***,***者用大流量来压垮网络设备和服务器,或者有意制造大量无法完成的不完全请求来快速耗尽服务器资源,现在看来这次的短信接口***称不上流量***,因为数量级不在一个概念上,虽然也存在大量的非法请求,但是并不足以瘫痪设备,当然,这些话都是写在事件结束之后的,与事件发生时的想法可能有些出入,因为当时并不确定***者的请求是否会持续增加、是否会打满服务器的带宽,是否会影响正常请求,是否会使服务器瘫痪.....** 看着持续不减的入网流量,思考了半天,最终是打算加入防火墙,通过封掉这些恶意请求的IP,让ECS直接拒绝请求,在请求的第一步就把它弄死,将入口堵住应该可以一定程度的阻止***者继续***,也使得流量降低不会影响到处理正常请求所用到的系统资源。 作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载。 前言 承接前文《短信发送接口被恶意访问的网络***事件(一)紧张的遭遇战险胜》,在解决了短信发送的问题后,长长地舒了口气,也就各忙各的事情去了,本以为应该是个完美的收场,哪知道只是泥泞道路的前一段,收场是收不了了,还是要去应付接下来的烂摊子,因为***者并没有停止***,虽然恶意请求已经可以被识别并且不会被业务服务器处理,也不会去触发短信发送接口,但是请求依然会源源不断的到达服务器
  • 检测“隐身”网络爬虫(Detecting 'stealth' web-crawlers)
    问题 有哪些选项可以检测不想被检测到的网络爬虫? (我知道列表检测技术将使聪明的隐身爬虫程序员能够制造出更好的蜘蛛,但是我认为我们永远不会阻止聪明的隐身爬虫,只有那些会犯错误的人才可以。) 我不是在谈论像googlebot和Yahoo!这样的爬虫。 lur。 我认为机器人很不错: 在用户代理字符串中将自己标识为漫游器读取robots.txt(并遵守它) 我说的是糟糕的抓取工具,它们隐藏在普通用户代理程序后面,使用我的带宽,从不给我任何回报。 有一些陷阱门可以构造为更新列表(感谢Chris,gs) : 添加仅在robots.txt中列出(标记为不允许)的目录, 添加不可见的链接(可能标记为rel =“ nofollow”?), style =“ display:none;” 在链接或父容器上放置在具有较高z-index的另一个元素下方找出谁不了解CaPiTaLiSaTioN, 检测谁尝试发布回复,但始终使验证码失败。 检测对仅POST资源的GET请求检测请求之间的间隔检测所请求页面的顺序检测谁(一致地)通过http请求https资源检测谁不请求图像文件(这与已知的具有图像功能的浏览器的用户代理列表结合使用,效果出奇的好) 一些陷阱将由“好”和“坏”的僵尸程序触发。 您可以将其与白名单结合使用: 触发陷阱它要求robots.txt吗? 它不会触发其他陷阱,因为它遵循了robots
  • Spring boot http response compression doesn't work for some User-Agents
    I'm trying to enable http response compression on Spring boot web application. It works for some user-agents, and for some reason doesn't for others (specific cases below). My basic question is: Why http response compression (gzip) in Spring Boot works only for some User-Agent headers and where it is configured. Spring boot reference doesn't say anything about it. I prepared simple web application with enabled compression: sample spring-boot-compression app There are integration tests that verify that gzip encoding works for some cases only. I configured spring boot with: server: tomcat
  • 禁用从Docker容器访问LAN(Disable access to LAN from docker container)
    问题 我在Docker中使用Ubuntu容器运行Gentoo主机。 他们通过Docker自动创建的网桥进行通信。 我想丢弃可能来自容器的192.168.0.0/16的所有流量。 $sudo iptables -S -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT -A FORWARD -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 443 -j ACCEPT -A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i docker0 ! -o docker0 -j ACCEPT -A FORWARD -i docker0 -o docker0 -j ACCEPT $sudo iptables -t nat -S -P PREROUTING ACCEPT -P INPUT ACCEPT -P OUTPUT ACCEPT -P POSTROUTING ACCEPT -N DOCKER -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER -A OUTPUT ! -d 127.0.0.0/8
  • 防火墙配置与使用
    防火墙配置与使用 实验目的 进行防火墙的配置与使用,理解防火墙的原理规则等 实验先修知识 iptables基本命令使用 iptables -h #简易帮助 iptables [-t表名] <-L> [链名] #查看iptables规则 #–[-t表名],查看哪个表的规则列表 #–-L,查看指定表指定链的规则列表 #–链名,查看指定表中哪个链的规则链表 iptables -L -n -t filter -v #查看iptales的三个链(转发链,input和output链 iptables.rules #查看防护墙配置规则 iptables-restore <iptables.rules #iptables-restore命令用来还原iptables-save命令所备份的iptables配置。 ssh 172.16.111.1 -vv#查看ssh服务 iptables核心指令格式 iptables [-t 表] 命令 匹配 操作 其中表选项,指定命令应用于哪个内置表(filter表、nat表或mangle表),命令选项则如表8-1所示,匹配选项如表8-2所示,动作选项为表8-3所示, 命令说明-P或–policy <链名>定义默认策略-L或–list <链名>查看iptables规则列表-A或–append <链名>在规则列表的最后增加1条规则-I或–insert <链名