51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

iptables 实战 (iptables 命令参数)

面试点:
1.四表五链
2.禁止访问本机某个端口
3.禁止某个来源IP

需要练习:
1.禁IP
2.禁端口
3.对某些IP地址段进行端口限制
4.ICMP 禁ping
5.共享上网
6.端口映射

环境:

m01     10.0.0.61   172.16.1.61
web01 10.0.0.7 172.16.1.7

安装:

yum install -y  iptables-services

[root@m01 ~]# rpm -ql iptables-services
/etc/sysconfig/ip6tables
/etc/sysconfig/iptables#防火墙的配置文件
/usr/lib/systemd/system/ip6tables.service
/usr/lib/systemd/system/iptables.service #防火墙服务配置文件(命令)

#防火墙相关模块 加载到内核中
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state

#永久
cat >>/etc/rc.local<<EOF
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
EOF

[root@m01 ~]# systemctl stop firewalld
[root@m01 ~]# systemctl disable firewalld
[root@m01 ~]# systemctl start iptables.service
[root@m01 ~]# systemctl enable iptables.service

[root@m01 ~]# iptables -nL

iptables 命令参数

3.6 配置filter表规则 {#36-配置filter表规则}

  • 正式配置之前 先备份, 清空规则

[root@m01 ~]# iptables -F
[root@m01 ~]# iptables -X
[root@m01 ~]# iptables -Z

[root@m01 ~]# iptables -nL

3.6.1 禁止访问22端口 {#361-禁止访问22端口}

iptables -t filter -I INPUT -p tcp   --dport 22  -j DROP

运行后,xshell 挂了,需要用虚拟机进入 删除该规则
iptables -D INPUT 1

3.6.2 封ip 屏蔽某个ip {#362-封ip--屏蔽某个ip}

 iptables -I INPUT  -s 10.0.0.7   -j DROP 
 iptables -I INPUT  -s 172.16.1.7   -j DROP 

3.6.3 禁止网段连入(禁止10.0.0.0/24网段访问 8888端口) {#363-禁止网段连入禁止1000024网段访问-8888端口)}

iptables -I INPUT  -s 10.0.0.0/24  -p tcp  --dport 8  -j DROP 
ssh 10.0.0.61  连接不上
ssh 172.16.1.61  可以连接上

3.6.4 只允许指定网段连入(允许10.0.0.0网段) {#364---只允许指定网段连入允许10000网段)}

实现阿里云白名单功能 :默认是拒绝 开放端口 网段

allow 10.0.0.0/24;

deny all;

#方法1: 利用 ! 进行排除
#只准许 10.0.0.0/24 访问 言外之意 除了 10.0.0.0/24 都拒绝
iptables -I INPUT ! -s 10.0.0.0/24 -j DROP

#方法2: 修改链默认规则 修改为拒绝 添加准许
先配置好规则 准许规则
修改默认规则

iptables -A INPUT -s 10.0.0.0/24 -j ACCEPT

`iptables -nL` 

修改为 DROP

 iptables -P INPUT DROP 

#测试完成后 修改回去

iptables -P INPUT ACCEPT

3.6.4 指定多个端口 {#364-指定多个端口}

方法1:

iptables -I INPUT -p tcp --dport 8888 -j DROP
iptables -I INPUT -p tcp --dport 9999 -j DROP

方法2:

[root@m01 ~]# iptables -I INPUT -p tcp -m multiport ! --dport 80,443 -j DROP
#如果是 连续的端口 可以不加上-m multiport 1:1024
[root@m01 ~]# iptables -I INPUT -p tcp --dport 1024:65535 -j DROP

iptables 禁ping

3.6.6 匹配网络状态(TCP/IP连接状态) {#366---匹配网络状态tcpip连接状态)}

-m state --state

NEW:已经或将启动新的连接

ESTABLISHED:已建立的连接

RELATED:正在启动的新连接

INVALID:非法或无法识别的

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

3.6.7 限制并发及速率

-m limit 限制模块

-m limit --limit 10/minute #每分钟只能有10个数据包 每6秒生成
-m limit --limit n/{second/minute/hour}:

解释:指定时间内的请求速率"n"为速率,后面为时间分别为:秒 分 时

-m limit --limit 10/minute --limit-burst 5 每6秒释放工牌 给别人使用

#10个数据包
前5个 1个1个工牌 从第6个开始 每6秒 才能释放1个工牌
--limit-burst [n]

解释:在同一时间内允许通过的请求"n"为数字,不指定默认为5

测试 演示
#ping icmp 协议 进行测试
iptables -F
iptables -I INPUT -p icmp -m limit --limit 10/minute --limit-burst 5 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -P INPUT DROP

3.6.8 防火墙规则的保存与恢复 {#368-防火墙规则的保存与恢复}

赞(0)
未经允许不得转载:工具盒子 » iptables 实战 (iptables 命令参数)