我有几台 Linux 机器充当我的网络的路由器/防火墙,我有一个脚本可以运行所有 iptables 命令来设置我的规则。不过,在我看来,这似乎是一种非常愚蠢的方法。
你怎么做到这一点?是否有带有配置文件的程序更易于管理?它有 GUI 或 Web 界面吗?
我的基于 EC2 (Fedora AMI) 的服务受到流氓错误配置客户端的严重打击。我有什么选项可以阻止这个流氓客户端的 IP?
iptables 规则多久生效?
我使用带有以下代码的脚本试图阻止主机,但它们似乎没有立即采取。是否有一些延迟,是 iptables 不起作用还是代码完全错误?
#!/bin/sh
echo $1 >> /etc/dropped_hosts
iptables -A INPUT -s $1 -j DROP
iptables -A OUTPUT -d $1 -j DROP
Run Code Online (Sandbox Code Playgroud) 使用 iptables,我需要阻止服务器上的所有出站流量,除了:
谁能告诉我一套合适的规则?
谢谢你。
我的服务器上有 3 个非 root 用户,我想为他们每个人提供不同的 IP 地址(我在一个网络接口上有多个 IP)。例如,user1 将有 192.168.1.2,user2 - 192.168.1.3 等等。或者,如果不可能,我如何将特定进程绑定到给定的 IP 地址(我建议,可以使用 iptables,但是如何?)。谢谢。
我有 3 个节点,其 iptables 规则几乎与从 bash 脚本加载的规则相同,但一个特定节点尽管列出它正在接受端口 53 上的流量,但仍阻止了它:
$ iptables --list -v
Chain INPUT(policy DROP 8886个数据包,657K字节)
pkts 字节目标 prot 选择退出源目标
0 0 ACCEPT all -- 任何地方的任何地方
2 122 ACCEPT icmp -- 任何地方的任何地方 icmp echo-request
20738 5600K 全部接受——任何任何地方状态相关,已建立
0 0 接受 tcp -- eth1 任何地方 node1.com 多端口 dports http,smtp
0 0 接受 udp -- eth1 任何地方 ns.node1.com udp dpt:domain
0 0 接受 tcp -- eth1 任何地方 ns.node1.com tcp dpt:domain
0 0 ACCEPT all -- eth0 any node2.backend 任何地方
21 1260 … 我正在尝试将 Web 流量从远程服务器转发到我的本地计算机,以测试一些 API 集成(tropo、paypal 等)。基本上,我正在尝试设置类似于 tunnlr.com 提供的内容。
我已经使用命令启动了 ssh 隧道
$ssh –nNT –R :7777:localhost:5000 user@server
然后我可以看到服务器现在正在侦听端口 7777
user@server:$netstat -ant | grep 7777
tcp 0 0 127.0.0.1:7777 0.0.0.0:* LISTEN
tcp6 0 0 ::1:7777 :::* LISTEN
$user@server:curl localhost:7777
Hello from local machine
Run Code Online (Sandbox Code Playgroud)
所以这很好用。curl 请求实际上是从本地机器提供的。
现在,我如何启用 server.com:8888 以通过该隧道路由?
我试过像这样使用 nginx:
upstream tunnel {
server 0.0.0.0:7777;
}
server {
listen 8888;
server_name server.com;
location / {
access_log /var/log/nginx/tunnel-access.log;
error_log /var/log/nginx/tunnel-error.log;
proxy_pass http://tunnel;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off; …Run Code Online (Sandbox Code Playgroud) 我有一个专有系统,它将 udp 视频流从单元 #1 (192.168.1.1) 传输到单元 #2 (.1.2)。我无法对这个系统进行更改,我正在尝试克隆这个 udp 流,以便我可以在不同的程序中访问它。该程序将对视频进行处理并将其作为多播流再次发送出去。
我希望使用带有三个网卡的 Linux 机器(现在运行 Ubuntu Server 12.04)来做到这一点。通过将单元 #1 和 #2 连接到 Linux 机器中的两个网卡(eth0 和 eth1)并使用网桥,我让它们进行了通信。我的 /etc/network/interfaces 看起来像:
# The loopback network interface
auto lo
iface lo inet loopback
# The external interface
auto eth3
iface eth3 inet static
address 192.168.10.2
netmask 255.255.255.0
# The bridge interface
auto br0
iface br0 inet manual
bridge_ports eth0 eth1
Run Code Online (Sandbox Code Playgroud)
这是有效的,并且通过使用 tcpdump 我已经确认 udp 数据包是从 #1 到达并在端口 6000 处朝向 #2。
我希望的下一步是使用 iptables 来克隆所有来自 192.168.1.1 的 udp …
我在 Centos 机器上打开端口 53 时遇到问题,用于 DNS 配置。
这是我的 iptables 配置
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
当我对机器运行 nmap 扫描时,只有端口 80 显示为打开状态。我错过了什么吗?
编辑:
完整的iptable
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p udp -m state --state NEW,ESTABLISHED -m udp --dport 53 -j ACCEPT
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -p tcp -m state --state NEW --state …Run Code Online (Sandbox Code Playgroud) 我正在一个新站点上设置 monit,在此问题中我将其称为 mywebsite.com。我已经设置了访问 monit 的 Web 界面页面的配置,但我无法连接到它。我有一个运行 iptables 的基本防火墙,我想我为 monit 开了一个洞,但我无法连接到 monit 的 Web 界面,我不知道为什么。
我还没有设置任何要监控的东西:我的 monit 配置如下所示:
## Start monit in the background (run as a daemon):
set daemon 120 # check services at 2-minute intervals
set httpd port 2812 and
use address mywebsite.com
allow localhost
allow admin:password
Run Code Online (Sandbox Code Playgroud)
我已经用这些规则重新启动了 monit。
我在我的 iptables 配置中为 monit 制定了一条规则,如下所示:
#monit interface
-A OUTPUT -p tcp --dport 2812 -j ACCEPT
-A INPUT -p tcp --dport 2812 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
然后我将这些规则导入到/sbin/iptables-restore. 当我这样做时,我可以看到 monit 条目 …