Articles of iptables

为什么这个Nginx conf允许访问其他主机名/端口上的Gitlab?

整个系统在一个stream浪者箱子里面。 Nginx安装在Vagrant框中,Gitlab在Docker 容器中 。 我可以到达Gitlab http://gitlab/ 如/etc/hosts ,但也可以在 http://gitlab:10080/ 和 http://192.168.7.7:10080/ 但是,那个港口应该closures! Gitlab应该只能在80端口的自定义URL上访问。 nginx.conf events { worker_connections 1024; } http { upstream gitlab { server 192.168.7.7:10080; } server { listen 80; server_name gitlab-dw; port_in_redirect off; location / { proxy_pass http://gitlab; } } } 泊坞窗,compose.yml version: '2' services: redis: restart: always image: sameersbn/redis:latest command: – –loglevel […]

什么是禁止不良演员的最好方法?

我有一个PHP应用程序,遇到两种不良行为者: 那些扫描漏洞(SQL注入,XSS或试图请求不存在的URL,如/ phpmyadmin或/ webmail或一些这样的) 评论垃圾邮件。 这个堆栈是Ubuntu 12.04 + nginx + PHP(FPM) 我想要做的是build立一个过程,通过在检测到滥用模式时删除他们的IP地址来禁止这些不良行为者。 我应该怎么做? 模式的一些例子是: 1分钟内超过2条评论(通过nginx或PHP检测) 在10分钟内有超过2条评论,每条评论都有URL。 (由nginx或PHP检测) 对phpmyadmin的请求(需要被nginx检测到) 奇怪的parameter passing给search/评论系统。 例如\'或OR 1 = 1' – (我喜欢得到这种常见的SQL注入模式列表) 所以问题是 – 如何在nginx / PHP中检测这些模式,以及如何build立一个可以禁止这些actor的IP地址的进程? PS – 说实话,我不确定如何最好地标记这个问题,所以请重新标记适当的。

IPTables不会立即用ipset阻塞IP

我有以IPTables IPSet作为规则源来阻止攻击IP ,但是当我添加攻击IP到IPSet ,在我的nginx访问日志中,我仍然看到攻击IP连续访问。 过了一会儿,也许3〜5分钟, IP被封锁了。 iptables的 ~$ sudo iptables -nvL –line-numbers Chain INPUT (policy ACCEPT 317K packets, 230M bytes) num pkts bytes target prot opt in out source destination 1 106K 6004K DROP all — * * 0.0.0.0/0 0.0.0.0/0 match-set Blacklist src Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target […]

什么是开发iptables模块的最好方法

我有iptv提供商,通过使用私钥udp组播stream量encryption传递video。 这个时间stream用解码版本的udp2http代理解码。 我想开发iptables模块来“解密”数据包,因为我的电视上的iptv频道swtich在udpstream上更快,而不是http(并获得一些写iptables模块的经验)。 有两种方法可以做到这一点(我认为) 在模块本身写解密algorithm 编写模块将数据发送到用户空间,编写守护进程解密数据包,并将数据包发送回filter。 首先会更快,第二更安全的系统(因为networking堆栈的延迟可能会降低系统的整体性能),并可能有更多的function,易于debugging等。 哪种方法最好? 哪种方式有利有弊?

多个嵌套的回声语句pipe道内核限制

我有一个简单的bash脚本生成fwbuilder嵌套几个回声语句,并通过pipe道到iptables恢复。 我们编译这种方式,而不是只有多个“iptables -A xxx”行,因为它编译和部署更快,也不会丢弃现有的连接。 问题是,我们似乎已经达到了允许的多个redirect的限制(〜23'850行不行,~23600行)。 在内核2.6.18(CentOS 5.x)上运行它,然后打开,在2.6.32(6.x)上运行,它就像一个魅力一样。 脚本本质上是这样的,只是通过一条长长的线路传送给命令: (echo“1”; echo“2”; echo“3”; …; echo“25000”)| /做任何事情 所以我想问题是,有没有简单的方法来增加这个限制,而不重新编译内核? 我会想象这是某种标准inputpipe道字符的限制。 或者我必须做一个操作系统升级? 编辑:哦,还想补充说,在旧内核上运行时,没有显示错误,但在dmesg中显示段错误。

简单的python服务器“连接拒绝”错误

我发现一个非常简单的Python服务器和客户端的代码。 当我第一次运行它时,我在不同terminal的同一台机器上运行了服务器和客户端,并且工作正常。 然而现在我正在运行我的覆盆子pi上的服务器,并在我的桌面上运行我的客户端,我得到一个“连接拒绝错误。我的直觉告诉我,这是防火墙阻止我使用的端口,但我使用了下面的命令I发现开放港口。 sudo iptables -A INPUT -i eth0 -p tcp –sport 4042 -m state –state ESTABLISHED -j ACCEPT 我的客户端和服务器都连接到这个端口#在我的Python代码。 当我在我的pi上运行sudo nmap -sS -O 127.0.0.1 ,我得到以下输出: Starting Nmap 6.00 ( http://nmap.org ) at 2013-08-29 23:52 UTC Nmap scan report for localhost (127.0.0.1) Host is up (0.00027s latency). Not shown: 998 closed ports PORT STATE SERVICE […]

用iptables TPROXYredirect到原始套接字

我打算使用iptables的TPROXY目标redirect一些UDP数据包到一个原始的套接字,但没有数据包会被套接字接收。 它使用UDP套接字。 我错过了东西或原始套接字无法接收水平TPROXY作品中的数据? iptables -A PREROUTING -t mangle -p udp -dport 8816 -dst 127.0.0.1 -j TPROXY – 在端口0 – 在-IP 127.0.0.2 消费redirect数据包的代码: #include <stdlib.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdio.h> char _errstr[100]; #define CHECK(X) \ if (! (X)) {\ sprintf(_errstr, "%d: check failed", __LINE__);\ perror(_errstr);\ exit(1);\ } int main() { int r; int fd = […]

在本地主机上将Web服务器从端口5000redirect到端口80(Fedora)

在Fedora 24上,一个web服务器(Node.js)在端口5000上运行(独立的,没有apache /其他)。试图使它在端口80上可访问。 http:// localhost:5000的作品 试过这个: systemctl stop firewalld iptables -t nat -F iptables -t mangle -F iptables -F iptables -X iptables -t nat -A PREROUTING -p tcp –dport 80 -j REDIRECT –to-ports 5000 http:// localhost不起作用 试了这个 systemctl restart firewalld firewall-cmd –add-service=http –permanent firewall-cmd –zone=external –add-masquerade firewall-cmd –zone=external –add-forward-port=port=80:proto=tcp:toport=5000 firewall-cmd –add-forward-port=port=80:proto=tcp:toport=5000 firewall-cmd –list-all FedoraWorkstation (active) […]

iptables忽略scapy发送的pakage

对于Scool中的Projekt,我需要嗅探一个新的tcp握手包的networkingstream量。 我想自动创build一个新的iptables规则,这个tcp连接到docker容器中。 #!/usr/bin/env python2 import subprocess from scapy.all import * def find_tcp_handshake(port, docker_ip): global SYN global ACK # sniff for new syn pakage and send the pakage to function process_handshake() sniff(lfilter=lambda x: x.haslayer(TCP) and str(x[TCP].dport) == port and x[TCP].flags & SYN and not x[TCP].flags & ACK, prn = lambda x: process_handshake(paket = x, port = […]

Linux命令断开机器

有时候我们需要testing一下机器是否脱离networking。 即放弃两台机器之间的通信。 Linux提供了一种模拟这种情况的方法。 什么命令相同? 我知道的一个命令是 iptables -I INPUT -s IP_ADRRESS -j DROP 把那个拿回networking iptables -I INPUT -s IP_ADRRESS -j ACCEPT 有没有更好的方法来做到这一点?