ºìÁªLinuxÃÅ»§
Linux°ïÖú

2017ÄêÆóÒµÔËάÃæÊÔÌâ28Àý

·¢²¼Ê±¼ä:2017-12-21 15:31:26À´Ô´:ºìÁª×÷Õß:Ronny
1¡¢LinuxÈçºÎ¹ÒÔØwindowsÏµĹ²ÏíĿ¼£¿
mount.cifs //IPµØÖ·/server /mnt/server -o user=administrator,password=123456
linux ϵÄserverÐèÒª×Ô¼ºÊÖ¶¯½¨Ò»¸ö ºóÃæµÄuserÓëpass ÊÇwindowsÖ÷»úµÄÕ˺źÍÃÜÂë ×¢Òâ¿Õ¸ñ ºÍ¶ººÅ

2¡¢ÈçºÎ²é¿´httpµÄ²¢·¢ÇëÇóÊýÓëÆäTCPÁ¬½Ó״̬£¿
netstat -n | awk ¡®/^tcp/ {++b[$NF]}¡¯ END {for(a in b) print a,b[a]}¡¯
»¹ÓÐulimit -n ²é¿´linuxϵͳ´ò¿ª×î´óµÄÎļþÃèÊö·û£¬ÕâÀïĬÈÏ1024£¬²»ÐÞ¸ÄÕâÀïweb·þÎñÆ÷ÐÞ¸ÄÔÙ´óҲûÓá£ÈôÒªÓþÍÐ޸ĺܼ¸¸ö°ì·¨£¬ÕâÀï˵ÆäÖÐÒ»¸ö£º

ÐÞ¸Ä/etc/security/limits.conf
* soft nofile 10240
* hard nofile 10240
ÖØÆôºóÉúЧ
3¡¢ÈçºÎÓÃtcpdumpÐá̽80¶Ë¿ÚµÄ·ÃÎÊ¿´¿´Ë­×î¸ß£¿
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F¡±.¡± ¡®{print $1¡å.¡±$2¡å.¡±$3¡å.¡±$4¡å.¡±}¡¯ | sort |uniq -c | sort -nr | head-5
4¡¢ÈçºÎ²é¿´/var/logĿ¼ÏµÄÎļþÊý£¿
ls /var/log/ -1R | grep ¡°-¡± | wc -l
5¡¢ÈçºÎ²é¿´Linuxϵͳÿ¸öipµÄÁ¬½ÓÊý£¿
netstat -n | awk ¡®/^tcp/ {print $5}¡¯ | awk -F: ¡®{print $1}¡¯ | sort | uniq -c | sort -rn
6¡¢shellÏÂÉú³É32λËæ»úÃÜÂë
cat /dev/urandom | head -1 | md5sum | head -c 32 >> /pass
7¡¢Í³¼Æ³öapacheµÄaccess.logÖзÃÎÊÁ¿×î¶àµÄ5¸öip
cat access.log | awk ¡®{print $1}¡¯ | sort | uniq -c | sort -n -r | head -5
8¡¢ÈçºÎ²é¿´¶þ½øÖÆÎļþµÄÄÚÈÝ£¿
ÎÒÃÇÒ»°ãͨ¹ýhexdumpÃüÁî À´²é¿´¶þ½øÖÆÎļþµÄÄÚÈÝ¡£

hexdump -C XXX(ÎļþÃû) -CÊDzÎÊý ²»Í¬µÄ²ÎÊýÓв»Í¬µÄÒâÒå

-C ÊDZȽϹ淶µÄ Ê®Áù½øÖƺÍASCIIÂëÏÔʾ

-c Êǵ¥×Ö½Ú×Ö·ûÏÔʾ

-b µ¥×ֽڰ˽øÖÆÏÔʾ

-o ÊÇË«×ֽڰ˽øÖÆÏÔʾ

-d ÊÇË«×Ö½ÚÊ®½øÖÆÏÔʾ

-x ÊÇË«×Ö½ÚÊ®Áù½øÖÆÏÔʾ

9¡¢ps aux ÖеÄVSZ´ú±íʲôÒâ˼£¬RSS´ú±íʲôÒâ˼£¿
VSZ:ÐéÄâÄڴ漯,½ø³ÌÕ¼ÓõÄÐéÄâÄÚ´æ¿Õ¼ä

RSS:ÎïÀíÄڴ漯,½ø³ÌÕ½ÓÃʵ¼ÊÎïÀíÄÚ´æ¿Õ¼ä

10¡¢ÈçºÎ¼ì²â²¢ÐÞ¸´/dev/hda5£¿
fsckÓÃÀ´¼ì²éºÍά»¤²»Ò»ÖµÄÎļþϵͳ¡£Èôϵͳµôµç»ò´ÅÅÌ·¢ÉúÎÊÌ⣬¿ÉÀûÓÃfsckÃüÁî¶ÔÎļþϵͳ½øÐмì²é

11¡¢½éÉÜÏÂLinuxϵͳµÄ¿ª»úÆô¶¯Ë³Ðò
¼ÓÔØBIOS->¶ÁÈ¡MBR->Boot Loader->¼ÓÔØÄÚºË->Óû§²ãinitÒ»¾äinittabÎļþÀ´É趨ϵͳÔËÐеĵȼ¶(Ò»°ã3»òÕß5£¬3ÊǶàÓû§ÃüÁîÐУ¬5ÊǽçÃæ)->init½ø³ÌÖ´ÐÐrc.syninit->Æô¶¯ÄÚºËÄ£¿é->Ö´Ðв»Í¬¼¶±ðÔËÐеĽű¾³ÌÐò->Ö´ÐÐ/etc/rc.d/rc.local(±¾µØÔËÐзþÎñ)->Ö´ÐÐ/bin/login,¾Í¿ÉÒԵǼÁË¡£

12¡¢·ûºÅÁ´½ÓÓëÓ²Á´½ÓµÄÇø±ð
ÎÒÃÇ¿ÉÒÔ°Ñ·ûºÅÁ´½Ó£¬Ò²¾ÍÊÇÈíÁ¬½Ó µ±×öÊÇ windowsϵͳÀïµÄ ¿ì½Ý·½Ê½¡£

Ó²Á´½Ó ¾ÍºÃÏñÊÇ ÓÖ¸´ÖÆÁËÒ»·Ý£¬¾ÙÀý˵Ã÷£º

ln 3.txt 4.txt ÕâÊÇÓ²Á´½Ó£¬Ï൱ÓÚ¸´ÖÆ£¬²»¿ÉÒÔ¿ç·ÖÇø£¬µ«ÐÞ¸Ä3,4»á¸ú×ű䣬Èôɾ³ý3,4²»ÊÜÈκÎÓ°Ïì¡£

ln -s 3.txt 4.txt ÕâÊÇÈíÁ¬½Ó£¬Ï൱ÓÚ¿ì½Ý·½Ê½¡£ÐÞ¸Ä4,3Ò²»á¸ú×ű䣬Èôɾ³ý3,4¾Í»µµôÁË¡£²»¿ÉÒÔÓÃÁË¡£

13¡¢±£´æµ±Ç°´ÅÅÌ·ÖÇøµÄ·ÖÇø±í>
dd ÃüÁîÊÇÒÔ¸öÇ¿´óµÄÃüÁÔÚ¸´ÖƵÄͬʱ½øÐÐת»»

dd if=/dev/sda of=./mbr.txt bs=1 count=512
14¡¢ÈçºÎÔÚÎı¾ÀïÃæ½øÐи´ÖÆ¡¢Õ³Ìù£¬É¾³ýÐУ¬É¾³ýÈ«²¿£¬°´ÐвéÕҺͰ´×Öĸ²éÕÒ£¿
ÒÔϲÙ×÷È«²¿ÔÚÃüÁîÐÐ״̬²Ù×÷£¬²»ÒªÔڱ༭״̬²Ù×÷¡£

ÔÚÎı¾Àï Òƶ¯µ½ÏëÒª¸´ÖƵÄÐÐ °´yy Ï븴ÖƵ½ÄľÍÒƶ¯µ½ÄÄ£¬È»ºó°´P ¾Íð¤ÌùÁË

ɾ³ýÐÐ Òƶ¯µ½¸ÄÐÐ °´dd

ɾ³ýÈ«²¿ dG ÕâÀï×¢ÒâGÒ»¶¨Òª´óд

°´ÐвéÕÒ :90 ÕâÑù¾ÍÊÇÕÒµ½µÚ90ÐÐ

°´×Öĸ²éÕÒ /path ÕâÑù¾ÍÊÇ ÕÒµ½pathÕâ¸öµ¥´ÊËùÔÚµÄλÖã¬Îı¾Àï¿ÉÄÜ´æÔÚ¶à¸ö,¶à´Î²éÕÒ»áÏÔʾÔÚ²»Í¬µÄλÖá£

15¡¢ÊÖ¶¯°²×°grub
grub-install /dev/sda
16¡¢ÐÞ¸ÄÄں˲ÎÊý
vi /etc/sysctl.conf ÕâÀïÐ޸IJÎÊý
sysctl -p ˢкó¿ÉÓÃ
17¡¢ÔÚ1-39ÄÚÈ¡Ëæ»úÊý
expr $[RANDOM%39] +1
RANDOMËæ»úÊý
%39È¡ÓàÊý·¶Î§0-38
18¡¢ÏÞÖÆapacheÿÃëн¨Á¬½ÓÊýΪ1£¬·åֵΪ3
ÿÃëн¨Á¬½ÓÊý Ò»°ã¶¼ÊÇÓÉ·À»ðǽÀ´×ö£¬apache±¾ÉíºÃÏñÎÞ·¨ÉèÖÃÿÃëн¨Á¬½ÓÊý£¬Ö»ÄÜÉèÖÃ×î´óÁ¬½Ó£º

iptables -A INPUT -d 172.16.100.1 -p tcp -dport 80 -m limit -limit 1/second -j ACCEPT
19¡¢FTPµÄÖ÷¶¯Ä£Ê½ºÍ±»¶¯Ä£Ê½
FTPЭÒéÓÐÁ½ÖÖ¹¤×÷·½Ê½£ºPORT·½Ê½ºÍPASV·½Ê½£¬ÖÐÎÄÒâ˼ΪÖ÷¶¯Ê½ºÍ±»¶¯Ê½¡£

PORT£¨Ö÷¶¯£©·½Ê½µÄÁ¬½Ó¹ý³ÌÊÇ£º¿Í»§¶ËÏò·þÎñÆ÷µÄFTP¶Ë¿Ú£¨Ä¬ÈÏÊÇ21£©·¢ËÍÁ¬½ÓÇëÇ󣬷þÎñÆ÷½ÓÊÜÁ¬½Ó£¬½¨Á¢Ò»ÌõÃüÁîÁ´Â·¡£µ±ÐèÒª´«ËÍÊý¾Ýʱ£¬¿Í»§¶ËÔÚÃüÁîÁ´Â·ÉÏÓÃPORT ÃüÁî¸æËß·þÎñÆ÷£º¡°ÎÒ´ò¿ªÁËXX¶Ë¿Ú£¬Äã¹ýÀ´Á¬½ÓÎÒ¡±¡£ÓÚÊÇ·þÎñÆ÷´Ó20¶Ë¿ÚÏò¿Í»§¶ËµÄ XX¶Ë¿Ú·¢ËÍÁ¬½ÓÇëÇ󣬽¨Á¢Ò»ÌõÊý¾ÝÁ´Â·À´´«ËÍÊý¾Ý¡£

PASV£¨±»¶¯£©·½Ê½µÄÁ¬½Ó¹ý³ÌÊÇ£º¿Í»§¶ËÏò·þÎñÆ÷µÄFTP¶Ë¿Ú£¨Ä¬ÈÏÊÇ21£©·¢ËÍÁ¬½ÓÇëÇ󣬷þÎñÆ÷½ÓÊÜÁ¬½Ó£¬½¨Á¢Ò»ÌõÃüÁîÁ´Â·¡£µ±ÐèÒª´«ËÍÊý¾Ýʱ£¬·þÎñÆ÷ÔÚÃüÁîÁ´Â·ÉÏÓÃPASV ÃüÁî¸æËß¿Í»§¶Ë£º¡°ÎÒ´ò¿ªÁËXX¶Ë¿Ú£¬Äã¹ýÀ´Á¬½ÓÎÒ¡±¡£ÓÚÊÇ¿Í»§¶ËÏò·þÎñÆ÷µÄXX¶Ë¿Ú ·¢ËÍÁ¬½ÓÇëÇ󣬽¨Á¢Ò»ÌõÊý¾ÝÁ´Â·À´´«ËÍÊý¾Ý¡£

´ÓÉÏÃæ¿ÉÒÔ¿´³ö£¬Á½ÖÖ·½Ê½µÄÃüÁîÁ´Â·Á¬½Ó·½·¨ÊÇÒ»ÑùµÄ£¬¶øÊý¾ÝÁ´Â·µÄ½¨Á¢·½·¨¾ÍÍêÈ«²»Í¬¡£

20¡¢ÏÔʾ/etc/inittabÖÐÒÔ#¿ªÍ·£¬ÇÒºóÃæ¸úÁËÒ»¸ö»òÕ߶à¸ö¿Õ°××Ö·û£¬¶øºóÓÖ¸úÁËÈÎÒâ·Ç¿Õ°××Ö·ûµÄÐÐ
grep ¡°^#/{1,/}[^]¡± /etc/inittab
21¡¢ÏÔʾ/etc/inittabÖаüº¬ÁË:Ò»¸öÊý×Ö:(¼´Á½¸öðºÅÖмäÒ»¸öÊý×Ö)µÄÐÐ
grep ¡°/:[0-9]/{1/}:¡± /etc/inittab
22¡¢Ôõô°Ñ½Å±¾Ìí¼Óµ½ÏµÍ³·þÎñÀ¼´ÓÃserviceÀ´µ÷Óã¿
Ôڽű¾Àï¼ÓÈë
#!/bin/bash
# chkconfig: 345 85 15
# description: httpd
È»ºó±£´æ
chkconfig httpd -add ´´½¨ÏµÍ³·þÎñ
ÏÖÔھͿÉÒÔʹÓÃservice À´ start or restart
23¡¢Ð´Ò»¸ö½Å±¾£¬ÊµÏÖÅúÁ¿Ìí¼Ó20¸öÓû§£¬Óû§ÃûΪuser01-20£¬ÃÜÂëΪuserºóÃæ¸ú5¸öËæ»ú×Ö·û
#!/bin/bash
#description: useradd
for i in `seq -f¡±%02g¡± 1 20`;do
useradd user$i
echo ¡°user$i-`echo $RANDOM|md5sum|cut -c 1-5`¡±|passwd -stdinuser$i >/dev/null 2>&1
done
24¡¢Ð´Ò»¸ö½Å±¾£¬ÊµÏÖÅжÏ192.168.1.0/24ÍøÂçÀµ±Ç°ÔÚÏßµÄIPÓÐÄÄЩ£¬ÄÜpingͨÔòÈÏΪÔÚÏß
#!/bin/bash
for ip in `seq 1 255`
do
ping -c 1 192.168.1.$ip > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo 192.168.1.$ip UP
else
echo 192.168.1.$ip DOWN
fi
}&
done
wait
25¡¢Ð´Ò»¸ö½Å±¾£¬ÅжÏÒ»¸öÖ¸¶¨µÄ½Å±¾ÊÇ·ñÊÇÓï·¨´íÎó£»Èç¹ûÓдíÎó£¬ÔòÌáÐÑÓû§¼üÈëQ»òÕßqÎÞÊÓ´íÎó²¢Í˳öÆäËüÈκμü¿ÉÒÔͨ¹ývim´ò¿ªÕâ¸öÖ¸¶¨µÄ½Å±¾
[root@localhost tmp]# cat checksh.sh
#!/bin/bash
read -p ¡°please input check script-> ¡± file
if [ -f $file ]; then
sh -n $file > /dev/null 2>&1
if [ $? -ne 0 ]; then
read -p ¡°You input $file syntax error,[Type q to exit or Type vim to edit]¡± answer
case $answer in
q | Q)
exit 0
;;
vim )
vim $file
;;
*£©
exit 0
;;
esac
fi
else
echo ¡°$file not exist¡±
exit 1
fi
26¡¢Ð´Ò»¸ö½Å±¾£¬ÒªÇóÈçºÎ£º
´´½¨Ò»¸öº¯Êý£¬ÄܽÓÊÜÁ½¸ö²ÎÊý£º

1)µÚÒ»¸ö²ÎÊýΪURL£¬¼´¿ÉÏÂÔصÄÎļþ£»µÚ¶þ¸ö²ÎÊýΪĿ¼£¬¼´ÏÂÔغ󱣴æµÄλÖã»

2)Èç¹ûÓû§¸øµÄĿ¼²»´æÔÚ£¬ÔòÌáʾÓû§ÊÇ·ñ´´½¨£»Èç¹û´´½¨¾Í¼ÌÐøÖ´ÐУ¬·ñÔò£¬º¯Êý·µ»ØÒ»¸ö51µÄ´íÎóÖµ¸øµ÷Óýű¾£»

3)Èç¹û¸øµÄĿ¼´æÔÚ£¬ÔòÏÂÔØÎļþ£»ÏÂÔØÃüÁîÖ´ÐнáÊøºó²âÊÔÎļþÏÂÔسɹ¦Óë·ñ£»Èç¹û³É¹¦£¬Ôò·µ»Ø0¸øµ÷Óýű¾£¬·ñÔò£¬·µ»Ø52¸øµ÷Óýű¾£»

[root@localhost tmp]# cat downfile.sh
#!/bin/bash
url=$1
dir=$2
download()
{
cd $dir >> /dev/null 2>&1
if [ $? -ne 0 ];then
read -p ¡°$dir No such file or directory,create?(y/n)¡± answer
if [ ¡°$answer¡± == ¡°y¡± ];then
mkdir -p $dir
cd $dir
wget $url 1> /dev/null 2>&1
else
return ¡°51¡±
fi
fi
if [ $? -ne 0 ]; then
return ¡°52¡±
fi
}
download $url $dir
echo $?
27¡¢Ð´Ò»¸ö½Å±¾£¬ÏêϸÐèÇóÈçÏ£º
1¡¢´´½¨Ò»¸öº¯Êý£¬¿ÉÒÔ½ÓÊÜÒ»¸ö´ÅÅÌÉ豸·¾¶£¨Èç/dev/sdb£©×÷Ϊ²ÎÊý;ÔÚÕæÕý¿ªÊ¼ºóÃæ²½Öè֮ǰÌáÐÑÓû§ÓÐΣÏÕ£¬²¢ÈÃÓû§Ñ¡ÔñÊÇ·ñ¼ÌÐø£»¶øºó½«´Ë´ÅÅÌÉ豸ÉϵÄËùÓзÖÇøÇå¿Õ£¨Ìáʾ£¬Ê¹ÓÃÃüÁîdd if=/dev/zero of=/dev/sdb bs=512 count=1ʵÏÖ£¬×¢ÒâÆäÖеÄÉ豸·¾¶²»ÒªÐ´´íÁË£»

Èç¹û´Ë²½Öèʧ°Ü£¬·µ»Ø67¸øÖ÷³ÌÐò£»

½Ó×ÅÔÚ´Ë´ÅÅÌÉ豸ÉÏ´´½¨Á½¸öÖ÷·ÖÇø£¬Ò»¸ö´óСΪ100M£¬Ò»¸ö´óСΪ1G£»Èç¹û´Ë²½Öèʧ°Ü£¬·µ»Ø68¸øÖ÷³ÌÐò£»

¸ñʽ»¯´ËÁ½·ÖÇø£¬ÎļþϵͳÀàÐÍΪext3£»Èç¹û´Ë²½Öèʧ°Ü£¬·µ»Ø69¸øÖ÷³ÌÐò£»

Èç¹ûÉÏÊö¹ý³Ì¶¼Õý³££¬·µ»Ø0¸øÖ÷³ÌÐò£»

2¡¢µ÷Óô˺¯Êý£»²¢Í¨¹ý½ÓÊÕº¯ÊýÖ´Ðеķµ»ØÖµÀ´ÅжÏÆäÖ´ÐÐÇé¿ö£¬²¢½«ÐÅÏ¢ÏÔʾ³öÀ´£»

local Darray=(`ls /dev/sd[a-z]`)
for i in ${Darray};do
[[ ¡°$i¡± == ¡°$1¡± ]] && Sd=$i &&break
done
else
return66
fi
#µ±Æ¥Åä³É¹¦£¬½øÈëÑ¡Ôñ£¬¸æËßÓû§£¬ÊÇ·ñ¼ÌÐø£¬Êä´íµÄ»°½øÈëÎÞÏÞÑ­»·£¬µ±Óû§Ñ¡ÔñY,ÔòÇå¿ÕÄ¿±ê·ÖÇø£¬ÇÒÌø³öwhileÑ­»·

while :;do
read -p ¡°Warning!!!This operation will clean $Sd data.Next=y,Quit=n [y|n]:¡± Choice
case $Choice in
y)
dd if=/dev/zero of=$Sd bs=512 count=1 &> /dev/null &&break || return 67 ;;
n)
exit 88 ;;
*)
echo ¡°Invalid choice,please choice again.¡± ;;
esac
done
#ʹÓÃecho´«µÝ¸øfdisk½øÐзÖÇø£¬Èç¹û´ËÃüÁîʧ°Ü£¬ÔòÌøת³öÈ¥£¬´íÎóÖµ68£¬ÐèҪעÒâµÄÊÇ£¬ÓÐʱºòÕâ¸ö·µ»ØÖµºÜ¹îÒ죬±ÊÕß֮ǰ³É¹¦Óë·ñ¶¼ÊÇ·µ»ØµÄ1£¬ºóÀ´ÖØÆôÖ®ºó£¬¾ÍºÃÁË£¬Èç¹ûÉ÷ÖصĻ°£¬¿ÉÒÔ¶Ô´´½¨µÄ·ÖÇø£¬½øÐÐÅжϣ¬²»¹ý¾ÍÐèҪʹÓÃÆäËû¹¤¾ß½ØÈ¡Ïà¹Ø×Ö¶ÎÁË£¬ËäÓÐЩСÂé·³£¬µ«ÎÞ´ó°­

echo-e ¡°n/np/n1/n/n+100M/nn/np/n2/n/n+1024M/nw/n¡±|fdisk /dev/sdb&> /dev/null || || return 68
#¸ñʽ»¯Ö®Ç°£¬ÈÃÄÚºËÖØжÁÈ¡´ÅÅÌ·ÖÇø±í£¬ÖµµÃ×¢ÒâµÄÊÇ£¬ÓеÄϵͳ°æ±¾£¬Ê¹ÓÃpartprobeÎÞЧ£¬Æ©Èç±ÊÕߵĻ·¾³ÊÇrhel5.8£¬¶ørhel6.0ÒÔºó£¬Õâ¸öÃüÁî¾ÍºÜΣÏÕÁË£¬¶øʹÓÃpartx -a /dev/sdbÔòЧ¹û¸üºÃ¡­´ËÏîÐèÉ÷ÖØ£¬Èç¹û¸ñʽ»¯Ê§°Ü£¬Ôò¸æÖª°Ñʧ°ÜµÄ·ÖÇø¶¨Òå³É±äÁ¿£¬ÇÒÌø³öº¯Êý£¬²¢´ø³ö´íÎóÖµ69

`partprobe`
Part=`fdisk -l /dev/$Sd|tail -2|cut -d¡± ¡± -f1`
for M in ${Part};do
mke2fs -j $M &> /dev/null && ErrorPart=$M &&return 69
done
return 0
}
#ÏÂÃæ´úÂ룬µ÷Óú¯Êý£¬½ÓÊÕº¯Êý·µ»ØÖµ£¬¸ù¾Ý·µ»ØÖµ½øÐÐÅжÏÄÄÀï³ö´í¡£

Disk_Mod $1
Res=$?
[ $Res-eq 0 ] && exit 0
[ $Res-eq 66 ] && echo ¡°Error! Invalid input.¡±
[ $Res-eq 67 ] && echo ¡°Error! Command -> dd fdisk mke2fs
28¡¢ÈçºÎÈÃhistoryÃüÁîÏÔʾ¾ßÌåʱ¼ä£¿
HISTTIMEFORMAT=¡±%Y-%m-%d %H:%M:%S¡±
export HISTTIMEFORMAT
ÖØпª»úºó»á»¹Ô­£¬¿ÉÒÔд/etc/profile

±¾ÎĵØÖ·£ºhttp://www.linuxprobe.com/business-operation-maintenance.html
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 1 ÌõÆÀÂÛ

  1. Ronny ÓÚ 2017-12-21 15:31:49·¢±í:

    2017ÄêÆóÒµÔËάÃæÊÔÌâ28Àý