如果我的问题是基本的,我对ipfw总是不高兴,所以我提前道歉,但是我没有find任何资源来帮助解决使用GUI和知道命令行ipfw之间的差距。
我想阻止重复击中我的networking服务器ips。 防火墙是ipfw。 我发现这个命令:
ipfw将de.ip从.ip.to.block添加到my.computer.ip.address
有两件事我不清楚:
我知道这个规则会在重新启动时被刷新。 我想知道的是运行这个命令会影响正在运行的任何现有规则吗? 我猜不是,但我想确定。
有没有任何软件与ipfw链接添加ip的一小段时间,然后删除它们? 如果没有,我会为它敲一个脚本,但有没有一个内置的方式来添加几个conf文件? 如果我可以使用稳定的规则创build一个文件,而使用dynamic的规则创build另一个文件,则会更容易些。
任何帮助,非常感谢,即使RTFM的,如果你可以给一个资源的链接,可以帮助我更好地了解它。
我的防火墙脚本:
\#!/bin/sh /usr/bin/sudo /sbin/ipfw -q flush /usr/bin/sudo /sbin/ipfw -q delete set 31 /usr/bin/sudo /sbin/ipfw -q /usr/local/bin/Firewall/default.conf
#Check dynamic rules #anything that's already had the # green light can continue add 1000 check-state add 1050 allow tcp from any to any established add 1080 allow tcp from any to any out keep-state add 1090 allow udp from any to any out keep-state add 1095 allow icmp from any to any out #loopback add 1100 allow ip from 127.0.0.1/8 to 127.0.0.1/8 via lo0 add 1200 deny log ip from 127.0.0.1/8 to any in add 1300 deny log ip from any to 127.0.0.1/8 in #allow pings and traceroute # Ping out; accept ping answers. add 1400 allow icmp from any to any icmptypes 8 out add 1410 allow icmp from any to any icmptypes 0 in # Allow me to traceroute. add 1420 allow icmp from any to any icmptypes 11 in add 1500 allow tcp from any to any 11305 keep-state setup #http and https add 1600 allow tcp from any to any 80 keep-state setup # rules for reverse proxying add 1610 allow tcp from me to any 4567 keep-state setup add 1611 allow tcp from me to any 4568 keep-state setup add 1612 allow tcp from me to any 4569 keep-state setup add 1620 allow tcp from me to any 4577 keep-state setup add 1621 allow tcp from me to any 4578 keep-state setup add 1622 allow tcp from me to any 4579 keep-state setup add 1630 allow tcp from me to any 4560 keep-state setup add 1631 allow tcp from me to any 4561 keep-state setup add 1632 allow tcp from me to any 4562 keep-state setup add 1640 allow tcp from me to any 4570 keep-state setup add 1641 allow tcp from me to any 4571 keep-state setup add 1642 allow tcp from me to any 4572 keep-state setup add 1700 allow tcp from any to any 443 keep-state setup #Bonjour #add 2000 allow udp from any to any 5653 keep-state setup #Everything that isn't in a prior rule add 65533 reject log udp from any to any in add 65534 deny log ip from any to any in
每次重启都需要重新build立正确的规则。 它不会直接影响其他规则,但可以间接(例如,如果另一个规则允许IP出于任何原因,这可能会阻止IP …)
你正在寻找日益stream行的fail2ban,它读取日志文件,并禁止人们做“坏”事情的IP地址。
另外,你也不太想为每个禁令添加规则,这很快就会污染规则。 您可以添加规则来阻止表,然后将IP添加到表中。 表格只是一个IP列表,所以您可以轻松地将规则应用到整个表格,而不是单独指定它们。
例如,我使用了一个“默认”防火墙脚本,这个脚本的前两个规则是:
00030 deny ip from "table(1)" to me 00031 deny ip from "table(2)" to me
关键字“我”意味着我的任何本地IP地址。 表1是Fail2Ban,当它find一个不喜欢的IP时,它将IP添加到该表中一段时间。 表2列出了Spamhaus的DROP列表,这是一个已知的专业垃圾邮件系统列表(详见他们的网站)。
您可以使用以下命令手动将IP添加到表中:
ipfw table 2 add
在我的服务器上,表2在启动时由脚本/usr/local/etc/rc.d/spamhaus-drop自动填充,如下所示:
#!/bin/csh fetch -i /tmp/drop.lasso -o /tmp/drop.lasso "http://www.spamhaus.org/drop/drop.lasso" sed -i '' "s/;.*//" /tmp/drop.lasso ipfw table 2 flush foreach IP ( `cat /tmp/drop.lasso` ) ipfw table 2 add $IP end
我强烈build议您编写自己的脚本来configuration防火墙。 在FreeBSD上使用ipfw很容易,而且我不会用GUI(我知道这听起来很难,但是基础比你想象的要容易)。
我的configuration脚本在/etc/ipfw.rules ,像这样:
#!/bin/sh #FOR KEAIRA - The computer this script was customized for. ipfw -q -f flush # Delete all rules cmd="ipfw add" # Ban tables $cmd 00030 deny ip from "table(1)" to me $cmd 00031 deny ip from "table(2)" to me # Statefull firewall config, more secure $cmd 00060 check-state # Allow outbound traffic $cmd 00130 allow ip from me to any keep-state # SSH - I have SSH on port 2222 to keep the script kiddies out. $cmd 11020 allow tcp from any to me dst-port 2222 setup keep-state # DNS $cmd 11090 allow tcp from any to me domain setup keep-state $cmd 11092 allow udp from any to me domain # NTP $cmd 11100 allow tcp from any to me ntp setup keep-state $cmd 11101 allow udp from any to me ntp # General Network - ICMP & IGMP $cmd 61001 allow icmp from any to any $cmd 61002 allow igmp from any to any # Deny the rest $cmd 65500 deny ip from any to any
此服务器正在运行SSH(在备用端口上),DNS和NTP(时间)。 其余的只是我放在我所有防火墙脚本中的通用东西。 如果您需要打开其他服务,请告诉我,我将自定义该示例。 大多数服务名称可以从/etc/services获得,这使得写入这些非常简单。 每个规则都不一定要有不同的号码,但是这使得pipe理起来更简单。 规则按数字顺序进行处理,否则对数字没有意义。
这个脚本是通过把这些行放在/etc/rc.conf激活的
firewall_enable="YES" # Firewall On firewall_script="/etc/ipfw.rules" # Firewall Script
设置Fail2Ban是一个更多的工作,但它也是非常简单的。 如果你想了解更多的细节,请问。
任何帮助,非常感谢,即使RTFM的,如果你可以给一个资源的链接,可以帮助我更好地了解它。
这里是: handbook / firewalls.html