iptables拒绝所有端口放开特定端口方法流程,iptables允许ping和拒绝ping、hosts阻止所有ip指定放开ip方法流程

文章目录

  • 说明
  • iptables拒绝所有端口放开特定端口方法流程
    • 拒绝所有端口
    • 允许特定端口
    • 临时规则写入配置文件永久生效
  • iptables允许ping和拒绝ping
    • 禁止允许ping说明
      • 内核参数设置
        • 禁止
        • 允许
      • 防火墙设置
        • 禁止
        • 允许
    • 禁止ping
    • 允许ping
      • 外部ping通虚拟机内部
      • 虚拟机内部使用ping
      • 规则详细
  • hosts阻止所有ip指定放开ip方法流程
    • 允许需要访问ip
    • 拒绝所有

说明

  • 收到下面一封邮件,简单来说就是需要一个虚拟机,外网能ping同,但端口全封,给他们做渗透用。
    在这里插入图片描述
  • 问了需求 不需要登录,封死所有端口。
    所以 就用下面2个方式双重封死。

iptables拒绝所有端口放开特定端口方法流程

拒绝所有端口

  • 命令:

  • iptables -P INPUT DROP【我这就执行了这个进的】

  • iptables -P FORWARD DROP

  • iptables -P OUTPUT DROP

  • 注:上面执行以后,看不到具体规则且iptables -F是无法清除上面规则的,同时ping也不能使用。

  • 测试
    iptables拒绝所有端口放开特定端口方法流程,iptables允许ping和拒绝ping、hosts阻止所有ip指定放开ip方法流程_第1张图片

允许特定端口

  • 我这不需要放开,下面是说明,按需放开端口【特别是ssh,不放开外部无法登录,我这是控制台登录的,所以啥都没放】
#允许已建立的连接通过【不执行也可以,但有些特定版本不执行这个可能下面规则不会生效】
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服务的,如果服务没启动,重启后下面规则依然不会生效】
  • 命令iptables-save > /etc/sysconfig/iptables

iptables拒绝所有端口放开特定端口方法流程,iptables允许ping和拒绝ping、hosts阻止所有ip指定放开ip方法流程_第2张图片

iptables允许ping和拒绝ping

  • 首先,我执行iptables -P INPUT DROP命令以后,外部就ping不通了,我执行iptables -F以后依然ping不通,折腾许久外部都无法ping通,我以为我网络出问题了,但每次重启就好,后来才发现这个命令的规则-F清除不掉,卧槽。

禁止允许ping说明

  • 下面内容来源网络整理,自行测试。

内核参数设置

禁止
  • 临时禁止ping设置
echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all
  • 永久禁止ping设置
echo net.ipv4.icmp_echo_ignore_all=1 >> /etc/sysctl.conf
  • 使/etc/sysctl.conf 配置文件生效
    注意:如果 /etc/sysctl.conf 配置文件里已经有net.ipv4.icmp_echo_ignore_all字段了,那么直接用 vim 进去直接修改0或1即可。
sysctl -p 
允许
  • 临时允许ping设置
echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all
  • 永久允许ping设置
echo net.ipv4.icmp_echo_ignore_all=0 >> /etc/sysctl.conf
  • 使/etc/sysctl.conf 配置文件生效
    注意:如果 /etc/sysctl.conf 配置文件里已经有net.ipv4.icmp_echo_ignore_all字段了,那么直接用 vim 进去直接修改0或1即可
sysctl -p 

防火墙设置

  • 注:使用以下方法的前提是内核配置是默认值,也就是内核没有禁ping
禁止
  • 禁止PING设置
iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
  • 上面代码参数说明
    • --icmp-type 8 echo request 表示回显请求(ping请求)
    • 0/0 表示所有 IP
允许
  • 允许PING设置 【方式1】
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
  • 允许PING设置 【方式2】
iptables -A INPUT -i eth+ -p icmp --icmp-type 8 -j ACCEPT
  • 允许PING设置 【方式1】
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
  • 允许PING设置 【方式2】
iptables -A OUTPUT -o eth+ -p icmp --icmp-type 0 -j ACCEPT

禁止ping

  • 我这用的是这种方式 iptables -P INPUT DROP【慎用,所以端口都无法进出】

允许ping

外部ping通虚拟机内部

  • 我执行了下面命令以后
    iptables -A INPUT -i eth+ -p icmp --icmp-type 8 -j ACCEPT【这条命令执行完外部就通虚拟机了】
    iptables -A OUTPUT -o eth+ -p icmp --icmp-type 0 -j ACCEPT【好像这个没生效?】
    外部就可以ping通该虚拟机ip
    iptables拒绝所有端口放开特定端口方法流程,iptables允许ping和拒绝ping、hosts阻止所有ip指定放开ip方法流程_第3张图片

虚拟机内部使用ping

  • 但我发现,虚拟机内部不能使用ping了。我以为是面中的output没生效。
    • 但我最后发现,换个方式执行INPUT以后,虚拟机内部就能使用ping了。
      iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
    • 所以这里的output到底是啥逻辑?

iptables拒绝所有端口放开特定端口方法流程,iptables允许ping和拒绝ping、hosts阻止所有ip指定放开ip方法流程_第4张图片

规则详细

至此未知,现在的规则详细如下:
iptables拒绝所有端口放开特定端口方法流程,iptables允许ping和拒绝ping、hosts阻止所有ip指定放开ip方法流程_第5张图片

hosts阻止所有ip指定放开ip方法流程

其实上面的iptables已经限制的死死的了,但怕iptables出意外,所以用hosts加固一下

允许需要访问ip

  • 这里以sshd服务为例,配置完成后,只允许配置允许的IP才能ssh连接本机服务器,其他IP拒绝
    注:一定要先允许在拒绝所有
  • 编辑hosts.allow配置文件

vi /etc/hosts.allow     
  • 允许1个或多个ip
    末尾添加允许的IP远程登录本机服务器,如果有多个IP,以逗号隔开连续写即可
sshd:111.2.3.4,111.6.7.8.9   
  • 以段添加
    添加允许的111.2.3网段的IP远程登录本机服务器
sshd:111.2.3.

拒绝所有

  • 编辑hosts.deny配置文件
vi /etc/hosts.deny
  • 拒绝所有所有IP远程登录本机服务器
    末尾添加下面内容即可
sshd:ALL         

iptables拒绝所有端口放开特定端口方法流程,iptables允许ping和拒绝ping、hosts阻止所有ip指定放开ip方法流程_第6张图片

你可能感兴趣的:(玩转linux7+,iptables,hosts.deny,hosts.allow)