博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iptables小案例,nat表应用
阅读量:6323 次
发布时间:2019-06-22

本文共 4991 字,大约阅读时间需要 16 分钟。

hot3.png

iptables小案例:

需求1: 只针对filter表,预设INPUT链DROP,其他两个链ACCEPT,然后针对192.18.133.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口。

vim /usr/local/sbin/iptables.sh //加入以下内容

#! /bin/bash

ipt="/usr/sbin/iptables"

$ipt -F

$ipt -P INPUT DROP

$ipt -P OUTPUT ACCEPT

$ipt -P FORWARD ACCEPT

$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 

$ipt -A INPUT -s 192.168.133.0/24 -p tcp --dport 22 -j ACCEPT

$ipt -A INPUT -p tcp --dport 80 -j ACCEPT

$ipt -A INPUT -p tcp --dport 21 -j ACCEPT 

 

完成编写后执行sh /usr/sbin/iptables.sh即可

-m state --state RELATED,ESTABLISHED 表示对进来的包的状态进行检测。已经建立tcp连接的包以及该连接相关的包允许通过!为了后面的22 80 21等端口更顺畅的通信。

 

icmp示例:

iptables -I INPUT -p icmp --icmp-type 8 -j DROP

这里--icmp-type选项要跟-p icmp一起使用,后面指定类型编号。这个8指的是能在本机ping通其他机器,而其他机器不能ping通本机。

 

nat表应用:

• A机器两块网卡ens33(192.168.133.130)、ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.100.100),和A机器ens37可以通信互联。

• 需求1:可以让B机器连接外网

• A机器上打开路由转发 echo "1">/proc/sys/net/ipv4/ip_forward

• A上执行 iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

• B上设置网关为192.168.100.1

 

• 需求2:C机器只能和A通信,让C机器可以直接连通B机器的22端口

• A上打开路由转发echo "1">/ proc/sys/net/ipv4/ip_forward

•  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上设置网关为192.168.100.1

 

netfilter保存和备份:

service iptables save 会把规则保存到/etc/sysconfig/iptables

 

把iptables规则备份到my.ipt文件中:

iptables-save > my.ipt

恢复刚才备份到规则:

iptables-restore < my.ipt

 

Linux防火墙-firewalld:

firewalld 9个zone

打开firewalld:

systemctl disable iptables

systemctl stop iptables

systemctl enable firewalld

systemctl start firewalld

 

firewalld默认有9个zone

默认zone为public

 

firewall-cmd --get-zones //查看所有zone

[root@gavin-123 ~]# firewall-cmd --get-zones

block dmz drop external home internal public trusted work

 

• firewall-cmd --get-default-zone//查看默认zone

[root ~]# firewall-cmd --get-default-zone

public

 

 

firewalld关于zone的操作:

firewall-cmd --set-default-zone=work //设定默认zone

[root ~]# firewall-cmd --set-default-zone=work

success

 

firewall-cmd --get-zone-of-interface=ens33 //查指定网卡

[root ~]# firewall-cmd --get-zone-of-interface=eth0

no zone

 

firewall-cmd --zone=public --add-interface=lo //给指定网卡设置zone

[root@gavin-123 ~]# firewall-cmd --zone=public --add-interface=lo

success

 

firewall-cmd --zone=dmz --change-interface=lo //针对网卡更改zone

[root@gavin-123 ~]# firewall-cmd --zone=work --change-interface=enp0s3

success

 

firewall-cmd --zone=dmz  --remove-interface=lo  //针对网卡删除zone

[root@gavin-123 ~]# firewall-cmd --zone=public --remove-interface=lo

success

[root@gavin-123 ~]# firewall-cmd --get-zone-of-interface=lo

no zone

 

firewall-cmd --get-active-zones  //查看系统所有网卡所在的zone

[root@gavin-123 ~]# firewall-cmd --get-active-zones

work

interfaces: enp0s3

public

interfaces: lo

 

firewalld关于service的操作:

firewall-cmd --get-services  查看所有的servies

[root@gavin-123 ~]# firewall-cmd --get-services

RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https

 

firewall-cmd --list-services  //查看当前zone下有哪些service

[root@gavin-123 ~]# firewall-cmd --list-services

dhcpv6-client http ssh

 

firewall-cmd --zone=work --list-services  //查看指定zone下有哪些service

[root@gavin-123 ~]# firewall-cmd --zone=work --list-services

dhcpv6-client ftp ipp-client ssh

 

firewall-cmd --zone=public --add-service=http //把http增加到public zone下面

[root@gavin-123 ~]# firewall-cmd --zone=public --add-service=ftp

success

 

firewall-cmd --zone=public --remove-service=http

[root@gavin-123 ~]# firewall-cmd --zone=public --remove-service=http

success

 

ls /usr/lib/firewalld/zones/ //zone的配置文件模板

[root@gavin-123 ~]# ls /usr/lib/firewalld/zones/

block.xml drop.xml home.xml public.xml work.xml

dmz.xml external.xml internal.xml trusted.xml

 

firewall-cmd --zone=public --add-service=http --permanent //更改配置文件,之后会在/etc/firewalld/zones目录下面生成配置文件

[root@gavin-123 ~]# firewall-cmd --zone=public --add-service=ftp --permanent

success

[root@gavin-123 ~]# cat /etc/firewalld/zones/public.xml

<?xml version="1.0" encoding="utf-8"?>

<zone>

<short>Public</short>

<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>

<service name="ftp"/>

<service name="dhcpv6-client"/>

<service name="http"/>

<service name="ssh"/>

</zone>

 

需求:ftp服务自定义端口1121,需要在work zone下面放行ftp

cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services

 

vi /etc/firewalld/services/ftp.xml //把21改为1121

 

cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/

 

vi /etc/firewalld/zones/work.xml //增加一行

<service name="ftp"/>

 

firewall-cmd --reload //重新加载

 

firewall-cmd --zone=work --list-services

 

 

 

转载于:https://my.oschina.net/u/3803404/blog/1809324

你可能感兴趣的文章
Openstack 安装部署指南翻译系列 之 Glance服务安装(Image)
查看>>
Java 使用POI实现execl的导入导出数据实践
查看>>
Unity3D游戏开发之伤害数值显示
查看>>
如何在Linux上搭建一个基于Web的轻型监控系统
查看>>
linux基础命令使用
查看>>
zabbix简单检测
查看>>
我的友情链接
查看>>
CCNP学习笔记10-路由部分--BGP 前缀列表
查看>>
关于导航视图无法隐藏的问题:self.navigationItem.rightBarButtonItem.customView.hidden = YES;无效...
查看>>
other模块的网络请求业务封装工具类
查看>>
Android studio取消上次打开的工程
查看>>
Cocos2dx-3.0-rc0版本Lua的配置与使用
查看>>
计算机编程软件C语言的介绍
查看>>
调用谷歌翻译API(FREE)的java代码
查看>>
Windows进程崩溃问题定位方法
查看>>
程序员如何让自己 Be Cloud Native - 配置篇
查看>>
Django学习系列之Form基础
查看>>
每天一个linux命令(35):ln 命令
查看>>
SQL Server各个版本之间的差异
查看>>
方差分析中的多重比较
查看>>