- firewalld和netfiler
- netfilter5表5链介绍
- iptables语法
- iptables filter语法
- iptables nat表应用
- 扩展:selinux教程 http://os.51cto.com/art/201209/355490.htm
selinux pdf电子书 http://pan.baidu.com/s/1jGGdExK
iptables应用在一个网段 http://www.aminglinux.com/bbs/thread-177-1-1.html
sant,dnat,masquerade http://www.aminglinux.com/bbs/thread-7255-1-1.html
iptables限制syn速率 http://www.aminglinux.com/bbs/thread-985-1-1.html http://jamyy.us.to/blog/2006/03/206.html
一.firewalld和netfiler
- #setenforce 0 临时关闭selinux防火墙,重启后selinux会自动启动
- #vi /etc/selinux/config 如下更改,永久关闭防火墙
- 或者执行该命令:sed -i 's/^SELINUX=disabled/g' /etc/selinux/config 也可以永久关闭selinux,同样的效果。
- #getenforce 查看防火墙是否打开
实验一:开启centos6的netfilter防火墙
- #systemctl disable firewalld 关闭firewalld防火墙开机启动
- #systemctl stop firewalld 关闭firewalld防火墙
- #yum install -y iptables-services 安装这个iptables命令包
- #systemctl enable iptables && systemctl start iptables 设置开机自启动iptables服务,并打开centos6用的netfilter防火墙
- #systemctl status iptables 查看iptables服务是否正常开启。
- #iptables -nvL 查看它的默认规则
- centos6用netfilter防火墙,centos7用的是firewalld防火墙
二.netfilter5表5链介绍
- 参考文章:http://www.cnblogs.com/metoy/p/4320813.html
三.iptables语法
- #iptables 命令的一般格式为:iptables [-t table] 命令 [chain][rules][-j target]
- #iptables -nvL 查看iptables规则
- #cat /etc/sysconfig/iptables 该文件存放着这个规则
- #iptables -F 清空规则,不过只会清空当前iptables中设置的规则,文件里还是保存着原先的保存规则不会被清除。
- #service iptables save 把当前规则保存到/etc/sysconfig/iptables文件里
- #service iptables restart 重启iptables服务,会重新加载文件里保存的规则
- #iptables -t filter -nvL
- #iptables -Z 可以把计数器清零
- #iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP 写入新的规则,在最后一行,禁止该ip的数据传输
- #iptables -I INPUT -p tcp --dport 80 -j DEOP 插入到第一行,不写ip直接写端口也是可以的,这是简写
- #iptables -D INPUT -p tcp --dport 80 -j DEOP 删除该规则
- #iptables -nvL --line-number 打印规则序列的编号
- #iptables -D INPUT 7 删除第七条规则
- #iptables -P OUTPUT DROP
实验一:添加默认规则,只能访问22端口
四.iptables filter表小案例
案例一:把80,22,21端口放行,但是22端口要指定端口,只有这个ip段的可以访问,其他全部拒绝。
- #vim /usr/local/sbin/iptables.sh ,添加下图内容
- #sh /usr/local/sbin/iptables.sh 执行一下该配置
案例二:ICMP示例,禁ping。
- #iptables -I INPUT -p icmp --icmp-type 8 -j DEOP
让其他机器包括本机无法ping通,但是自己可以ping出去。
五.iptables nat表应用
- 案例一:
- A机器两块网卡,一块是外网,一块网卡是lan区段(内网),B机器添加一个网卡lan区段(内网)
- A机器使用命令#ifconfig ens37 192.168.100.1/24给lan区段内网网卡设置临时ip,重启即失效
- B机器使用命令#ifconfig ens37 192.168.100.100/24给lan区段内网网卡设置临时ip,重启即失效
- 完成网卡ip设置后,满足AB机器内网可以相互ping通内网网卡ip地址
- 检测不能ping通外网
- 需求一:让B机器可以连接外网,就想当于一个小路由器的功能
- 修改内核参数,开启内核转发
- # cat /proc/sys/net/ipv4/ip_forward 查看一下该文件,如果是0的话,执行下条命令
- #echo "1" >!$ 添加内容1,打开端口转发
- 添加该规则:#iptables -t net -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE 定义一条规则,让这个ip可以上网,做一个欺骗
- B机器设置一个网关,执行命令:#route add default gw 192.168.100.1
- ping 一下A机器公网网卡ip地址,检测是否可以和公网通信
- B机器设置一个DNS,执行命令:#nameserver 119.29.29.29
- ping一下公网119.29.29.29,可以ping通,则可以ping通外网www.baidu.com 了
- 需求二:C机器只能和A机器通信,让C机器可以直接连通B机器的22端口,(端口映射)
- A机器,执行命令:#echo “1” > /proc/sys/net/ipv4/ip_forward 打开端口转发,因为前面已经打开过了,现在不用再执行该命令
- A机器,执行命令:#iptables -F 清空一下规则
- A机器,添加规则:#iptables -t nat -A PREROUTING -d 192.168.133.130 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22 把进去的包,做端口转发
- A机器,添加规则:# iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.133.130 把回来的包,做端口转发
- B机器,#route add default gw 192.168.100.1 设定网关。因为前边已经设定过了,现在可以不用再执行该命令
- 使用xshell远程登陆一下A机器的ip地址192.168.133.130,就可以远程连接到B机器上192.168.100.100
- 并且B机器也可以和外网通信的
六.扩展:selinux教程
- selinux教程 http://os.51cto.com/art/201209/355490.htm
- selinux pdf电子书 http://pan.baidu.com/s/1jGGdExK
- iptables应用在一个网段 http://www.aminglinux.com/bbs/thread-177-1-1.html
- sant,dnat,masquerade http://www.aminglinux.com/bbs/thread-7255-1-1.html
- iptables限制syn速率 http://www.aminglinux.com/bbs/thread-985-1-1.html http://jamyy.us.to/blog/2006/03/206.html