标签: iptables

是否有iptables的python接口?

我试图通过python检索系统上配置的当前iptables链.如果我strace iptables命令,它输出:

strace iptables -L INPUT
socket(PF_INET, SOCK_RAW, IPPROTO_RAW)  = 3
getsockopt(3, SOL_IP, 0x40 /* IP_??? */, "filter\0\377`\2\351\1\0\210\377\377\210}\313\276\0\210\377\377\354\206\0\201\377\377\377\377"..., [84]) = 0
Run Code Online (Sandbox Code Playgroud)

完整输出:http://pastebin.com/e7XEsaZV

在python中我创建套接字obj并尝试调用getsockopt并且它出错:

>>> s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)
>>> s.getsockopt(socket.SOL_IP, 0x40)
Traceback (most recent call last):
  File "<pyshell#46>", line 1, in <module>
    s.getsockopt(socket.SOL_IP, 0x40)
  File "/usr/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
error: [Errno 22] Invalid argument
>>>
>>> s = socket.socket(2, socket.SOCK_RAW, socket.IPPROTO_RAW)
>>> s.getsockopt(socket.SOL_IP, 0x41)
Traceback (most recent call last):
  File "<pyshell#48>", line 1, …
Run Code Online (Sandbox Code Playgroud)

python sockets linux networking iptables

13
推荐指数
1
解决办法
8243
查看次数

如何从linux中的iptable检查PREROUTING列表?

我在iptable中添加了数据包转发规则,我
sudo iptables -t nat -A PREROUTING -p tcp --dport 1111 -j DNAT --to-destination 10.0.3.126:80
可以看到进入端口1111的数据包被正确转发到10.0.3.126:80.但是,如果我列出规则,我看不到我添加的规则.

sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:bootps
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target …
Run Code Online (Sandbox Code Playgroud)

linux iptables

13
推荐指数
1
解决办法
2万
查看次数

如何通过iptables允许邮件?

我正在保护我的服务器(使用iptables)以便只有http和ssh端口是打开的,这很好,虽然我mail在某些应用程序中使用命令(服务器:CentOS 6.2)并且由于iptables阻止所有内容它现在无法通过.

我允许它访问哪些端口?

邮件用法: echo "{{message}}" | mail -s "{{subject}}" me@mail.com

我已经尝试过标准邮件端口25,但我没有成功.这是当前的设置:

iptables --flush

iptables -P INPUT DROP
iptables -P OUTPUT DROP

# incoming ssh
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT 

# outgoing ssh 
iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A INPUT -i eth0 …
Run Code Online (Sandbox Code Playgroud)

iptables

12
推荐指数
1
解决办法
2万
查看次数

如何删除iptables规则

我的iptables中有这个规则:

sudo iptables -t nat -nvL --line-numbers

Chain PREROUTING (policy ACCEPT 14 packets, 1950 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 14 packets, 1950 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 577 packets, 41182 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REDIRECT   tcp  --  *      lo      0.0.0.0/0            0.0.0.0/0            tcp dpt:80 redir ports 8090
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下方法删除它:

sudo iptables -D …
Run Code Online (Sandbox Code Playgroud)

iptables

12
推荐指数
1
解决办法
3万
查看次数

ssh:连接到主机bitbucket.org端口22:连接超时

一切都很好.有些git推,没有问题.

今天我决定将我的框架更新到最新版本,所以它稍微改变了我项目的目录结构.所以在bitbucket中,我创建了一个新的存储库(dev1.project.com),并将我的项目文件夹从OldName重命名为dev1.project.com

我编辑.git/config指向我的新存储库:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[branch "master"]
[remote "origin"]
        url = https://bitbucket.org/user/dev1.project.com.git
        fetch = +refs/heads/*:refs/remotes/origin/*
Run Code Online (Sandbox Code Playgroud)

当我做 git remote -v

我得到:origin ssh://git@bitbucket.org/user/dev1.project.com.git(fetch)origin ssh://git@bitbucket.org/user/dev1.project.com.git(push)

我回到我的项目文件夹,然后输入:

git init
git add .      
git commit -m 'my first commit'
git push -u origin master
Run Code Online (Sandbox Code Playgroud)

但我一直收到以下错误:

ssh: connect to host bitbucket.org port 22: Connection timed out
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

该命令为ssh -T git@bitbucket.org我提供了与上面相同的消息.

命令:git config --get remote.origin.url …

git ssh iptables bitbucket

12
推荐指数
1
解决办法
8356
查看次数

Amazon EC2负载均衡器:防御DoS攻击?

我们通常将IP地址列入黑名单iptables.但是在Amazon EC2中,如果连接通过Elastic Load Balancer,远程地址将被负载均衡器的地址替换,iptables无法使用.在HTTP的情况下,显然找出真正的远程地址的唯一方法是查看HTTP头HTTP_X_FORWARDED_FOR.对我来说,在Web应用程序级别阻止IP并不是一种有效的方法.

在这种情况下,防御DoS攻击的最佳做法是什么?

在本文中,有人建议我们可以用HAProxy替换Elastic Load Balancer.但是,这样做有一些缺点,我试图看看是否有更好的选择.

amazon load-balancing iptables ddos amazon-ec2

11
推荐指数
1
解决办法
9946
查看次数

Linux每程序防火墙类似于windows和mac对应物

  1. 是否可以创建适用于Windows和Mac的GUI防火墙?按计划编制.当特定程序想要从网络发送\ recv数据时弹出通知窗口.
  2. 如果不是,为什么?Linux内核缺少允许存在此类程序的内容?
  3. 如果是的话,为什么没有这样的计划呢?

PS这是编程问题,而不是用户问题.

linux firewall iptables

11
推荐指数
3
解决办法
8186
查看次数

Python/iptables:捕获所有UDP数据包及其原始目标

我正在尝试编写一个iptables规则,将所有传出的UDP数据包重定向到本地套接字,但我还需要目标信息.我开始了

sudo iptables -t nat -A sshuttle-12300 -j RETURN   --dest 127.0.0.0/8 -p udp
sudo iptables -t nat -A sshuttle-12300 -j REDIRECT --dest 0.0.0.0/0   -p udp --to-ports 15000
Run Code Online (Sandbox Code Playgroud)

这很好,现在我可以通过端口15000上的套接字获取所有传出的UDP数据包.

现在,我需要目标信息(目标主机和端口号),因此简单的UDP套接字是不够的; 需要一个原始套接字,以便它获得完整的IP标头.

然而,事实证明,收到的数据包似乎已得到解决localhost:15000.这是有道理的,因为那是套接字的位置,但这不是我想要的; 我希望在重定向数据包之前使用主机/端口iptables.

谷歌搜索导致了这个问题,答案提出了两种方法:TPROXY并且SO_ORIGINAL_DST,推荐前者,这就是我试图使用的方法.

添加了以下iptables规则TPROXY:

sudo iptables -t mangle -A PREROUTING -j TPROXY --dest 0.0.0.0/0 -p udp --on-port 15000
Run Code Online (Sandbox Code Playgroud)

tproxy.txt读取,我们需要创建一个带有该IP_TRANSPARENT选项的侦听套接字(这是以root身份完成的):

from socket import *
s = socket(AF_INET, SOCK_RAW, IPPROTO_UDP)
# The …
Run Code Online (Sandbox Code Playgroud)

python sockets udp iptables packet-capture

11
推荐指数
1
解决办法
7085
查看次数

如何在linux中使用iptables将http和https流量转发到透明代理

我有一个Ubuntu linux系统充当网关系统,上面有两个接口.一个接口用于本地网络,一个接口用于Internet.我可以毫无问题地通过它来路由流量.我使用两个iptables规则来转发内部接口的出站流量:

iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface eth1 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

我现在需要创建一个iptables规则,过滤掉并重定向所有tcp端口80和443流量,通过eth1接口离开我的网络,并将其发送到驻留在tcp端口9090上的环回接口上的代理服务器.

我一直在寻找SO,但我找不到一个有效的例子.有没有一种有效的方法来做到这一点?

linux firewall iptables gateway transparentproxy

11
推荐指数
1
解决办法
6万
查看次数

无法从外部机器访问公开暴露的Docker容器端口,只能从localhost访问?

我在我的Ubuntu Linux 14.04计算机上运行了一个Docker容器,公开了一个端口:

docker run --name spacyapi -d -p 127.0.0.1:7091:7091 jgontrum/spacyapi:en
Run Code Online (Sandbox Code Playgroud)

我可以连接并执行容器中服务器的命令,而不会出现本地机器的问题.例如:

curl http://localhost:7091/api --header 'content-type: application/json' --data '{"text": "This is a test."}' -X POST
Run Code Online (Sandbox Code Playgroud)

该命令忠实执行.但是,如果我从外部机器尝试相同的CURL命令,我会收到"连接被拒绝"错误:

curl http://192.5.169.50:5000/api --header 'content-type: application/json' --data '{"text": "This is a test."}' -X POST
curl: (7) Failed to connect to 192.5.169.50 port 7091: Connection refused
Run Code Online (Sandbox Code Playgroud)

其中192.5.169.50是运行Docker容器的框的IP地址.

我认为我不需要任何iptables规则,因为我不需要在同一个盒子上运行Node.JS服务器.我本地网络上的所有其他计算机都可以正常访问Node.JS服务器.但不是Docker容器充当服务器.

我怎样才能解决这个问题?

linux port iptables docker

11
推荐指数
2
解决办法
1万
查看次数