在几个服务器系统上,我遇到了两种主要风格的iptables防火墙配置:
第一个是阻塞INPUT除提供的服务(如 HTTP)的端口之外的所有端口。
第二个是阻塞INPUT除了NEW几个服务的连接状态的每个数据包,精心设置和ESTABLISHED状态连接的所有数据包。OUTPUT除了处于ESTABLISHED状态的连接之外,它还阻止所有数据包。
后者提供了第一个简单解决方案无法管理的哪种安全性?
当然,出于某种原因阻止用户使用传出端口可能会很有用,但是如果我不需要保护服务器免受其自身用户的侵害,而仅需要保护服务器免受外部威胁,那么两种方法是否相同,或者第二种方法是否仍会提供好处?
我有一个这样的日志文件:
Frq:15 IP:0.0.0.0 Date: 2014-03-21 12:19:31 AM
Frq:9 IP:198.252.206.25 Date: 2014-03-21 12:19:31 AM
Run Code Online (Sandbox Code Playgroud)
现在我用 awk 得到一列 ip 地址:
cat /tmp/test | awk '{print $2}'|awk '{gsub("IP:", "");print}'
Run Code Online (Sandbox Code Playgroud)
结果是:
0.0.0.0
198.252.206.25
Run Code Online (Sandbox Code Playgroud)
我想将此 ip 地址添加到 iptables 以从 INPUT DROP 但我不知道如何
谢谢朋友。
我有一套我为网络监控、控制等设计的脚本。我在这些脚本中做的一件事是创建一个 iptables 链,如iptables -N mychain. 然后我根据需要将规则插入到主表中,以便将数据包放入我的自定义链,无论我希望它们在那里有什么目的。
我的问题是:我有一个执行“刷新”的脚本 - 换句话说,它删除所有规则并重新开始。它在出现任何奇怪的异常情况时很有用。即使有人管理它的一部分,人们仍然经常手动管理 iptables。(这就是为什么我希望我所有的工作都在一个单独的表中完成。)
如果我想清楚了我的锁链,很简单:iptables -F mychain。但是我不知道该怎么做是删除我可能创建的任何规则,这些规则将引用链接回内置链(输入、输出等)
假设我的应用程序中存在错误,或者用户在摆弄表格并最终弄乱了表格,并且它以某种方式将规则添加到 INPUT 链两次。现在数据包将通过链两次 - 被计算两次,被路由两次,无论如何。
显而易见的解决方案是遍历主链并删除任何跳转目标是我的自定义链的规则。但我不知道如何做到这一点。
这是我们可以设置的最坏情况的示例:
iptables -N TEST
iptables -A INPUT -j TEST
iptables -I INPUT 1 -p tcp --dport 1234 -j TEST
iptables -I INPUT 1 -p tcp --dport 1234 -j TEST # again, for doubling error
iptables -I INPUT -p icmp -j TEST
Run Code Online (Sandbox Code Playgroud)
让我们假设一个不道德或不知情的管理员创建了三个最底层的规则。
所以现在,我可以发布iptables -D INPUT -j TEST并且我创建的规则将消失。但是,这些其他规则不会被删除,因为使用时的参数-D必须匹配。因此,即使我努力删除自己的规则,由于不同的原因,数据包仍然可能不止一次地出现在那里。
刷新主链不一定合适。同样,在命令行中使用 iptables 是很常见的(我一直都是自己做的)所以只是盲目地清除每条 …
我想在我的 iptables 规则中使用 -m comment --comment "message" 但没有加载模块。通过一些搜索,我需要的模块是“ipt_comment”,但我没有安装它。我怎样才能做到这一点?
我的 iptables 版本是 1.4.21
/sbin/modprobe --list 不返回任何内容
/sbin/lsmod 也是空的。
我使用的是 Ubuntu 12.04.1 服务器
我的网络服务器 (nginx) 不断收到这样的请求:
23.244.104.206 - - [15/Jun/2014:21:21:47 -0400] "GET http://ib.adnxs.com/ttj?id=2947236&size=300x250&cb={CACHEBUSTER}&referrer={REFERRER_URL}&pubclick={INSERT_CLICK_TAG} HTTP/1.0" 200 612 "http://www.businessfull.net/?p=8167" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; de-de) AppleWebKit/534.15+ (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4"
216.244.65.21 - - [15/Jun/2014:21:21:47 -0400] "GET http://ib.adnxs.com/ttj?id=2583052&referrer=http%3A%2F%2Fwww.excitingflashgames.com%2Fgame%2Frun_chicken_run.html&cb=78488 HTTP/1.0" 200 612 "http://www.excitingflashgames.com/game/run_chicken_run.html" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.2 (KHTML, like Gecko) Ubuntu/11.04 Chromium/15.0.871.0 Chrome/15.0.871.0 Safari/535.2"
Run Code Online (Sandbox Code Playgroud)
有数百个这样的请求,它们导致我的 http 服务器变慢了很多。有什么方法可以使用 iptables 阻止它吗?奇怪的是,他们试图访问我什至没有托管的网站。我认为这对禁止他们很有用,但我不确定我会怎么做。
Fructis 是一个多站点(和多软件)VM (Xen),具有 2 个内核和类似 6G 的 RAM。
它托管着流行的 Drupal 和 Wordpress 网站,目前正在遭受重创。我将把所有细节放在下面。
我一直在阻止 IP,但似乎有一个非常激进的机器人网络,而且大多数情况下更改 IP 的速度比我阻止它们的速度还快
我已经更新了 Drupal,但所有的 Wordpress 站点都不一定由我管理。
我已经为 TS 启用了日志,但它们似乎没有帮助
也许答案是了解最近/现在常见的机器人攻击类型是什么?为此,http://www.webmasterworld.com/home.htm 可能有有用的信息
细节:
root@fructis:/home/nrogara# w
09:28:05 up 10 days, 1:55, 2 users, load average: 31.10, 30.61, 32.31
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
nrogara pts/0 c-24-7-67-188.hs Wed13 1:01m 0.18s 0.00s sshd:
nrogara [priv]
nrogara pts/1 142-254-1-80.dsl 09:00 5.00s 0.06s 0.01s sshd:
nrogara [priv]
root@fructis:/home/nrogara# !net
netstat -tn 2>/dev/null | grep :80 | awk …Run Code Online (Sandbox Code Playgroud) 出于某种原因,不允许来自特定 IP 地址的 mysql 连接。这是我的规则(从 中抓取iptables-save):
-A INPUT -s 12.34.56.78/32 -p tcp -m state --state NEW -m multiport --dports 22,80,3306 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
有趣的是,SSH 连接和 HTTP 页面可以完美加载,没有问题。后来我为 MySQL 连接添加了 3306,但它们似乎被忽略了。为什么?
我在 CentOS 上。我已经重新启动了 iptables 服务并将 IPTABLES_SAVE_ON_STOP/RESTART 设置为是。
跑步netstat -tunelp告诉我这个:
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 27 8849593 10712/mysqld
Run Code Online (Sandbox Code Playgroud)
这是我的完整规则列表iptables -L:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere …Run Code Online (Sandbox Code Playgroud) 在 中/etc/fail2ban/jail.local,当我将 MTA 设置为 Postfix 时,Fail2Ban 显示错误并且无法启动。
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 1800
maxretry = 4
destemail = email@example.com
mta = postfix
action = %(action_mwl)s
Run Code Online (Sandbox Code Playgroud)
错误:
WARNING 'findtime' not defined in 'ssh'. Using default value
ERROR /etc/fail2ban/action.d/postfix-whois-lines.conf and /etc/fail2ban/action.d/postfix-whois-lines.local do not exist
ERROR Error in action definition postfix-whois-lines[name=ssh, dest="email@example.com", logpath=/var/log/auth.log, chain="INPUT"]
ERROR Errors in jail 'ssh'. Skipping...
['set', 'loglevel', 3]
['set', 'logtarget', '/var/log/fail2ban.log']
Run Code Online (Sandbox Code Playgroud)
错误指向其他地方,但是当我注释掉mta=postfix它时。
我有后缀为我的MTA(在Debian 7)安装,我想我应该改变默认sendmail到postfix这个设置。我错了吗?
我正在 Ubuntu12.04 中运行我编写的一个应用程序,它执行一些远程交换机管理。我只有一个 NIC 连接到托管交换机网络,eth0 设置为 IPv4 10.0.0.1/24。这个 IPv4 地址是这台 Ubuntu 机器可以使用的唯一地址,因为这是分配给 Ubuntu 机器的唯一“全局”可路由地址(由于某些网络管理,而不是由于技术问题......)
我需要交换机管理流量(通过 SSH 的 NetConf,使用 UDP 端口 830)来包含一个带有 VLAN ID 444 的 802.1q VLAN 标签),在发送 NetConf 帧时,也会收到带有此标签的回复。所有其他流量(http、ftp、dhcp、snmp 等)将使用没有 VLAN 标记的 eth0。
我尝试在 eth0 上使用 VLAN 接口 eth0.444,但似乎发送的流量不包含 VLAN 标记。
我可以(以及如何)使用 ebtables/iptables 将特定的 VLAN 标记添加到特定的 UDP 端口流量?ebtables/iptables 解决方案是否也适用于接收路径?
谢谢!
大卫
我得到了lo(127.0.0.1)和eth0(172.17.0.8)。我想将登陆的数据包重定向127.0.0.1:80到172.17.42.1:80(从 路由eth0)。
我试过
iptables -t nat -A OUTPUT -p tcp --dport 80 -d 127.0.0.1 -j DNAT --to 172.17.42.1:80
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时我没有curl localhost:80得到任何回应,当我这样做时curl 172.17.42.1:80它就起作用了。