第十三章 LINUX安全IPTABLES基础-CENTOS7.5知识

第一部分、安装配置
[root@localhost~]# systemctl stop firewalld
[root@localhost~]# systemctl disable firewalld

yum install iptables-services
systemctl start iptables
systemctl enable iptables

第二部分、防火墙:iptables设置
规则写好了,不次于硬件级防火墙
作用:包过滤技术,类似于ACL
当linux服务器作为路由转发设备时,可以过滤来往数据包
作为独立服务器时,可以对进出数据包进行安全过滤。

开启路由转发功能(与多个网络相关的路由功能开启都需要):
方法:
cat /proc/sys/net/ipv4/ip_forward值为1,则开启;若为0则
echo 1 > /proc/sys/net/ipv4/ip_forward
vi /etc/sysctl.conf
cd /usr/lib/sysctl.d
vi 00-system.conf
net.ipv4.ip_forward = 1

iptables有四个表table和五个链chain:
iptables的四个表:四个功能方向
raw
Mangle:QOS网络服务品质
nat:网络地址转换
filter:过滤规则的主要表
五个链:主要写入规则,数据流方向
如:filter: INPUT FORWARD OUTPUT
INPUT:处理所有访问我的请求
OUTPUT: 出站规则
FORWARD:处理转发规则
PREROUTING:路由前
POSTROUTING:路由后
开启防火墙:setup或service iptables start
2.查看防火墙规则列表:
iptables -nL 或者iptables -L -n

  1. iptables -F 清空所有规则策略
    4.命令语法
    iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
    ****
    注释:
    控制类型:
    ACCEPT 放行
    DROP 丢弃,不回应
    REJECT 拒绝,并回应
    LOG 做拒绝也不放行,记录日志
    选项 :
    -I 插入规则,默认插入到第1条
    -A 追加规则,默认在最后追加
    -P 修改默认的规则(ACCEPT DROP)
    iptables -P INPUT/OUTPUT/FORWARD ACCEPT/DROP
    -F 清空所有规则
    -D 删除一条规则
    -nvL --line-numbers 查看所有规则链的详细信息
    watch -n1 iptables -nvL --line-numbers 每一秒观察数据包状态
    注意事项:
    1)不指定表名,默认就是filter表,所以我们主要以filter为主,后续不再加表名。
    2)不指定链名,默认指所有链。如:iptables -F 并观察iptables -nL,检查默认动作
    3)设置默认动作:如iptables -P INPUT DROP
    4)选项、链名、控制类型必须大写,其他为小写
    5)除-P -F -D外,必须写条件
    6.尝试编写:
    iptables -A INPUT -p tcp --dport 80 -j REJECT/DROP
    iptables -A INPUT -p tcp --dport 2200 -j ACCEPT
    iptables -I INPUT -p udp --dport 67 -j DROP
    iptables -I INPUT 2 -p tcp --dport 2200 -j ACCEPT
    iptables -D INPUT 2
    7.条件编写:
    1)通用匹配:
    特点:独立使用,不依赖与其他条件
    -p 协议名,icmp、tcp、udp: dns 53,QQ 8000,DHCP 67
    -s 源IP
    -d 目标IP 192.168.1.0/24 -j ACCEPT
    -i eth0 从哪个网卡进来
    -o eth1 从哪个网卡出去
    注意!的用法
    [root@localhost [local~]# iptables -I INPUT -p icmp -j DROP
    [root@localhost [local~]# iptables -I INPUT -s 10.20.30.0/24 -j DROP
    [root@localhost [local~]# iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP
    [root@localhost [local~]# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
    [root@localhost [local~]# iptables -A INPUT -i eth1 -s 172.16.0.0/16 -j DROP
    2)隐含匹配:
    端口匹配:--sport 源端口、--dport 目的端口
    TCP标记匹配:--tcp-flags 检查范围 被设置的标记 SYN/FIN
    iptables -I INPUT -s 172.18.11.87 -p tcp --dport 22 --tcp-flags SYN,RST,ACK,FIN RST -j DROP
    ICMP类型匹配:--icmp-type ICMP类型8/0/3
    如:
    [root@localhost [local~]# iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
    [root@localhost [local~]# iptables -A INPUT -p icmp --icmp-type 8 -j DROP
    [root@localhost [local~]# iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
    [root@localhost [local~]# iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
    [root@localhost [local~]# iptables -A INPUT -p icmp -j DROP
    3)显式匹配条件
    多端口匹配:-m multiport --sport 源端口列表
    -m multiport --dport 目的端口列表
    IP范围匹配:-m iprange --src-range IP范围
    MAC地址匹配:-m mac --mac-source MAC地址
    [root@localhost [local~]# iptables -P INPUT DROP
    [root@localhost [local~]# iptables -I INPUT -p tcp -m multiport --dport 80 -j ACCEPT
    [root@localhost [local~]# iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143:200 -j ACCEPT
    [root@localhost [local~]# iptables -A INPUT -m mac --mac-source 00:0c:29:c0:55:3f -j DROP
  2. iptables-save > 文件 导出当前规则
    iptables-restore < 文件 导入规则
    service iptables restart 后加载/etc/sysconfig/iptables配置文件恢复了默认值
    /etc/init.d/iptables save 将当前规则设定为默认规则
    service iptables restart 验证

  3. iptables nat 上网
    首先开启内核路由转发的模块。
    cat /proc/sys/net/ipv4/ip_forward值为1,则开启;若为0则
    echo 1 > /porc/sys/net/ipv4/ip_forward
    cd /usr/lib/sysctl.d
    vi 00-system.conf
    net.ipv4.ip_forward = 1
    修改其中的net.ipv4.ip_forward = 1
    然后要让它立即生效,需要执行命令:sysctl -p
    DNS的配置在/etc/resolv.conf中添加DNS的IP即可,至此第一步搞定。
    第二步添加NAT:
    iptables -t nat -I POSTROUTING -s 192.168.75.0/24 -o ens32 -j SNAT --to 172.18.11.41

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j SNAT --to 外网IP
或-j MASQUERADE(使用ADSL上网动态IP用此选项)
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j SNAT --to 172.18.11.92
#这条命令里的 eth0代表外网接口,-s 192.168.10.0/24代表内网段

作业:
完成实验

转载于:https://blog.51cto.com/jxwpx/2317654

你可能感兴趣的:(第十三章 LINUX安全IPTABLES基础-CENTOS7.5知识)