firewalld和iptables

 firewalld

FirewallD提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。firewalld将网卡对应到不同的区域(zone),zone 默认共有9个,block dmz drop external home internal public trusted work.不同的区域之间的差异是其对待数据包的默认行为不同,根据区域名字我们可以很直观的知道该区域的特征,在CentOS7系统中,默认区域被设置为public.

使用命令行接口配置防火墙

    firewall-cmd --state                            查看firewalld的状态
    firewall-cmd --get-active-zones       查看当前活动的区域,附带接口列表
    firewall-cmd --get-default-zone        查看默认区域
    firewall-cmd --zone=public --list-all   列出指定区域的详细设置
    firewall-cmd  --list-all-zones               列出所有区域的详细设置
    firewall-cmd --get-services                列出所有预设服务
    firewall-cmd --set-default-zone=trusted  设置默认区域为trusted

将默认区域设置为trusted,尽管没有允许http服务,但客户端浏览器任可访问

  • firewall-cmd --add-source=172.25.254.59 --zone=trusted  来自172.25.254.59主机通过的是trusted区域
  • firewall-cmd --remove-source=172.25.254.59 --zone=trusted

  • firewall-cmd --remove-interface=eth1 --zone=public  将eth1端口从public区域移除
  • firewall-cmd --add-interface=eth1 --zone=trusted   将eth1端口添加到trusted区域

  • firewall-cmd --add-service=http      允许http服务
  • firewall-cmd --add-port=8080/tcp  允许http的8080端口

  • firewall-cmd  --add-server=httpd   允许http服务
  • firewall-cmd --permanent --add-server=httpd  永久允许http服务,需要--reload才能生效
  • firewall-cmd --reload  更新防火墙规则,无需断开链接
  • firewall-cmd --complate-reload   更新防火墙规则,需要断开链接(可用ssh服务作测试)

  • firewall-cmd --direct --get-all-rules   查看直接端口模式添加的规则
  • firewall-cmd --direct --add-rule ipv4 filter INPUT 2 -s 172.25.254.59 -p tcp --dport 22 -j ACCEPT   允许来自172.25.254.59的主机访问本机的22号端口

  • firewall-cmd --direct --remove-rule ipv4 filter INPUT 2 -s 172.25.254.59 -p tcp --dport 22 -j ACCEPT 移除允许来172.25.254.59的主机访问本机的22号端口

  • firewall-cmd --direct --add-rule ipv4 filter INPUT 2  !-s 172.25.254.59 -p tcp --dport 22 -j ACCEPT  允许来自除了172.25.254.59的所有主机访问本机的22号端口

cat /etc/services |grep ssh  查看ssh服务的相关端口

端口转发:

  1. 当我们想把某个端口隐藏起来的时候,就可以在防火墙上阻止那个端口访问,然后再开一个不规则的端口,之后配置防火墙的端口转发,将流量转发过去。
  2. 端口转发还可以做流量分发,一个防火墙拖着好多台运行着不同服务的机器,然后用防火墙将不同端口的流量转发至不同机器。

firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.79  ssh链接本机的22号端口的主机让其自动连接到172.25.254.79主机上

firewall-cmd --add-masquerade  打开伪装功能

测试:在远程登陆172.25.254.159主机时,实际登陆的是172.25.254.79主机

firewall-cmd -add-icmp-block=echo-request   让其他主机ping不通自己

firewall-cmd --remove-icmp-block=echo-request 

firewall-cmd -add-icmp-block=echo-request --timeout=10  在10s后能够ping通

地址转换:

场景:不同网段的两台主机能够通过双网卡主机的地址转换ping通对方

主机一:ip 192.168.0.1 gateway 19.168.0.100 ping不通172.25.254.59

主机二:eth0=172.25.254.79 eth1=192.168.0.100

vim /etc/sysctl  打开转发功能

测试:主机192.16 8.0.100可以ping通172.25.254.59

主机172.25.254.59在远程登陆172.25.254.79时,发现实际登陆的是192.168.0.1

iptabels

netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。

iptables采用“表”和“链”的分层结构,在linux中iptables主要有三张表五条链:

三张表即filter表、nat表、mangle表,分别用于实现包过滤,网络地址转换、包重构(修改)功能

filter表有三个链:INPUT、FORWARD、OUTPUT
作用:过滤数据包 

Nat表有三个链:PREROUTING、POSTROUTING、OUTPUT
作用:用于网络地址转换(IP、端口)

Mangle表有五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
作用:修改数据包的服务类型等

iptables -nL  可以看到filter表中的默认策略

iptables -t nat -L PREROUTING       查看nat表PREROUTING链的规则


iptables -A INPUT -s 192.168.0.4 -p tcp --dport 23 -j REJECT
iptables -A INPUT -s 192.168.0.4 -p tcp --dport 23 -j DROP (访问拒绝,无任何提示)
iptables -F   刷新策略 

iptables -A INPUT -s 172.25.254.59 -j ACCEPT  添加规则

iptables -I INPUT 2 -s 172.25.254.79 -p tcp --dport 22 -j REJECT  插入到第二条策略

iptables -R INPUT 3 -j ACCEPT 将原来编号为2的规则内容替换为-j  DROP

iptables -D INPUT 2  删除filter表中的第二条规则

ptables -P INPUT DROP 设置filter表INPUT链的默认规则 ,当数据包没有被规则列表里的任何规则匹配到时,按此默认规则处理


 iptables -N redhat        添加自定义链名


 iptables -E westos WESTOS:修改规则链名称

iptables -D redhat 1    删除自定义链下的策略
 iptables -X redhat      删除自定义链

隐式扩展:

tcp:--sport
          --dport
          --tcp-flags mask comp
  例:  "--tcp-flags SYN,ACK,FIN,RST SYN"表示检查的标志SYN,ACK,FIN,RST四个,其中SYN必须为1,余下的必须为0
          --syn:用于匹配第一次握手,相当于--tcp-flags SYN,ACK,FIN,RST SYN
 icmp:
   --icmp-type echo-request:8
                       echo-reply:0
iptables -A INPUT -d 172.25.254.79 -p icmp --icmp-type 8 -j DROP 限制任何主机ping172.25.254.79

显示扩展:

multiport扩展:以离散方式定义多端口匹配,最多指定15个端口

  iptables -A INPUT -s 172.25.254.0/24 -d 172.25.254.79 -p tcp -m mutiport --dports 22,80 -j ACCEPT]

iprange扩展:指明连续的ip地址范围

  iptables -A INPUT -d 172.25.254.79 -p tcp --dport 80 -m iprange --src-range 172.25.254.10-172.25.254.20 -j DROP

string扩展:对报文中的应用层程序做字符串模式匹配检测

  iptables -A OUTPUT -s 172.25.254.79 -d 172.25.254.0/24 -p tcp --sport 80 -m string --algo bm --stirng "hehe" -j REJECT

time扩展:根据报文到达的时间与指定的时间范围进行匹配

 iptables -A INPUT -s 172.25.254.0/24 -d 172.5.254.79 -p tcp --dport 80 -m time --timestart 14:30 --timestop 18:30 --weekdays Sat,Sun --kerneltz -j DROP

limit扩展:基于收发报文的速率作匹配

  iptables -I INPUT -d 172.25.254.79 -p icmp --icmp--type 8 -m limit --limit 3/minute --limit-burst 5 -j ACCEPT

connlimit扩展:根据每客户端ip作并发链接数量匹配

    --connlimit-upto n:连接的数量小于等于n时匹配

    --connlimit-above n:连接的数量大于n时匹配

 iptables -A INPUT -d 172.25.254.79 -p tcp --dport 21 -m connlimit --connlimit-above 2 -j REJECT

猜你喜欢

转载自blog.csdn.net/owlcity123/article/details/81806943
今日推荐