æšå€ã
Yandex.Rootäºéžã©ãŠã³ãã®æåã®ã²ãŒã ã
çµäºããŸãã
-Unixãšã³ãžãã¢ãšã·ã¹ãã 管çè
ã®ããã®ãªãªã³ããã¯ã 229ããŒã ãã456人ãåå ãããã®ãã¡194人ãå°ãªããšã1ã€ã®ã¿ã¹ã¯ãå®äºããŸããã 9ã€ãã¹ãŠã§ã38ããŒã ã管çãããŸããã
Rootã4åå®è¡ããŸãããåããŠHabréã§ã¿ã¹ã¯ã®åæãå
¬éããããšã«ããŸããã ãªãªã³ããã¯ã§è¡ãã¿ã¹ã¯ã¯ãã·ã¹ãã 管çè
ãå®æçã«è§£æ±ºããã¿ã¹ã¯ã«å¹æµããŸãã Yandexã§ã¯ãã»ãŒæ¯æ¥äœããå±éãããŸããäœãåé¡ãçºçããå Žåã¯ãããã«èªèããŠå¹æçã«å¯Ÿå¿ããå¿
èŠããããŸãã

äžè¬ã«ãã·ã¹ãã 管çè
ã®ç«¶äºã¯ããã°ã©ããŒã®ç«¶äºãããã¯ããã«ãŸããªãžã£ã³ã«ãªã®ã§ãäœããã®åœ¢ã§ããã§å
é§è
ã«ãªããªããã°ãªããŸããã ç§ãã¡ã¯èª²é¡ãé¢çœãããããã«ããããŠå®éã®ä»äºã§éèŠãªè³è³ªãåå è
ã«å®éã«ç€ºããã®ãšåæ§ã«ãéåžžã«äžçæžåœåªåããŸããã ã©ãã ãæåããããå€æããã®ã¯ããªã次第ã§ãã
ãã®ä»¶ã«ã€ããŠãèããããã ããæ¹åæ¹æ³ã«ã€ããŠãæèŠããèããããã ããã°å¹žãã§ãã ã¡ãªã¿ã«ãå¿
èŠã«å¿ããŠãå®éã®ã²ãŒã ã§è©ŠããŠã¿ãããšãã§ããŸãã 第1ã©ãŠã³ãã®ç¬¬2éšã¯4æ¥é-4æ14æ¥ç«ææ¥ã«éå¬ãããŸãããåŒãç¶ã
ç»é²ã§ããŸãã
ã²ãŒã ã·ã£ãã³
ç§ãã¡ã¯ãç§ãã¡ã®ä»äºã§äœ¿çšãããŠããçŸä»£ã®æè¡ã«è²¢ç®ãã人ã
ãèšå¿µããŠããã¹ãŠã®ã²ãŒã ã«ååãä»ããããšã«ããŸããã ããã¯ãç¹ã«ããããããšããèšèãäžããŠããããšã³ãžãã¢ã§æ°åŠè
ã®
ã¯ããŒãã»ã·ã£ãã³ã«æ§ããããŠããŸãã ãšããã§ã
root.yandex.ruãµãŒãã¹
èªäœã¯ ãYandexã³ã³ãã¥ãŒãã£ã³ã°ãã©ã€ããŒãã¯ã©ãŠãããŒãã§èµ·åãããŸãã
察象ãšãªãã²ãŒã ã®ç®æšã¯ãã€ã³ã¹ããŒã«ãããOSã®æ§æãå€æŽããããšã«ãããä»®æ³ãã·ã³äžã®ããã€ãã®åé¡ã解決ããããšã§ããããšãã°ããµãŒãã¹ã®éå§ãããã°ã©ã ã®èª¿æŽã§ãã ã¿ã¹ã¯ã¯ãé¢é£ããå Žåãšç¬ç«ããå ŽåããããŸãã ãç£èŠãã¯ãªã¢ãããå¿
èŠããããŸããã€ãŸããä»®æ³ãã·ã³å
ã®é倧ã¹ããŒã¿ã¹ïŒèµ€ã§ããŒã¯ïŒã®åé¡ã解決ããå¿
èŠããããŸãã 圌女ã®ç»åã¯äºåã«ããŠã³ããŒãã§ããç»åã¯æå·åãããŠããŸã-埩å·åããŒã¯å
¬éãããã²ãŒã ã®éå§æã«ãã¹ãŠã®åå è
ã«é»åã¡ãŒã«ã§éä¿¡ãããŸãã
ç»åã埩å·åããåŸãã²ãŒã VPNãšã®æ¥ç¶ã確ç«ããå¿
èŠããããŸãã ãããè¡ãã«ã¯ãæ§æãã¡ã€ã«ããã¹ãŠã®åå è
ã«çºè¡ãããŸãããã£ããã³ã¯ãã¢ããªã±ãŒã·ã§ã³ã®æ¿èªæã«ã¡ãŒã«ã§ããã£ããã³ã®æåŸ
ãåãå
¥ããããŒã ã¡ã³ããŒã«ãããåãåããŸãã çŽå€±ããå Žåããdownloadãã³ãã³ãã䜿çšããŠãã¡ã€ã«ãå床ããŠã³ããŒãã§ããŸãã åãã¬ã€ã€ãŒã¯èªåã®ä»®æ³ãã·ã³ããVPNã«æ¥ç¶ã§ãããããã¿ã¹ã¯ãããŒã å
ã§åæ£ãã䞊è¡ããŠè§£æ±ºã§ããŸãã
ããŒã¹
ãã®ã²ãŒã ã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã¯
ArchLinuxã䜿çšããŠãã
ãã ã OSãããŒãããåŸããŠãŒã¶ãŒã«ã¯ãshannon loginïŒããšããããã³ããã衚瀺ãããŸãã ãã¬ãŒã€ãŒã«ã¯ãã¢ã¯ã»ã¹ã®è©³çŽ°ã«é¢ãããã³ãããããŸããã ååãšããŠããã®ãããªå Žåããã·ã³ãžã®ãç©ççãã¢ã¯ã»ã¹ã®ååšãå©çšããŠãã¹ãŒããŒãŠãŒã¶ãŒã®ãã¹ã¯ãŒãããªã»ããããå¿
èŠããããŸãã
- ãªããŒãããGrubããŒãããŒããŒã§ã«ãŠã³ãããŠã³ã¿ã€ããŒãåæ¢ããŸãã
- ãeããæŒããŠãè¡linux ...ãèŠã€ããinit = / bin / bashãæåŸã«è¿œå ããŸãã
- Ctrl-XãæŒããŠãããŒããåŸ
ã¡ãŸãã
passwd
ã³ãã³ããå
¥åããæ°ãããã¹ã¯ãŒããèšå®ããŸãã- ã³ãã³ã
exec /sbin/init
å
¥åãããšãããŠã³ããŒããç¶è¡ãããŸãã
ãã®æé ãå®äºãããšãæ°ãããã¹ã¯ãŒãã§ãã°ã€ã³ã§ããŸãã
åé¡ã解決ããã«ã¯ãããã€ãã®ããã±ãŒãžãã€ã³ã¹ããŒã«ããå¿
èŠããããŸããã€ãŸããäœæ¥ã®ããã«ããã±ãŒãžãããŒãžã£ãŒãæºåããå¿
èŠããããŸãã
- å€éšãã©ãŒãšã®åæïŒ
pacman-key --populate
pacman-Sy
ã pacman-key --populate
; - ããã±ãŒãžãããŒãžã£ãŒã®æŽæ°ïŒ
pacman -S pacman
ã pacman-db-upgrade;
- ããã€ãã®åé¡ã解決ããã«ã¯ãtcpdumpãšstraceãå¿
èŠã§ãã
pacman -S tcpdump strace.
ã²ãŒã ã€ã¡ãŒãžã®å
éšã«ã¯ã²ãŒã ããã°ã©ã ãããããªã¢ãŒããµãŒããŒã§ãã¹ãã¹ã¯ãªããïŒä»¥äžããã§ãã¯ããšåŒã³ãŸãïŒãå®è¡ããŸãã æ€èšŒãæåããå Žåãã²ãŒã ã¯ã¿ã¹ã¯ã®å®äºãã«ãŠã³ãããŸãã
ãªã¢ãŒããµãŒããŒãšã®æ¥ç¶ã確ä¿ããã«ã¯ãOpenVPNãæ§æããå¿
èŠããããŸãã äž»å¬è
ã¯ãã§ã«å¿
èŠãªãã®ããã¹ãŠæºåããŸãã-èšå®ãã¡ã€ã«ïŒYandex.Rootããã®ã¬ã¿ãŒã«æ·»ä»ãããŠããŸãïŒã/etc/openvpn/openvpn.confã«ã³ããŒããã³ãã³ã
systemctl start openvpn@openvpn
ãŸãã
1.SSL
ãã®ã¿ã¹ã¯ã¯ãæåã«è§£æ±ºãããŸããã SudariLudariããŒã ããããåŠçããŸããã ã¿ã¹ã¯ã§ã¯ãæå®ããã蚌ææ©é¢ã®èšŒææžã«ãã£ãŠçœ²åããã蚌ææžãçæããå¿
èŠããããŸãã
SSLã䜿çšããŠWebãµãŒããŒãã»ããã¢ãããã蚌ææžãçæããããã®CAã®ç§å¯éµãšèšŒææžã¯æ¬¡ã®ãšããã§ãã
----- RSAãã©ã€ããŒãããŒã®éå§-----
MIICXAIBAAKBgQCjKwGnBHUwQtTzLb5uhrh + eRRAQyQwGzCg + n4XWzt8M + iX / OGx
4QCG4GjKhi9Nqzhm41 + AjPB5cndU3Oe5j1LrcvWvxe2n15FG7hPSLG5dHe97pzpj
KVma8OkcrUc6WWIccZ48FlV21ZCeUFukthtqEDDEEw1CxEnwHgIydnynlwIDAQAB
AoGADTAfrREmK6VrMtCCsMpAxTAiG + ORXDYGYyx73oVoNGy5ovc0gr0N3tjqf1wD
HML3BxHfmTNLCHXhAUHtlMjpya7kkJELurrFgEQ9gkcdogcf8Iw / J6GjBpJG2WlX
vVL4zEiYw0T5TULGI54Iest0ZQx88EX8r + 6x1jI668RHCtECQQDYUPLf2K / 0FUyk
csXoKq1ECseSVpfhG5NITqsLOc93jh3xAQFYtSuM7E3CeHkP + ZoKY / SGd9QkWrhd
QQFoGL5vAkEAwRoCwNqlUWwTVayGdgw / D / mxtFelKRYl8kj50MeMraBqHM / ijXZt
+ wF5exUmuPio + nF64UIqLA1VCYhnqJ49WQJAL3DJY0hdhnVpYqN9PeamK0cF79Un
6AmpKnF + V67tDjZP4LwstGy / SV / FygGr41IFc4Pqa9c54mM3DdSk31SV5wJAHW9f
mBI8PQsib17bKEd5nW / MfNcXYAn2QtaI7iBc + 2KGilnOCQ5SeX6iC / cPbgbJi1Od
DZVOZGSr38YhNvzYEQJBALoFJQEg6Xj44ClcJFIjbA + xyipk4h5JcmGvpUeKfaKF
EBSJMECLR8wIa5XUkeRuM30JhTkd0s3WPUFaoBAvcvs =
----- RSAãã©ã€ããŒãããŒã®çµäº-----
-----蚌ææžã®éå§-----
MIIDHzCCAoigAwIBAgIJALEwbIlKhnreMA0GCSqGSIb3DQEBBQUAMGkxCzAJBgNV
BAYTAlJVMQ8wDQYDVQQIEwZNb3Njb3cxDzANBgNVBAcTBk1vc2NvdzEPMA0GA1UE
ChMGWWFuZGV4MQ0wCwYDVQQLEwRSb290MRgwFgYDVQQDEw9yb290LnlhbmRleC5j
b20wHhcNMTUwNDA2MTY0MzA5WhcNMTYwNDA1MTY0MzA5WjBpMQswCQYDVQQGEwJS
VTEPMA0GA1UECBMGTW9zY293MQ8wDQYDVQQHEwZNb3Njb3cxDzANBgNVBAoTBllh
bmRleDENMAsGA1UECxMEUm9vdDEYMBYGA1UEAxMPcm9vdC55YW5kZXguY29tMIGf
MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCjKwGnBHUwQtTzLb5uhrh + eRRAQyQw
GzCg + n4XWzt8M + iX / OGx4QCG4GjKhi9Nqzhm41 + AjPB5cndU3Oe5j1LrcvWvxe2n
15FG7hPSLG5dHe97pzpjKVma8OkcrUc6WWIccZ48FlV21ZCeUFukthtqEDDEEw1C
xEnwHgIydnynlwIDAQABo4HOMIHLMB0GA1UdDgQWBBQG + ykV13EVW9XxCTncLjLV
YVX83TCBmwYDVR0jBIGTMIGQgBQG + ykV13EVW9XxCTncLjLVYVX83aFtpGswaTEL
MAkGA1UEBhMCUlUxDzANBgNVBAgTBk1vc2NvdzEPMA0GA1UEBxMGTW9zY293MQ8w
DQYDVQQKEwZZYW5kZXgxDTALBgNVBAsTBFJvb3QxGDAWBgNVBAMTD3Jvb3QueWFu
ZGV4LmNvbYIJALEwbIlKhnreMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD
gYEAmvNk8iAbV4 + YMq / 9oxkMeB6RxLs9m6jhYyAPuAI / dUhWSX + D + BnRcbsHWK4r
a9G / riM1zerb5BD1apMz3faON2ydFJGB0thjlgr / KXfgaUXjp15QslEhsyhZIgEB
Tak + 0BQkkh5 + cFAvJhGCZqajr6m2I8Dix3mF3Ey7nSx1GDU =
-----蚌ææžã®çµäº-----
ã¿ã¹ã¯ããã®ããŒã¿ããã¡ã€ã«ca.crtããã³ca.keyã«ããããæžã蟌ã¿ãŸãã 次ã«ã蚌ææ©é¢ã®èšŒææžãèŠãŠã¿ãŸãããã
åãå€ãæã€æ°ãã蚌ææžãèŠæ±ããŸãã
èªèšŒã»ã³ã¿ãŒã®äœæ¥ã®ããã®æ§é ãæºåããŸãã
次ã®ã³ãã³ãã¯ãããã¹ããããã»ã©æ確ã§ã¯ãªããšã©ãŒãè¿ããŸãã
# openssl ca -cert ca.crt -keyfile ca.key -in cert.csr -out cert.crt Using configuration from /etc/ssl/openssl.cnf Check that the request matches the signature Signature ok The stateOrProvinceName field needed to be the same in the CA certificate (Moscow) and the request (Moscow)
å®éãåé¡ã¯èšŒææžã®æååã
èªèšŒã»ã³ã¿ãŒãšãªã¯ãšã¹ãã¯ç°ãªããšã³ã³ãŒãã£ã³ã°ã§æžãããŠããŸãã ãã®åé¡ãåé¿ããã«ã¯ã
/ etc / ssl / openssl.cnfãã¡ã€ã«ãç·šéãã
[req]
ã»ã¯ã·ã§ã³ã®
string_mask
ãã©ã¡ãŒã¿ãŒã®å€ã
string_mask
å€æŽããŸãã
WebãµãŒããŒã®ãã¡ã€ã«ãæºåããããã«æ®ããŸãã
次ã«ãWebãµãŒããŒ
(pacman -S nginx)
ãã€ã³ã¹ããŒã«ãã
/ etc / (pacman -S nginx)
/ nginx.confïŒ
ã§SSLã
æå¹ã«ã㊠ã察å¿ãã
ãµãŒããŒ{}ã»ã¯ã·ã§ã³ã®ã³ã¡ã³ãã解é€ã
ãŸã ã
ç§ãã¡ã¯ãã§ãã¯ããŸãïŒ
ãã ãã
ãSSLv3ã¯åŒ±ãããšãã蚺æã䜿çšãããã¹ãã·ã¹ãã ã«ãã£ãŠæ±ºå®ãããããšã¯ãããŸããã æ§æãæšå¥šããã
Mozillaã«å€æŽããŸãã
- Nginxããã³Modernãªãã·ã§ã³ã確èªã ãæ§æãnginx.confã«æ¿å
¥ããŸãã
- Diffie-Hellmanãã©ã¡ãŒã¿ãŒãçæããŸãïŒ
openssl dhparam -out dhparam.pem -outform PEM -2 2048
; - nginxã®åèµ·åïŒ
systemctl restart nginx.
2.MariaDBã®ä¿®åŸ©
ãã®ã¿ã¹ã¯ã§ã¯ãããŒã¿ããŒã¹ã埩å
ããå¿
èŠããããŸãã
/ var / lib / mysqlã«MariaDBããŒã¿ããŒã¹ããããŸãã ãã°ã€ã³ããã§ãã«ãŒããšãã¹ã¯ãŒãããã¹ã¿ãŒããŒãã§ã¢ã¯ã»ã¹ã§ããŸããããäœããããããã£ãã§ãã
BTW, the `data` table structure was: +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | name | text | YES | | NULL | | | hits | int(11) | YES | | NULL | | | size | int(11) | YES | | NULL | | +-------+---------+------+-----+---------+-------+
ååãããMySQLã®æåãªãã©ãŒã¯ã§ãã
MariaDBããŒã¿ããŒã¹ã䜿çšãããŠããããšã¯æããã§ãã
DBMSãã€ã³ã¹ããŒã«ããŸãïŒ
pacman -S mariadb
ãããŠ
systemctl start mysqld
ãéå§ããŠãã ããã ãã°ããã
mysqldãééã£ãå Žæã§ãã¡ã€ã«ãæ¢ããŠããããšãããããŸãã æ§æãã¡ã€ã«
/etc/mysql/my.cnf
ãããã·ã¹ãã ããããã¯ãŒã¯ã¢ãŒãã§åäœããŠããªãããšã
/etc/mysql/my.cnf
ãŸãããã©ã¡ãŒã¿
skip-networking ã
bind-addressãè¿œå ããã誀ã£ã
datadirå€ã瀺ãããŠããŸãã æéãç¯çŽããããã«ãæ§æãã¡ã€ã«ã®ä¿®åŸ©ã¯è©Šã¿ãŸããã 代ããã«ãæ¢ç¥ã®ã¯ãŒã«ãŒã«çœ®ãæããŸãã
[mysqld] key_buffer_size = 16M max_allowed_packet = 1M table_open_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M tmpdir = '/var/tmp'
ãã¡ã€ã«ã®ææè
chown -R mysql:mysql /var/lib/mysql
ä¿®æ£ããããŒã¿ããŒã¹ã®åèµ·åãè©Šã¿ãŸããã
systemctl restart mysqld
ã
ããããã
mysqldã¯åäœããŠããŸãã æ¥ç¶ããŠã¿ãŸãããïŒ
ãã¹ã¯ãŒãä¿è·ãã€ã³ã¹ããŒã«ãããŠããããã¹ã¯ãŒããäžæã§ããããšãããããŸã/ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®å Žåãšåæ§ã«ããã¹ã¯ãŒãããªã»ããããå¿
èŠããããŸãã
mysqld: systemctl stop mysqld
ãŸãmysqld: systemctl stop mysqld
;- ãªã»ããåœä»€ã§ãã¡ã€ã«ãæºåããŸã
echo "UPDATE mysql.user SET password = PASSWORD('root') where user = 'root';" > /tmp/reset.sql
echo "UPDATE mysql.user SET password = PASSWORD('root') where user = 'root';" > /tmp/reset.sql
; - ãã¡ã€ã«ãããŒãããŠmysqldãèµ·åããŸã
mysqld --user=mysql --init-file=/tmp/reset.sql
; - ããã§ãéåžžã®æ¹æ³ã§mysqldãåæ¢ããŸãããã®ããã«ã¯ã
Ctrl-\
ãæŒãå¿
èŠããããŸãã - ãŠããããå床å®è¡
systemctl start mysqld
ãã®æé ãå®äºãããšããã§ã«
root
ãã¹ã¯ãŒãã§ããŒã¿ããŒã¹ã«æ¥ç¶ã§ããŸãã è©ŠããŠã¿ãŸãããïŒ
mysql -ppassword -uroot
ã
show databases
ã³ãã³ãã®åºåããã
db
ããŒã¿ããŒã¹ã®ååšãããããŸããã
data
ããŒãã«ã¯ãããŸããã ãã ãããã®ããŒãã«ã¯ãã£ã¹ã¯
(/var/lib/mysql/db/data.ibd)
ãŸãã ããŒãã«å®çŸ©ïŒdata.frmïŒããããŸããã
幞ããªããšã«ãã¿ã¹ã¯ã«ã¯ããŒãã«ã®å€èŠ³ã«é¢ãããã³ããå«ãŸããŠãããã·ã¹ãã ããŒãã«ãåæããã«frmãåæ§ç¯ã§ããŸãã ãªã¯ãšã¹ããå®è¡ããŸãïŒ
create table data2 (name text, hits int(11), size int(11));
ã·ã¹ãã ããŒãã«ã«ã¯ãŸã èšåãå«ãŸããŠãããããdataãšããããŒãã«ãäœæããããšã¯ã§ããŸããã 次ã«ãããŒã¿ãã¡ã€ã«ãæ°ããããŒãã«ã«æ¥ç¶ããŸãã ãããè¡ãã«ã¯ãã空ã®ãibdãã¡ã€ã«ãããŒãã«ããåæããŸããalter
alter table data2 discard tablespace;
ããããå¡ãã€ã¶ããã
mv data.ibd data2.ibd
ã
alter table data2 import tablespace;
åæ¥ç¶ã
alter table data2 import tablespace;
ã
db.dataã¯ãŸã ã·ã¹ãã ããŒãã«ã«ãªã¹ããããŠããããã
drop table db.data
ããããšã¯ã§ããŸããã äžæããŒã¿ããŒã¹ãäœæããæ°ããããŒãã«ã転éããŠãå€ãããŒã¿ããŒã¹ãåé€ããŠãããåäœæããå¿
èŠããããŸãã
rename table db.data2 to db2.data; drop database db; create database db character set utf8; rename table db2.data to db.data; alter table db.data engine = innodb;
ãŠãŒã¶ãŒã«ã¢ã¯ã»ã¹ãèš±å¯ããããã ãã«æ®ããŸãïŒ
grant all privileges on db.* to 'checker'@'%' identified by 'masterkey';
ã æ®å¿µãªãããæ¥ç¶ãšã©ãŒã®ããã«ãã§ãã¯ã¯ãŸã 倱æããŸãã tcpdumpã«ãããã§ãã¯ã¯ãmysqldãå¿çããŠããªãããšã瀺ããŠããŸãã
iptables-save
ã䜿çšããŠãã¡ã€ã¢ãŠã©ãŒã«ããã§ãã¯ããæªåœ¹ã«ãã£ãŠæ®ãããåé¡ãèŠã€ããŸãããã誀ã£ãã«ãŒã«ãnatããŒãã«ã«è¿œå ãããŸããã ãã ããããããäžæçã«åé€ãããšãããã¯ãŒã¯ã埩å
ãããã«ãŒã«ãå衚瀺ãããŸãã
ååãšããŠãå®æçãªã¢ã¯ã·ã§ã³ã¯
crontabã®æäœã«ãã£ãŠåŒãèµ·ããããŸãã
(crontab -l, cat /etc/cron.* /etc/crontab /etc/cron.d/*)
ã確èªããçŸåšã®ãŠãŒã¶ãŒã®ãã¹ãŠã®ã¿ã¹ã¯ãåé€ããŸã
(crontab -r)
ã
3.ãã€ããª
1.exeãå®è¡ãã
ãã®ã¿ã¹ã¯ã§ã¯ããç°åžžãªãããã°ã©ã ãå®è¡ããå¿
èŠããããŸãã ã¿ã¹ã¯ããããã¡ã€ã«åã1.exeããããããŸãã ãã¡ã€ã«ã·ã¹ãã ã§ãã¡ã€ã«ãæ€çŽ¢ãããã®å
容ã確èªããŸãã
GNU / Linuxã§.NETã¢ããªã±ãŒã·ã§ã³ãå®è¡ããããã®ã¢ãç°å¢ããããŸãã ãããã€ã³ã¹ããŒã«ã
(pacman -S mono)
ãããã°ã©ã ãå®è¡ããŠã¿ãŠãã ããïŒ
ãããããã®ã¿ã¹ã¯ã¯èŠããã»ã©ç°¡åã§ã¯ãããŸããã å¿çãšããŠã
ã²ãŒã ã¯ä»¥äžãè¿ããŸãã
Name: Binary Status: uncompleted Output: bad program
ããã°ã©ã 1.exeã®æ©èœãç解ããŠã¿ãŸãããã
strace㧠monoãå®è¡ãããšãããã°ã©ã ãTCPãœã±ããããªãã¹ã³ãããã§ãã¯ã§æž¡ãããã³ãã³ããå®è¡ããŠããããšã
ããããŸãã
tcpdumpã䜿çšãããã©ãã£ãã¯ã®è¡šé¢åæã¯ãããã°ã©ã ããã¡ã€ã«ãèªã¿åããçµã¿èŸŒã¿ããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããèšç®ãå®è¡ã§ããããšã瀺ããŠããŸãã èšç®ãå®è¡ããåŸããã§ãã¯ã¯åäœãçµäºããŸããã€ãŸããåé¡ã¯ããããèšç®ã«ãããŸãã
å€ãã®å Žåãå®è¡å¯èœãã¡ã€ã«å
ã®ããã¹ãæååãæ€çŽ¢ããããšã«ãããè¿œå æ
å ±ãæœåºã§ããŸãã ãã®ææ³ã䜿çšããŠã¿ãŸããã-binutilsãœãããŠã§ã¢
binutils
ãã€ã³ã¹ããŒã«ãã
æååããã°ã©ã ã1.exeãã¡ã€ã«ã«é©çšããŸãã åºåã®äžéšã¯ãããã°ã©ã ã§äœ¿çšãããã©ã€ãã©ãªã®ãªã¹ãã«äŒŒãŠããŸãã
System.Core mscorlib System.Xml dnAnalytics
dnAnalyticsãé€ãããããã¹ãŠã®ã©ã€ãã©ãªã¯ã
monoã®äžéšã§ããããã¯ãããã±ãŒãžãããŒãžã£ãŒ
(pacman -Ql mono)
ã䜿çšããŠç°¡åã«ç¢ºèªã§ããŸãã
å
¬åŒãµã€ãããã¢ãŒã«ã€ããããŠã³ããŒãããŠè§£åããäžè¶³ããŠããã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããŸãïŒbin / *ãDLLã¯/ root / 1ã«é
眮ããå¿
èŠããããŸãïŒã
åèµ·ååŸãããã°ã©ã ã¯ãã¹ãã«æåããŸãã
4.ã¢ã³ãŽ
ãã®ã¿ã¹ã¯ã§ã¯ãMongoDBã·ã£ãŒãã¹ãã¬ãŒãžãå±éãããªãŒã¬ãã€ã¶ãŒã«ãã£ãŠææ¡ãããããŒã¿ãæžã蟌ãå¿
èŠããããŸãã
/var/lib/db.tar.gzã«ããŒã¿ããŒã¹ããããŸãã
2ã€ã®æçã§root.featuresã³ã¬ã¯ã·ã§ã³ãäœæããæšæºããŒãã§äœ¿çšã§ããããã«ããŸãã
ãŸããmongodbïŒ
pacman -S mongodb
ã€ã³ã¹ããŒã«ããŸãã ãªãŒã¬ãã€ã¶ãŒã¯ã¢ãŒã«ã€ããããŒã¿ããŒã¹ãšãšãã«æ®ããããã解åããŠã¢ãŒã«ã€ãã®ã³ããŒãäœæããŸãã
cd /var/lib/mongodb tar jxf /var/lib/db.tar.bz2 mongod --dbpath db mongodump rm -rf db
ã·ã£ãŒãã£ã³ã°ã«ã¯ã
configdbãšåŒã°ããç¹å¥ãªãµãŒãã¹ããŒã¹ãå¿
èŠ
ã§ã ã äœæããïŒ
mkdir -p /data/configdb mongod --configsvr &
次ã«ãmongosâ shredderâãå®è¡ããŸãïŒ
mongos --configdb localhost &
ã ã¿ã¹ã¯ã«ã¯2ã€ã®ã·ã£ãŒããäžããå¿
èŠãããããã2ã€ã®
mongodã€ã³ã¹ã¿ã³ã¹ãæºåããŸãã
mkdir /var/lib/mongodb/s1 /var/lib/mongodb/s2 mongod --dbpath /var/lib/mongodb/s1 --port 30001 --nojournal & mongod --dbpath /var/lib/mongodb/s1 --port 30002 --nojournal &
ãããŠãããã
mongosã«æ¥ç¶ããŸãïŒ
ãã³ããå床ããŒãããããã«æ®ããŸãïŒ
mognorestore --port 30001 dump/
ã
ãã ããããã¯åé¡ã解決ããã®ã«ååã§ã¯ãããŸãã-root.featuresã³ã¬ã¯ã·ã§ã³ã¯2ã€ã®ã·ã£ãŒãéã§åçã«å
±æãããŸããã ããã¥ã¡ã³ãèå¥åã«ãã£ãŠã€ã³ããã¯ã¹ãäœæãããã©ã³ãµãŒããªã³ã«ããããšã§ããã®åé¡ã解決ããŸãã
ã³ã¬ã¯ã·ã§ã³ãã·ã£ãŒãéã§åé
åžãããã®ãåŸ
ã£ãŠãããå床ãã§ãã¯ãå®è¡ããŸãã
5.å¥åŠãªãããã³ã«
ãã®ã¿ã¹ã¯ã¯æãå°é£ã§ããã å®éãç§ãã¡ãäºæž¬ããããã«ã
ããŒã13000ã§ãšã³ãŒãµãŒããŒãã»ããã¢ããããŸãã
ä»åã¯ãããŒã13000ã§ãšã³ãŒãµãŒããŒãèµ·åããå¿
èŠããããŸãã
ãã®ã¿ã¹ã¯ã¯åçŽã«æããŸã-å®éããšã³ãŒãµãŒããŒã®æãåçŽãªå®è£
ã¯ãããšãã°
xinetdã«ãã§ã«çµ±åãããŠããŸãã
tcpdumpããŒã13000ãå®è¡ãããšãUDPãä»ããŠäº€æãè¡ãããŠããããšã瀺ãããŸããã
xinetd㧠echo-dgramãã»ããã¢ããããŠãæåŸ
ããçµæãåŸãããŸããã
ãã©ãã£ãã¯ã詳ããèŠãŠã¿ãŸããã
-tcpdumpãå床å®è¡ããŸããã-Xãªãã·ã§ã³ã䜿çšããŸãã æåŸã®ããã±ãŒãžã¯èå³æ·±ãããã§ãïŒ
0x0010: 0a00 000f ebee 32c8 0012 ffd6 656e 6574 ......2.....enet 0x0020: 2065 7272 6f72 .error
enet
ãšããåèªãæ€çŽ¢ãããšãenetãããã³ã«ã®å®è£
ã説æãããµã€ãã衚瀺ããããã±ããæ倱ãå¿é
ããããšãªãUDPãä»ããŠããŒã¿ã¹ããªãŒã ãéä¿¡ã§ããŸãïŒTCPãªã©ïŒã
ããã«æ€çŽ¢ãããšãPythonèšèªã®
enetã«ãã€ã³ãããã
pyenet
ã©ã€ãã©ãªãåŸãããŸããããã¯ç§ãã¡ã®ã¿ã¹ã¯ã«
ãŽã£ããã§ãã ç°¡åãªããã°ã©ã ãæžããŸãããïŒ
import enet import sys host = enet.Host(enet.Address(b'0.0.0.0', 13000), 100, 0, 0) while True: evt = host.service(0) if evt.type == enet.EVENT_TYPE_RECEIVE: data = evt.packet.data evt.peer.send(0, enet.Packet(data))
ãããã®ã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããããšã¯æ®ã£ãŠããŸãïŒ
pacman -S git git clone git://github.com/aresch/pyenet cd pyenet git clone git://github.com/lsalzman/enet pacman -S cython base-devel python setup.py build python setup.py install
ããã°ã©ã ãéå§ãããšãä»åã®ãã§ãã¯ã¯æåã§ãã
6.ãã¡ã€ã«
ãªãŒã¬ãã€ã¶ãŒã¯
/ root / fileå
ã®ã©ããã«root.txtãé ããŸããã
ã€ã¡ãŒãžå
ã«/ root /ãã¡ã€ã«ããããŸãã é©åãªroot.txtãã¡ã€ã«ãèŠã€ããŠã image_ip / root.txtã§å©çšã§ããããã«ããŸãã
/ root / fileãäœã§ããããç解ããŠã¿ãŸãããïŒ
ãã£ã¹ã¯ã€ã¡ãŒãžã®ããã«èŠããŸãã Linuxã«ã¯ããã¡ã€ã«ããããã¯ããã€ã¹ã«å€æã§ãã
ã«ãŒãã«ãŒãã«ã¢ãžã¥ãŒã«ããããŸãã ç§ãã¡ã¯ããã䜿çšããŸãïŒ
losetup /dev/loop0 /root/file
LVMããªã¥ãŒã ã¯ãã£ã¹ã¯ã€ã¡ãŒãžå
ã«ãããããéåžžã®ããŒã«ã䜿çšããŠæ¥ç¶ããŸãã
äžèº«ãèŠãŠã¿ãŸãããïŒ
mount /dev/mapper/VolGroup00-lv0 /mnt ls /mnt
root.txt.gz ãunpackïŒ
gunzip /mnt/root.txt.gz
ãŸãã
ãã§ã«nginxãã€ã³ã¹ããŒã«ããŠSSLãèšå®ããŠãããããããã䜿çšããŠHTTPçµç±ã§ãã¡ã€ã«ãé
åžããŸãã
umount /mnt mount /dev/mapper/VolGroup00-lv0 /usr/share/nginx/html/
æ®å¿µãªããããã§ãã¯ã¯å€±æããŸã-ééã£ã
root.txtãèŠã€ãããŸããã ããã«èª¿ã¹ãŸãã ã©ããªãã¡ã€ã«ã·ã¹ãã ãããã®ãââèŠãŠã¿ãŸãããïŒ
btrfsã¯
subvolumeãç解ããŠããããããããã®ãªã¹ããèŠãŠã¿ãŸãããã
å¥ã®
ãµãããªã¥ãŒã root_1ãããããšãããããŸããã ããŠã³ãããŸãã
umount /usr/share/nginx/html mount -t btrfs -o subvol=root_1 /dev/mapper/VolGroup00-lv0 /usr/share/nginx/html/
ããã§ãå¥ã®
root.txt.gzãã¡ã€ã«ãèŠã€ãããŸããã 解åã
/usr/share/nginx/html/root.txt.gz
ïŒ
gunzip /usr/share/nginx/html/root.txt.gz
ãããåé¡ã®è§£æ±ºçã«ãªããŸãã
7.MariaDBã®ãã¥ãŒãã³ã°
MariaDBã®ä¿®åŸ©ã®åé¡ã解決ããéãããŒã¿ããŒã¹ãä¿®æ£ããŸããããé
ãããŸãã ãããä¿®æ£ããæãæ¥ãŸããã
修埩ãããMariaDBã¯é
ãã§ãã ããã調æŽããŸãã
ããŒã¹ãæžéããå ŽæãèŠãŠã¿ãŸãããã
ã¹ããŒã¯ãšãªãã°ããªã³ã«
ããŸãã1ç§ããé·ãå®è¡ããããã¹ãŠã®ã¯ãšãªãååŸãããŸãã
mysql -u root -ppassword db mysql> set global slow_query_log = ON; mysql> set global long_query_time = 1;
ãã§ãã¯ãéå§ãããã°ãèŠãïŒ
tail /var/lib/mysql/shannon-slow.log
ã¯ãšãª
SELECT COUNT(*) FROM db.data WHERE size < 10;
ã
ã¯ãšãªãã©ã³ãèŠãŠã¿ãŸãããã
mysql> explain SELECT COUNT(*) FROM db.data WHERE size < 10 \G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: data type: ALL possible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 25061163 Extra: Using where 1 row in set (0.00 sec)
ãã¡ããããã®ãããªã¯ãšãªã®å®è¡ã¯é
ãããŸã-ãã®ãã£ãŒã«ãã«ã¯ã€ã³ããã¯ã¹ããããŸããã ã€ã³ããã¯ã¹ãè¿œå ããŸã
mysql> create index data_size on data(size);
ã
ãã¹ããåéãããšãããŒã¿ïŒãããïŒã«å¯ŸããŠåãåé¡ã衚瀺ãããåæ§ã®æ¹æ³ã§è§£æ±ºããŸãã
8.HG
/root/repo mercurial
ãªããžããªã
/root/repo mercurial
ãªããžããªã«å¯ŸããŠãå±¥æŽãä¿®æ£ããhttpçµç±ã§ã¢ã¯ã»ã¹ã§ããããã«ããå¿
èŠããããŸãã
/ root / repoã«HGãªããžããªããããŸãã
ãã¹ãŠã®ãªããžã§ã³ã®ãã¹ãŠã®.gzãã¡ã€ã«ããããããã ipã§äœ¿çšå¯èœã«ããŸãïŒ8000 /
ãŸãã
mercurialãã€ã³ã¹ããŒã«ããŸãïŒ
pacman -S mercurial
ã ããã©ã«ãã§ç¡å¹ã«ãªã£ãŠãã
å€æã¢ãžã¥ãŒã«ã䜿çšããŠãå±¥æŽãå€æŽã§ããŸãã ãªã³ã«ããŸãïŒ
ãã®ã¢ãžã¥ãŒã«ã¯ããœãŒã¹ããã³ã¿ãŒã²ãããªããžããªã«ãã¡ã€ã«äžèŽã«ãŒã«ãé©çšã§ããŸãã ãã®ãããªã«ãŒã«ã¯
filemap
ãšåŒã°ã
filemap
ã
2.osm.gzãã¡ã€ã«ãã¹ããŒããã«ãŒã«ãäœæããŠé©çšããŸãã
echo 'exclude "2.osm.gz"' > /root/fmap hg convert --filemap ~/fmap /root/repo /root/repo1
ã³ãã³ããå®è¡ãããšããªããžããª
/ root / repo1ãååŸãããŸããããã«ã¯ããã¹ãŠã®ãªããžã§ã³ã«
2.osm.gzãã¡ã€ã«ããã
ãŸãã ã å€éšããã¢ã¯ã»ã¹ã§ããããã«ããããã«æ®ã£ãŠããŸãã
Mercurialã«ã¯çµã¿èŸŒã¿ã®WebãµãŒããŒããããããã䜿çšããŸãã
cd /root/repo1 hg serve
9.å¥åŠãªãã¡ã€ã«
ãã®ã¿ã¹ã¯ã¯ãã³ãã³ãã®æ倧æ°-151ã«ãã£ãŠåŠçãããŸããããã¡ã€ã«ã·ã¹ãã ã«ã¯ã誰ãå€æŽã§ããªãå¥åŠãª
ãã¹ã¿ãŒ/ãã¡ã€ã«ããããŸãã
ãtester / fileã«å¥åŠãªãã¡ã€ã«ããããŸãã 誰ããããå€æŽã§ããŸããã ä¿®æ£ããŠãã ããã
å®éããã¡ã€ã«ãå€æŽããããšã¯ã§ããŸãã-ã«ãŒãããã§ãïŒ
ãŸããã©ããªçš®é¡ã®ãã¡ã€ã«ã·ã¹ãã ãããã®ãââèŠãŠã¿ãŸãããïŒ
ext4
(man 5 ext4)
ãã®ãã¡ã€ã«ã·ã¹ãã äžã®ãã¡ã€ã«ã
次ã®å±æ§ïŒ
ãã¡ã€ã«å±æ§ext2ãext3ãããã³ext4ãã¡ã€ã«ã·ã¹ãã ã¯ã次ã®ãã¡ã€ã«å±æ§ã®èšå®ããµããŒãããŸã
chattrïŒ1ïŒãŠãŒãã£ãªãã£ã䜿çšããLinuxã·ã¹ãã ïŒ
a-è¿œå ã®ã¿
A-atimeæŽæ°ãªã
d-ãã³ããªã
D-åæãã£ã¬ã¯ããªæŽæ°
i-äžå€
S-åææŽæ°
u-åé€äžå¯
ããã«ãext3ããã³ext4ãã¡ã€ã«ã·ã¹ãã ã¯æ¬¡ã®ãã©ã°ããµããŒãããŸãã
j-ããŒã¿ãžã£ãŒããªã³ã°
æåŸã«ãext4ãã¡ã€ã«ã·ã¹ãã ã¯æ¬¡ã®ãã©ã°ããµããŒãããŠããŸãã
e-ãšã¯ã¹ãã³ã圢åŒ
ãããã®å±æ§ãã©ã°ã®èª¬æã«ã€ããŠã¯ãchattrïŒ1ïŒã®ããã¥ã¢ã«ããŒãžãåç
§ããŠãã ããã
äžå€å±æ§ãèšå®ããããã¡ã€ã«ã®ã·ã¹ãã ã®åäœã詳现ã«èª¬æãã
chattrïŒ1ïŒããŒãžãèŠãŠã¿ãŸãããã
å±æ§ãiãå±æ§ãæã€ãã¡ã€ã«ã¯å€æŽã§ããŸãããåé€ãŸãã¯ååå€æŽããããšã¯ã§ããŸããããã®ãã¡ã€ã«ãžã®ãªã³ã¯ãäœæããããšãããã¡ã€ã«ã«ããŒã¿ãæžã蟌ãããšãã§ããŸããã ãã®å±æ§ãèšå®ãŸãã¯ã¯ãªã¢ã§ããã®ã¯ãã¹ãŒããŒãŠãŒã¶ãŒãŸãã¯CAP_LINUX_IMMUTABLEæ©èœãæã€ããã»ã¹ã®ã¿ã§ãã
çãã¯æããã§ã-ãã¡ã€ã«ãããã®å±æ§ãåé€ããå¿
èŠããããŸãïŒ
chattr -i ~tester/file
ã åé¡ã¯è§£æ±ºããŸããã