赞
踩
命令:
iptables -P INPUT DROP
【我这就执行了这个进的】
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
注:上面执行以后,看不到具体规则且iptables -F
是无法清除上面规则的,同时ping也不能使用。
测试
命令:iptables -P INPUT ACCEPT
注:只有这个端口能放开上面拒绝的所有端口,iptables -F
是不能删除上面规则的。
验证
之前默认是已经封堵了,无法访问百度,允许以后,百度可以访问
我这需要放开2个ip段的22端口【这是放开端口,下面hosts是ip策略,分开做的】
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
更多说明
#允许已建立的连接通过【不执行也可以,但有些特定版本不执行这个可能下面规则不会生效】
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许 SSH 连接
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许 HTTP 连接
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 允许 HTTPS 连接
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables-save > /etc/sysconfig/iptables
iptables -P INPUT DROP
命令以后,外部就ping不通了,我执行iptables -F
以后依然ping不通,折腾许久外部都无法ping通,我以为我网络出问题了,但每次重启就好,后来才发现这个命令的规则-F清除不掉,卧槽。echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all
echo net.ipv4.icmp_echo_ignore_all=1 >> /etc/sysctl.conf
/etc/sysctl.conf
配置文件里已经有net.ipv4.icmp_echo_ignore_all
字段了,那么直接用 vim 进去直接修改0或1即可。sysctl -p
echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all
echo net.ipv4.icmp_echo_ignore_all=0 >> /etc/sysctl.conf
/etc/sysctl.conf
配置文件里已经有net.ipv4.icmp_echo_ignore_all
字段了,那么直接用 vim 进去直接修改0或1即可sysctl -p
iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
--icmp-type 8 echo request 表示回显请求(ping请求)
0/0 表示所有 IP
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -i eth+ -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -o eth+ -p icmp --icmp-type 0 -j ACCEPT
iptables -P INPUT DROP
【慎用,所以端口都无法进出】iptables -A INPUT -i eth+ -p icmp --icmp-type 8 -j ACCEPT
【这条命令执行完外部就通虚拟机了】iptables -A OUTPUT -o eth+ -p icmp --icmp-type 0 -j ACCEPT
【好像这个没生效?】iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
至此未知,现在的规则详细如下:
其实上面的iptables已经限制的死死的了,但怕iptables出意外,所以用hosts加固一下
vi /etc/hosts.allow
sshd:111.2.3.4,111.6.7.8.9
sshd:111.2.3.
假如你现在用的内网ip地址访问的公网,你在虚拟机上放开你现在用的ip地址是没用的
如,我现在用的内网ip绑定的路由器,我把内网地址和我路由器地址都放开了,依然无法访问,放开ALL就能访问
如何看内网地址转换后访问过来的地址?
先放开all,正常登录上虚拟机,然后虚拟机里面执行lastlog
【这个命令会记录登录信息】
如下,可以看到我这公网出口地址是70.92结尾的ip
现在回到虚拟机内部,放开这个70.92的ip地址,注释ALL,即可正常访问了
vi /etc/hosts.deny
sshd:ALL
#!/bin/bash
while true; do
# 读取系统日志文件进行监测
grep -E "sgdifi|wa/xzwas|wa/higehfd|wa" /var/log/system.log | while read -r log; do
# 解析日志行,获取用户信息和相关IP地址
username=$(echo "$log" | grep -oE "sgdifi|wa/xzwas|wa/higehfd|wa")
ip_address=$(echo "$log" | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b")
# 锁定用户账户
lock_user_account "$username"
# 实施IP封堵
block_ip_address "$ip_address"
done
sleep 300 # 暂停5分钟后再次监测
done
lock_user_account() {
# 锁定用户账户的实际操作,这里作为示例,将用户添加到黑名单
echo "$1" >> /etc/blacklist.txt
}
block_ip_address() {
# 封堵IP地址的实际操作,这里作为示例,使用iptables命令封堵IP
iptables -A INPUT -s "$1" -j DROP
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。