前言
創(chuàng)新互聯公司于2013年成立,是專業(yè)互聯網技術服務公司,擁有項目成都做網站、成都網站建設網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元安仁做網站,已為上家服務,為安仁各地企業(yè)和個人服務,聯系電話:028-86922220管理防火墻工具
1.圖形化管理工具 firewall-config
2.命令管理工具 iptables(操作復雜) firewall-cmd
iptables 只是linux防火墻管理工具而已,真正實現防火墻功能的是netfilter,我們配置了iptables規(guī)則后netfilter通過這些規(guī)則來進行防火墻過濾等操作
netfilter模塊:
? 它是主要的工作模塊,位于內核中,在網絡層的五個位置(也就是防火墻四表五鏈中的五鏈)注冊了一些函數,用來抓取數據包;把數據包的信息拿出來匹配各個鏈位置在對應表中的規(guī)則:匹配之后,進行相應的處理accept、drop等等。
下面這張圖很明了的說明了netfilter和iptables之間的關系
只要有操作系統(tǒng),就有防火墻
accept 同意 drop 拒絕
網絡接口層從某種意義上是二層的mac
鏈就是執(zhí)行的步驟:共有五個
進路由(prerouting)、
進系統(tǒng)(input)、
轉發(fā)(forward)、
出系統(tǒng)(output)、
出路由(postrouting);
表就是存儲的規(guī)則:數據包到了該鏈處,會去對應表中查詢設置的規(guī)則,然后決定是否放行、丟棄、轉發(fā)還是修改等等操作。
表——————鏈————規(guī)則
一個表——一個表當中包含多個鏈——一個鏈當中包含多個規(guī)則
進路由、出路由 地址轉換時用
硬件防火墻效果大于軟件防火墻,軟件防火墻只是多一道防護
五鏈 | raw表(打標記) | mangle表(修改數據包類型) | nat表(地址轉換) | filter表(過濾數據包) |
---|---|---|---|---|
PREROUTING鏈(進路由) | - | - | - | |
INPUT鏈(進系統(tǒng)) | - | - | ||
FORWARD鏈(數據包轉發(fā)) | - | - | ||
OUTPUT鏈(出系統(tǒng)) | - | - | - | - |
POSTROUTING鏈(出路由) | - | - |
iptables [ -t 表名 ] 選項 [ 鏈名 ] [ 條件 ] [ -j 控制類型 ]
iptables 常用參數
-P 設置默認策略:iptables
-P INPUT (DROP | ACCEPT)
-F 清空規(guī)則鏈
-L 查看規(guī)則鏈
-A 在規(guī)則連的末尾插入新的規(guī)則
-I num 在規(guī)則連的頭部加入新規(guī)則 //大寫的i
-D num 刪除某一條規(guī)則
-s 匹配來源地址IP/MASK,加嘆號“!”表示除這個IP外
-d 匹配目標地址
-i 網卡名稱 匹配從這塊網卡流入的數據
-o 網卡名稱 匹配從這塊網卡流出的數據
-p 匹配協議,如tcp,udp,icmp
--dport num 匹配目標端口號
--sport num 匹配來源端口號
-I 規(guī)則鏈 -i網卡 -p 協議 --dport 目標端口 -s 源地址 -j 操作
iptables -F 清空默認的filters表
想要清空指定的表,需要-t指定表
通常防火墻的接口在兩個或者兩個以上,針對用途的不同可以將接口劃分為不同的區(qū)域,針對區(qū)域去進行管理
? linux6與linux7 的網卡名稱不同————linux6 的網卡名稱 eth0
區(qū)別 | linux6 | linux7 |
---|---|---|
網卡名稱 | eth0 | ens33 |
防火墻 | iptables | firewalld,iptables |
在防火墻中,發(fā)揮作用的是netfilter(內核態(tài)),不可以直接管理,只能間接管理,使用firewalld或者iptabvles
daemon 指的是進程
firewall-config 是圖形化工具
firewall-cmd 是字符命令
使用工具或者操作去管理進程和服務
進程服務去控制封裝的iptables命令,間接的去管理內核中的netfiler
真正能跟netfilter交互的是iptables,firewall去管理iptables
四表五鏈也就在iptables(command)中
工作原理體系圖
區(qū)別 | firewalld | iptables |
---|---|---|
配置文件 | /usr/lib/firewalld/ /etc/firewalld | etc/firewalld/etc/sysconfig/iptables |
對規(guī)則的修改 | 不需要全部刷新策略,不丟失現行連接 | 需要全部刷新策略,丟失連接 |
防火墻類型 | 動態(tài)防火墻 | 靜態(tài)防火墻 |
區(qū)域 | 描述 |
---|---|
drop(丟棄) | 任何接收的網絡數據包都被丟棄,沒有任何回復。僅能有發(fā)送出去的網絡連接 |
block(限制) | 人和接受的網絡連接都被IPv4的imcp-host-prohibited 信息和IPv6的icmp6-adm-prohibited 信息所拒絕 |
public(公共) | 在公共區(qū)域內使用,不能詳細網絡內的其他計算機不會對您的計算機造成危害,只能接收經過選取的內容 |
external(外部) | 特別是為路由器啟用了偽裝功能的外部網。您不能信任來自網絡的其他計算機,不能相信他們不會對您的計算機造成危害,只能接收經過選擇的鏈接 |
dmz(非軍事區(qū)) | 用于您的非軍事區(qū)內的電腦,此區(qū)域內可公開訪問,可以有限的進入您的內部網絡,僅僅接收經過選擇的鏈接 |
work(工作) | 用于工作區(qū)。您可以基本詳細網絡內的其他電腦不會危害您的電腦。僅僅接收經過選擇的鏈接 |
home(家庭) | 用于家庭網絡。您可以基本信任網絡內的其他計算機不會危害您的計算機。僅僅接收經過選擇的鏈接 |
internal(內部) | 用于內部網絡。您可以基本上信任網絡內的其他計算機不會威脅您的計算機。僅僅接收經過選擇的連接 |
trusted(信任) | 可接受所有的網絡連接 |
public 公共區(qū)域,默認所有端口放在這個區(qū)域
默認規(guī)則,高安全級別可以訪問低安全級別,如果讓外網訪問內網,需要專門修改規(guī)則
比如內網的安全級別為100,外網的安全級別為0,則
內網可以訪問外網,外網不可以訪問內網
把提供對外服務的服務器放到內網,如果想要讓外網可以訪問內網,需要設置對應的配置,但是安全性方面存在隱患
于是就出現了dmz(非軍事區(qū)),將dmz安全級別設置為50,將提供對外服務的服務器劃分到dmz,這樣安全性方面就得到了提高
但是這樣也有以dmz為跳板,去訪問內網的情況,為了更安全,背靠背堡壘主機的模式出現,即再加入一臺硬件防火墻,將新的一臺防火墻放到內網與當前硬件防火墻之間,起到隔絕的作用
即,第一道防火墻擋在外面,后面分兩道線,一道是對外服務器,一道是內網,在內網的位置再添加第二道防火墻,以保護內網主機安全
可以在第一道防火墻啟用流量監(jiān)控清晰,實時分析數據,針對性去過濾可疑數據,
還可以在第一道防火墻放置一個蜜罐
常用的區(qū)域為:
public
external
dmz
internal
block 是阻塞模式
工作和家庭是自定義區(qū)域
低安全通向高安全需要設置入站規(guī)則
默認情況下,ens33綁定在公共區(qū)域(public)中
iptables沒有區(qū)域的概念
iptables是針對四表五鏈設置規(guī)則
備注:
? 在業(yè)務比較繁忙時,不要設置永久配置,先設置運行時配置,不會中斷原有業(yè)務,等到夜晚不繁忙的時候,再設置永久配置
被激活的區(qū)域(區(qū)域內有網卡存在)名會被黑色加粗;先指定要修改的區(qū)域,然后去修改服務等子選項,這些配置只對在該區(qū)域內的網卡生效
[root@localhost ~]# rpm -q httpd
httpd-2.4.6-90.el7.centos.x86_64
[root@localhost ~]# firewall-config
C:\Users\GSY>ping 192.168.247.142
正在 Ping 192.168.247.142 具有 32 字節(jié)的數據:
來自 192.168.247.142 的回復: 字節(jié)=32 時間<1ms TTL=64
來自 192.168.247.142 的回復: 字節(jié)=32 時間<1ms TTL=64
來自 192.168.247.142 的回復: 字節(jié)=32 時間<1ms TTL=64
來自 192.168.247.142 的回復: 字節(jié)=32 時間<1ms TTL=64
192.168.247.142 的 Ping 統(tǒng)計信息:
數據包: 已發(fā)送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),
往返行程的估計時間(以毫秒為單位):
最短 = 0ms,最長 = 0ms,平均 = 0ms
關閉icmp的請求選項
C:\Users\GSY>ping 192.168.247.142
正在 Ping 192.168.247.142 具有 32 字節(jié)的數據:
來自 192.168.247.142 的回復: 無法訪問目標主機。
來自 192.168.247.142 的回復: 無法訪問目標主機。
來自 192.168.247.142 的回復: 無法訪問目標主機。
來自 192.168.247.142 的回復: 無法訪問目標主機。
192.168.247.142 的 Ping 統(tǒng)計信息:
數據包: 已發(fā)送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),
[root@localhost ~]# ssh root@192.168.247.142
The authenticity of host '192.168.247.142 (192.168.247.142)' can't be established.
ECDSA key fingerprint is SHA256:dXWxtS2ShXQgfb7R672V7+l3i7rGqHBbIB5MTcFnAws.
ECDSA key fingerprint is MD5:59:fb:20:f0:28:96:5e:14:90:82:63:c9:ae:67:d6:e9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.247.142' (ECDSA) to the list of known hosts.
root@192.168.247.142's password:
Last login: Mon Dec 9 13:42:31 2019 from 192.168.247.1
[root@localhost ~]# exit
登出
Connection to 192.168.247.142 closed.
[root@localhost ~]# ssh root@192.168.247.142
ssh: connect to host 192.168.247.142 port 22: No route to host
[root@localhost ~]#
[root@localhost ~]# ifconfig
ens33: flags=4163 mtu 1500
inet 192.168.247.143 netmask 255.255.255.0 broadcast 192.168.247.255
inet6 fe80::e2c1:c26d:afa1:a4ad prefixlen 64 scopeid 0x20
ether 00:0c:29:52:4d:89 txqueuelen 1000 (Ethernet)
RX packets 602 bytes 49107 (47.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 227 bytes 24670 (24.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost ~]# ssh root@192.168.247.142
root@192.168.247.142's password:
Last login: Mon Dec 9 14:05:12 2019 from 192.168.247.1
[root@localhost ~]#
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# netstat -natp | grep 'httpd'
tcp6 0 0 :::80 :::* LISTEN 119597/httpd
[root@localhost ~]#
[root@localhost ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 一 2019-12-09 09:26:39 CST; 5h 14min ago
Docs: man:firewalld(1)
Main PID: 803 (firewalld)
CGroup: /system.slice/firewalld.service
└─803 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
12月 09 14:10:14 localhost.localdomain firewalld[803]: WARNING: COMMAND_FAILED: '/usr/sb....
12月 09 14:10:14 localhost.localdomain firewalld[803]: WARNING: COMMAND_FAILED: '/usr/sb....
12月 09 14:10:14 localhost.localdomain firewalld[803]: WARNING: COMMAND_FAILED: '/usr/sb....
12月 09 14:10:14 localhost.localdomain firewalld[803]: WARNING: COMMAND_FAILED: '/usr/sb....
12月 09 14:10:14 localhost.localdomain firewalld[803]: WARNING: COMMAND_FAILED: '/usr/sb....
12月 09 14:10:14 localhost.localdomain firewalld[803]: WARNING: COMMAND_FAILED: '/usr/sb....
12月 09 14:10:14 localhost.localdomain firewalld[803]: WARNING: COMMAND_FAILED: '/usr/sb....
12月 09 14:10:14 localhost.localdomain firewalld[803]: WARNING: COMMAND_FAILED: '/usr/sb....
12月 09 14:10:14 localhost.localdomain firewalld[803]: WARNING: COMMAND_FAILED: '/usr/sb....
12月 09 14:10:14 localhost.localdomain firewalld[803]: WARNING: COMMAND_FAILED: '/usr/sb....
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]# firewall-cmd --state
running
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --complete-reload
success
[root@localhost ~]#
[root@localhost ~]# systemctl restart firewalld
[root@localhost ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --get-services
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp open*** ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --get-icmptypes
address-unreachable bad-header communication-prohibited destination-unreachable echo-reply echo-request fragmentation-needed host-precedence-violation host-prohibited host-redirect host-unknown host-unreachable ip-header-bad neighbour-advertisement neighbour-solicitation network-prohibited network-redirect network-unknown network-unreachable no-route packet-too-big parameter-problem port-unreachable precedence-cutoff protocol-unreachable redirect required-option-missing router-advertisement router-solicitation source-quench source-route-failed time-exceeded timestamp-reply timestamp-request tos-host-redirect tos-host-unreachable tos-network-redirect tos-network-unreachable ttl-zero-during-reassembly ttl-zero-during-transit unknown-header-type unknown-option
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --get-default-zone
public
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --set-default-zone=internal
success
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --get-active-zones
public
interfaces: ens33
[root@localhost ~]#
激活的條件 : 區(qū)域至少關聯一個接口或一個源地址/網段
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33
public
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --zone=work --add-interface=ens33
The interface is under control of NetworkManager, setting zone to 'work'.
success
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --zone=work --change-interface=ens33
The interface is under control of NetworkManager and already bound to 'work'
The interface is under control of NetworkManager, setting zone to 'work'.
success
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --zone=work --remove-interface=ens33
The interface is under control of NetworkManager, setting zone to default.
success
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --zone=work --query-interface=ens33
no
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --list-all-zones
block
target: %%REJECT%%
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
dmz
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
drop
target: DROP
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
external
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh
ports:
protocols:
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
home
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh mdns samba-client dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
internal (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh mdns samba-client dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client http
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
trusted
target: ACCEPT
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
work
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --zone=internal --list-all
internal (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh mdns samba-client dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --list-all
internal (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh mdns samba-client dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --zone=internal --list-services
ssh mdns samba-client dhcpv6-client
[root@localhost ~]# firewall-cmd --zone=public --add-service=smtp
success
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --zone=internal --remove-service=ssh
success
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --zone=internal --query-service=ssh
no
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --zone=internal --list-ports
[root@localhost ~]# firewall-cmd --zone=internal --add-port=22/tcp --timeout=5m
success
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --zone=internal --remove-port=22/tcp
success
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --zone=internal --query-port=22/tcp
no
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --zone=work --list-icmp-blocks
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --zone=work --add-icmp-block=echo-request
success
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --zone=work --list-icmp-blocks
echo-request
[root@localhost ~]# firewall-cmd --zone=work --add-icmp-block=echo-reply
success
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --zone=work --remove-icmp-block=echo-reply
success
[root@localhost ~]# firewall-cmd --zone=work --list-icmp-blocks
echo-request
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --zone=work --query-icmp-block=echo-request
yes
[root@localhost ~]#
備注: 阻塞,即不讓通行的意思
另外有需要云服務器可以了解下創(chuàng)新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。