iptables由浅入深

iptables:
我们设置的iptables也就是防火墙是很有必要的,我们的服务器可能每天都在承受着攻击,如果我们不设置,那么我们一切都是给别人做嫁衣而已。
安全的ping:
当我们发出ping请求时不受限制,当其他人ping我们时则直接拒绝

[root@localhost ~]# iptables -A OUTPUT -p icmp -j DROP
[root@localhost ~]# iptables -A INPUT -p icmp -j DROP
[root@localhost ~]# iptables -I INPUT -p icmp --icmp-type 0 -j ACCEPT
[root@localhost ~]# iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT

multiport模块 :多端口
允许这些端口的服务可以被其他人访问(这个配置的前提是,先拒绝所有的,否则这个配置就失去了意义)

[root@localhost ~]# iptables -I INPUT -p tcp -m multiport --dport 21,22,80 -j ACCEPT

set模块:建表

[root@localhost ~]# yum install ipset -y 
[root@ansible(nanyibo) ~]# ipset create sshlist hash:net maxelem 10000  #建表
[root@localhost ~]# ipset add sshlist 172.18.254.227 #从表sshlist中增加一个ip
[root@localhost ~]# ipset add sshlist 172.18.254.174
[root@localhost ~]# ipset  -L  #列出表的信息

Name: sshlist 
Type: hash:net
Revision: 3
Header: family inet hashsize 1024 maxelem 1000
Size in memory: 16816
References: 0
Members:
172.18.254.174
172.18.254.227

从表中删除一个ip:

[root@localhost ~]# ipset del sshlist 172.18.254.227

利用表来设置iptables:
拒绝22端口被访问

[root@localhost ~]# iptables -A INPUT -p tcp --dport 22 -m set  --match-set sshlist src -j DROP

limit模块:
可以先进入8个 然后以每分钟10个进入

[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 10/minute --limit-burst 8 -j ACCEPT

状态跟踪:

[root@localhost ~]# modprobe nf_conntrack_ftp  #跟踪随机端口的端口号,
[root@localhost ~]# iptables -I INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT
[root@localhost ~]# iptables -I INPUT 2 -m state --state ESTABLISHED,RELATED -j ACCEPT  #ESTABLISHED,RELATED这要写上,否则无法跟踪

实验:

允许inside可以ping outside  不允许outside ping  inside

防火墙:inside ip:192.168.153.7   outsite ip: 10.10.10.7  两块网卡

inside   ip:192.168.153.101    

outside  ip:10.10.10.102


开启防火墙的ip转发:vim /etc/sysctl.conf  #下次启动机器后开启
net.ipv4.ip_forward = 1

[root@localhost ~]# sysctl -p  #暂时开启
net.ipv4.ip_forward = 1

指定路由:

在inside
[root@localhost ~]# route add default gw 192.168.153.7


在outside
[root@localhost ~]# route add default gw 10.10.10.7




方法一:
[root@localhost ~]# iptables -A FORWARD -j REJECT
[root@localhost ~]# iptables -I FORWARD -s 192.168.153.0/24 -d 10.0.0.0/8 -p icmp --icmp-type 8 -j ACCEPT
[root@localhost ~]# iptables -I FORWARD -d 192.168.153.0/24 -s 10.0.0.0/8 -p icmp --icmp-type 0 -j ACCEPT

方法二:
[root@localhost ~]# iptables -A FORWARD -j REJECT
[root@localhost ~]# iptables -I FORWARD -s 192.168.153.0/24 -d 10.0.0.0/8 -p icmp --icmp-type 8 -j ACCEPT
[root@localhost ~]#  iptables -I FORWARD -m state --state ESTABLISHED -j ACCEPT


方法三:
[root@localhost ~]# iptables -A FORWARD -j REJECT
[root@localhost ~]# iptables -I FORWARD -s 192.168.153.0/24 -d 10.0.0.0/8 -p icmp -m state --state NEW -j ACCEPT
[root@localhost ~]# iptables -I FORWARD -m state --state ESTABLISHED -j ACCEPT


inside(ip:192.168.242.139)内网搭建httpd并且改监听端口为9527  让一个能上网的服务器访问(ip:172.18.254.74):
防火墙(可以同外网):ip 172.18.251.133   192.168.242.140
 iptables -t nat -A PREROUTING -d 172.18.254.96 -p tcp --dport 80 -j DNAT --to-destination 192.168.153.101:9527

补充:
iptables -n 不反解 不将ip解析为网络地址,不将端口解析为服务
一般命令为 iptables -nL
显示标号: --line-number

iptables INPUT -p tcp --dport 22 -j DROP 拒绝还保持连接状态,只是没有回应
iptables INPUT -p tcp --dport 22 -j REJECT 直接回应拒绝

iptables -I INPUT # 插入使其成为第#条

iptables -D INPUT # 删除第几条策略 iptables -D INPUT -s 192.168.153.7 -j REJECT 删除本条策略

iptables -R INPUT # … 替换第#条策略

ping请求的类型: icmp-type 8 请求 发出ping请求时
icmp-type 0 回应 得到发出的请求的对方的回应

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值