iptables 仅允许某些服务

iptables 仅允许某些服务

我正在我的服务器 asterisk 中运行,我想尽可能地保护我的系统。它目前受 fail2ban 保护,我想添加更多保护。理想情况下,我想阻止所有内容并仅允许:

  • ssh,端口 33332
  • 星号,端口 35060
  • RTP 10000 至 200000

  • 阻止过去 10 分钟内 3 次失败的 ssh 尝试,持续 1 天
  • 阻止 ICMP

答案1

试试这个。

创建iptables.sh并投入/root/

授予 x 权限

chmod +x /root/iptables.sh

编辑/etc/rc.local以在重启时触发脚本

sudo nano /etc/rc.local

在文件末尾添加

 sh /root/iptables.sh

脚本

#!/bin/bash

#echo service iptables stop | at now + 3 min

#################################################
# clear existing chains
#################################################

/etc/init.d/iptables stop

iptables --flush
iptables --delete-chain

#################################################
# allow loopback
#################################################

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

#################################################
# drop all ICMP
#################################################

iptables -A INPUT -p icmp --icmp-type any -j DROP
iptables -A OUTPUT -p icmp -j DROP

#################################################
# allow established connections
#################################################

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#################################################
# allow public
#################################################

# 33332 
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 33332 -j ACCEPT

# 35060
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 35060 -j ACCEPT

# RTP 10000 up to 200000
iptables -A INPUT -p udp --match multiport --dports 10000:20000 -j ACCEPT

#################################################
# ssh
#################################################

iptables -N ATTACKED 
iptables -N ATTK_CHECK 
iptables -A INPUT -p tcp -m tcp --dport 22 -m recent --update --seconds 86400 --name BANNED --rsource -j DROP
iptables -A ATTACKED -m recent --update --seconds 600 --hitcount 3 -j LOG --log-prefix "IPTABLES (Rule ATTACKED): " --log-level 7
iptables -A ATTACKED -m recent --set --name BANNED --rsource -j DROP
iptables -A ATTK_CHECK -m recent --set --name ATTK –-rsource
iptables -A ATTK_CHECK -m recent --update --seconds 600 --hitcount 3 --name ATTK --rsource -j ATTACKED
iptables -A ATTK_CHECK -j ACCEPT


#################################################
# default policies
#################################################

iptables -P INPUT DROP

答案2

我相信这些规则会有所帮助

# Drop everything
iptables -P INPUT DROP

# Allow certain ports
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 33332 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 35060 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT

# Disable ICMP
iptables  -I  INPUT  -i  eth0  -p   icmp  -s  0/0  -d  0/0   -j  DROP

当然需要保存规则。Iptables-persistent 是一个很好的工具:

sudo apt-get install iptables-persistent

安装后,您可以随时保存/重新加载 iptables 规则:

sudo /etc/init.d/iptables-persistent save 
sudo /etc/init.d/iptables-persistent reload

SSH 阻止在 /etc/fail2ban/jail.conf 中完成,或者/etc/fail2ban/jail.local

bantime  = 86400
findtime = 600
maxretry = 3

祝你好运!

答案3

我建议安装防火墙构建器,例如shorewallufw。仅允许在您想要提供的服务所需的端口上传入流量。这些工具将帮助确保您允许关键流量(例如 DNS 和某些 ICMP 类型),同时阻止需要阻止的内容。它们还应记录适当的流量。

fail2ban确实适用于 Shorewall。您还可以相对轻松地限制连接速率。我还没有成功使用过 UFW,但我希望它也能与“fail2ban”配合使用。

相关内容