阅读 361

Linux的防火墙配置和nat地址转换(防火墙做nat转换)

小编都在学习Linux的防火墙配置和nat地址转换,有很多学习心得都写作了笔记,现在把这份笔记法出来供大家参考,相信会对你们有些许的帮助吧。

防火墙的配置和nat地址转换
1.[root@zy root]# iptables -A INPUT -p icmp -j DROP
我解释下 iptables 就是防火墙规则了 -A 就是添加一条规则了
input为进的规则 还有出的规则为output -p 就是选择的一个协议
icmp是协议的一中 它包括tcp udp icmp等 -j 就是对此规则的选择
drop 就是放弃 ,accept 就是接受 ,reject弹回 ,log 记入日志里
2.规则加进去之后我们可以用[root@zy root]# iptables -L
来查看防火墙规则
[root@zy root]# iptables -L -n 以数字的格式显示
[root@zy root]# iptables -F 清空防火墙规则
[root@zy root]# iptables --help |more 查看iptables'的帮助文档
[root@zy root]# iptables -L -n --line-numbers 查看规则的编号
3.现在我们做一个小实验
[root@zy root]# ftp 192.168.1.144
Connected to 192.168.1.144 (192.168.1.144).
220 Welcome to zy FTP service.
Name (192.168.1.144:root):
结果证明是可以登录的
我们写入这条命令
[root@zy root]# iptables -A INPUT -p tcp -s 192.168.1.102 -d 192.168.1.144 --dport 21 -j DROP
然后从新登录ftp发现失败了
其中-s指的是愿主机 -d 是指的目标主机 --dport 指的是目标端口
如果我们想从新可以登录就要删除该条规则
[root@zy root]# iptables -L -n --line-numbers 发现其规则号为2
num target prot opt source destination
1 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
2 DROP tcp -- 0.0.0.0/0 192.168.1.144 tcp dpt:21
3 ACCEPT tcp -- 0.0.0.0/0 192.168.1.102 tcp dpt:21
[root@zy root]# iptables -D INPUT 2
这样就可以删除掉该规则了 -D是删除的命令
4.然后让我们清除配置规则,来从新定义规则
[root@zy root]# iptables -F 清空防火墙规则
首先我们要加入ssh规则,因为我是用windows访问linux的,所以一定要先把次规则打入
[root@zy root]# grep ssh /etc/services 查看ssh服务的端口为22
[root@zy root]# iptables -A INPUT -p tcp -d 192.168.1.144 --dport 22 -j ACCEPT 允许所有的客户机从远程登录192.168.1.144的22端口
[root@zy root]# iptables -A OUTPUT -p tcp -s 192.168.1.144 --sport 22 -j ACCEPT 允许192.168.1.144的22 端口出去
[root@zy root]# iptables -L -n --line-numbers
查看下防火墙的规则
5,防火墙的默认规则是允许所有的,所有我们要把它改为默认拒绝所有需要什么服务再加上
[root@zy root]# iptables -P INPUT DROP
[root@zy root]# iptables -P FORWARD DROP
[root@zy root]# iptables -P OUTPUT DROP
三个规则一起关掉
[root@zy root]# netstat -nal 虽然还是开了很多端口但是起作用的端口就只有22了只有ssh协议可以进来了
[root@zy root]# service iptables save
将当前规则保存到 /etc/sysconfig/iptables: [ 确定 ]
这样这条规则就保存到iptables中了 开机从启就会执行这条规则的
6.现在我们做一个实验把web服务加进去
[root@zy root]# iptables -A INPUT -p tcp -d 192.168.1.144 --dport 80 -j ACCEPT
[root@zy root]# iptables -A OUTPUT -p tcp -s 192.168.1.144 --sport 80 -j ACCEPT
[root@zy root]# iptables -L -n
[root@zy root]# service iptables savelinux7.加入dns服务器的端口
[root@zy root]# grep domain /etc/services
domain 53/tcp # name-domain server
domain 53/udp
[root@zy root]# iptables -A OUTPUT -p udp --dport 53 -j ACCEPT 请求对方主机解析
[root@zy root]# iptables -A INPUT -p udp --sport 53 -j ACCEPT 对方发来回应解析
这样dns解析也就完成了
[root@zy root]# service iptables save
[root@zy root]# host www.sina.com 我的解析是成功的
如果你们不成功请检查下
[root@zy root]# more /etc/resolv.conf
8.如果你自己做自己的dns服务器的访问
你需要加入如下的两条命令
[root@zy root]# iptables -A INPUT -p udp --dport 53 -j ACCEPT
[root@zy root]# iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
[root@zy root]# iptables -L -n
9.打开本机的互联设备
[root@zy root]# netstat -tnl
发现有127.0.0.1的回环设备都是要打开的
[root@zy root]# iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT 把所有原是127.0.0.1的,目标是127.0.0.1的全部打开
[root@zy root]# ^IN^OUT 我们使用命令替换功能
iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
[root@zy root]# iptables -L -n
10.为了安全期间我们要把防火墙做的更严密些,例如22号端口对于给我发送过请求的包,我才给于回应,没给我发送请求的包我是不与理会的,这样做的原因是预防系统漏洞产生的,主动发包发出去
[root@zy root]# iptables -A OUTPUT -p tcp -s 192.168.1.144 --sport 22 -m state --state ESTABLISHED -j ACCEPT
-m 是扩展条间 state 是匹配状态 --state ESTABLISHED 状态是链接过,
[root@zy root]# iptables -L -n
然后我们再删除
[root@zy root]# iptables -D OUTPUT 5 即规则是ACCEPT tcp -- 192.168.1.144 0.0.0.0/0 tcp spt:22 的这一条 切记一定要先建好扩展规则,然后在删除负责ssh链接会断开
[root@zy root]# service iptables save
同理80端口也一样要设定 不允许80端口主动发包给远端机子
[root@zy root]# iptables -A OUTPUT -p tcp -s 192.168.1.144 --sport 80 -m state --state ESTABLISHED
[root@zy root]# iptables -L -n
然后我们再删除
[root@zy root]# iptables -D OUTPUT 1 即ACCEPT tcp -- 192.168.1.144 0.0.0.0/0 tcp spt:80 的这条规则
[root@zy root]# iptables -L -n
[root@zy root]# service iptables save
上面的这些规则都是设定我们为服务器的
但作为客户机同样要进行防护,道理是一样的 ,配置也差不多,大家自己修改下了
11,前面我们都是配置了input和output 没有配置forward forward是发往外网的,当你用到路由器的时候才需要配置forward
当你需要局域网上的其他主机通过你才能连接到互联网上的时候你需要把forward打开
[root@zy root]# iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT 这里我允许局域网192.168.1.0 这个网段的地址通过我访问互联网
[root@zy root]# iptables -A FORWARD -d 192.168.1.0/24 -j
是允许互联网回应给内部主机
记住就算配置了forward 也要对一个文件修改下,否则forward是不起作用的,也就是打开内核的转换文件
[root@zy root]# echo "1" > /proc/sys/net/ipv4/ip_forward
另外还要保存这个值,我们需要打开
[root@zy root]# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
wq
[root@zy root]# iptables -L -n
好了 ,但是现在还不能访问局域网的主机还是不能访问外网的,因为它是内网的地址,访问外网还需要做一个nat地址转换
12. 学习nat地址转换
nat地址转换在网关上进行改变的
[root@zy root]# iptables -t nat -L -n -t nat查看nat转换表
我们假设有一个环境
主机A 的ip 地址是 192.168.1.102 局域网内网
主机B 是双网卡的ip 地址是 10.0.0.254 , 192.168.1. 144 可以把主机b看作一个路由器
主机C 的ip是 10.0.0.1 外网
[root@zy root]#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 10.0.0.254
-t nat是 nat类型的转换 -A POSTROUTING 局域网的182.168.1.0 /24 通过源地址直接转换为10.0.0.254
这个10.0.0.254是一个静态的地址,但是如果我们是拨号上网的话,这个地址 就不能固定下来了
[root@zy root]# iptables -t nat -L -n
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 192.168.1.0/24 0.0.0.0/0 to:10.0.0.254
[root@zy root]#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
其中MASQUERADE是一个动态获取网关地址的命令
这样我们就可以动态的获取到地址,
我们假设另一个环境
主机A 的ip 地址是 192.168.1.102 外网
主机B 是双网卡的ip 地址是 10.0.0.254 , 192.168.1. 144 可以把主机b看作一个路由器
主机C 的ip是 10.0.0.1 局域网内网的web服务器
我们就要加入这样的一条命令
[root@zy root]# iptables -t nat -A PREROUTING -d 192.168.1.0/24 -p tcp -dport 80 -j DNAT --to-destination 10.0.0.254
这样外网访问内网的web服务器就首先进入10.0.0.254这个路由器了


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐