札记

  博客园  :: 首页  :: 新随笔  ::  :: 订阅 订阅  :: 管理

    iptables、firewalld 和 ufw 都是Linux系统中常用的防火墙软件,它们之间的区别如下:
    iptables: iptables 是Linux系统中最原始、最基础、最底层的防火墙软件,它可以直接配置Linux内核中的网络规则,控制网络数据包的流动。由于iptables配置比较复杂,需要对网络协议和规则有深入的了解,所以对于普通用户来说使用较为困难。
    firewalld:firewalld 是Red Hat公司在RHEL7中引入的一种新型防火墙软件,它是iptables的高级封装,提供了更加友好的界面以及更加简单的配置方式。firewalld支持动态添加或删除规则,可以在运行时实时更新防火墙规则,并且支持多种网络接口的管理和控制。
    ufw:ufw (Uncomplicated Firewall) 是Ubuntu中的一种简单易用的防火墙软件,它是iptables的又一种高级封装,提供了更加易于使用的命令行界面和配置文件。ufw配置简单,支持多种规则类型,例如允许、拒绝、限制等,可以快速地配置常见的网络服务和端口。

iptables 命令
iptables是Linux下最常用的防火墙软件,它可以通过命令行配置各种规则,控制进出网络的数据包。以下是一些常用的iptables命令:

查看和修改iptables规则:

       iptables -L:列出当前所有规则;
       iptables -L -n:列出所有防火墙规则,并显示端口号;
       iptables -F 清空 iptables 规则,可以删除所有规则,从而重新开始配置。
       iptables -P INPUT DROP 将 INPUT 链的默认策略设置为 DROP,拒绝所有的入站数据包。

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT  :允许从 eth0 接口到 eth1 接口的数据包转发,用于多网卡的情况。
    iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT:允许来自于192.168.1.0/24网段的数据包通过;
    iptables -A OUTPUT -d 192.168.1.0/24 -j ACCEPT:允许发往192.168.1.0/24网段的数据包通过;
    iptables -A OUTPUT -d 192.168.1.10 -j DROP 拒绝系统向指定 IP 地址发送数据包,用于限制系统对某些地址的访问
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT: 允许22端口的数据包通过;
    iptables -A INPUT -p tcp --dport 49152:65534 -j ACCEPT 打开49152~65534之间的端口,打开49152~65534之间的端口
    iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT :允许已经建立的连接数据包通过防火墙。
    iptables -A INPUT -i lo -j ACCEPT :允许本地回环接口的数据包通过防火墙。
    iptables -A INPUT -j DROP  :拒绝所有未匹配到规则的数据包进入系统。
    iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT :限制 HTTP 流量,每分钟最多接受 25 个数据包,最大缓冲 100 个数据包。
    iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/second -j ACCEPT :限制 ICMP 流量,每秒最多接受一个 echo-request 数据包。
    iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j REJECT :限制 HTTP 流量,最多允许 10 个并发连接,超过限制则拒绝连接。
    iptables -A INPUT -p tcp --dport 22 -m recent --name ssh --set -j ACCEPT : 使用 recent 模块记录 SSH 连接,设置为 SSH,如果连续多次连接失败,则拒绝连接。可以通过以下命令实现:
    iptables -A INPUT -p tcp --dport 22 -m recent --name ssh --rcheck --seconds 60 --hitcount 3 -j DROP :检查 SSH 连接是否已经超过 3 次,如果在 60 秒内达到了 3 次,则拒绝连接。
    iptables -A INPUT -m geoip --src-cc CN -j DROP 使用 geoip 模块限制国家/地区访问,只允许来自中国的数据包进入系统。

    iptables -D 删除指定规则,可以根据规则的编号或者内容来删除已经存在的规则。例如:
    iptables -D INPUT 2 删除 INPUT 链中的第二条规则。
    iptables -D INPUT -s 192.168.1.0/24 -j ACCEPT:删除来自于192.168.1.0/24网段的允许规则。
    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
    使用 NAT 技术将内部网络的 IP 地址转换成公网 IP 地址,从而实现对外访问。这个命令是在 nat 表中新增 POSTROUTING 规则,表示对从 192.168.1.0/24 网段发出的数据包,通过 eth0 接口发送出去时进行地址转换,使用 MASQUERADE 参数可以自动获取外部网络的 IP 地址

 
清空iptables规则:
        iptables -F:清空所有规则;
        iptables -X:删除所有用户自定义链;
        iptables -Z:将所有计数器归零。

保存和恢复iptables规则:

    iptables-save > /etc/sysconfig/iptables:将当前iptables规则保存到文件中;
    iptables-restore < /etc/sysconfig/iptables:从文件中恢复iptables规则。
     或者
    /etc/rc.d/init.d/iptables save
    /etc/init.d/iptables restart
         
     或者
     service iptables restart

 
需要注意的是,iptables的配置需要根据实际情况进行调整,不正确的配置可能会导致网络连接失败或者安全漏洞。建议在配置防火墙前先备份配置文件,以免误操作导致不可挽回的后果。

示例
可以通过修改/etc/sysconfig/iptables文件的方式开启端口,如下
vi /etc/sysconfig/iptables

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT


firewalld 命令
firewalld是一种新的防火墙软件,它提供了一种更加灵活和动态的方式来管理防火墙规则。以下是一些常见的firewalld命令:

启动和停止firewalld:

  systemctl start firewalld:启动firewalld服务;
  systemctl stop firewalld:停止firewalld服务;
  systemctl enable firewalld:设置firewalld服务为开机启动;
  systemctl disable firewalld:禁止firewalld服务开机启动。
  systemctl status firewalld  查看防火墙是否开启


查看和修改firewalld规则:
     

    firewall-cmd --list-all:列出当前防火墙的所有规则;
    firewall-cmd --zone=public --add-port=80/tcp --permanent:开放80端口的TCP访问权限,并永久生效;
    firewall-cmd --zone=public --remove-port=80/tcp --permanent:关闭80端口的TCP访问权限,
    firewall-cmd --zone=public --list-ports:列出当前开放的端口;
    firewall-cmd --zone=public --add-interface=eth0(永久生效再加上 --permanent 然后reload防火墙)将接口添加到区域(默认接口都在public)
    firewall-cmd --add-service=ftp :临时开放ftp服务
    firewall-cmd --add-service=ftp --permanent :永久开放ftp服务并永久生效;
      
    firewall-cmd --get-default-zone:显示当前默认的防火墙区域;
    firewall-cmd --set-default-zone=public :设置默认的防火墙区域为public。
    firewall-cmd --reload:重新加载防火墙规则。
    firewall-cmd --complete-reload(两者的区别就是第一个无需断开连接,就是firewalld特性之一动态添加规则,第二个需要断开连接,类似重启服务)
    
    firewall-cmd --state 查看防火墙状态方法2
    firewall-cmd --version:查看版本
    firewall-cmd --help :查看帮助
    firewall-cmd --get-active-zones :查看区域信息
    firewall-cmd --get-zones ##列出支持的zone
    firewall-cmd --get-zone-of-interface=eth0 :查看指定接口所属区域信息
    firewall-cmd --panic-on :拒绝所有包
    firewall-cmd --panic-off :取消拒绝状态
    firewall-cmd --query-panic :查看是否拒绝
    firewall-cmd --get-services ##列出支持的服务,在列表中的服务是放行的
    firewall-cmd --query-service ftp ##查看ftp服务是否支持,返回yes或者no


示例:

在指定区域或者去掉需要开放的端口(记得重启防火墙)

firewall-cmd --zone=public --add-port=80/tcp(永久生效再加上 --permanent)
firewall-cmd --permanent--zone=public --remove-port=8080/tcp
firewall-cmd --permanent --zone=public --list-ports
firewall-cmd --reload  (加载配置,使得修改有效)
systemctl start firewalld.service 重启服务也达到重新加载配置的效果

需要注意的是,firewalld的配置需要根据实际情况进行调整,不正确的配置可能会导致网络连接失败或者安全漏洞。建议在配置防火墙前先备份配置文件


ufw 命令
ufw是Ubuntu下的一种基于iptables的简单防火墙命令,它提供了一组简化的命令,使得配置防火墙变得更加容易。以下是一些常用的ufw命令:

启用和停用ufw:

  ufw enable:启用ufw防火墙;
  ufw disable:禁用ufw防火墙;
  ufw status:查看ufw防火墙状态。

查看和修改ufw规则:

ufw allow 端口号:开放指定的端口;
ufw deny 端口号:拒绝指定的端口;
ufw delete allow 端口号:删除已经开放的端口;
ufw delete deny 端口号:删除已经拒绝的端口;
ufw reload:重新加载ufw规则。


设置默认的ufw规则:

ufw default allow:设置默认允许所有连接;
ufw default deny:设置默认拒绝所有连接。


示例:
    ufw allow 80/tcp
    ufw allow 443/tcp
    ufw reload

posted on 2024-04-01 17:17  小泥巴2008  阅读(121)  评论(0编辑  收藏  举报