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。
作完SNAT策略以後你能夠ping 172.25.254網段的ip的網段,你能夠看到他是從172.25.254.231出去的。
用你client鏈接172.25.254.31時,會顯示你是用172.25.254.231鏈接的,而不是你的client
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
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。