一、網絡相關的基礎:linux
ifconfig:查看IP地址信息:vim
也能夠用ip addr查看,不過這個顯示不直觀:安全
若是這個包沒有安裝:yum install -y net-toolsbash
[root@localhost ~]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.149.129 netmask 255.255.255.0 broadcast 192.168.149.255 ether 00:0c:29:37:3b:d9 txqueuelen 1000 (Ethernet) RX packets 109556 bytes 80107827 (76.3 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 43183 bytes 16149071 (15.4 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Local Loopback) RX packets 2 bytes 224 (224.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2 bytes 224 (224.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ifconfig -a:ifconfig有一個-a選項(能顯示沒有IP的網卡和down掉的網卡):服務器
啓動或關閉網卡:有時候咱們須要針對單個網卡進行操做,可使用以下命令:網絡
啓動網卡:ifup eth0 ==== ifconfig eth0 upapp
關閉網卡:ifdown eth0 ==== ifconfig eth0 downtcp
同時啓動和關閉:ifdown eth0;ifup eth0工具
設置網卡別名:有時須要給網卡設置多個IP地址用於通訊:以下:oop
一、複製網卡腳本到新的網卡eth0:0裏,後面的冒號須要脫義: [root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-eth0\:0 #複製網卡腳本到新的文本內容: 二、並修改網卡eth0:0的內容:IP地址 DEVICE NAME等: [root@localhost network-scripts]# cat ifcfg-eth0:0 #查看網卡內容: TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes NAME=eth0:0 DEVICE=eth0:0 ONBOOT=yes IPADDR=192.168.149.130 NETMASK=255.255.255.0 三、而後ping也能夠通: [root@localhost ~]# ping 192.168.149.130 PING 192.168.149.130 (192.168.149.130) 56(84) bytes of data. 64 bytes from 192.168.149.130: icmp_seq=1 ttl=64 time=0.068 ms 64 bytes from 192.168.149.130: icmp_seq=2 ttl=64 time=0.046 ms 64 bytes from 192.168.149.130: icmp_seq=3 ttl=64 time=0.046 ms
查看網卡的鏈路是否連通性有兩種方式:
ethtool eth0 #查看網卡連通性:
mii-tool eth0 #查看網卡連通性:
[root@localhost ~]# mii-tool eth0 eth0: negotiated 1000baseT-FD flow-control, link ok [root@localhost ~]# ethool eth0 Link detected: yes
二、修改DNS地址:
配置文件: /etc/resolv.conf
DNS是用來作IP和域名之間的解析,而在linux下設置DNS有兩種方式:
一、編輯並臨時修改/etc/resolv.conf文件裏的DNS配置,重啓網卡後會被網卡配置文件的裏的覆蓋:(格式:nameserver 114.114.114.114)
二、編輯網卡主配置文件(ifcfg-eth0),更改後重啓網卡生效:(格式:DNS1=114.114.114 \n DNS2=8.8.8.8)
注意:若是是臨時修改DNS,則建議修改/etc/resolv.conf,若是是永久更改,則修改網卡主配置文件:
[root@localhost ~]# tail -n2 /etc/sysconfig/network-scripts/ifcfg-eth0 DNS1=114.114.114.114 DNS2=8.8.8.8 [root@localhost ~]# cat /etc/resolv.conf # Generated by NetworkManager nameserver 114.114.114.114 nameserver 8.8.8.8
此外還有一個能夠解析的文件:只適合用本機: /etc/hosts #在此不作過多解釋:
三、linux下的防火牆(netfilter):
SELinux:是linux系統裏特有的安全機制,幾乎不多使用,安裝完系統後通常SELinux是關閉的(祕鑰驗證是會受此影響):
netfilter:是linux下的防火牆,它是經過兩個管理工具"iptables" "firewalld"來實現的,在Centos 6包括以前都是用的iptables,從Centos 7開始使用的firewalld:
注意:要區分開:iptables和firewalld只是netfillter防火牆實現的兩種手段方式而已:
2.1:SELinux基本操做:
臨時關閉SELinux:setenforce 0
[root@localhost ~]# getenforce #查看selinux的狀態 Disabled [root@localhost ~]# setenforce 0 #臨時關閉selinux: setenforce: SELinux is disabled
永久關閉selinux:編輯/etc/selinux/config文件:
[root@localhost ~]# vim /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing SELINUXTYPE=targeted
把selinux=enforcing修改成disabled就能夠了,從新啓動系統便可:
三、netfilter(iptables):因爲如今好多公司仍是以前的Centos 6/5系統,咱們先簡單介紹iptables的用法:
首先作一個準備工做,關閉firewalld, 開啓iptables(須要安裝iptables-services這個包):
[root@localhost ~]# systemctl disable firewalld #禁止firewalld服務開機啓動: [root@localhost ~]# systemctl stop firewalld #關閉firewalld服務: [root@localhost ~]# yum install -y iptables-services #安裝iptables,這樣可使用之前版本: 總下載量:483 k Downloading packages: Delta RPMs disabled because /usr/bin/applydeltarpm not installed. (1/2): iptables-services-1.4.21-24.1.el7_5.x86_64.rpm | 51 kB 00:00:00 (2/2): iptables-1.4.21-24.1.el7_5.x86_64.rpm | 432 kB 00:00:00 完畢! [root@localhost ~]# systemctl enable iptables #容許iptables服務開機啓動: Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service. [root@localhost ~]# systemctl restart iptables #啓動iptables服務: 注意:iptables安裝完成後,默認此服務是開啓的:
3.1:查看iptables的默認規則:iptables -nvL == iptables -t filter -nvL(默認是顯示filter表)
默認規則保存在/etc/sysconfig/iptables
[root@localhost ~]# iptables -nvL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 53 4728 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 41 packets, 4264 bytes) pkts bytes target prot opt in out source destination
3.2:netfilter(iptables):內置有五個表及五個鏈:
一、flter表:是系統默認的表,主要用於過濾包,該表內置有三個鏈:
INPUT:數據包進入本機時通過的鏈,做用於進入本機的包:
OUTPUT:本機自身產生的包發送出去的,做用於本機送出的包:
FORWARD:數據包轉發(只是通過本機的包),做用於那些跟本機無關的包:
二、nat表:用於網絡地址轉換:內置有三個鏈:
PERROUTING:數據包剛剛進來到達防火牆時改變其目的地址(若是須要的話):
OUTPUT:改變本地產生的包的目的地址:
POSTROUTE:數據包離開防火牆時改變其源地址:
三、mangle表:用於數據包作標記,而後根據標記去操做相應的包:用的較少,無需太關注:內置五個鏈以下:
INPUT OUTPUT FORWARD PERROUTING POSTROUTE
四、raw表:能夠實現不追蹤某些數據包,用來節省資源:用的較少:內置以下兩個鏈: PERROUTING OUTPUT
5、security:它是在Centos 7裏面纔有的,用於強制訪問控制MAC的網絡規則:沒人用過:
3.3:iptables options 參數:
options:
-n:表示不針對IP反解析主機名:
-v:表示列出的信息更詳細:
-L:表示列出:
-t:後面跟表名(默認打印filter表的相關信息):
-A:add:表示增長一條規則,增長後規則是在最下面排列:
-I:insert:插入一條規則,插入後規則在最上面顯示:
-s:後面跟源IP地址: -s 192.168.188.1
-d:後面跟目的地址: -d 192.168.1.1
-sport:表示指定源端口,需結合-p使用:
-dport:表示指定目標端口,需結合-p使用:
-p:指定協議:tcp udp icmp:
-j:後跟動做: ACCEPT(容許包)、REGECT(拒絕包)、 DROP(丟棄)
注意:REGECT和DROP都是丟掉包,區別在於:drop是直接丟棄,不會看數據包:而regect會查看數據包,纔會說你不能夠進來:並拒絕:
-i:表示指定網卡,不經常使用:
-P:預設策略,通常用於寫腳本,體如今iptables -nvL的第一行policy ACCEPT:
-F:清空規則,不會清空配置文件的,但再次重啓iptables後還會加載出來:
-Z:計數器清零,用於寫腳本,能夠用來封IP,以半小時爲準,經過判斷計數器的數量封IP,達到目的:
注意:在iptables裏匹配時會採起順序匹配,也就是說一旦匹配到了就會執行,不往下執行了:
用法1:增長一條規則,當源IP爲192.168.188.1且端口123向IP爲192.168.1.1端口爲80的數據包,執行丟棄的操做:最下面:
iptables -A INPUT -s 192.168.188.1 -p tcp --sport 123 -d 192.168.1.1 --dport 80 -j DROP
[root@localhost ~]# iptables -A INPUT -s 192.168.188.1 -p tcp --sport 123 -d 192.168.1.1 --dport 80 -j DROP [root@localhost ~]# iptables -nvL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 1037 96780 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 108 8424 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited 0 0 DROP tcp -- * * 192.168.188.1 192.168.1.1 tcp spt:123 dpt:80 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with Chain OUTPUT (policy ACCEPT 23 packets, 2504 bytes) pkts bytes target prot opt in out source destination D
用法2:插入一條規則,源IP是192.168.149.0/24網段到本機的56888的端口數據包,所有放行:
[root@localhost ~]# iptables -I INPUT -s 192.168.149.0/24 -p tcp --dport 56888 -j ACCEPT
[root@localhost ~]# iptables -I INPUT -s 192.168.149.0/24 -p tcp --dport 56888 -j ACCEPT [root@localhost ~]# iptables -nvL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 35 3120 ACCEPT tcp -- * * 192.168.149.0/24 0.0.0.0/0 tcp dpt:56888 108 8424 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with 0 0 DROP tcp -- * * 192.168.188.1 192.168.1.1 tcp spt:123dpt:80 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 icmp-host-prohibited Chain OUTPUT (policy ACCEPT 27 packets, 2832 bytes) pkts bytes target prot opt in out source destination
如上圖所示:-A(增長)和-I(插入)還有有區別:-A增長後是會在最下面依次排序,-I插入後是在最上面,也就是說匹配的時候會優先匹配:而基於iptables的匹配規則,會是從上往下匹配依次,一旦匹配到就執行相關操做,在往下面的則不匹配:
用法3:刪除一條規則:iptable -D INPUT .........
1:若是要是知道規則的內容:刪除一條規則必須和添加時候的規則一致,也就是說出了-A/-D不同,其餘地方要相同:
[root@localhost ~]# iptables -D INPUT -s 192.168.149.0/24 -p tcp --dport 56888 -j ACCEPT [root@localhost ~]# iptables -nvL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 1328 122K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 138 10764 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited 0 0 DROP tcp -- * * 192.168.188.1 192.168.1.1 tcp spt:123 dpt:80 Chain OUTPUT (policy ACCEPT 28 packets, 2936 bytes) pkts bytes target prot opt in out source destination
2:若是要是忘記規則內容:則須要先查看當前序列號對應的規則,而後根據序列號操做:第一列num表示序列號:
[root@localhost ~]# iptables -nvL --line-number #列出每條規則所對應的序列號: Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 2 193 17212 ACCEPT tcp -- * * 192.168.149.0/24 0.0.0.0/0 tcp dpt:56888 3 1341 123K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 4 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 5 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 6 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 7 138 10764 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 8 0 0 DROP tcp -- * * 192.168.188.1 192.168.1.1 tcpspt:123 dpt:80 [root@localhost ~]# iptables -D INPUT 8 #刪除第一列的第8條規則:
三、清除規則:iptables -F #不會更改配置文件的內容:
[root@localhost ~]# iptables -F #清除規則: [root@localhost ~]# iptables -nvL #再次查看規則: Chain INPUT (policy ACCEPT 25 packets, 2236 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 19 packets, 2056 bytes) pkts bytes target prot opt in out source destination [root@localhost ~]# service iptables restart #從新啓動規則: 註釋:重啓以後即會恢復以前的規則,由於它原來的規則的配置都保存在/etc/sysconfig/iptables文件裏,因此從新啓動會再次加載這個配置文件,恢復原有配置: 若是想保存永久保存當前配置,則可使用service iptables save 保存當前配置到配置文件裏便可:
永久保存當前配置到配置:service iptables save
四、iptables還能夠針對某個網卡進行操做: -i #把INPUT鏈裏源IP爲192.168.149.0/24網段到eth0的數據包都丟棄:
[root@localhost ~]# iptables -A INPUT -s 192.168.149.0/24 -i eth0 -j DROP [root@localhost ~]# iptables -nvL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 235 20380 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 DROP all -- eth0 * 192.168.149.0/24 0.0.0.0/0
五、預設策略:-P #表示iptables規則鏈裏第一行(policy ACCEPT)這個,
[root@localhost ~]# iptables -P OUTPUT DROP #執行OUTPUT的預設策略爲DROP,遠程會斷掉:
此時則須要再去機房登陸你的主機,執行以下命令:把預設策略修改成ACCEPT: #那若是主機在美國了,你也去麼???
[root@localhost ~]# iptables -P OUTPUT ACCEPT #修改output的預設策略爲ACCEPT;
如上命令切勿操做,由於一旦執行,不只會端口你的遠程服務器,有可能還會影響到業務,由於修改了它的默認策略爲DROP:
附記:
iptables的使用格式:
iptables -t [ filter|nat ] -A|-I [ INPUT|OUTPUT|FORWARD ] -s [ 源ip|源子網 ] -p [ tcp|udp|icmp ] --sport 源端口 -d [ 目標ip|目標子網 ] --dport 目標端口 -j [ ACCEPT|REGECT|DROP ]