1. 程式人生 > >20190308 samba服務、inotify和rsync實現實時同步、防火墻

20190308 samba服務、inotify和rsync實現實時同步、防火墻

times 產生 lib 實現 day 復雜 共享 輸出 編號

Samba服務
[root@centos7 ~]#yum install samba
[root@centos7 ~]#systemctl start smb
[root@centos7 ~]#ss -ntlu
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 50 :139
:
tcp LISTEN 0 50
:445 端口已開啟 : 可以做共享了。
主配置文件:/etc/samba/smb.conf
添加samba用戶:1、smbpasswd -a <user> 2、pdbedit -a -u <user>
修改用戶密碼: smbpasswd <user>
刪除用戶和密碼:1、smbpasswd –x <user> 2、pdbedit –x –u <user>
查看samba用戶列表: 1、/var/lib/samba/private/passdb.tdb 2、pdbedit –L –v
查看samba服務器狀態: smbstatus

[root@centos7 data]#useradd -s /sbin/nologin smb1
[root@centos7 data]#useradd -s /sbin/nologin smb2
[root@centos7 data]#useradd -s /sbin/nologin smb3
[root@centos7 data]#getent passwd
smb1:x:1001:1001::/home/smb1:/sbin/nologin
smb2:x:1002:1002::/home/smb2:/sbin/nologin

smb3:x:1003:1003::/home/smb3:/sbin/nologin
[root@centos7 data]#smbpasswd -a smb1 把linux用戶變為Samba用戶
New SMB password:
Retype new SMB password:
Added user smb1. smb賬戶添加賬戶不用加a,但是我們是第一次添加,要加上a。
[root@200 ~]#yum install samba
[root@200 ~]#systemctl restart smb nmb samba共享已開啟,現在去windows上測試
技術分享圖片
此時登陸進去,可以看到有文件存在。若要想登陸smb2,就要在windows系統中刪除記錄後登陸。
技術分享圖片
技術分享圖片
此時就可以登陸smb2了。

SAMBA服務器全局配置:
config file=/etc/samba/conf.d/%U 用戶獨立的配置文件
Log file=/var/log/samba/log.%m 不同客戶機采用不同日誌
log level = 2 日誌級別,默認為0,不記錄日誌
max log size=50 日誌文件達到50K,將輪循rotate,單位KB
Security三種認證方式:
share:匿名(CentOS7不再支持)
user:samba用戶(采有linux用戶,samba的獨立口令)
domain:使用DC(DOMAIN CONTROLLER)認證
passdb backend = tdbsam 密碼數據庫格式
實現samba用戶:包: samba-common-tools工具:smbpasswd pdbeditsamba用戶須是Linux用戶,建議使用/sbin/nologin

實驗:通過samba實現文件共享
[root@200 data]#mkdir share1
[root@200 data]#mkdir share2
[root@200 data]#vim /etc/samba/smb.conf
[tools]
comment = software tools
path = /data/share1/
[root@200 data]#systemctl restart smb
技術分享圖片
登陸smb1、2、3均可以看到如下信息:
技術分享圖片

inotify和rsync實現實時同步
實現實時同步:1、要利用監控服務(inotify),監控同步數據服務器目錄中信息的變化 2、發現目錄中數據產生變化,就利用rsync服務推送到備份服務器上
inotify+rsync 方式實現數據同步 使用方式:A:inotify 對同步數據目錄信息的監控 B:rsync 完成對數據的同步 C:利用腳本進行結合
inotify:異步的文件系統事件監控機制,利用事件驅動機制,而無須通過諸如cron等的輪詢機制來獲取事件,linux內核從2.6.13起支持 inotify,通過inotify可以監控文件系統中添加、刪除,修改、移動等各種事件
參考文檔:https://github.com/rvoicilas/inotify-tools/wiki
Inotify-tools包主要文件: 基於epel源
inotifywait: 在被監控的文件或目錄上等待特定文件系統事件(open close delete等)發生,常用於實時同步的目錄監控
inotifywatch:收集被監控的文件系統使用的統計數據,指文件系統事件發生的次數統計
inotifywait命令常見選項
-m, --monitor 始終保持事件監聽 -d, --daemon 以守護進程方式執行,和-m相似,配合-o使用 -r, --recursive 遞歸監控目錄數據信息變化 -q, --quiet 輸出少量事件信息 --timefmt <fmt> 指定時間輸出格式 --format <fmt> 指定的輸出格式;即實際監控輸出內容 -e 指定監聽指定的事件,如果省略,表示所有事件都進行監聽 --exclude <pattern> 指定排除文件或目錄,使用擴展的正則表達式匹配的模式實現 --excludei <pattern> 和exclude相似,不區分大小寫 -o, --outfile <file>打印事件到文件中,相當於標準正確輸出 -s, --syslogOutput 發送錯誤到syslog相當於標準錯誤輸出

防火墻
主機防火墻:服務範圍為當前主機 網絡防火墻:服務範圍為防火墻一側的局域網 硬件防火墻:在專用硬件級別實現部分功能的防火墻;另一個部分功能基於軟件: 實現,如:Checkpoint,NetScreen 軟件防火墻:運行於通用硬件平臺之上的防火墻的應用軟件 網絡層防火墻:OSI模型下四層 優點:對用戶來說透明,處理速度快且易於維護 缺點:無法檢查應用層數據,如病毒等
應用層防火墻/代理服務器:代理網關,OSI模型七層

Netfilter組件
內核空間,集成在linux內核中 擴展各種網絡服務的結構化底層框架
內核中選取五個位置放了五個hook(勾子) function(INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING),而這五個hook function向用戶開放,用戶可以通過一個命令工具(iptables)向其寫入規則
由信息過濾表(table)組成,包含控制IP包處理的規則集(rules),規則被分組放在鏈(chain)上
三種報文流向:
流入本機:PREROUTING --> INPUT-->用戶空間進程
流出本機:用戶空間進程 -->OUTPUT--> POSTROUTING
轉發:PREROUTING --> FORWARD --> POSTROUTING
iptables的組成? iptables由五個表和五個鏈以及一些規則組成
五個表table:filter、nat、mangle、raw、security
filter表:過濾規則表,根據預定義的規則過濾符合條件的數據包
nat表:network address translation 地址轉換規則表
mangle:修改數據標記位規則表
raw:關閉NAT表上啟用的連接跟蹤機制,加快封包穿越防火墻速度
security:用於強制訪問控制(MAC)網絡規則,由Linux安全模塊(如SELinux)實現優先級由高到低的順序為:security -->raw-->mangle-->nat-->filter
五個內置鏈chain 一、INPUT、 二、OUTPUT 三、FORWARD 四、PREROUTING 五、POSTROUTING
技術分享圖片
iptables規則:
匹配條件:默認為與條件,同時滿足
基本匹配:IP,端口,TCP的Flags(SYN,ACK等)
擴展匹配:通過復雜高級功能匹配
處理動作:稱為target,跳轉目標
內建處理動作:ACCEPT,DROP,REJECT,SNAT,DNATMASQUERADE,MARK,LOG...
自定義處理動作:自定義chain,利用分類管理復雜情形
規則要添加在鏈上,才生效;添加在自定義上不會自動生效
Filter表中INPUT規則:
iptables -t filter -A INPUT -s 192.168.141.1 -j DROP

iptables命令:
-t:table: raw mangle nat [filter]默認
SUBCOMMAND:
1、鏈管理: -N: new 自定義一條新的規則鏈 -X: delete 刪除自定義的空的規則鏈
-P:policy 設置默認策略:ACCEPT:接受 DROP:丟棄 -E:重命名自定義鏈
2、查看:-L: list, -n:以數字格式顯示地址和端口號 -v:詳細信息
3、規則管理:-A : append 追加 -I:insert 插入, -D:delete 刪除 -F:flush 清空指定規則鏈 -R:replace 替換指定鏈上的規則編號 -Z: zero :置零
tcp協議的擴展選項
--syn:用於匹配第一次握手
相當於:--tcp-flags SYN,ACK,FIN,RST SYN

擴展:REJECT:--reject-with:icmp-port-unreachable默認
1、RETURN:返回調用鏈 2、REDIRECT:端口重定向 3、LOG:記錄日誌,dmesg 4、MARK:做防火墻標記 5、DNAT:目標地址轉換 6、SNAT:源地址轉換 7、MASQUERADE:地址
一、顯式擴展:必須顯式地指明使用的擴展模塊進行的擴展
iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.10 -p tcp -m multiport --dport20:22,80 -j ACCEPT
二、iprange擴展:指明連續的(但一般不是整個網絡)ip地址範圍
iptables -A INPUT -d 172.16.1.100 -p tcp --dport 80 -m iprange --srcrange 172.16.1.5-172.16.1.10 -j DROP
三、mac擴展:指明源MAC地址 適用於:PREROUTING, FORWARD,INPUT chains
iptables -A INPUT -s 172.16.0.100 -m mac --mac-source00:50:56:12:34:56 -j ACCEPT
iptables -A INPUT -s 172.16.0.100 -j REJECT
四、tring擴展:對報文中的應用層數據做字符串模式匹配檢測
iptables -A OUTPUT -s 172.16.100.10 -d 0/0 -p tcp --sport 80 -m string --algo bm --string “google" -j REJECT
五、time擴展:根據將報文到達的時間與指定的時間範圍進行匹配
iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.10 -p tcp --dport 80 -m time --timestart 14:30 --timestop 18:30 --weekdays Sat,Sun --kerneltz -j DROP
六、connlimit擴展:根據每客戶端IP做並發連接數數量匹配,可防止CC(Challenge Collapsar挑戰黑洞)***
iptables -A INPUT -d 172.16.100.10 -p tcp --dport 22 -m connlimit --connlimit-above 2 -j REJECT
七、limit擴展:基於收發報文的速率做匹配
iptables -I INPUT -d 172.16.100.10 -p icmp --icmp-type 8 -m limit --limit10/minute --limit-burst 5 -j ACCEPT
iptables -I INPUT 2 -p icmp -j REJECT

查看鏈:[root@centos7 ~]#iptables -t mangle -nvL
Chain PREROUTING (policy ACCEPT 25891 packets, 21M bytes)
pkts bytes target prot opt in out source destination

Chain INPUT (policy ACCEPT 25692 packets, 21M 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 2246 packets, 211K bytes)
pkts bytes target prot opt in out source destination

Chain POSTROUTING (policy ACCEPT 2275 packets, 215K bytes)
pkts bytes target prot opt in out source destination
0 0 CHECKSUM udp -- * virbr0 0.0.0.0/0 0.0.0.0/0 udp dpt:68 CHECKSUM fill

[root@centos7 ~]#iptables -A INPUT -s 192.168.141.253 -j DROP
[root@centos6 ~]#ping 192.168.141.200
PING 192.168.141.200 (192.168.141.200) 56(84) bytes of data.
64 bytes from 192.168.141.200: icmp_seq=1 ttl=64 time=2.47 ms
64 bytes from 192.168.141.200: icmp_seq=2 ttl=64 time=0.320 ms
| centos6 會是這種狀態,因為在200主機被拒絕了。

[root@centos7 ~]#iptables -A INPUT -s 192.168.141.1 -j ACCEPT 可以接受本機的windows的訪問。
[root@centos7 ~]#iptables -A INPUT -s 192.168.141.253 -j ACCEPT
[root@centos7 ~]#iptables -vnL --line-numbers
Chain INPUT (policy ACCEPT 77 packets, 18048 bytes)
num pkts bytes target prot opt in out source destination
1 378 27126 ACCEPT all -- 192.168.141.1 0.0.0.0/0
2 0 0 ACCEPT all -- 192.168.141.253 0.0.0.0/0

[root@centos7 ~]#iptables -D INPUT 2 -D是刪除記錄。
[root@centos7 ~]#iptables -vnL --line-numbers
Chain INPUT (policy ACCEPT 24 packets, 4665 bytes)
num pkts bytes target prot opt in out source destination
1 428 30890 ACCEPT all -- 192.168.141.1 0.0.0.0/0

[root@centos7 ~]#iptables -I INPUT 2 -s 192.168.141.150 -j REJECT -I 是插入,2 是第條數據之前
[root@centos7 ~]#iptables -vnL --line-numbers
Chain INPUT (policy ACCEPT 8 packets, 2365 bytes)
num pkts bytes target prot opt in out source destination
1 1111 82147 ACCEPT all -- 192.168.141.1 0.0.0.0/0
2 0 0 REJECT all -- 192.168.141.150 0.0.0.0/0 reject-with icmp-port-unreachable
3 0 0 REJECT all -- 192.168.141.0/24 0.0.0.0/0 reject-with icmp-port-unreachable

[root@centos7 ~]#iptables -R INPUT 2 -s 192.168.141.100 -j ACCEPT -R是替換。
[root@centos7 ~]#iptables -vnL --line-numbers
Chain INPUT (policy ACCEPT 6 packets, 2264 bytes)
num pkts bytes target prot opt in out source destination
1 1249 91632 ACCEPT all -- 192.168.141.1 0.0.0.0/0
2 0 0 ACCEPT all -- 192.168.141.100 0.0.0.0/0
3 0 0 REJECT all -- 192.168.141.0/24 0.0.0.0/0

20190308 samba服務、inotify和rsync實現實時同步、防火墻