Linux-命令
- 添加权限方法及注意事项:
字母权限法很灵活,无论目录还是文件都可以随意添加删除超级权限
chmod u+s ... 添加SUID
chmod g+s ... 添加SGID
chmod +s ...同时添加SUID和SGID
chmod -s ...同时删除SUID和SGID
chmod o+t ...添加Sticky
chmod +t ...同上
数字权限表示法添加/删除时:
数字权限法可以同时删除文件的所有三种超级权限
chmod 0755 FILE
chmod 755 FILE
数字权限法只能删除目录的Sticky.不能删除目录的SUID和SGID.
数字权限法每次只能设置一种超级权限.添加权限时:
对于文件,会删除掉原有的其他超级权限.
对于目录,添加SUID或SGID时,Sticky会被删除.
所有表示为大写字母的权限均为无效(故障)权限,因为缺少了相应的x权限.
几个权限位映射参考:
SUID: user, 占据属主的执行权限位;
s: 属主拥有x权限
S:属主没有x权限
SGID: group, 占据group的执行权限位;
s: group拥有x权限
S:group没有x权限
Sticky: other, 占据ohter的执行权限位;
t: other拥有x权限
T:other没有x权限
- S位的核查命令
find / -type f -perm /6000 (centos6以上)
find / -type f -perm +6000 (centos6支持,centos7不支持)
刚刚安装的centos7.4的系统中,已经有s位的:
/usr/bin/fusermount
/usr/bin/wall
/usr/bin/ksu
/usr/bin/chfn
/usr/bin/passwd
/usr/bin/chsh
/usr/bin/su
/usr/bin/Xorg
/usr/bin/ssh-agent
/usr/bin/chage
/usr/bin/gpasswd
/usr/bin/newgrp
/usr/bin/mount
/usr/bin/pkexec
/usr/bin/umount
/usr/bin/write
/usr/bin/crontab
/usr/bin/cgclassify
/usr/bin/cgexec
/usr/bin/at
/usr/bin/sudo
/usr/bin/staprun
/usr/bin/locate
/usr/sbin/unix_chkpwd
/usr/sbin/pam_timestamp_check
/usr/sbin/userhelper
/usr/sbin/lockdev
/usr/sbin/netreport
/usr/sbin/usernetctl
/usr/sbin/mount.nfs
/usr/sbin/postdrop
/usr/sbin/postqueue
/usr/lib/polkit-1/polkit-agent-helper-1
/usr/lib64/dbus-1/dbus-daemon-launch-helper
/usr/lib64/vte-2.91/gnome-pty-helper
/usr/libexec/flatpak-bwrap
/usr/libexec/utempter/utempter
/usr/libexec/openssh/ssh-keysign
/usr/libexec/sssd/krb5_child
/usr/libexec/sssd/ldap_child
/usr/libexec/sssd/selinux_child
/usr/libexec/sssd/proxy_child
/usr/libexec/spice-gtk-x86_64/spice-client-glib-usb-acl-helper
/usr/libexec/qemu-bridge-helper
/usr/libexec/abrt-action-install-debuginfo-to-abrt-cache
21、sudo命令的详细解释及内容核查
一、sudo执行命令的流程
将当前用户切换到超级用户下,或切换到指定的用户下,
然后以超级用户或其指定切换到的用户身份执行命令,执行完成后,直接退回到当前用户。
具体工作过程如下:
当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限
-->确认用户具有可执行sudo的权限后,让用户输入用户自己的密码确认
-->若密码输入成功,则开始执行sudo后续的命令
二、不需要输入密码的情况
1.root执行sudo时不需要输入密码(eudoers文件中有配置root ALL=(ALL) ALL这样一条规则)
2.欲切换的身份与执行者的身份相同,不需要输入密码
3./etc/sudoers文件设置为允许用户在不输入该用户的密码的情况下使用所有命令
如设置允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令
( %wheel ALL=(ALL) NOPASSWD: ALL)
三、/etc/sudoers文件解释
[root@test ~]# cat /etc/sudoers
## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
##该文件允许特定用户像root用户一样使用各种各样的命令,而不需要root用户的密码
##
## Examples are provided at the bottom of the file for collections
## of related commands, which can then be delegated out to particular
## users or groups.
## 在文件的底部提供了很多相关命令的示例以供选择,这些示例都可以被特定用户或
## ## 用户组所使用
## This file must be edited with the 'visudo' command.
## 该文件必须使用"visudo"命令编辑
## Host Aliases
#主机别名
## Groups of machines. You may prefer to use hostnames (perhap using
## wildcards for entire domains) or IP addresses instead.
## 对于一组服务器,你可能会更喜欢使用主机名(可能是全域名的通配符)
## 或IP地址代替,这时可以配置主机别名
# Host_Alias FILESERVERS = fs1, fs2
# Host_Alias MAILSERVERS = smtp, smtp2
## User Aliases
#用户别名
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname
## rather than USERALIAS
## 这并不很常用,因为你可以通过使用组来代替一组用户的别名
# User_Alias ADMINS = jsmith, mikem
## Command Aliases
## These are groups of related commands...
## 指定一系列相互关联的命令(当然可以是一个)的别名,通过赋予该别名sudo权限,
## 可以通过sudo调用所有别名包含的命令,下面是一些示例
## Networking
#网络操作相关命令别名
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient,
/usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig,
/sbin/mii-tool
## Installation and management of software
#软件安装管理相关命令别名
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
## Services
#服务相关命令别名
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig
## Updating the locate database
#本地数据库升级命令别名
Cmnd_Alias LOCATE = /usr/sbin/updatedb
## Storage
#磁盘操作相关命令别名
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
## Delegating permissions
#代理权限相关命令别名
Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp
## Processes
#进程相关命令别名
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
## Drivers
#驱动命令别名
Cmnd_Alias DRIVERS = /sbin/modprobe
#环境变量的相关配置
# Defaults specification
#
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
# You have to run "ssh -t hostname sudo <cmd>".
#
Defaults requiretty
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR \
LS_COLORS MAIL PS1 PS2 QTDIR USERNAME \
LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION \
LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC \
LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS \
_XKB_CHARSET XAUTHORITY"
## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## 下面是规则配置:什么用户在哪台服务器上可以执行哪些命令(sudoers文件可以在多个系统上共享)
## Syntax:
##语法
## user MACHINE=COMMANDS
## 用户 登录的主机=(可以变换的身份) 可以执行的命令
##
## The COMMANDS section may have other options added to it.
## 命令部分可以附带一些其它的选项
##
## Allow root to run any commands anywhere
## 允许root用户执行任意路径下的任意命令
root ALL=(ALL) ALL
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
## 允许sys中户组中的用户使用NETWORKING等所有别名中配置的命令
## Allows people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
## 允许wheel用户组中的用户执行所有命令
## Same thing without a password
## 允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令
# %wheel ALL=(ALL) NOPASSWD: ALL
## Allows members of the users group to mount and unmount the
## cdrom as root
## 允许users用户组中的用户像root用户一样使用mount、unmount、chrom命令
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
## Allows members of the users group to shutdown this system
# %users localhost=/sbin/shutdown -h now
## 允许users用户组中的用户像root用户一样使用shutdown命令
四、实际案例演示
实例1:让普通用户fieldyang具有/etc/init.d/nagios脚本重启的权限,可以在/etc/sudoers添加如下设置:
[root@test ~]# visudo
fieldyang ALL=NOPASSWD:/etc/init.d/nagios restart
实例2:让普通用户fieldyang具有所有超级用户的权限而又不用输入密码
[root@test ~]# visudo
fieldyang ALL=(ALL)NOPASSWD:ALL
[fieldyang@test ~]#sudo su -
[fieldyang@test ~]#pwd
/root
实例3:针对MySQL数据库的设置,让test组中的test用户具备/etc/init.d/mysqld的权限
######################## mysql ################
1.
[root@test ~]# groupadd test
[root@test ~]# useradd -g test -m -d /home/test -s /bin/bash test
[root@test ~]# passwd test
2.
[root@test ~]# visudo
# test ALL=(ALL) NOPASSWD: /etc/init.d/mysqld
test ALL=(ALL) /etc/init.d/mysqld
3. start/stop mysql
3.1) start mysql
login test
[root@test ~]# su test
[test@test ~]$ sudo /etc/init.d/mysqld start
3.2) stop mysql
login test
[root@test ~]# su test
[test@test ~]$ sudo /etc/init.d/mysqld stop
实例4:针对tomcat的设置,让test组中的test用户具备tomcat操作的权限
######################## tomcat ################
1.
[root@test ~]# groupadd test
[root@test ~]# useradd -g test -m -d /home/test -s /bin/bash test
[root@test ~]# passwd test
2.
[root@test ~]# visudo
# test ALL=(ALL) /usr/local/tomcat/bin/shutdown.sh,/usr/local/tomcat/bin/startup.sh
test ALL=(ALL) NOPASSWD: /usr/local/tomcat/bin/shutdown.sh,/usr/local/tomcat/bin/startup.sh
3.
[root@test ~]# vim /usr/local/tomcat/bin/catalina.sh
### JDK
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=$JAVA_HOME/jre
4. start/stop tomcat
4.1) start tomcat
login test
[root@test ~]# su test
[test@test ~]$ sudo /usr/local/tomcat/bin/startup.sh
[test@test ~]$ ss -ntlup | grep java
[test@test ~]$ curl -I http://localhost:8080
4.2) stop tomcat
login test
[root@test ~]# su test
[test@test ~]$ sudo /usr/local/tomcat/bin/shutdown.sh
22、selinux安全配置的核查
一:SELinux简介
在SELinux访问控制体系的限制下,进程只能访问那些在他的任务中所需要的文件,从而实现系统的安全性。
1:常见的读取控制机制
(1) DAC
(Discretionary Access Control,任意式读取控制),每个对象都会记录一个拥有者的信息。只要是对象的拥有,就可以获得该对象的完全控制权限。DAC允许拥有者完全权限。其他需要读取该对象的时候,必须授予适当的权限。但是每个对象仅有一组拥有者的信息,如果需要更复杂的读取控制能力,必须使用ACL。ACL是DAC的延伸,在ACL环境下,可以为不同的用户设置一组权限,对不同的用户设置不同的权限。
(2) MAC
(Mandatory Access Control,强制性读取控制),为每一个对象添加一个安全的上下文。进程和用户除了具备传统的权限之外,还必须获得SELinux的授权,才能读取对象。
(3) RBAC
(Role-based Access Control,角色基础读取控制),以用户所属的角色进行读取权限判定的动作。
(4) MLS
(Mulit-Live Security,多层次安全),以对象的机密等级来决定进程对该对象的读取权限。
2:什么是SELinux
SELinux(Security-Enhanced Linux,安全增强型Linux)是美国国家安全局(NAS)对于强制访问控制的实现,在这种访问控制体系的限制下,进程只能访问哪些在他的任务中所需的文件。SELinux在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的控制概念。
在SELinux中定义了许多类型(TYPE),每一个进程、文件、设备等都必须标识他所属的类型进程只能读取相同类型的文件,如果没有相关类型,并且SELinux不允许读取的时候,则无法读取文件。SELinux除了约束进程读取文件的能力之外,还限制进程对设备、网络联机、通信端口、跨进程通信的读取能力,并提供更细致的读取控制。
SELinux的特点:
Ø MAC:对访问的控制彻底化,对所有的文件、目录、端口的访问都是基于策略设定的,可以由管理员自行设定的。
Ø RBAC:对于用户只是赋予最小权限。用户被划分成了一些角色,即使是root用户,如果不具备sysadm_r的角色的话,也不能执行相关的管理。哪一个角色可以执行哪些域是可以修改的。
Ø 安全上下文:当启动SELinux的时候,所有文件与对象都有安全上下文。
二:SELinux状态和应用模式
1:/etc/selinux/config文件详解
[root@localhost ~]# cat /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= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
(1)应用模式设置
enforcing:强制模式,只要SELinux不允许,就无法执行
permissive:允许模式,将该时间记录下来,依然允许执行
disabled:禁用SELinux
(2)策略类型设置
在使用策略类型时必须先安装策略类型的软件包
targeted:保护常见的网络服务,是SELinux的默认值
minimum:SELinux最低基本策略
mls:提供符合MLS机制的安全性
2:查看SELinux状态
使用sestatus命令查看系统运行SELinux的状态、应用模式、布尔值以及sestatus.cong文件内列出的文件和进程的安全上下文。
-v:详细检查进程和文件的安全上下文
-b:显示当前布尔值状态
[root@localhost ~]# sestatus
SELinux status: enabled \\SELinux状态,enabled启用,disabled禁用
SELinuxfs mount: /selinux \\SELiuux fs文件系统挂在目录
Current mode: enforcing \\SELinux目前的应用模式
Mode from config file: enforcing \\在配置文件中设置的SELinux应用模式
Policy version: 24 \\使用中的SELinux策略类型版本
Policy from config file: targeted \\在配置文件中设置的SELinux策略类型
3:启用或禁用SELinux
修改/etc/selinux/config文件,以禁用SELInux(若要启用,SELinux字段应设置为enforcing或permissive)
SELINUX=disabled
SELINUXTYPE=targeted
4:查看和更改SELinux应用模式
(1) 查看SELinux应用模式
[root@localhost ~]# getenforce
Enforcing
(2) 更改SELinux应用模式
使用setenforce命令可以切换SELinux应用模式
enforcing或1:强制模式
permissive或0:允许模式
[root@localhost ~]# setenforce 0
三:安全上下文
安全上下文是一组和进程或对象有关的安全属性,每一个进程或对象都会记录一条安全上下文,将其作为SELinux判断进程是否能读取对象的依据。
1:安全上下文格式
(1) USER字段
USER字段用来记录登录系统后所属的SELinux身份。USER字段通常以_u为后缀。
常用的USER:
Ø user_u:真实用户类型的使用者
Ø system_u:系统账户类型的使用者
Ø root:超级用户的使用者
(2) ROLE字段
ROLE字段用来存储进程、领域或对象所扮演的角色信息,使用ROLE代表多个TYPE的组合,ROLE字段通常以_r为后缀。
常用的ROLE
Ø staff_r:内部的用户角色
Ø user_r:其他或不分类的用户角色
Ø object_r:文件、设备或其他无法分类的对象
Ø secadm_r:允许做安全管理的用户角色
(3) TYPE字段
TYPE字段用来定义该对象的类别。TYPE字段通常以_t为后缀
通常的TYPE字段
unconfiged_:未设置类型
default_t:默认类别
mn_t:代表挂载点的类型,/mnt中的文件类型属于这个类别
boot_t:作为开机文件的类型,/boot中的文件多数属于这个类别
bin_t:作为二进制执行文件,/bin中的文件多数属于这个类别
sbin_t:作为系统管理类型的文件,/sbin中的文件属于这个类别
device_t:代表设备文件,/dev中的文件属于这个类别
lib_t:链接库类别,/lib中的文件属于这个类别
var_t:代表存储于/var中的文件类别
usr_t:代表存储于/usr中的文件类别
etc_t:存储于/etc中的文件类别
tty_device_t:代表终端或控制台设备
su_exec_t:具备su功能的执行文件
java_exec_t:JAVA相关的执行文件
public_content_t:公共内容类型文件,比如FTP、NFS等服务器中的文件
shadow_t:代表存储密码数据的文件类别
http_t:作为HTTP服务器文件的类别
(4) LEVEL和CATEGORY字段
用来定义其隶属的安全等级和分类。LEVEL字段定义为s0~S15,共16个,s0机密等级最低,s15机密等级最高。CATEGORY字段定义为c0~c1023,共1024个。
2:查看安全上下文
(1) 查看用户账户安全上下文
[root@localhost ~]# id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
(2) 查看进程安全上下文
[root@localhost ~]# ps -ax -Z
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
LABEL PID TTY STAT TIME COMMAND
system_u:system_r:init_t:s0 1 ? Ss 0:01 /sbin/init
system_u:system_r:kernel_t:s0 2 ? S 0:00 [kthreadd]
system_u:system_r:kernel_t:s0 3 ? S 0:00 [migration/0]
system_u:system_r:kernel_t:s0 4 ? S 0:00 [ksoftirqd/0]
system_u:system_r:kernel_t:s0 5 ? S 0:00 [migration/0]
system_u:system_r:kernel_t:s0 6 ? S 0:00 [watchdog/0]
(3) 查看文件和目录安全上下文
[root@localhost ~]# ls -Z /root/anaconda-ks.cfg
-rw-------. root root system_u:object_r:admin_home_t:s0 /root/anaconda-ks.cfg
[root@localhost ~]# ls -dZ /root
dr-xr-x---. root root system_u:object_r:admin_home_t:s0 /root
3:修改文件的安全上下文
(1) 查看文件系统对象扩展属性
getfattr命令查看文件系统对象的扩展属性。
-m . 匹配所有格式的扩展属性,默认的是user.xxx,即"^user\."。
-d 获得所有扩展属性值
-d -e hex 使用16进制编码dump出对应扩展属性的值
--absolute-names 不过滤路径分隔符('/')
-n 指定扩展属性的名称
-R递归到子目录
[root@localhost ~]# getfattr -m . -d /root/anaconda-ks.cfg
getfattr: Removing leading '/' from absolute path names
# file: root/anaconda-ks.cfg
security.selinux="system_u:object_r:admin_home_t:s0"
(2) 修改文件安全上下文
使用chcon命令修改文件的SELinux安全上下文
-h, --no-dereference:影响符号连接而非引用的文件。
--reference=参考文件:使用指定参考文件的安全环境,而非指定值。
-R, --recursive:递归处理所有的文件及子目录。
-v, --verbose:为处理的所有文件显示诊断信息。
-u, --user=用户:设置指定用户的目标安全环境。
-r, --role=角色:设置指定角色的目标安全环境。
-t, --type=类型:设置指定类型的目标安全环境。
-l, --range=范围:设置指定范围的目标安全环境。
[root@localhost ~]# chcon -tetc_t /root/anaconda-ks.cfg
[root@localhost ~]# ls -Z /root/anaconda-ks.cfg
-rw-------. root root system_u:object_r:etc_t:s0 /root/anaconda-ks.cfg
4:修复安全上下文
(1) 查看默认安全上下文
使用matchpathcon命令可以得到制定文件的默认SELinux安全上下文。
-p:使用前缀的速度解答
-N:不使用解答
-n:不显示路径
-V:在磁盘匹配默认上验证文件上下文
-f <file_context_file文件>:使用备用file_context文件
[root@localhost ~]# matchpathcon /root/anaconda-ks.cfg
/root/anaconda-ks.cfg system_u:object_r:admin_home_t:s0
(2) 使用fixfiles命令修复安全上下文
使用fixfiles命令可以修复RPM软件包里的文件的安全上下文。
-l <日志文件>:将输出保存到制定的日志文件
-F:强制重置上下文为匹配file_context的自定义文件
-f:清楚/tmp目录
-R <RPM软件包名称>:使用rpm数据库,以发现指定数据包中的所有文件和恢复文件的上下文
例:修复crontabs软件包中的文件的安全上下文
[root@localhost ~]# ls -Z /etc/crontab
-rw-r--r--. root root system_u:object_r:system_cron_spool_t:s0 /etc/crontab
[root@localhost ~]# chcon -t user_home_t /etc/crontab
[root@localhost ~]# ls -Z /etc/crontab
-rw-r--r--. root root system_u:object_r:user_home_t:s0 /etc/crontab
[root@localhost ~]# rpm -qf /etc/crontab
crontabs-1.10-33.el6.noarch
[root@localhost ~]# fixfiles -R crontabs check
/sbin/restorecon reset /etc/crontab context system_u:object_r:user_home_t:s0->system_u:object_r:system_cron_spool_t:s0
[root@localhost ~]# fixfiles -R crontabs restore
[root@localhost ~]# ls -Z /etc/crontab
-rw-r--r--. root root system_u:object_r:system_cron_spool_t:s0 /etc/crontab
(3) 使用restorecon命令修复安全上下文
使用该命令可以恢复SELinux文件属性,即恢复文件的安全上下文。
-i:忽略不存在的文件
-f <文件名>:包含由应用程序处理的文件列表
-e <目录>:制定要排除的目录
-R:递归处理目录
-n:不改变任何文件标签
-o <文件名>:保存不正确的上下文列表到输出文件中
-v:显示文件标签
-F:强制恢复文件安全上下文
-p:没1000个文件显示速度
例:恢复/root/anaconda-ks.cfg文件的安全上下文
[root@localhost ~]# restorecon /root/anaconda-ks.cfg
[root@localhost ~]# ls -Z /root/anaconda-ks.cfg
-rw-------. root root system_u:object_r:admin_home_t:s0 /root/anaconda-ks.cfg
(4) 重新产生安全上下文
如果需要修复非常多的文件的安全上下文,则建议重新产生安全上下文,为Linux整个系统中的每一个文件重新产生正确的安全上下文。Linux在开机的时候,会检查是否需要启动SELinux子系统,以及是否有/.autorelabel文件,Linux系统使用fixfiles重新生成Linux系统文件的安全上下文。
[root@localhost ~]# touch /.autorelable
重启系统(需要较长时间)
四:策略类型
1:策略类型简介
SELinux策略是用来定义SELinux的读取规则,比如哪一个安全上下文的进程允许或禁止读取哪一个对象。Linux会把每一个Linux策略类型的资料存储在/etc/selinux策略类型名目录中。
例:targeted策略类型的内容(targeted目录中的文件或子目录都是用来存储SELinux策略类型的数据)
[root@localhost ~]# ls -l /etc/selinux/targeted/
总用量 24
drwxr-xr-x. 4 root root 4096 7月 1 2016 contexts \\存储策略类型的安全上下文
drwxr-xr-x. 2 root root 4096 11月 24 2013 logins \\
drwxr-xr-x. 3 root root 4096 7月 1 2016 modules \\存储策略类型的模版数据
drwxr-xr-x. 2 root root 4096 7月 1 2016 policy \\存储策略类型的二进制类型数据库
-rw-r--r--. 1 root root 607 11月 24 2013 setrans.conf \\定义某一个安全等级和类别的转译名称
-rw-r--r--. 1 root root 106 7月 1 2016 seusers \\自动生成libsemanage
[root@localhost ~]# ls -l /etc/selinux/targeted/policy/ \\policy是targeted中最重要的目录,
总用量 7124
-rw-r--r--. 1 root root 7292701 7月 1 2016 policy.24
[root@localhost ~]# ls /etc/selinux/targeted/policy/
policy.24 \\ policy.24是该策略类型数据库文件,文件名后的数子是该策略类型数据库的版本
2:安装和使用策略类型
(1) 查看/etc/selinux目录(此时只有一个targeted目录,每一个策略类型都会有一个目录的)
[root@localhost ~]# ls -l /etc/selinux/
总用量 20
-rw-r--r--. 1 root root 458 7月 1 2016 config
-rw-r--r--. 1 root root 113 11月 23 2013 restorecond.conf
-rw-r--r--. 1 root root 76 11月 23 2013 restorecond_user.conf
-rw-r--r--. 1 root root 2271 2月 22 2013 semanage.conf
drwxr-xr-x. 6 root root 4096 7月 1 2016 targeted
(2) 安装selinux-policy-minimum软件包
[root@localhost ~]# rpm -qa selinux-policy-minimum
[root@localhost ~]# yum -y install selinux-policy-minimum
(3) 查看是否已经存在策略类型
[root@localhost ~]# ls -l /etc/selinux/总用量 24
-rw-r--r--. 1 root root 458 7月 1 2016 config
drwxr-xr-x. 6 root root 4096 3月 15 14:10 minimum
-rw-r--r--. 1 root root 113 11月 23 2013 restorecond.conf
-rw-r--r--. 1 root root 76 11月 23 2013 restorecond_user.conf
-rw-r--r--. 1 root root 2271 2月 22 2013 semanage.conf
drwxr-xr-x. 6 root root 4096 7月 1 2016 targeted
(4) 使用新的策略类型
[root@localhost ~]# vi /etc/selinux/config
SELINUX=enforcing
SELINUXTYPE=minimum
(5) 重新启动Linux系统
3:查看策略类型信息
查看策略类型需要安装setools-console和setools-libs软件包,然后才能使用seinfo命令查看。
(1) 安装装setools-console和setools-libs软件包
[root@localhost ~]# yum -y install setools-console
[root@localhost ~]# yum -y install setools-libs
(2) 查看策略类型信息
使用seinfo命令查看SELinux策略的组建有关的信息
seinfo命令选项
-x:为每个组件匹配表达式显示更多详细信息
--stats:显示策略的统计信息
-l:显示约束语句时显示换行符
-A:列出SELinux的状态、规则布尔值、身份识别、角色、类型等所有信息。
-t:列出SELinux所有类型(type)的种类。
-r:列出SELinux所有角色(role)的种类。
-u:列出SELinux所有身份识别(user)的种类。
-b:列出所有规则的种类(布尔值)。
例:查看SELinux策略类型targeted的信息
[root@localhost ~]# seinfo /etc/selinux/targeted/policy/policy.24
Statistics for policy file: /etc/selinux/targeted/policy/policy.24
Policy Version & Type: v.24 (binary, mls)
Classes: 81 Permissions: 235
Sensitivities: 1 Categories: 1024
Types: 3637 Attributes: 280
Users: 9 Roles: 12
Booleans: 217 Cond. Expr.: 257
Allow: 291034 Neverallow: 0
Auditallow: 123 Dontaudit: 226650
Type_trans: 33142 Type_change: 38
Type_member: 48 Role allow: 19
Role_trans: 308 Range_trans: 4521
Constraints: 90 Validatetrans: 0
Initial SIDs: 27 Fs_use: 23
Genfscon: 83 Portcon: 446
Netifcon: 0 Nodecon: 0
Permissives: 75 Polcap: 2
(3) 搜索策略类型
使用seinfo命令可以查询SELinux的策略提供多少相关规则,如果查到的相关类型或者布尔值,想要知道详细规则时,使用sesearch命令查询。
sesearch命令选项:
-a:列出该类型或布尔值的所有相关信息
-t:后面还要接类型,例如 -t httpd_t
-b:后面还要接布尔值的规则,例如 -b httpd_enable_ftp_server
-d:不搜索类型的属性
-R:使用正则表达式匹配
-n:问每个规则显示行号(如果有)
-S:搜索规则的语义而不是语法
-C:为条件规则显示条件表达式
规则类型:
-A:搜索允许规则
--neverallow:搜索neverallow规则
--auditallow:搜索auditallow规则
--dontaudit:搜索dontaudit规则
-T:搜索type_transition、type_member和type_change规则
--role_allow:搜索角色允许规则
--role_trans:搜索role_transition规则
--range_trans:搜索range_transition规则
--all:搜索所有规则类型
例:搜索targeted策略类型中httpd_t读取etc_t类型时所有的规则
[root@localhost ~]# sesearch -A -s httpd_t -t etc_t /etc/selinux/targeted/policy/policy.24
Found 14 semantic av rules:
allow httpd_t file_type : filesystem getattr ;
allow domain etc_t : file { ioctl read getattr lock open } ;
allow domain etc_t : dir { ioctl read getattr lock search open } ;
allow domain etc_t : lnk_file { read getattr } ;
allow httpd_t etc_t : file { ioctl read getattr lock open } ;
allow httpd_t etc_t : dir { ioctl read getattr lock search open } ;
allow httpd_t etc_t : lnk_file { read getattr } ;
allow domain configfile : file { ioctl read getattr lock open } ;
allow domain configfile : dir { ioctl read getattr lock search open } ;
allow domain configfile : lnk_file { read getattr } ;
allow httpd_t configfile : file { ioctl read getattr lock open } ;
allow httpd_t configfile : dir { ioctl read getattr lock search open } ;
allow httpd_t configfile : lnk_file { read getattr } ;
allow httpd_t etc_t : dir { getattr search open } ;
五:布尔值
1:查看布尔值
使用gesebool命令查看SELinux布尔值
-a:列出目前系统上面的所有布尔值条款设置为开启或关闭值。
例:查看所有SELinux布尔值
[root@localhost ~]# getsebool -a
abrt_anon_write --> off
abrt_handle_event --> off
allow_console_login --> on
allow_cvs_read_shadow --> off
allow_daemons_dump_core --> on
allow_daemons_use_tcp_wrapper --> off
allow_daemons_use_tty --> on
allow_domain_fd_use --> on
例:查看httpd_can_network_connect布尔值
[root@localhost ~]# getsebool httpd_can_network_connect
httpd_can_network_connect --> off
2:修改布尔值
setsebool命令是用来修改SElinux策略内各项规则的布尔值。setsebool命令和getsebool命令是SELinux修改和查询布尔值的一套工具组。
当值设置为1、on、true是标识启用布尔值,当值为0、false、off时为禁用布尔值。使用setsebool修改SELinux的布尔值时只能改变当前运行的布尔值,Linux系统重启后,将继续加载默认配置,如果需要永久改变,需要使用-P选项。
例:启用httpd_can_network_connect的布尔值
[root@localhost ~]# getsebool httpd_can_network_connect
httpd_can_network_connect --> off
[root@localhost ~]# setsebool httpd_can_network_connect on
[root@localhost ~]# getsebool httpd_can_network_connect
httpd_can_network_connect --> on
例子:禁用httpd_can_network_connect的布尔值
[root@localhost ~]# setsebool httpd_can_network_connect off
[root@localhost ~]# getsebool httpd_can_network_connect
httpd_can_network_connect --> off
六:管理策略模块
使用semodule命令可以管理SELinux策略模块,比如显示、安装、升级、删除、激活以及禁用策略模块。
semodule命令选项
-l:显示安装的模块
-R重装策略模块
-B建立和承诺改装策略模块
-I <策略模块>:安装一个新的模块
-u <策略模块>:升级策略模块
-e <策略模块>:激活策略模块
-d <策略模块>:禁用策略模块
-b <策略模块>:安装新的基础模块
-r <策略模块>:删除策略模块
例:查看SELinux加载的策略模块
[root@localhost ~]# semodule -l
abrt 1.2.0
accountsd 1.0.0
ada 1.4.0
afs 1.5.3
aiccu 1.0.0
aide 1.5.0
amanda 1.12.0
amtu 1.2.0
例:查看apache策略模块
[root@localhost ~]# semodule -l | grep apache
apache 2.1.2
例:禁用zebra策略模块
[root@localhost ~]# semodule -d zebra
[root@localhost ~]# semodule -l | grep zebra
zebra 1.10.1 Disabled
例:激活zebra模块
[root@localhost ~]# semodule -e zebra
[root@localhost ~]# semodule -l | grep zebra
zebra 1.10.1
例:删除zebra模块
[root@localhost ~]# semodule -r zebra
[root@localhost ~]# semodule -l | grep zebra
七:图形界面管理SELinux
需要先安装policycoreutils-gui软件包
[root@localhost ~]# yum -y install policycoreutils-gui
【系统】à【管理】à【SELinux管理】,打开SELinux维护界面,(在application-other-selinx。。)
1:状态
2:布尔值
3:文本标记
4:用户映射
5:SELinux用户
6:网络端口
7:策略模块
8:进程域
23、linux下敏感信息的核查
1、/etc/issue和motd
当我们不想让其他用户知道我们的系统版本和内核信息(只限登录时),就可以修改issue文件;当我们想修改登录提示信息时,可以修改motd文件。
#修改成其他,防止泄漏系统信息
[root@serv01 etc]# vim /etc/issue
[root@serv01 etc]# cat /etc/issue
Red Hat Enterprise Linux Server release 6.1 (Santiago)
Kernel \r on an \m
[root@serv01 etc]# cat /etc/issue
Windows Server 2020
#修改欢迎信息,提供友好的提示
[root@serv01 etc]# vim /etc/motd
[root@serv01 etc]# cat /etc/motd
Welcome to zhink learn
#下次登录时就不会显示系统版本和内核信息,并会显示欢迎信息
[root@larrywen mail]# ssh 192.168.1.11
root@192.168.1.11's password:
Last login: Fri Sep 20 18:35:32 2013
Welcome to zhink learn
24、防火墙配置示例
- 防火墙简介
防火墙,一种高级访问控制设备,置于不同网络安全域之间,它通过相关的安全策略来控制(允许、拒绝、监视、记录)进出网络的访问行为。防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成。实质上是指由软硬件组合成的一个在内外网之间构造的一种保护屏障,它是一种隔离技术。因此从物理上区分,可以分为软件和硬件防火墙,从逻辑上区分,可以分为主机和网络防火墙,而我们现在要讲到的iptables,是属于防火墙中的软件防火墙的范畴,但它只是一个命令行工具或者说是一种客户端代理,并不是真正的防火墙,用户通过这个代理,把安全设定执行到真正的防火墙框架中,这个框架叫做Netfilter。
防火墙扫描流经它的网络通信,通过这样的做法能够过滤掉一些攻击,以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口,而且还能禁止特定端口的流出通信,封锁特洛伊木马。最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信。
- 防火墙的作用
工作于主机或网络的边缘,对于进出本主机或网络的报文根据定义好的检查规则作匹配检测,对于能够被规则匹配到的报文做出相应处理的组件;
- 防火墙的种类
主机防火墙
网络防火墙
- 防火墙的功能
1、网络安全的屏障
2、强化网络安全策略
3、监控审计
4、监控审计
5、数据包过滤
6、网络IP地址转换
7、虚拟专用网络
8、日志记录与事件通知
- iptables的优点
最大优点是它可以配置有状态的防火墙,有状态的防火墙能够指定并记住为发送或接收信息包所建立的连接的状态。防火墙可以从信息包的连接跟踪状态获得该信息。在决定新的信息包过滤时,防火墙 所使用的这些状态信息可以增加其效率和速度。这里有4种有效状态,名称分别为ESTABLISHED、INVALID、NEW和RELATED。
- 防火墙的四表功能
filter :过滤 ,防火墙
nat : network , adress ,translation , 网络地址转换
mangle : 拆解报文, 做出修改 ,封装报文 。
raw : 关闭nat 表上启用的连接追踪机智
注意 : nat : Network Address Translation ,安全性,网络层+传输层;
Proxy : 代理,应用层;
nat :
SNAT : 只修改请求报文的源地址;
DNAT : 只修改请求报文的目标地址;
源地址转换 : iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNET -j SNAT --to -source ExtIP
iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNET -j MASQUERADE
目标地址转换 : iptables -t nat -A POSTROUTING -d ExtIP --p tcp|udp --dport PORT -j DNAT --to-destination InterServerIP[:PORT]
- 数据包过滤匹配流程
键 (内置) :
PREROUTTING
INPUT
FORWARD
OUTPUT
POSTROUTING
报文流向
流入 : PREROUTING -->INPUT
流出 : OUTPUT --> POSTROUTING
转发 :PREROUTING --> FORWARD -->POSTROUTING
各功能的分别实现 的位置:
filter : INPUT , FORWARD ,OUTPUT
nat : PREROUTING( DNAT ), OUTPUT ,POSTROUTING ( SNAT )
mangle : PREROUTING , INPUT ,FORWARD , OUTPUT ,POSTROUTING
raw : PREROUTING , OUTPUT
路由发生的时刻 :
报文进入本机后:
判断目标主机 :
报文发出之前 :
判断经由哪个接口送出下一跳 :
iptables : 四表五链
添加规则时的考虑点 :
(1) 要实现哪种功能 : 判断添加在哪张表上;
(2) 报文流经的路径 : 判断添加在哪张链上;
链 : 链上规则的次序,即为检查的次序 :因此隐含一定的法则
(1) 同类规则(访问同一应用),匹配范围小的放上面;
(2)不同类规则(访问不同应用),匹配到报文频率较大的放上面;
(3)将那些可由一条规则描述的多个规则合并为一个;
(4)设置默认策略;
功能优先级次序 : raw > mangle > nat c >filter
规则 :
组成部分 : 报文的匹配条件,匹配到之后处理动作
匹配条件 : 根据协议报文特征指定
基本匹配条件 :
扩展匹配条件 :
处理动作:
内建处理机制
自定义处理机制
注意 : 报文不会经过自定义链, 只能在内置链上通过规则经行引用后生效。
iptables : 规则管理工具
添加、修改、删除、显示等;
规则和链有计数器:
pkgs : 由规则或链所匹配到报文的个数;
bytes : 由规则或链匹配到的所有报文大小之和;
目标 :
-j TARGET : jump 指定的TARGET
ACCEPT : 接收
DROP : 丢弃
REJECT : 拒绝
RETURN : 返回调用链
REDIRECT : 端口重定向
LOG : 记录日志
MARK : 做防火墙标记
DNAT : 目标地址转换
SNAT : 源地址转换
MASQUERADE : 地址
核心转发 : /proc/sys/net/ipv4/ip_forward
/etc/sysct.conf
net.ipv4.ip_forward = 1
扩展匹配 :-m(指定扩展名)
隐式扩展 :对-p protocol指明的协议进行的扩展,可省略-m选项;
显式扩展 : 必须显式指明使用的扩展模块(rpm -ql iptables | grep "\.so")
multiport 扩展 :以离散方式定义多端口匹配,最多指定15个端口;
# iptables -I INPUT -s 172.168.122.1/16 -d 172.168.120 -p tcp -m multiport -dports 22.80 -j ACCEPT
# iptables -I INPUT -d 172.168.122.1/16 -s 172.168.120 -p tcp -m multiport -dports 22.80 -j ACCEPT
iprange扩展
指明连续的(但一般是不能扩展为整个网络)IP地址范围时使用:
conlimit 扩展
根据每客户端IP(也可以是地址块)做并发连接数数量匹配
--connlimit-above n :连接的数量大于n
--connlimit-upto n :连接的数量小于等于n
limit扩展
基于收发报文的速率做检查
令牌桶过滤器
--limit rate [/second|/minute|/hour|/day]
--limit-burst number
state扩展
根据连接追踪机制检查连接的状态
调整连接追踪功能所能够容纳的最大连接数量
/proc/sys/net/nf_conntrack_max
已经追踪到并记录下的连接
/proc/net/nf_conntrack
可追踪的连接状态
NEW : 新发出的请求:连接追踪模板中不存此连接相关的信息条目,因此,将其识别为第一次发出的请求。
ESTABLISHED :NEW 状态之后,连接追踪模板中为其建立的条目失效之前期间内所进行的通信的状态;
INVALIED : 无法识别的连接
扩展
查看iptables使用说明
CentOS 6 : man iptables
CentOS 7 : man iptables-extensions
- 防火墙【原理】
Netfilter是Linux中的一个子项目,它的主要功能是进行数据包过滤、连接跟踪、地址转换等,而iptables则是netfilter提供的对用户数据包进行过滤、修改等操作的一种命令行工具,当数据包通过网卡进入进入内核时,它得先经过iptables的五条链,这些链都有相应的处理数据包的规则,而我们正是通过在这些链上设置规则来控制管理数据包,从而达到防火墙的功能。每当数据包到达一个链时,iptables就会从链中的所有规则逐一开始校验该数据包是否符合规则中限定的条件。若满足,系统就会根据每个规则定义的方法来处理该数据包;若不满足,iptables则继续检查下一条规则,如果该数据包不符合链中的任意规则,iptables则会该链的默认策略去处理该数据包。
防火墙4种类型:特殊设计的硬件防火墙、数据包过滤型、电路层网关和应用级网关。安全性能高的防火墙系统都是组合运用多种类型防火墙,构筑多道防火墙“防御工事”。
常见的防火墙品牌 : 华为、天融信、深信服、H3C、网域、思科、山石网科、中科网威、飞塔、Juniper、绿盟科技、锐捷网络、启明星辰、佑友、网康、网御星云、NETGEAR、中新金盾、梭子鱼、清信安、D-Link、网神、SonicWALL、迪普科技、东软、博达、paloalto、交大捷普、Check Point、利谱、汉柏。
注意 : 服务器对DDoS攻击流量进行拦截主要是依靠硬件防火墙完成的,
- 服务器机房常用的防火墙介绍
1、金盾抗DDOS防火墙
金盾抗DDOS防火墙是一款针对ISP接入商、IDC服务商开发的专业性比较强的专业防火墙。测试的效果表明,目前的防御算法对所有已知的拒绝服务攻击是免疫的,也就是说,是完全可以抵抗已知DoS/DDoS攻击的。(下图金盾硬件防火墙价格大约88W一台)
2、深信服防火墙
深信服防火墙可以彻底解决所有dos/ddos攻击(synflood、ackflood、udpflood、icmpflood、igmpflood、arpflood、全连接等),针对CC攻击,已推出DosNipe V8.0版本,此核心极其高效安全,在以往抵御一切拒绝服务攻击的基础上,新增加了抵挡CC攻击,新算法可以高效的抵御所有CC攻击及其变种,识别准确率为100%,没有任何误判的可能性。(深信服防火墙)
3、绿盟黑洞抗DDoS防火墙
绿盟黑洞抗DDoS防火墙是国内高防服务器机房中应用比较广泛的一款抗DoS、DDoS攻击产品,其技术比较成熟,而且防护效果显著,已经得到各大IDC机构的共同认可。黑洞目前分百兆、千兆两款产品,分别可以在相应网络环境下实现对高强度攻击的有效防护,性能远远超过同类防护产品。(下图绿盟防火墙)
绿盟黑洞抗DDoS防火墙所带来的防护:
·自身安全:无IP地址,网络隐身。
·能够对SYN Flood、UDP Flood、ICMP Flood和(M)Stream Flood等各类DoS攻击进行防护。
·可以有效防止连接耗尽,主动清除服务器上的残余连接,提高网络服务的品质、抑制网络蠕虫扩散。
·可以防护DNS Query Flood,保护DNS服务器正常运行。
·可以给各种端口扫描软件反馈迷惑性信息,因此也可以对其它类型的攻击起到防护作用
4、Dosnipe防火墙:
Dosnipe防火墙硬件架构部分主体采取工业计算机(工控机),可以承受恶劣的运行环境,保障设备稳定运行;软件平台是FreeBSD,核心部分算法是自主研发的单向一次性非法数据包识别方法,所有的Filter机制都是在挂在驱动级。可以彻底解决所有dos/ddos攻击(synflood、ackflood、udpflood、icmpflood、igmpflood、arpflood、全连接等),针对CC攻击,已推出DosNipe V8.0版本,此核心极其高效安全,在以往抵御一切拒绝服务攻击的基础上,新增加了抵挡CC攻击,新算法可以高效的抵御所有CC攻击及其变种,识别准确率为100%,没有任何误判的可能性。
Dosnipe防火墙升级之后,具备更多的新特性:
·彻底解决最新的M2攻击。
·支持多线路,多路由接入功能。
·支持流量控制功能。
·更强大的过滤功能。
·最新升级,彻底高效的解决所有DDOS攻击,cc攻击的识别率为100%
- 主要类型:
网络层防火墙 :网络层防火墙可视为一种 IP 封包过滤器
应用层防火墙 :应用层防火墙可以拦截进出某应用程序的所有封包,并且封锁其他的封包(通常是直接将封包丢弃)可分为:包过滤型防火墙、应用层网关型防火墙、服务器型防火墙。
**数据库防火墙 : **是一款基于数据库协议分析与控制技术的数据库安全防护系统。基于主动防御机制,实现数据库的访问行为控制、危险操作阻断、可疑行为审计。
防火墙的核心技术 :1、 包过滤(工作在网络层) 2、 应用代理(工作在应用层) 3、 状态检测(工作在2-4层) 4、 完全内容检测()
包过滤防火墙技术原理
1、 简单包过滤防火墙不检查数据区
2、 简单包过滤防火墙不建立连接状态表
3、 前后报文无关
4、 应用层控制很弱
应用代理防火墙技术原理
1、 不检查IP\TCP报头
2、 不建立连接状态表
3、 网络层保护比较弱
防火墙分为网络防火墙和应用层防火墙
1、网络防火墙
网络防火墙就是一个位于计算机和它所连接的网络之间的防火墙。该计算机流入流出的所有网络通信均要经过此防火墙。防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信,封锁特洛伊木马。最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信
2、应用层防火墙
应用层防火墙是在 TCP/IP 堆栈的“应用层”上运作,您使用浏览器时所产生的数据流或是使用 FTP 时的数据流都是属于这一层。应用层防火墙可以拦截进出某应用程序的所有封包,并且封锁其他的封包(通常是直接将封包丢弃)。理论上,这一类的防火墙可以完全阻绝外部的数据流进到受保护的机器里。
因为应用层防火墙的算法会更复杂,过虑更为严格,所以在部署防火墙的时候,要把应用层防火墙部署到网络防火墙的里边。
Linux防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙(网络层防火墙)。
- 二、iptables的表链结构
1、iptables简介
平时说iptables是防火墙,其实iptables是iptables/netfilter组合中的一个,只有iptables/netfilter才应该叫做防火墙,它是基于软件方式工作的网络防火墙。iptables工作于用户空间,是防火墙的规则编写工具,使用iptables编写规则并且发送到netfilter;防火墙的规则刚放到netfilter中,它是一个能够让规则生效的网络架构,工作于内核空间。
【四个表】
iptables的结构是由tables组成,而tables是由链组成,链又是由具体的规则组成。因此我们在编写iptables的规则时,通过要先指定表,再指定链。tables的作用是区分不同功能的规则,并且存储这些规则。
tables的类型分别有:
2、iptables的表、链结构
iptables是由四表五链组成的,想要配置iptables必须先了解这四表五链
优先级:raw表 > mangle表 > nat表 > filter表
①、raw表
RAW表只使用在PREROUTING链和OUTPUT链上,因为优先级最高,从而可以对收到的数据包在连接跟踪前进行处理。一但用户使用了RAW表,在某个链上,RAW表处理完后,将跳过NAT表和ip_conntrack处理,即不再做地址转换和数据包的链接跟踪处理了。
RAW表可以应用在那些不需要做nat的情况下,以提高性能。如大量访问的web服务器,可以让80端口不再让iptables做数据包的链接跟踪处理,以提高用户的访问速度。
raw内含有两个链:PREROUTING和OUTPUT
②、mangle表
mangle表一般是对数据包进行修改用的
比如在网络的转发过程中,数据包要从X到Z,中间夹了一个Y,当数据从X到Y的时候,Y要运行拆包,看是不是自己的,如果是就收下了,如果不就是重新封装,把源IP改为自己的,而不再是X的了,再进行转发。
mangle表中含五个链:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING
③、nat表
用于nat功能(端口映射,地址映射等)
主要用来处理一些将要到达本机路由和将要离开本机路由的数据包,修改数据包中的源、目标IP地址或端口;其对应的模块为iptable_nat。
nat表内含三个链:PREROUTING、POSTROUTING、OUTPUT
④、filter表
一看名字就知道是用来做过滤用的。filter表是iptables的默认表,如果在设置规则时,不指定表,则默认就是在filter表上操作
filter表内含三个链:INPUT、FORWARD、OUTPUT
2)五链
这五条链其实就是针对防火墙策略的规则
①、PREROUTING
路由前,数据包在经过防火墙前应做如何处理
②、INPUT
在数据包进行进入本机前就做何处理,目标是本机,不是网络内的主机
③、OUTPUT
在数据包离开本机时做何处理,源是本机,目标是其它主机
④、FORWARD
对于转发数据包做如何处理,因为本机可能是一台代理服务器,网络内的其它主机在与互联网通信时都需要经过这台服务器的转发
⑤、POSTROUTING
在数据包离开防火墙时做如何处理
INPUT、OUTPUT链主要用在“主机型防火墙”中,即主要针对服务器本机进行保护的防火墙;而FORWARD、PREROUTING、POSTROUTING链多用在“网络型防火墙”中,
简化版【五条链】
链,也称为钩子函数,它是一系列规则的一个组合,当数据包经过这些狗子函数时,她必须完全匹配每一个钩子函数中的所有规则,方能进入下一个钩子函数。
【语法规则】
语法:iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]
1)常用的命令选项:
-t:指定要操纵的表(四个表);
-A:向规则链中添加条目;
-D:从规则链中删除条目;
-i:向规则链中插入条目;
-R:替换规则链中的条目;
-L:显示规则链中已有的条目;
-F:清楚规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;
-s:指定要匹配的数据包源
2)常用的处理动作:
ACCEPT:允许数据包通过
DROP:直接丢弃数据包,不给任何回应信息
REJECT: 拒绝数据包通过,必要时会给数据发送端一个响应的信息。
LOG:在/var/log/messages文件中记录日志然后将数据包传递给下一条规则
REDIRECT: 端口映射。
SNAT :源地址转换,修改包来源IP为某IP或IP范围,做内网和公网之间的转换。
DNAT::目标地址转换。 修改数据包目的地IP为某 Ip 或 IP 范围。
3)常用的条件匹配:
1、状态匹配:-m state --state 连接状态
NEW:与任何连接无关的
ESTABLISHED:响应请求或已建立连接的
RELATED:与已有连接有相关性的,如FTP数据连接
2、MAC地址匹配:-m mac --mac-source MAC地址
eg:iptables -A INPUT -m mac --mac-source f0:1b:12:12:22:4f -j DROP
3、IP范围匹配:-m iprange --src-range IP范围
eg:iptables -A FORWARD -p tcp -m iprange --src-range 192.168.0.1-192.168.0.10 -j ACCEPT
4、多端口匹配:-m multiport --sports 源端口列表 和 -m multiport --sports 目的端口列表
eg:iptables -A INPUT -p tcp -m multiport --dport 11,29,116,121 -j ACCEPT
4)常用的一些iptables策略:
1、拒绝转发来自192.168.2.33主机的数据
iptables -A FORWARD -s 192.168.2.33 -j REJECT
2、允许转发来自192.168.2.1/99网段的数据
iptables -A FORWARD -s 192.168.2.1/99 -j ACCEPT
3、允许本机开放从TCP端口20-1024提供的应用服务。
iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20:1024 -j ACCEPT
4、只允许管理员从202.13.0.0/16网段使用SSH远程登录防火墙主机。
iptables -A INPUT -p tcp --dport 22 -s 202.13.0.0/16 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
5、 允许转发来自192.168.0.0/24局域网段的DNS解析请求数据包。
iptables -A FORWARD -s 192.168.0.0/24 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -p udp --sport 53 -j ACCEPT
6、屏蔽ip 110.1.1.1的访问
iptables -I INPUT -s 110.1.1.1 -j DROP
7、屏蔽从123.0.0.1到123.255.255.254 : iptables -I INPUT -s 123.0.0.0/8 -j DROP
8、屏蔽从从123.45.0.1到123.45.255.254 : iptables -I INPUT -s 124.45.0.0/16 -j DROP
9、屏蔽从从123.45.6.1到123.45.6.254 : iptables -I INPUT -s 123.45.6.0/24 -j DROP
10、允许所有本机向外的访问 : iptables -A OUTPUT -j ACCEPT
11、允许访问22端口 : iptables -A INPUT -p tcp --dport 22 -j ACCEPT
12、打开3306端口
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent #开启3306端口
5)常用的iptables命令:
1、查看当前 IPTABLES 规则
service iptables status
2、 将所有iptables以序号标记显示
iptables -L -n --line-numbers
3、 比如要删除INPUT里序号为22的规则
iptables -D INPUT 22
iptables数据包的过滤流程
为了更直观的表现数据包的过滤流程,请参考第二步及下图
更多介绍 : http://blog.51cto.com/linuxgentoo/1542782
注意 :
在centos6上,我们用的是iptables服务,iptables: 包过滤型的防火墙
在centos7上,我们用的是firewalld服务。
同样的,centos6上安装的是iptables包,而centos7上安装的是firewalld包。
centos6还是centos7,核心其实都是netfilter,netfilter是linux的一个内核模块,iptables命令是linux内核自带的。
- 防火墙的类型
1. 从软、硬件形式上分为 软件防火墙和硬件防火墙以及芯片级防火墙。 2.从防火墙技术分为 “包过滤型”和“应用代理型”两大类。 3.从防火墙结构分为 < 单一主机防火墙、路由器集成式防火墙和分布式防火墙三种。 4. 按防火墙的应用部署位置分为 边界防火墙、个人防火墙和混合防火墙三大类。 5. 按防火墙性能分为 百兆级防火墙和千兆级防火墙两类。
- CentOS6.5 防火墙
| [linux@localhost ~]$service iptable status 查看防火墙的状态
[linux@localhost ~]$servcie iptables stop --临时关闭防火墙
[linux@localhost ~]$servcie iptables off --永久关闭防火墙
|
(1)查看iptables开机状态:
[root@localhost ~]# chkconfig --list | grep iptables iptables 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
(2)关闭selinux
[root@localhost ~]# vim /etc/selinux/config
#SELINUX=enforcingSELINUX=disabled # 修改为disabled# SELINUXTYPE= can take one of these
- LINUX开启允许对外访问的网络端口命令 :
LINUX通过下面的命令可以开启允许对外访问的网络端口:
/sbin/iptables -I INPUT -p tcp --dport 8000 -j ACCEPT #开启8000端口
/etc/rc.d/init.d/iptables save #保存配置
/etc/rc.d/init.d/iptables restart #重启服务
查看端口是否已经开放
/etc/init.d/iptables status
要开放22,80,8080 端口,输入以下命令即可
/sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp –dport 22 -j ACCEPT
/sbin/iptables -I INPUT -p tcp –dport 8080 -j ACCEPT
2. 修改文件
vim /etc/rc.d/init.d/iptables
添加上述文本
3. 保存:
/etc/rc.d/init.d/iptables save
4. 查看打开的端口:
/etc/init.d/iptables status
5. 重启
5.1 /etc/init.d/iptables restart (临时有效)
5.2 chkconfig iptables off/on (永久有效)
当服务器成为肉鸡时候,采取的措施 :
临时采取的防范措施就是:利用iptables阻止服务器向外发送udp数据包。然后再查找应用,查找漏洞清除木马文件。
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -P OUTPUT DROP
这个规则就是阻止了除了DNS要用到的53端口的其他一切udp端口,因为在此之前做了只是封掉7000端口,等会儿发现攻击改变了端口。
在服务器流量很大的时候分析本地新增哪些udp端口
netstat -lpnut|grep udp
查找出了是1833端口,然后根据1833端口查找相关的进程
ps -ef|grep 1833
得出的进程为freebsd
然后根据进程查找所对应的应用的位置
lsof | grep -i freebsd
iptables更多介绍:http://www.cnblogs.com/MYue/p/7000821.html
- CentOS 7 防火墙
firewalld有图形界面和工具界面,由于我在服务器上使用,图形界面请参照官方文档,本文以字符界面做介绍
firewalld的字符界面管理工具是 firewall-cmd
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running);
firewalld默认配置文件有两个:/usr/lib/firewalld/ (系统配置,尽量不要修改)和 /etc/firewalld/ (用户配置地址)
安装firewalld
# yum install firewalld firewall-config
# systemctl enable firewalld
# systemctl start firewalld
关闭防火墙:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
服务
启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service;echo $?
查看已启动的服务列表:systemctl list-unit-files|grep enabled
- Centos 7 firewall 命令:
firewall-cmd --list-ports #查看已经开放的端口
# firewall-cmd --zone=public --list-ports # 查看所有开放的端口
#firewall-cmd --zone=public --add-port=9000-9999/tcp --permanent #开启一个范围的端口
#firewall-cmd --zone=public --remove-port=80/tcp --permanent #删除一个端口
#firewall-cmd --reload #更新防火墙规则
firewall-cmd --zone=public --add-port=80/tcp --permanent #开启端口
命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
运行、停止、禁用firewalld
systemctl start firewalld #启动firewall
firewall-cmd --reload #重启firewall
#关闭状态
systemctl stop firewalld.service #停止/禁用firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state = systemctl status firewalld #查看默认防火墙状态(关闭后显示notrunning,开启后显示running;关闭状态(disabled ))
zone 增删查改设
查看全部的zone
# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
查看Firewalld的当前运行状态,输入如下命令:
$ firewall-cmd --state
罗列出预定义的区域:
$ firewall-cmd --get-zones
获取任何特定区域的所有相关信息:
$ firewall-cmd --zone= --list-all
你也能列出所有支持的服务:
$ firewall-cmd --get-services
更新firwalld:
$ firewall-cmd --set-default-zone=
添加或删除额外的服务。
$ firewall-cmd--zone=--add-service= $ firewall-cmd--zone=--remove-service=
你能通过如下命令列出任何特定区域中所有开放的端口:
$ firewall-cmd --zone= --list-ports
你可用如下方式管理TCP/UDP端口的增加与删除:
$ firewall-cmd--zone=--add-port= $ firewall-cmd--zone=--remove-port=
你可以如下命令添加或删除端口的转发:
$ firewall-cmd--zone=--add-forward-port= $ firewall-cmd--zone=--remove-forward-port=
查看默认的zone
# firewall-cmd --get-default-zone
public
修改默认的zone
# firewall-cmd --set-default-zone=work
success
指定网卡查询zone
# firewall-cmd --get-zone-of-interface=ens33
work
# firewall-cmd --get-zone-of-interface=ens37
no zone
给指定网卡设置zone
# firewall-cmd --zone=public --add-interface=ens37
success
给指定网卡修改zone
# firewall-cmd --zone=dmz --change-interface=lo
success
给指定网卡删除zone
# firewall-cmd --zone=dmz --remove-interface=lo
success
# firewall-cmd --get-zone-of-interface=lo
no zone
查看所有网卡所在的zone
# firewall-cmd --get-active-zones
dmz
interfaces: ens37
work
interfaces: ens33
service 增删查改设
查看所有的service,(其实都是一些服务的名字)
# firewall-cmd --get-services
查看当前zone的service
# firewall-cmd --list-services
ssh dhcpv6-client
查看指定zone下的service
# firewall-cmd --zone=public --list-service
ssh dhcpv6-client
把http服务添加指定zone里面
# firewall-cmd --zone=public --add-service=http
success
# firewall-cmd --zone=public --list-service
ssh dhcpv6-client http
把http服务添加指定zone里面,并写入配置文件
# firewall-cmd --zone=public --add-service=http --permanent
success
# cat /etc/firewalld/zones/public.xml
删掉指定zone的http服务
# firewall-cmd --zone=public --remove-service=http
success
firewalld 文件
/etc/firewalld/zones/ 是zone类型开头.xml格式文件。还有前面文件.old结尾的文件的备份。例如:
public.xml public.xml.old。分别保存了现在的文件,和修改之前的备份,用于恢复。
/etc/firewalld/services/ 是service类型的文件。
/usr/lib/firewalld/ 里面的 zones 和 services 目录里,分别保存了模板文件。用于手动添加firewalld规则。
实例
需求:ftpd服务端口21修改为1121。在 work zone下放行。
新增service文件
# cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/
# vim /etc/firewalld/services/ftp.xml
修改为
新增work文件
# cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/
# vim /etc/firewalld/zones/work.xml
新增一行
重载firewalld
# firewall-cmd --reload
查看work zone
# firewall-cmd --zone=work --list-services
ssh dhcpv6-client ftp
- CentOS 7 以下版本 iptables 命令
如要开放80,22,8080 端口,输入以下命令即可
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
然后保存:
/etc/rc.d/init.d/iptables save
查看打开的端口:
/etc/init.d/iptables status
关闭防火墙
1) 永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后复原
开启: service iptables start
关闭: service iptables stop
查看防火墙状态: service iptables status
- CentOS7和6的默认防火墙的区别
CentOS 7默认使用的是firewall作为防火墙,使用iptables必须重新设置一下
1、直接关闭防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
2、设置 iptables service
yum -y install iptables-services
如果要修改防火墙配置,如增加防火墙端口3306
vi /etc/sysconfig/iptables
增加规则
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
保存退出后
systemctl restart iptables.service #重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动
最后重启系统使设置生效即可。
systemctl start iptables.service # 打开防火墙
systemctl stop iptables.service #关闭防火墙
- iptables将本机80端口转发到本地8080端口
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
- 解决主机不能访问虚拟机CentOS中的站点
前阵子在虚拟机上装好了CentOS6.2,并配好了apache+php+mysql,但是本机就是无法访问。一直就没去折腾了。
具体情况如下
1. 本机能ping通虚拟机
2. 虚拟机也能ping通本机
3.虚拟机能访问自己的web
4.本机无法访问虚拟机的web
后来发现是防火墙将80端口屏蔽了的缘故。
检查是不是服务器的80端口被防火墙堵了,可以通过命令:telnet server_ip 80 来测试。
解决方法如下:
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
然后保存:
/etc/rc.d/init.d/iptables save
重启防火墙
/etc/init.d/iptables restart
CentOS防火墙的关闭,关闭其服务即可:
查看CentOS防火墙信息:/etc/init.d/iptables status
关闭CentOS防火墙服务:/etc/init.d/iptables stop
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:https://www.linuxidc.com/Linux/2016-12/138979.htm
- iptables规则持久化
设定防火墙规则
iptables -A INPUT -s 1.1.1.1/32 -p tcp -m tcp --dport 22 -j DROP
iptables -A INPUT -s 2.2.2.2/32 -p tcp -m tcp --dport 22 -j DROP
iptables -A INPUT -s 3.3.3.3/32 -p tcp -m tcp --dport 22 -j DROP
iptables -A INPUT -s 4.4.4.4/32 -p tcp -m tcp --dport 22 -j DROP
保存防火墙规则
iptables-save > /etc/sysconfig/iptables
设定开机自动恢复iptables规则
vim /etc/rc.d/rc.local
iptables-restore < /etc/sysconfig/iptables
iptables关机自动保存
先清空防火墙规则
iptables -F
保存iptables规则,也就是说将/etc/sysconfig/iptables文件清空
iptables-save > /etc/sysconfig/iptables
手动生成一些iptables规则
iptables -A INPUT -s 1.1.1.1/32 -p tcp -m tcp --dport 22 -j DROP
iptables -A INPUT -s 2.2.2.2/32 -p tcp -m tcp --dport 22 -j DROP
iptables -A INPUT -s 3.3.3.3/32 -p tcp -m tcp --dport 22 -j DROP
iptables -A INPUT -s 4.4.4.4/32 -p tcp -m tcp --dport 22 -j DROP
查看iptables规则是否生效
[root@ecs-7740 init.d]# iptables -nvL
Chain INPUT (policy ACCEPT 27 packets, 1978 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP tcp -- * * 1.1.1.1 0.0.0.0/0 tcp dpt:22
0 0 DROP tcp -- * * 2.2.2.2 0.0.0.0/0 tcp dpt:22
0 0 DROP tcp -- * * 3.3.3.3 0.0.0.0/0 tcp dpt:22
0 0 DROP tcp -- * * 4.4.4.4 0.0.0.0/0 tcp dpt:22
设定关机时自动保存iptables规则
创建关机时要执行的脚本,并且确保其有执行权限
vim /etc/init.d/shutdownsh
iptables-save > /etc/sysconfig/iptables
chmod +x /etc/sysconfig/shutdownsh
ls /etc/sysconfig/shutdownsh
-rwxr-xr-x 1 root root 40 Jan 16 22:05 shutdownsh
创建软连接文件至rcN.d路径下,N为运行等级
查看linux的防火墙是否阻止80端口
iptables -vnL | grep ":80 "
相关文章:

Linux-命令
添加权限方法及注意事项: 字母权限法很灵活,无论目录还是文件都可以随意添加删除超级权限 chmod us ... 添加SUID chmod gs ... 添加SGID chmod s ...同时添加SUID和SGID chmod -s ...同时删除SUID和SGID chmod ot ...添加Sticky chmod t ...同上 数字权限表示法添加/删除…...

STM32读写内部FLASH读取芯片id
文章目录 读写内部Flash接线程序编写测试效果补充 读取芯片id代码编写 读写内部Flash 接线 程序编写 首先使用ThisFlash.c来写入flash的基本操作,写入、读取、擦除,然后使用Store.c配合数组来进行主存与flash的交互 ThisFlash.c #include "stm32…...

前端npm打包及报错解决
前端npm install 安装node 下载地址 https://nodejs.org/en/download/prebuilt-binaries 配置环境变量 wget https://nodejs.org/dist/v14.21.3/node-v14.21.3-linux-x64.tar.xz tar xf node-v14.21.3-linux-x64.tar.xz -C /data/ vim /etc/profile export NODE_HOME/data/n…...

vbs执行报错vbs没有文件拓展,双击无法打开
如果看不到文件扩展名需要设置: 无法双击打开vbs 一般为注册表问题 解决办法 将下方代码保存为xxx.reg Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.VBS] "VBSFile" [HKEY_CLASSES_ROOT.VBS\PersistentHandler] "{5e941d80-bf96-…...

超详细的前后端实战项目(Spring系列加上vue3)前端篇(二)(一步步实现+源码)
好了,兄弟们,继昨天的项目之后,开始继续敲前端代码,完成前端部分 昨天完成了全局页面的代码,和登录页面的代码,不过昨天的代码还有一些需要补充的,这里添加一下 内容补充:在调用登…...

【国产中颖】SH79F9202U单片机驱动LCD段码液晶学习笔记
1. 引言 因新公司之前液晶数显表产品单片机一直用的是 C51单片机(SH79F9202U9),本人之前没有接触过这款单片机,为了维护老产品不得不重新研究研究这款单片机。 10位ADC LCD的增强型8051微控制器 SH79F9202是一种高速高效率8051可兼容单片机。在同样振…...

人工智能初识
🌞欢迎来到人工智能基础的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 📆首发时间:🌹2024年5月1…...

【算法刷题day60】Leetcode:84. 柱状图中最大的矩形
文章目录 Leetcode 84. 柱状图中最大的矩形解题思路代码总结 草稿图网站 java的Deque Leetcode 84. 柱状图中最大的矩形 题目:84. 柱状图中最大的矩形 解析:代码随想录解析 解题思路 反方向接雨水。见上一篇文章 代码 class Solution {public int la…...

ThingsBoard物联网网关在智慧城市数据采集中的应用
智慧城市由监控中心、采集网关、前端采集设备、前端感应执行器组成。 为何选用ThingsBoard作为平台 监控中心为物联网平台,该平台包含云计算、大数据、人工智能、物联网、GIS、云安全等主要模块,具备数据采集、数据交换、超大规模计算、数据分析、数据应…...

Java中的打印流PrintStream 和 PrintWriter
PrintStream和PrintWriter在Java中都是用于打印输出的类,但它们之间存在一些明显的区别。以下是关于这两个类的详细解释和比较: PrintStream 基本特性 PrintStream是一个字节打印流,它继承自FilterOutputStream。 主要操作byte流࿰…...

【MATLAB源码-第217期】基于matlab的16QAM系统相位偏移估计HOS算法仿真,对比补偿前后的星座图误码率。
操作环境: MATLAB 2022a 1、算法描述 高阶统计量(HOS)频偏估计算法 高阶统计量(Higher Order Statistics, HOS)频偏估计算法是一种先进的信号处理技术,广泛应用于现代数字通信系统中,以应对…...

C# CryptoStream流的详解与示例
在当今数字时代,数据安全变得越来越重要。保护敏感信息免受未授权访问是每个开发者的责任。在C#中,使用CryptoStream流可以方便地对数据进行加密和解密。本文将详细介绍C# CryptoStream库的用法、功能以及它如何对数据进行加密和解密。 一、CryptoStrea…...

Kubernetes 之 ReplicaSet
Kubernetes 之 ReplicaSet ReplicaSet 定义 ReplicaSet 是 Kubernetes 中的一种副本控制器,其主要作用是控制其管理的 Pod 的预设副本数量。它会持续监听这些 Pod 的运行状态,在Pod发生故障时执行重启策略,当 Pod 数量减少时会重新启动新的…...

转发和重定向
目录 是什么 转发(Forwarding) 概念 特点 实现方式 重定向(Redirecting) 概念 特点 实现方式 转发和重定向区别整理 转发和重定向的适用场景 转发(Forwarding) 重定向(Redirect&am…...

源码部署ELK
目录 资源列表 基础环境 关闭防护墙 关闭内核安全机制 修改主机名 添加hosts映射 一、部署elasticsearch 修改limit限制 部署elasticsearch 修改配置文件 单节点 集群(3台节点集群为例) 启动 二、部署logstash 部署logstash 添加配置文件 启动 三、部署kiban…...

构造+模拟,CF1148C. Crazy Diamond
一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1148C - Codeforces 二、解题报告 1、思路分析 题目提示O(5n)的解法了,事实上我们O(3n)就能解决,关键在于1,n的处理 我们读入数据a[],代表初始数组…...

CAD二次开发(2)-将直线对象添加到CAD图形文件
1. 准备工作 创建一个类库项目,如下: 2. 分析Line对象 Line类的初始化方法和参数 using Autodesk.AutoCAD.DatabaseServices; Line line new Line();Line 继承Curve 继承Entity 继承DBObject 继承Drawable 继承RXObject 初始化方法有两个…...

代码随想录二刷 Day05 | 242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和,454.四数相加II,383. 赎金信
题目与题解 参考资料:哈希表理论基础 Tips: 一般哈希表都是用来快速判断一个元素是否出现集合里哈希表生成原理:先通过哈希函数将变量映射为hashcode,如果二者hashcode相同,再通过哈希碰撞方法(拉链法&…...

2024年四川省三支一扶报名流程图解✅
2024年四川省三支一扶报名流程图解✅ 🔴时间安排 1、报名时间:5月31日—6月4日17:00 2、资格初审时间:5月31日—6月5日17:00 3、准考证打印时间:6月25日—6月29日 4、笔试时间:6月30日 5、笔试成绩:7…...

js Dom基础
获取元素 1、getElementById() 通过id属性获取一个元素节点对象 <div id"div1"></div> <script> var div1 document.getElementById(div1) </script> 2、 getElementsByTagName()可以根据标签名来获取一组元素节点对象 这个方法会给我们返…...

pytest识别测试用例的机制以及和unittest的区别
pytest识别测试用例的机制 文件 以test_开头或以_test结尾的python文件,即test_xxx.py或xxx_test.py类,在第一点识别到的文件中的类,且满足一下任一条件: 1)以Test_开头,且没有__init__()初始化函数的类&a…...

民国漫画杂志《时代漫画》第17期.PDF
时代漫画17.PDF: https://url03.ctfile.com/f/1779803-1248612629-85326d?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了,截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络!...

[AIGC] Spring Boot 2 自定义 Starter 指南
Spring Boot 包含一系列的 “Starter POMs”,它们都是一些方便的依赖描述符,你可以在你的应用中导入。在一些情况下,你可能想创建自己的自定义 starter。以下是创建自己的 Spring Boot Starter 的步骤。 文章目录 1. 创建基本的 Maven 项目2.…...

HCIP综合实验命令
目录 一、配置IP地址 二、配置DHCP 三、配置静态路由(内网通) 四、配置缺省路由 (外网通) 五、配置缺省 (全网通) 六、防环配置 七、配置远程登录 八、修改优先级 九、配置MP-GROUP 十、配置ppp进…...

JS移动端设置mouseover,mouseleave有效么
在移动设备的浏览器环境中,mouseover 和 mouseleave 事件的行为与桌面浏览器有所不同,主要是因为移动设备的交互方式主要是基于触摸的,而不是基于鼠标的。 在移动设备上,当用户触摸屏幕时,通常会触发 touchstart 事件…...

IAR9.30安装和注册相关
下载解压licpatcher64工具,把licpatcher64.exe拷贝到IAR的安装目录中双击运行。 示例IAR9.30.1默认安装如下如下,一共三个分别拷贝运行,不要遗漏。 C:\Program Files\IAR Systems\Embedded Workbench 9.1\arm\bin C:\Program Files\IAR Syst…...

HTTP Digest Access Authentication Schema
HTTP Digest Access Authentication Schema 背景介绍ChallengeResponse摘要计算流程总结参考 背景 本文内容大多基于网上其他参考文章及资料整理后所得,并非原创,目的是为了需要时方便查看。 介绍 HTTP Digest Access Authentication Schemaÿ…...

MySql超大Sql文件导入效率优化
对于MySQL中超大SQL文件的导入,效率优化是至关重要的,因为不当的操作可能导致导入过程耗时过长,甚至失败。以下是一些建议来优化MySQL超大SQL文件的导入效率: 调整max_allowed_packet参数: 这个参数定义了MySQL服务器和…...

【leetcode1944--队列中可以看到的人数】
有n人排成一个队列,从左到右编号为0到n-1,height数组记录每个人的身高,返回一个数组,记录每个人能看到几个人。 类比:山峰问题,高的后面的矮的看不见。 从后往前,最后一个元素入栈,…...

基于51单片机的室内空气质量检测-仿真设计
本设计是基于单片机的空气质量检测设计,主要实现以下功能: 可实现通过SGP30测量二氧化碳及甲醛浓度,当超过设置的最大值时,进行报警及通风和净化空气处理 可实现通过MQ-4测量甲烷浓度,当超过设置的最大值时࿰…...