CentOS7 Firewalld防火牆
一、理論部分
CentOS7最大的改變之一firewalld防火牆,FirewallD 提供了支持網絡/防火牆區域(zone)定義網絡鏈接以及接口安全等級的動態防火牆管理工具。它支持 IPv4, IPv6 防火牆設置以及以太網橋接,並且擁有運行時配置和永久配置選項。它也支持允許服務或者應用程序直接添加防火牆規則的接口。
下面來看看firewalld的九大區域:
firewalld防火牆有九大區域
丟棄區域(Drop Zone):如果使用丟棄區域,任何進入的數據包將被丟棄。這個類似與我們之前使用iptables -j drop。使用丟棄規則意味着將不存在響應。
阻塞區域(Block Zone):阻塞區域會拒絕進入的網絡連接,返回icmp-host-prohibited,只有服務器已經建立的連接會被通過即只允許由該系統初始化的網絡連接。
公共區域(Public Zone):只接受那些被選中的連接,默認只允許 ssh 和 dhcpv6-client。這個 zone 是缺省 zone
外部區域(External Zone):這個區域相當於路由器的啓用僞裝(masquerading)選項。只有指定的連接會被接受,即ssh,而其它的連接將被丟棄或者不被接受。
隔離區域(DMZ Zone):如果想要只允許給部分服務能被外部訪問,可以在DMZ區域中定義。它也擁有隻通過被選中連接的特性,即ssh。
工作區域(Work Zone):在這個區域,我們只能定義內部網絡。比如私有網絡通信才被允許,只允許ssh,ipp-client和 dhcpv6-client。
家庭區域(Home Zone):這個區域專門用於家庭環境。它同樣只允許被選中的連接,即ssh,ipp-client,mdns,samba-client和 dhcpv6-client。
內部區域(Internal Zone):這個區域和工作區域(WorkZone)類似,只有通過被選中的連接,和home區域一樣。
信任區域(Trusted Zone):信任區域允許所有網絡通信通過。
Firewalld的基本操作:
1獲取firewalld狀態
2在不改變狀態的條件下重新加載防火牆
如果使用--complete-reload ,狀態信息將會丟失。
3獲取支持的區域列表
4獲取所有支持的服務
想要列出默認有效的服務,也可以進入下面的目錄也能夠取得。
cd /usr/lib/firewalld/services/
自己創建服務,任選一個服務複製一份,服務名叫rhel 端口號是1937
vim rhel.xml
修改文件內容
prot=1937 第三行改成rhel. [firewall-cmd --reload]
確認服務是否啓動:
firewall-cmd --get-services
5、獲取所有支持的ICMP類型
二、操作部分
實驗拓撲:
實驗要求:
一、web主機
1、通過8000端口提供www服務,22端口提供ssh服務
2、其他主機通過80端口訪問web服務
3、允許ssh遠程管理
4、禁止ping請求
二、gateway主機 開啓路由轉發
1、通過地址僞裝實現內網訪問外網
2、外網主機可以訪問內網web(通過80端口訪問)和ssh(通過222端口訪問)
實驗步驟:
1、配置Web服務器IP地址並安裝httpd服務
yum -y install httpd
2、關閉selinux
永久關閉:編輯
vim /etc/selinux/config
將文件中的SELINUX="" 爲 disabled ,然後重啓。
如果不想重啓系統,使用命令setenforce 0注:setenforce 1 設置SELinux 成爲enforcing模式。
臨時關閉:輸入“setenforce 0” 設置SELinux 成爲permissive模式
3、修改httpd端口爲8000
修改httpd配置文件:
# vim /etc/httpd/conf/httpd.conf
將Listen的值改爲8000後保存退出
重啓httpd服務:
systemctl restart httpd
驗證效果如下:
5、配置防火牆支持shh訪問
firewall防火牆默認允許ssh端口訪問,如需設置請輸入一下命令:
firewall-cmd [--zone= 區域] --add-service=ssh
6、禁止ping請求
7、配置gateway主機實現通過地址僞裝實現內網訪問外網
開啓路由轉發功能:
vim /etc/sysctl.conf
然後將兩個網卡分別加入相應的區域
在externet外部區域設置地址僞裝
在這裏默認就是開啓狀態,如需開啓請輸入以下命令:
firewall-cmd --zone=external --add-masquerade
8、實現外網主機可以訪問內網web通過80端口訪問和通過222端口訪問ssh服務
實驗效果1:
實驗效果2: