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