设为首页 收藏本站
查看: 1508|回复: 0

[经验分享] Linux中的firewalld与iptables

[复制链接]

尚未签到

发表于 2018-5-16 12:11:39 | 显示全部楼层 |阅读模式
  一.firewalld
1.概述;动态防火墙后台程序firewalld提供了一个动态管理的防火墙,用以支持网络“zones”,区分配对一个网络及其相关链接和界面一定程度的信任。它具备对ipv4和ipv6防火墙设置的支持。它支持以太桥接,并有分离运行时间和永久性配置选择,具备一个通向服务或者应用程序以直接增加防火墙规则的接口。
2.配置:系统提供了图像化的配置工具firewall-config(rhel7), 提供命令行客户端firewall-cmd, 用于配置 firewalld永久性或非永久性运行时间的改变:
依次用 iptables工具与执行数据包筛选的内核中的 Netfilter通信。
3.firewalld和iptables service 之间最本质的不同是:
· iptables service 在 /etc/sysconfig/iptables 中储存配置,而 firewalld将配置储存在
/usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种XML文件里.
  · 使用 iptables service每一个单独更改意味着清除所有旧有的规则和从
/etc/sysconfig/iptables里读取所有新的规则,然而使用 firewalld却不会再创建任何新的规则;仅仅运行规则中的不同之处。因此,firewalld可以在运行时间内,改变设置而不丢失现行连接。
  ·基于用户对网络中设备和交通所给与的信任程度,防火墙可以用来将网络分割成不同的区域
firewalld域
网络区名称          默认配置
trusted(信任)     可接受所有的网络连接
home(家庭)        用于家庭网络,仅接受ssh,mdns,ipp-client,samba-client,或dhcpv6-client服务连接
internal(内部)  用于内部网络,仅接受ssh,mdns,ipp-client,ipp-client,samba-client,dhcpv6-client服务连接
work(工作)      用于工作区,仅接受ssh或dhcpb6-client服务连接
public(工作)    在公共区域内使用,仅接受ssh或dhcpv6-client服务连接,为firewalld的默认区域
external(外部)    出去的ipv4网络连接通过此区域伪装和转发,仅接受ssh服务连接
dmz(非军事区)     仅接受ssh服务连接
block(限制)       拒绝所有网络连接
drop(丢弃)        任何接受的网络数据包都被丢弃,没有任何回复
二.管理防火墙
安装防火墙软件:

yum install -y firewalld firewall-config
  启动和禁用防火墙:

systemctl start firewalld

systemctl enable firewalld

systemctl disable firewalld  #systemctl stop firewalld
  使用iptables服务(rhel7中需要自己安装iptables):

yum install -y iptables-services

systemctl start iptables

systemctl enable iptables
  三.firewalld图形方式的修改
firewall-config
Runtime:临时修改,重启后失效
Permanent :永久修改,要reload,在options里面选择,永久修改会写入配置文件,必须重新加载
DSC0000.jpg
DSC0001.jpg
临时修改
DSC0002.jpg
  Zone 默认public
测试:Services选择http
用firewall-cmd --list-all可以看出加上了什么火墙策略
[root@localhost ~]# firewall-cmd --list-all
public (default, active)
interfaces: eth0 eth1
sources:
services: dhcpv6-client http ssh
ports:
masquerade: no
DSC0003.jpg
重启后临时修改失效
DSC0004.jpg
vim /var/www/html/index.xml
DSC0005.jpg
172.25.254.130
DSC0006.jpg
测试:输入172.25.254.130
systemctl start httpd
DSC0007.jpg
DSC0008.jpg
rpm -ql firewalld  #软件信息
DSC0009.jpg
vim /usr/lib/firewalld/services/http.xml  #配置文件
[root@localhost ~]# cd /usr/lib/firewalld/
[root@localhost firewalld]# ls
icmptypes  services  zones
[root@localhost firewalld]# cd zones/
[root@localhost zones]# ls
block.xml  drop.xml      home.xml      public.xml   work.xml
dmz.xml    external.xml  internal.xml  trusted.xml
DSC00010.jpg

  [root@localhost zones]# vim /etc/firewalld/zones/public.xml    #临时文件
添加的http服务文件存放在此
DSC00011.jpg
DSC00012.jpg
四.使用命令行接口配置防火墙
[root@localhost zones]# firewall-cmd --state  #火墙状态
running
DSC00013.jpg
[root@localhost zones]# firewall-cmd --get-active-zones #正在生效的区域
ROL
sources: 172.25.0.252/32
public
interfaces: eth0 eth1
DSC00014.jpg
[root@localhost zones]# firewall-cmd --get-default-zone #默认区域
public
DSC00015.jpg
[root@localhost zones]# firewall-cmd --get-zones #火墙所有网络区域
ROL block dmz drop external home internal public trusted work
DSC00016.jpg
root@localhost zones]# firewall-cmd --zone=public --list-all #指定public区域
public (default, active)
interfaces: eth0 eth1
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
DSC00017.jpg
[root@localhost zones]# firewall-cmd --get-services #系统支持的服务
DSC00018.jpg
[root@localhost zones]# firewall-cmd --list-all-zones #所有区域网络
DSC00019.jpg
  [root@localhost zones]# firewall-cmd --set-default-zone=dmz #设定区域
success
DSC00020.jpg
[root@localhost zones]# firewall-cmd --list-all --zone=trusted
trusted
DSC00021.jpg
[root@localhost zones]# ss -antlpe | grep httpd
  [root@localhost zones]# firewall-cmd --add-service=http
success
DSC00022.jpg
[root@localhost zones]# cd /usr/lib/firewalld/services/ #配置文件都是以.xml结尾的可扩展标记语言
DSC00023.jpg
[root@localhost services]# mv http.xml httpd.xml #修改文件名
DSC00024.jpg
[root@localhost services]# firewall-cmd --permanent --add-port=80/tcp
success  #添加80端口
[root@localhost services]# firewall-cmd --reload #重新加载
success
DSC00025.jpg

  [root@localhost services]# cd /etc/firewalld/zones/
  [root@localhost zones]# ls
dmz.xml  public.xml  ROL.xml
DSC00026.jpg
[root@localhost zones]# vim public.xml  #删除文件中的写入的内容,重启服务
<port protocol=&quot;tcp&quot; port=&quot;80&quot;/>
DSC00027.jpg
DSC00028.jpg
[root@localhost zones]# systemctl restart firewalld.service
DSC00029.jpg
  [root@localhost services]# firewall-cmd --permanent --add-port=22/tcp
success  #添加22端口
[root@localhost services]# firewall-cmd --reload #重新加载
success
DSC00030.jpg
firewall-cmd --list-all  #端口22添加成功
DSC00031.jpg
[root@localhost services]# firewall-cmd --permanent --remove-port=22/tcp
success  #移除22端口
[root@localhost services]# firewall-cmd --reload #重新加载
success
DSC00032.jpg
vim public.xml  #删除文件中所写内容,删除22端口
DSC00033.jpg
DSC00034.jpg
DSC00035.jpg
[root@localhost zones]# firewall-cmd --set-default-zone=public  #设置默认区域为public
success
[root@localhost zones]# firewall-cmd --get-active-zones  #查看生效区域
ROL
sources: 172.25.0.252/32
public
interfaces: eth0 eth1
DSC00036.jpg
[root@localhost zones]# firewall-cmd --change-interface=eth1 --zone=trusted
success  #更改eth1firewalld域为trusted
DSC00037.jpg
[root@localhost zones]# firewall-cmd --get-active-zones
ROL
sources: 172.25.0.252/32
public
interfaces: eth0
trusted
interfaces: eth1
DSC00038.jpg
测试:172.25.60.130  #firewalld域为新任,可以访问http服务
DSC00039.jpg
172.25.254.130  #firewalld域为public不能访问http服务
DSC00040.jpg
souce
指定源地址,可以是一个ipv4/ipv6的地址或者网段,不支持使用主机名。
destination
指定目的地址,用法和souce相同。
service
服务名称是firewalld提供的其中一种服务。要获得被支持的服务的列表,输入以下命令:
firewall-cmd --get-services 命令为以下形式:

  用ssh连接172.25.2.54.130这台主机
DSC00041.jpg
连上172.25.254.130可以执行命令
DSC00042.jpg
firewall-cmd --permanent --add--source=172.25.254.60 --zone=block  #把172.25.254.60加入黑名单

DSC00043.jpg
firewall-cmd --reload #重新加载火墙,阻止再次连接
已经连上的服务不终止
DSC00044.jpg
172.25.254.60连接失败
DSC00045.jpg

  firewall-cmd --complete-reload  #完全的重新加载,阻止172.25.254.60再次连接,并且中断正在连接我的服务
DSC00046.jpg
连接ssh服务失败
DSC00047.jpg
正在连接172.25.254.130不能执行任何命令
DSC00048.jpg

  firewall-cmd --permanent --remove-source=172.25.254.60 --zone=block #把172.25.254.60移出黑名单
firewall-cmd --reload #重新加载
DSC00049.jpg
再次连接成功
DSC00050.jpg
DSC00051.jpg
通过firewall-cmd 工具,可以使用 --direct选项在运行时间里增加或者移出链
  [root@localhost ~]# firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.60 -p tcp --dport 22 -j REJECT  #filter表中插入ipput链第一条源地址是172.25.254.60访问我的22端口是拒绝的
filter表:input,output,forward
-s:来源地址 -d:目的地址 -p:协议 -dport:端口 -j:动作 REJRCT(拒绝)|ACCEPT(接受)|DROP(丢弃)
DSC00052.jpg
测试:liks http://172.25.254.130
DSC00053.jpg
DSC00054.jpg
irewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -s 172.25.254.60 -p tcp --dport 22 -j REJECT  #移除
  firewall-cmd --direct --get-all-rules
端口转发:
[root@localhost ~]# firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.60 #当访问我的22端口都转到172.25.254.60的22端口
success
DSC00055.jpg
DSC00056.jpg
firewall-cmd --add-masquerade #打开规则里的ip伪装。
DSC00057.jpg

DSC00058.jpg

  [root@localhost ~]# firewall-cmd --add-masquerade  #打开规则里的ip伪装。用源地址而不是目的地址来把伪装限制在这个区域里。不允许指定动作。
success
[root@localhost ~]# sysctl -p
[root@localhost ~]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 1
DSC00059.jpg
![]( DSC00060.jpg
DSC00061.jpg
另一台主机设置ip、网关
DSC00062.jpg
DSC00063.jpg
DSC00064.jpg
源地址伪装成功
DSC00065.jpg
与172.25.254.130网络互通
DSC00066.jpg
DSC00067.jpg

  [root@localhost ~]# systemctl stop firewalld.service  #关闭火墙
[root@localhost ~]# systemctl disable firewalld.service  #开机不自启
rm '/etc/systemd/system/basic.target.wants/firewalld.service'
rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'
[root@localhost ~]# systemctl mask firewalld  #封锁火墙
ln -s '/dev/null' '/etc/systemd/system/firewalld.service'
五.iptables
1.安装:yum install iptables-service -y
DSC00068.jpg
2.开启;systemctl start iptables
DSC00069.jpg
3.[root@localhost ~]# systemctl enable iptables.service  #开机自启
DSC00070.jpg
[root@localhost ~]# iptables -nL #列出iptables表不做解析,不加t默认就是filter表 n:不做解析 L:列出
DSC00071.jpg
[root@localhost ~]# iptables -t filter -nL  #t:table
DSC00072.jpg
[root@localhost ~]# iptables -F  #刷新
[root@localhost ~]# iptables -t filter -nL
DSC00073.jpg
  [root@localhost ~]# service iptables save #保存
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
DSC00074.jpg
[root@localhost ~]# vim /etc/sysconfig/iptables   #配置文件
DSC00075.jpg
DSC00076.jpg
[root@localhost ~]# systemctl restart iptables.service  #重启服务
DSC00077.jpg

DSC00078.jpg
[root@localhost ~]# iptables -A INPUT -i lo -j ACCEPT #A:默认在最后一条,i:进来的设备,j:动作  #从回环接口进来的数据接受
DSC00079.jpg
[root@localhost ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT #p:协议 dport:目的端口 80端口是访问apache  访问我的80端口接受
DSC00080.jpg
[root@localhost ~]# iptables -P INPUT DROP #P:更改默认策略  其他的丢弃
DSC00081.jpg
测试:
用一台主机访问我的22端口,丢弃
DSC00082.jpg
当改为iptables -P INPUT ACCEPT  #可访问
DSC00083.jpg
DSC00084.jpg
当改为iptables -P INPUT REJECT  #拒绝
DSC00085.jpg
DSC00086.jpg
连接172.25.254.130被拒绝
[kiosk@foundation60 Desktop]$ ssh root@172.25.254.130
ssh: connect to host 172.25.254.130 port 22: Connection refused
DSC00087.jpg

  iptables -A INPUT -p tcp --dport 22 -j ACCEPT #iptables从上往下读,当读到第三条REJUCT ALL就不读下面的了,所以该条不生效
DSC00088.jpg
DSC00089.jpg
[kiosk@foundation60 Desktop]$ ssh root@172.25.254.130
ssh: connect to host 172.25.254.130 port 22: Connection refused
DSC00090.jpg
ptables -D INPUT 4 #删除INPUT链第四条
DSC00091.jpg
DSC00092.jpg
ptables -I INPUT 3 -p tcp --dport 22 -j ACCEPT #I:插入 插入到第三条
DSC00093.jpg
DSC00094.jpg
[kiosk@foundation60 Desktop]$ ssh root@172.25.254.130
The authenticity of host '172.25.254.130 (172.25.254.130)' can't be established.
ECDSA key fingerprint is eb:24:0e:07:96:26:b1:04:c2:37:0c:78:2d:bc:b0:08.
Are you sure you want to continue connecting (yes/no)?
22可以访问
DSC00095.jpg
[root@localhost ~]# service iptables save  #保留生成的iptables策略
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
[root@localhost ~]# cat /etc/sysconfig/iptables  #策略被保存在此文件中

Generated by iptables-save v1.4.21 on Mon Dec  4 06:09:11 2017
  *filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [588:49459]
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-port-unreachable
COMMIT
DSC00096.jpg
[root@localhost ~]# iptables -A INPUT -i lo -j ACCEPT
[root@localhost ~]# iptables -A INPUT -s 172.25.254.60 -p tcp --dport 22 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -j REJECT
DSC00097.jpg
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  172.25.254.60        0.0.0.0/0            tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
DSC00098.jpg
[root@localhost ~]# iptables -D INPUT -p tcp --dport 80 -j ACCEPT #删除也是从上向下读取
DSC00099.jpg
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  172.25.254.60        0.0.0.0/0            tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

[root@localhost ~]# iptables -D INPUT -p tcp --dport 80 -j ACCEPT
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  172.25.254.60        0.0.0.0/0            tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-p


  [root@localhost ~]# iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT  #添加到filter表第一条接受80端口数据
[root@localhost ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT  #插入到最后一条允许访问80端口

[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  172.25.254.60        0.0.0.0/0            tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80

[root@localhost ~]# iptables -D INPUT 8 #删除第八条

[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  172.25.254.60        0.0.0.0/0            tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-p

root@localhost ~]# iptables -nL | grep -E &quot;INPUT|target&quot; -v | cat -b #附加链条数
1  ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
2  ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
3  ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
4  REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
5  ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
6  ACCEPT     tcp  --  172.25.254.60        0.0.0.0/0            tcp dpt:22
7  REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

8  Chain FORWARD (policy ACCEPT)
9  Chain OUTPUT (policy ACCEPT)
![](http://i2.51cto.com/images/blog/201712/06/d209e18862460cb13916881523509662.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
[root@localhost ~]# iptables -R INPUT 1 -p tcp --dport 80 -j REJECT #R:修改规则,把第一条规则修改为访问我的80端口拒绝
  [root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachable
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  172.25.254.60        0.0.0.0/0            tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable


[root@localhost ~]# iptables -N WESTOS #新建链 WESTOS
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachable
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  172.25.254.60        0.0.0.0/0            tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
  Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
  Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
  Chain WESTOS (0 references)
target     prot opt source               destination         


  [root@localhost ~]# iptables -E WESTOS linux #修改附加链名称
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachable
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  172.25.254.60        0.0.0.0/0            tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
  Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
  Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
  Chain linux (0 references)
target     prot opt source               destination         


[root@localhost ~]# iptables -X linux #删除链
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachable
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  172.25.254.60        0.0.0.0/0            tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with


[root@localhost ~]# iptables -P INPUT DROP #修改默认规则为DROP
[root@localhost ~]# iptables -nL
Chain INPUT (policy DROP)
target     prot opt source               destination         
REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachable
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  172.25.254.60        0.0.0.0/0            tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icm


[root@localhost ~]# iptables -F
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

  Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
  Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination      



[root@localhost ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

[root@localhost ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  #m:状态 当访问我的状态是正在访问或是访问过我的可以接受访问
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED


[root@localhost ~]# iptables -A INPUT -m state --state NEW -i lo -j ACCEPT #当从回环接口进来的数据状态是新的接受

[root@localhost ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT #当访问我的22端口状态是新的接受

[root@localhost ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT #当访问我的80端口状态是新的接受访问

[root@localhost ~]# iptables -A INPUT -j REJECT  #其他访问拒绝

[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:80
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-un

[root@localhost ~]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.130  #从eth0出去的数据都转成172.25.254.130这个ip出去

[root@localhost ~]# sysctl -a | grep ip_forward  #iptables默认路由功能未打开,1表示打开,若未打开,编辑文件
net.ipv4.ip_forward = 1
[root@localhost ~]# vim /etc/sysctl.conf #编辑该文件net.ipv4.ip_forward = 1打开路由功能

[root@localhost ~]# iptables -t nat -nL
[root@localhost ~]# ssh root@172.25.254.60
root@172.25.254.60's password:
Last login: Mon Dec  4 20:36:10 2017 from 172.25.254.130
[root@foundation60 ~]# w
20:39:49 up  3:57,  5 users,  load average: 0.06, 0.08, 0.12
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
kiosk    :0       :0               16:43   ?xdm?  19:27   0.21s gdm-session-worker [pa
kiosk    pts/0    :0               17:31   25:17  20.82s  0.48s vim iptables
kiosk    pts/2    :0               20:26    2:13   0.03s  0.03s /bin/bash
kiosk    pts/3    :0               17:56    5.00s  9.46s  0.18s ssh root@172.25.254.13
root     pts/5    172.25.254.130(从eth0出去的都以172.25.254.130出去的)   20:39    4.00s  0.02s  0.00s w



[root@localhost ~]# iptables -t nat -A PREROUTING -i eth0 -d 172.25.254.130 -j DNAT --to-dest 172.25.60.1  #从eth0网卡以172.25.254.130进来的数据目的地址172.25.60.1

[root@localhost ~]# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       all  --  0.0.0.0/0            172.25.254.130       to:172.25.60.1

  Chain INPUT (policy ACCEPT)
target     prot opt source               destination
  Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
  Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  0.0.0.0/0            0.0.0.0/0            to:172.25.254.130

ssh连接时,转到172.25.60.1

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-460979-1-1.html 上篇帖子: kali linux安装 下篇帖子: Linux服务简单优化
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表