關閉selinuxlinux
由於selinux開啓增大了運維成本,不少服務都受限於selinux,關閉selinux也不會出現什麼安全問題,通常都是關閉的。shell
臨時關閉selinuxvim
setenforce 0
centos
永久關閉安全
修改配置文件:/etc/selinux/configbash
修改內容:服務器
SELINUX=enforcing改成disabled運維
修改完成後重啓服務器生效tcp
查看selinux狀態工具
getenforce
netfilter/firewalld
netfilter是centos6及之前版本使用的防火牆,centos7把netfilter升級爲了firewalld。
目前有些企業仍是用的centos6及之前的版本,因此仍是須要會使用netfilter。
因爲目前使用時centos7,想要使用netfileter能夠把firewalld先關閉。
關閉firewalld
systemctl disable firewalld
禁止啓動
systemctl stop firewalld
關閉防火牆
開啓netfilter
先安裝iptables工具包:
yum install iptables-services
啓動iptables:
systemctl enable iptables
systemctl start iptables
查看iptables規則
iptables -nvL
netfilter五表:
filter:包過濾,用於防火牆規則。有INPUT、FORWARD、OUTPUT三個鏈
nat:地址轉換,用於網關路由器。有PREROUTING、OUTPUT、POSTROUTING三個鏈
mangle:用於給數據包打標記,而後根據標記去操做那些表。(不經常使用)
- 不經常使用的表:raw、security
netfilter五鏈:
查看iptables規則
iptables -nvL
清空iptables規則
iptables -F
清空後未保存規則配置文件(/etc/sysconfig/iptables),服務重啓或系統重啓後,防火牆服務會從新加載規則配置文件中的原有規則。
保存規則
iptables save
重啓
service iptables restart
查看nat表
iptables -t nat -nvL
計數器清零
iptables -Z
添加iptables規則
iptables -A INPUT -s 192.168.1.19 -p tcp --sport 8888 -d 192.168.1.12 --dport 80 -i ens33 -j DROP
解釋: 增長一條iptables規則:input鏈,源IP:192.168.1.19,TCP協議,源端口:8888,目的IP:192.168.1.12,目的端口:80,執行:DROP(丟掉)。
和DROP相似的還有REJECT,不一樣的是:接受數據包後REJECT會進行查看,而後丟掉,DROP則是直接丟掉。通常DROP比較經常使用。
刪除iptables規則
和添加規則相似,把-A改爲-D
iptables -D INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -i ens33 -j DROP
也能夠根據查詢規則號進行刪除:
iptables -nvL --line-number
刪除
iptables -D INPUT 編號
插入一條規則
iptables -I INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT
插入一條來源網段爲 192.168.1.0/24,網卡爲eth0,執行放行操做
修改默認規則
通常不要修改默認規則,有可能致使遠程終端沒法鏈接
修改:
`iptables -P INPUT DROP`
恢復:
`ptables -P OUTPUT ACCEPT`
案例1:放行端口
需求:只放行80、21/22三個端口,且22端口只有192.168.43.0/24段才能訪問。 使用shell腳本實現:
vim iptables.sh
新建一個iptables腳本,寫入如下內容:
#! /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.43.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
案例2:禁ping
需求:本機能夠ping通別的機器,別的機器沒法ping通本機
iptables -I INPUT -p icmp --icmp-type 8 -j DROP
場景:有兩臺機器A和B。A機器有兩個網卡,ens33(192.168.43.180)和ens37(192.168.100.1),ens33可使用外網,ens37只能使用內網。B機器只有ens33(192.168.100.1)網卡,不能使用外網,但能夠與A機器互通。
需求:讓B機器能夠鏈接外網
實現步驟:
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens37
uuidgen ens37
// 獲取ens37uuid
修改ens37配置文件
vim ifcfg-ens37
ifdown ens37 && ifup ens37
A機器設置路由
A機器上打開路由轉發
默認是關閉的,0表示關閉
打開:
echo 「1」>/proc/sys/net/ipv4/ip_forward
增長一條防火牆規則:
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
B機器設置網關
vim /etc/resolv.conf
添加如下內容:
nameserver 114.29.29.29
6.測試鏈接
在B機器ping www.baidu.com 是否能通
netfilter是基於內核,在centos7之前版本,防火牆是指iptables,它是一個服務,iptables服務是用來管理加載、調用iptables命令。在centos7版本,叫firewalld,它比iptables更加豐富,一樣也能夠管理iptables命令設置好的規則。
iptables -I INPUT -m iprange --src-range 61.4.176.0-61.4.191.255 -j DROP
192.168.1.0/24 iptables -I INPUT -p tcp --dport 80 -s 192.168.1.0/24 -j ACCEPT
-m 後面跟模塊名字,iprange是一個模塊名字,用來支持一個網段
--src-range 指定來源的ip範圍
--dst-range 指定目標ip範圍
iptables的四種狀態
分別被稱爲NEW、ESTABLISHED、INVALID、RELATED NEW:NEW說明這個包是咱們看到的第一個包。意思就是,這是conntrack模塊看到的某個鏈接的第一個包,它即將被匹配了。好比,咱們看到一個SYN 包,是咱們所留意的鏈接的第一個包,就要匹配它。 ESTABLISHED: ESTABLISHED已經注意到兩個方向上的數據傳輸,並且會繼續匹配這個鏈接的包。處於ESTABLISHED狀態的鏈接是很是容易理解的。只要發送並接到應答,鏈接就是ESTABLISHED的了。一個鏈接要從NEW變爲ESTABLISHED,只須要接到應答包便可,無論這個包是發往防火牆的,仍是要由防火牆轉發的。ICMP的錯誤和重定向等信息包也被看做是ESTABLISHED,只要它們是咱們所發出的信息的應答。 RELATED: RELATED是個比較麻煩的狀態。當一個鏈接和某個已處於ESTABLISHED狀態的鏈接有關係時,就被認爲是RELATED的了。換句話說,一個鏈接要想是RELATED的,首先要有一個ESTABLISHED的鏈接。這個ESTABLISHED鏈接再產生一個主鏈接以外的鏈接,這個新的鏈接就是 RELATED的了,固然前提是conntrack模塊要能理解RELATED。ftp是個很好的例子,FTP-data 鏈接就是和FTP-control有關聯的,若是沒有在iptables的策略中配置RELATED狀態,FTP-data的鏈接是沒法正確創建的,還有其餘的例子,好比,經過IRC的DCC鏈接。有了這個狀態,ICMP應答、FTP傳輸、DCC等才能穿過防火牆正常工做。注意,大部分還有一些UDP協議都依賴這個機制。這些協議是很複雜的,它們把鏈接信息放在數據包裏,而且要求這些信息能被正確理解。 INVALID:INVALID說明數據包不能被識別屬於哪一個鏈接或沒有任何狀態。有幾個緣由能夠產生這種狀況,好比,內存溢出,收到不知屬於哪一個鏈接的ICMP錯誤信息。通常地,咱們DROP這個狀態的任何東西,由於防火牆認爲這是不安全的東西。
iptables限制syn速度