linux 火牆策略

  1. iptables命令bash

-t
指定表名稱
DROP
丟棄
-n
不作解析
-N
增長鏈
-L
列出指定表的策略
-E
修改鏈名稱
-A
增長策略
-X
刪除鏈
--dport
端口
-D
刪除指定策略
-s
數據來源
-I
插入
-j
動做
-R
修改策略
ACCEPT
容許
-P(大寫)
修改默認策略
REJECT
拒絕
-p(小寫)
端口

例如:以下基本操做命令網絡

iptables  -t filter -nL    #查看filter表中的策略
iptable  -F                #刷掉filter表中的全部策略,當沒有用-t指定表名稱時默認時filter
service iptables save      #保存當前策略
iptables -A INPUT -i lo -j ACCEPT    #容許lo
iptables -A INPUT -p tcp --dport 22 -j ACCEPT    ##容許訪問22端口
iptables -A INPUT -s 172.25.254.231 -j ACCEPT    ##容許250主機訪問本機全部端口
iptables -A INPUT -j REJECT  ##拒絕全部主機的數據來源
iptables -N redhat           ##增長鏈redhat
iptables -E redhat westos    ##改變鏈名稱
iptables -X westos    ##刪除westos鏈
iptable -D INPUT 2    ##刪除INPUT鏈中的第二條策略
iptables -I INPUT  -p tcp --dport 80  -j REJECT    ##插入策略到INPUT中的第一條
iptables -R INPUT 1 -p tcp --dport 80 -j ACCEPT    ##修改第一條策略
iptable -P INPUT DROP ##把INPUT表中的默認策略改成drop

2.iptables火牆策略ssh

2.1 加快數據傳輸速度tcp

  也就是當第一次數據傳輸被server接收以後,之後的數據若是是相同類型的,則就爲RELATED和ESTABLISHED兩種類型的,下面是此種火牆策略的簡單例子。ide

  RELATED:第二次工具

  ESTABLISHED:正在創建鏈接的測試

iptables -A INPUT -m state --state RELATED,ESTABLISHED  -j ACCEPT
iptables -A INPUT -i lo -m state --state NEW -j ACCEPT 
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -j REJECT

2.2 SANT 火牆策略ui

   SANT至關於一個漏由的功能,他就是將server做爲一個網橋。至關與內網(client)和外網不一樣,這時有一個漏由(server)能夠鏈接外網(就是下面中的172.25.254的網段)
this

   在server上做以下配置spa

配置server的網卡有兩塊,一塊爲私有網段,分別爲:
eth0:172.25.254.231
eth1:172.25.31.231
[root@server ~]# sysctl -a | grep forward
net.ipv4.ip_forward = 0
#這個是主機的漏由功能,將下面的語句寫入/etc/sysctl.conf,至關於打開主機的漏由功能
[root@server ~]# echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf
[root@server ~]# sysctl -p
[root@server ~]# iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 172.25.254.231

   在client 上做以下配置

配client的網卡爲私有網段爲172.25.31.131
添加網關:172.25.31.231

   測試:當你沒有做這個火牆策略,你ping不通172.25.254這個網段。除了server的IP。

wKiom1mYE-KikJycAACot95VCVo920.png

   作完SNAT策略以後你能夠ping 172.25.254網段的ip的網段,你能夠看到他是從172.25.254.231出去的。

wKioL1mYFCjgJiTJAACqCHMmPcY636.png  

  用你client鏈接172.25.254.31時,會顯示你是用172.25.254.231鏈接的,而不是你的client

wKioL1mYFLqyRkfwAAHqpt1c5ZE438.png

2.3 DNAT 火牆策略

   DNAT就是當有人鏈接你的主機的時候,你若是不想讓他鏈接,你能夠直接鏈接到其餘的主機,就是將這個請求的目標地址轉換成其餘的目標地址

iptables -t nat -A PREROUTING  -i eth0 -j DNAT --to-dest 172.25.31.131
#也就是有人鏈接我server上邊eth0的時候我讓他鏈接個人客戶端。

   用172.25.254.31鏈接你的server,他會鏈接到172.25.31.131上,就是你的client

wKioL1mYFemSBrRqAAGELrCrgss248.png

2.firewall火牆策略

2.1 firewall的zone的分類

drop 丟棄全部進入的包,而不給出任何響應

block

拒絕全部外部發起的鏈接,容許內部發起的鏈接
public
容許指定的進入鏈接
external
出去的ipv4網絡鏈接經過此區域假裝和轉發,僅接受ssh服務鏈接誒
dmz
僅接受ssh服務鏈接
work
通常用於工做區域,僅接受ssh ipp-client samba-client dhcpv6-client
home
同上,相似 用於家庭網絡
internal
同上,相似,用於內部網絡
trusted
信任全部鏈接

2.2 文件添加基本的火牆策略

   在文件中/etc/firewalld/zones/public.xml 中就是你火牆開啓的服務,以下舉例

[root@client ~]# firewall-cmd --list-all
public (default, active)
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 
#這時咱們查看/etc/firewalld/zones/public.xml這個文件的內容
[root@client ~]# 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="dhcpv6-client"/>
  <service name="ssh"/>
  #這裏就只容許ssh服務,若是咱們添加一個服務,http就直接將這個寫入此文件中  <service name="http"/>
</zone>

   若是咱們打開http服務,這時火牆就會加載這個目錄下的文件愛。

在 /usr/lib/firewalld/services/目錄下有不少服務的配置文件,這裏就不列出了,以http爲例
[root@client ~]# ll /usr/lib/firewalld/services/ |grep http
-rw-r-----. 1 root root 448 Feb 28  2014 https.xml
-rw-r-----. 1 root root 353 Feb 28  2014 http.xml
-rw-r-----. 1 root root 310 Feb 28  2014 wbem-https.xml
[root@client ~]# cat  /usr/lib/firewalld/services/http.xml 
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>WWW (HTTP)</short>
  <description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description>
  <port protocol="tcp" port="80"/>
</service>
#這裏面指明瞭http的端口和所使用的通訊協議。

2.3 用命令添加一些基本的火牆策略

[root@client ~]# firewall-cmd --get-zones
ROL block dmz drop external home internal public trusted work
#查看firewall的zone
[root@client ~]# firewall-cmd --set-default-zone=trusted
success
#修改默認的firewall的zone
[root@client ~]# firewall-cmd --list-all
trusted (default, active)
  interfaces: eth0
  sources: 
  services: 
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 
#查看firewall的火牆策略
[root@client ~]# firewall-cmd --reload 
success
#從新加載firewall的火牆策略
[root@client ~]# firewall-cmd --complete-reload 
success
#他也是從新加載火牆策略,就是他是即時生效。
[root@client ~]# firewall-cmd --permanent --add-port=8080/tcp
success
#將tcp協議的8080端口永久的加入到火牆策略中
#--permanent是永久修改的意思
[root@client ~]# firewall-cmd --permanent --add-source=172.25.254.231 --zone=trusted
success 
#接受來自172.25.254.231的全部請求
[root@client ~]# firewall-cmd --permanent --add-interface=eth0 --zone=public
success
#將eth0網卡的zone類型永久修改爲public類型的
[root@client  ~]# firewall-cmd --permanent  --remove-rich-rule="rule family=ipv4 source address=172.25.254.31 forward-port port=22 protocol=tcp to-port=22 to-addr=172.25.254.131"
#永久刪除一條rich rule策略

2.4 firewall Direct Rules工具添加火牆策略

[root@client ~]# firewall-cmd --permanent --direct --add-rule  ipv4 filter INPUT  0 ! -s 172.25.254.231  -p tcp --dport 22 -j ACCEPT
success
#接受全部來自22端口的tcp協議請求,除了來自172.25.254.231這個主機的,可是也沒有拒絕這臺主機,
#這條策略和他沒有關係

2.4 firewall 的Rich Rules(就是iptables的SNAT和DNAT這裏就再也不多講)

[root@client ~]# firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=172.25.254.231 masquerade'
success
#讓全部進入client的網從172.25.254.231出去
[root@client ~]# firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=172.25.254.31 forward-port port=22 protocol=tcp to-port=22 to-addr=172.25.254.131"
success
#從172.25.254.31來的22端口的tcp協議請求,將這個請求轉發到172.25.254.131的22端口的tcp。
相關文章
相關標籤/搜索