用fail2ban简简单单封掉ssh端口的试探

用fail2ban简简单单封掉ssh端口的试探 有人不停试探登录22端口的openssh服务,ip量很大的话,比如1000多ip论番来,会导致服务的Loadavg升高到7左右,系统进程内ssh达到1000多,很困扰 如果改掉sshd的缺省端口22,那么scp以及sftp的时候会带来很大麻烦 这种情况就装个fail2ban就好,注意,Centos 7现在用的是fiewalld,所以fail2ban可以用ufw或者iptables,建议用iptables,比较容易看 #安装 yum install -y epel-release yum install -y fail2ban 最主要的就是修改/etc/fail2ban/jail.conf #vi /etc/fail2ban/jail.conf ...... [sshd-iptalbes] enabled = true filter = sshd port = 22 action = iptables[name=SSH, port=ssh, protocol=tcp] logpath = /var/log/secure maxretry = 3 bantime = 86400 ...... 注意上面用的是iptables,三次尝试失败就ban一天。

2023年12月28日

用logrotate解决catalinna.out过大的问题

用logrotate解决catalinna.out过大的问题 我们的tomcat的catalina.out基本运行一段时间后会出现文件过大的问题,处理一下。 前提是/export/servers/tomcat/下需要建立个软链接tomcat,指向现在正在用的tomcat版本 然后就可以用logrotate来解决catalina.out的日志轮转问题。这种方式比较简单。在/etc/logrotate.d/目录下新建一个名为tomcat的文件, cat >/etc/logrotate.d/tomcat <<EOF /export/servers/tomcat/tomcat/logs/catalina.out{ copytruncate daily rotate 7 missingok compress } EOF 以上的配置说明: /export/servers/tomcat/tomcat/logs/catalina.out{ # 要轮转的文件 copytruncate # 创建新的catalina.out副本后,truncate源catalina.out文件,会丢数据!!! daily # 每天进行catalina.out文件的轮转 rotate 7 # 至多保留7个副本 missingok # 如果要轮转的文件丢失了,继续轮转而不报错 compress # 使用压缩的方式(非常有用,节省硬盘空间;一个2~3GB的日志文件可以压缩成60MB左右) } 可以手工强制执行logrotate程序。在命令行运行:

2023年12月28日

Rsync的日常使用方法

Rsync的基本参数 -a : 归档模式,递归拷贝,带属性。 -u : 同步时目标目录中如果某文件比源中文件时间要新,则保留不动。 -v : 详细显示信息 -z : 压缩 -h : 显示友好信息 -P : 显示传输进度百分比 -R : 使用相对路径,会保留源目录的目录结构。 -e : 使用ssh来传输 源如果没有/,代表连同目录以及目录下的文件,统统拷贝到目的去 源如果最后带/,意思是/*,代表只拷贝目录下的文件,不包括目录本身 如果参数中带-R,那无论源后面有无/,都按原有目录状态拷过去 -R 使用相对路径,会保留源目录的目录结构。 如rsync -av /foo/bar/baz.c remote::/tmp/,会将baz.c传到/tmp下, 而使用了-R,则在/tmp下的文件结构将会是foo/bar/baz.c。 下面两种用法一样: rsync -auvPR --exclude 'upload' new 172.18.34.38::new/ rsync -auvPR --exclude 'upload' ./new 172.18.34.38::new/ 大规模传输细小文件的方法: find ./new -mindepth 6 -maxdepth 6 -type d -print0 | xargs -P 30 -n 60 -I % -0 rsync -auvPR % 172.18.34.38::new/ -print0 -0 find命令有一个特别的参数-print0,指定输出的文件列表以null分隔。然后,xargs命令的-0参数表示用null当作分隔符。 -I -I指定每一项命令行参数的替代字符串。 ...

2023年12月28日

Megacli用来重建不知道正确槽位的Raid

192.168.85.7上面有两个Raid 一个Raid1, 500G,应该是两块盘,现在丢了一块,正确的槽位不知道是哪一个 另一个是Raid0,4TB,运行正常 现在在一个新槽位上插了一块硬盘,但是槽位不对,没有自动rebuild,状态是unconfiged good. 首先查一下丢失的盘 /opt/MegaRAID/MegaCli/MegaCli64 -Pdgetmissing -a0 得到参数Array 0,Row 1 首先进行替换,新盘的id是32:2,替换掉Array0 Row1的盘 /opt/MegaRAID/MegaCli/MegaCli64 -PdReplaceMissing -PhysDrv [32:2] -Array0 -row1 -a0 然后强制这块新盘开始重建 /opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -Start -PhysDrv [32:2] -a0 随时查看一下进度 /opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -ShowProg -PhysDrv [32:2] -a0 上面已经走了5%了,走完就ok了。

2023年12月27日

Linux下定期检查物理机磁盘的脚本

适用于所有MegaCli的机器。无论dell、浪潮还是H3C。 必须每天上午、下午各检查一下所有物理机的磁盘啊,有问题及时处理。 172.18.31.2 /usr/local/bin/check_disk.sh 脚本: L1到L5,是5个机柜,从上到下是172.18.x.x的ip分布 #!/bin/bash L1=(30.1 30.2 30.3 30.4 30.5 30.6 30.7 30.8 30.9 30.10 30.11 30.12 30.13 30.14 30.15 30.16 20.25 30.18) L2=(30.19 20.23 20.24 20.30 20.31 20.9 20.10 20.37 20.38 20.39 30.29 30.30 20.16 20.17 30.33 30.34 30.35 30.36) L3=(30.37 20.44 20.45 22.200 30.41 30.42 30.43 30.44 30.45 30.46 30.47 22.201 30.49 30.50 20.51 20.52 20.58 20.59) L4=(20.65 20.66 30.57 30.58 30.59 30.60 20.1 20.2 30.63 30.64 30.65 30.66 30.67 30.68 30.69 30.70 30.71 30.72) L5=(30.73 30.74 30.75 30.76) > /tmp/idrac.txt > /tmp/idracout.txt for i in L1 L2 L3 L4 L5 do var=$i[@] for j in ${!var} do echo "Scan $i 172.18.$j......" >> /tmp/idrac.txt sshpass -p "xxxxxxxx" ssh -oStrictHostKeyChecking=no root@172.18.$j /opt/MegaRAID/MegaCli/MegaCli64 -PDList -a0|grep "S.M.A.R.T" >> /tmp/idrac.txt done done lines=($(grep -n "Yes" /tmp/idrac.txt | cut -f1 -d:)) if [ ${#lines[@]} -eq 0 ]; then exit 1 else for findline in ${lines[@]} do array=($(grep -n "\.\.\.\.\.\." /tmp/idrac.txt |cut -f1 -d:)) newarray=(${array[*]} ${findline}) sortarray=($(echo ${newarray[@]} | tr ' ' '\n'|sort -n)) for((i=0;i<${#sortarray[*]};i++)) do if [ ${sortarray[$i]} -eq $findline ];then beginline=${sortarray[(($i-1))]} endline=${sortarray[(($i+1))]} if [ "$endline" == "" ];then endline="$" else endline=$(($endline-1)) fi break fi done sed -n "$beginline,$endline p" /tmp/idrac.txt >> /tmp/idracout.txt done /usr/local/bin/mailsend -to "zhangranrui@ddky.com" -from monit@ddky.com -ssl -port 465 -auth -auth-plan -smtp smtp.exmail.qq.com -sub "IDC机器硬件故障" -v -user "monit@ddky.com" -pass "xxxxxxxx" -cs "gb2312" -enc-type "base64" -M "$(cat /tmp/idracout.txt)" fi

2023年12月27日

Linux下bond和br建立vlan的方法

我们的宿主机上做了4网卡bonding,然后需要上升到br,两个网卡都需要做上vlan。 比如172.18.30.1,想在上面增加一个VLAN段202,然后在上面生产一台虚机172.18.19.2 就需要增加一个bond0.202以及br0.202 做法如下: cd /etc/sysconfig/network-scripts cp ifcfg-bond0.199 ifcfg-bond0.202 vi ifcfg-bond0.202 DEVICE=bond0.202 ONBOOT=yes USERCTL=no BRIDGE=br0.202 VLAN=yes cp ifcfg-br0.199 ifcfg-br0.199 vi ifcfg-br0.202 DEVICE=br0.202 BOOTPROTO=static ONBOOT=yes TYPE=Bridge 然后启动这两个网卡,启动顺序很重要!!! ifup bond0.202 ifup br0.202 注意,执行完以后务必检查一下两个网卡是否UP 然后产虚机就好 ./vm.sh create -b br0.202 -c 4 -m 4096 -d 40 -i 172.18.19.2 -k 255.255.255.0 -g 172.18.19.254 -q 172.18.30.1 -r 172.18.30.2 ucarp-18-19-2

2023年12月27日

Linux下ECMP等价路由的建立

我们有两个出口,一个从无锡出,一个从世纪互联出 这台机器的em1接世纪互联,em2接无锡尚航,两个网关,有ipv6和ipv4 ISP 1: Gateways: 172.16.9.254 2001:db8:a::1 Interface: em1 ISP 2: Gateways: 172.18.9.254 2001:db8:b::1 Interface: em2 那么这台机器的ECMP等价路由这么做: ip route replace default proto static scope global \ nexthop dev em1 via 172.16.9.254 weight 1 \ nexthop dev em2 via 172.18.9.254 weight 1 ip -6 route replace default proto static scope global \ nexthop dev em1 via 2001:db8:a::1 weight 1 \ nexthop dev em2 via 2001:db8:b::1 weight 1 这两条命令需要放到 /etc/rc.d/rc.locl 或者ifup里面去 ...

2023年12月27日

审计需求只读用户的建立

审计的要求: 线上环境研发只能有只读权限 那只能曲线救国了,两个用户,supdev是运维用来管理的,logview是研发用来只读日志的 一、首先确定系统有supdev用户存在 id supdev 通常supdev的id是511 二、增加新用户logview 我们确定logview的id是512,group是和supdev同组 useradd -u 512 -g supdev logview 三、程序的app以及数据目录不是在supdev的home目录下,而是在/data/servers下 所以我们把/data/servers下的目录都改成750,文件都改成640 #!/bin/sh find /export/servers/ -type d ! -perm 0750 -exec chmod 0750 {} find /export/servers/ -type f ! -perm 0640 -exec chmod 0640 {} # ansible 模块 - name: make dirs 0755 command: find {{ your_path }} -type d ! -perm 0750 -exec chmod 0750 {} \; - name: make files 0644 command: find {{ your_path }} -type f ! -perm 0640 -exec chmod 0640 {} \; 这样就可以了。logview可以去到/data/servers目录,可以看文件,但无法执行。 ...

2023年12月27日

H3C服务的BIOS主板设置中如何正确设置NTP服务器

H3C服务器主板时间不准确也很讨厌,看主板日志时间都是错的,没办法,修改一下。 H3C服务器BIOS的NTP设置方法: 修改主服务器: ipmitool -I lanplus -H 10.18.$1 -U admin -P Password@_ raw 0x32 0xA8 0x01 服务器名的HEX字符串 修改辅服务器: ipmitool -I lanplus -H 10.18.$1 -U admin -P Password@_ raw 0x32 0xA8 0x02 服务器名的HEX字符串 修改第三个服务器: ipmitool -I lanplus -H 10.18.$1 -U admin -P Password@_ raw 0x32 0xA8 0x05 服务器名的HEX字符串 方法很简单,但是服务器名的HEX字符串如何得到? echo -n "172.18.30.1" | od -A n -t x1 | sed "s/ / 0x/g" 0x31 0x37 0x32 0x2e 0x31 0x38 0x2e 0x33 0x30 0x2e 0x31 修改NTP服务器1为172.18.30.1 ...

2023年12月26日

traefik配置digicert家得泛域名证书

traefik使用digicert付费的证书和使用letencrypt免费证书的方法不一样,下面说一下怎么配置: traefik.yml里面就没有任何配置 log: level: DEBUG api: insecure: false dashboard: true entryPoints: http: address: ":80" #http: # redirections: # entryPoint: # to: https # scheme: https https: address: ":443" providers: file: directory: /export/servers/traefik/dynamic watch: true 所有的配置都放到到/export/servers/traefik/dynamic目录下了,动态更新: certs.yml来定义证书选项 tls: certificates: - certFile: "/export/servers/traefik/ddky.crt" keyFile: "/export/servers/traefik/ddky.key" options: default: sniStrict: true minVersion: VersionTLS12 cipherSuites: - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 test7-01.yml单独test7.ddky.com的配置 ...

2023年12月21日