我正在我的服务器 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
我建议安装防火墙构建器,例如shorewall
或ufw
。仅允许在您想要提供的服务所需的端口上传入流量。这些工具将帮助确保您允许关键流量(例如 DNS 和某些 ICMP 类型),同时阻止需要阻止的内容。它们还应记录适当的流量。
fail2ban
确实适用于 Shorewall。您还可以相对轻松地限制连接速率。我还没有成功使用过 UFW,但我希望它也能与“fail2ban”配合使用。