如何只允许我自己的 ip 登录我的 ubuntu 服务器?昨天有 1500 次不必要的失败登录尝试。
只允许我自己的 IP,对黑客来说可能是最安全的吗?我仅将 Postfix 用于发送,因此不需要允许任何传入连接。
您可以使用 ufw
当您启用ufw任何规则以允许某些流量时,所有流量都处于拒绝状态。
sudo ufw enable
使用此命令,您将启用 Ubuntu Firewall
查看状态使用
sudo ufw status
Status: active
To Action From
-- ------ ----
69 ALLOW Anywhere
53 ALLOW Anywhere
22 ALLOW 213.xxx.xxx.xxx
80/tcp ALLOW 194.247.xxx.xxx
21/tcp ALLOW 194.247.xxx.xxx
69 (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
Run Code Online (Sandbox Code Playgroud)
此规则接受任何的port 69,任何对port 53,SSH的213.xxx.xxx.xxx,80并且21从194.247.xxx.xxx...并拒绝任何其他入站流量
ufw 中规则的完整命令是
sudo ufw [--dry-run] [delete] [insert NUM] allow|deny|reject|limit [in|out on INTERFACE] [log|log-all] [proto protocol] [from ADDRESS [port PORT]][to ADDRESS [port PORT]]
Run Code Online (Sandbox Code Playgroud)
基于此规则模板,你可以allow from xxx.xxx.xxx.xxx在port 80这个规则
对于特定主机
sudo ufw allow proto tcp from xxx.xxx.xxx.xxx to any port 80
Run Code Online (Sandbox Code Playgroud)
如果您想允许任何人访问您的网络服务器
sudo ufw allow proto tcp from any to any port 80
Run Code Online (Sandbox Code Playgroud)
如果您希望允许从特定网络访问
sudo ufw allow proto tcp from xxx.xxx.xxx.xxx/yy to any port 80
Run Code Online (Sandbox Code Playgroud)
在哪里
xxx.xxx.xxx.xxx - 代表网络ip
yy - 代表网络掩码
如果您不使用(或不想使用)ufw而是需要iptables答案,这里是如何做到这一点的要点。请注意,您还必须适应 IPv4 和 IPv6。
首先,检查您的iptables规则 ( iptables -L -n)。假设默认安装,那么您将没有任何规则。
iptables -A INPUT -s SOURCEIP/CIDR -p tcp --dport PORTNUM -j ACCEPT是在表末尾添加规则的通用语法INPUT,具体说明“我想允许源 IP 地址(以及 IP 范围,如果提供了 CIDR 后缀 - 没有必要)在请求时访问我的服务器通过 TCP 到达端口 PORTNUM”。如果您只想允许一个IP地址,则省略带/CIDR的部分SOURCEIP。
如果 INPUT 表中有任何拒绝访问的规则(在最后),您将需要使用iptables -I INPUT RULENUMBER(其中是表中要插入此规则的RULENUMBER行号)。INPUT
但是,请确保您还添加了如下规则:
iptables -A INPUT -i lo -j ACCEPT - 接受本地主机环回上的任何内容(127.0.0.1 等)
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT- 接受与已建立的连接相关的流量(需要确保与服务器和远程服务器的通信)客户作品)
配置完成后,您现在需要添加一条规则来拒绝所有其他连接。这样的规则将是这样的,添加到表的末尾INPUT:
iptables -A INPUT -j REJECT --reject-with icmp-host-unreachable。
首先,检查您的ip6tables规则 ( ip6tables -L -n)。假设默认安装,那么您将没有任何规则。
ip6tables -A INPUT -s SOURCEIP/CIDR -p tcp --dport PORTNUM -j ACCEPT是在表末尾添加规则的通用语法INPUT,具体说明“我想允许源 IP 地址(以及 IP 范围,如果提供了 CIDR 后缀 - 没有必要)在请求时访问我的服务器通过 TCP 到达端口 PORTNUM”。如果您只想允许一个IP地址,则省略带/CIDR的部分SOURCEIP。
如果 INPUT 表中有任何拒绝访问的规则(在最后),您将需要使用ip6tables -I INPUT RULENUMBER(其中是表中要插入此规则的RULENUMBER行号)。INPUT
但是,请确保您还添加了如下规则:
ip6tables -A INPUT -i lo -j ACCEPT - 接受本地主机环回上的任何内容(127.0.0.1 等)
ip6tables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT- 接受与已建立的连接相关的流量(需要确保与服务器和远程服务器的通信)客户作品)
此外,对于 IPv6,您实际上需要接受几乎所有 ICMPv6 数据包,因为它比 IPv4 要求更高。这将实现:
ip6tables -A INPUT -p ipv6-icmp -j ACCPET
配置完成后,您现在需要添加一条规则来拒绝所有其他连接。这样的规则将是这样的,添加到表的末尾INPUT:
ip6tables -A INPUT -j REJECT --reject-with icmp6-addr-unreachable。
是时候坚持遵守规则了。让我们安装吧iptables-persistent。 apt-get install iptables-persistent。
安装程序将询问您是否要保存当前规则。对于 IPv4 和 IPv6 提示,请选择“是”。我们刚刚“添加”或创建的规则集现在将持续可用。
(如果您使用ufw而不是iptables,则不需要安装此软件包)
虽然ufw会自动管理规则集以确保其顺序正确,iptables但这是执行高级防火墙的“系统管理员”方式。UFW 只是执行简单的规则和功能 - 复杂的规则和功能您必须使用语法来处理iptables或手动添加到配置文件中。ufwiptables