뭘 이런걸..

Posted
Filed under Tech/Tip & Trick
10년도 더 된 LinkSys srw2024 switch 의 CLI mode 설정과 LLDP 를 지원 하는 방법에 대하여 기록 합니다. (까먹을 까봐 기록하는 겁니다. ^^)

재미 있는 건, 이 switch가 L3 도 지원을 한다는 것이었네요. 이제껏 모르고 있었습니다. ^^;

1. CLI mode 사용하기


srw2024 는 WebUI를 제공하기는 하지만, IE 전용이고, 굳이 말하자만 IE 7 전용이라고 봐야 합니다. 즉, IE 7 이 후 버전에서는 제대로 randering 을 하지 못한다는 의미입니다. WebUI를 사용하기 위해서는 개발자 도구를 열어서 문서모드와 사용자 에이전트 문자열을 조작한 다음 접속을 해야 한다는 의미 입니다.



상당히 불편 합니다. 그래서 CLI 모드를 사용하기 위해서는 ssh 연결을 할 수 있습니다. user 명은 다시 입력을 받기 때문에 신경쓰지 않아도 됩니다. ssh 로 접속을 하면 다음과 같이 인증 화면이 뜹니다. User Name 과 Password 입력창 간의 전환은 TAB 키로 이동할 수 있습니다.



로그인을 하면 다음과 같이 Memu가 나옵니다.



WebUI 와 거의 비슷하지만, 4. System Mode (Layer 2 / Layer 3) 메뉴가 더 추가 되어 있고, 여기서 L3 switch 로 전환이 가능 합니다. 이 부분은 여기서 논하지는 않을 예정입니다. 관심있는 분들은 살펴 보시기를.. (그런데 이 switch를 아직 쓰는 사람들이 있을지..)

이렇게 ssh console 로 접속을 해서 cli mode 라고 하기는 좀 그렇습니다. 이 메뉴만으로 할 수 없는 일들이 많이 있습니다. LinkSys switch는 Cisco switch 와 같으 CLI 환경이 숨어 있습니다. 이 화면에서 Ctrl-Z 를 누르면 숨어 있는 CLI mode 로 들어갈 수 있습니다.



위의 화면은 CTRL-Z를 입력 했을 때 prompt가 뜬 상태 입니다. 처음 prompt 가 뜰 때는 마지막 memory log 를 출력하기 때문에 위의 화면 처럼 나오는데, 실제로는 제일 처음의 > 문자가 prompt 이고, 그 뒤는 log 가 출력이 된 것입니다. 이 화면에서 도움말을 보고 싶으면 ? 를 입력 하면 됩니다.



무언가 명령이 나왔습니다. :)
우리의 목적은 Cisco switch 의 cli 설정 환경 입니다. 그러므로, 여기서는 lcli 명령을 실행 하도록 합니다.



cli 모드로 진입을 하려면 다시 로그인을 해야 합니다. 위와 같이 인증을 하면 cli 모드로 진입이 됩니다. cli 모드에서 help 명령은 ? 문자를 입력하면 됩니다. (enter key를 입력할 필요가 없습니다.)





lcli 로 집입한 상태는 cisco 처럼 config 상태가 아닙니다. 설정을 변경 하기 위해서는 cisco와 같이 configure 모드로 진입을 해야 합니다.



configure 모드에서 ? 를 입력하면 아래와 같이 사용할 수 있는 명령어 목록들이 출력이 됩니다.




2. LLDP 설정 하기


이 문서는 단순히 기록을 위한 것이기 때문에 LLDP가 무엇인지에 대해서는 논하지 않습니다.

srw2024 는 기본적으로 LLDP 설정이 disable 이며, 또한 enable 역시 설정 화면에서 할 수가 없고 snmp를 이용해야 합니다. 그러므로 snmp 설정이 필요 합니다.

WebUI 를 이용하든, CLI 모드를 이용하든 snmp rw가 가능한 community를 생성해 줍니다.

gwi.kldp.org# conf
gwi.kldp.org(config)# snmp-server community lldpset rw


다음 swtich 에 연결이 되어 있는 net-snmp-utils 패키지가 설치된 시스템에서 다음 명령으로 확인을 합니다.

[root@kill ~]$ snmpwalk -v2c -c lldpset gwi.kldp.org 1.3.6.1.4.1.3955.89.110.1.1.1.0
SNMPv2-SMI::enterprises.3955.89.110.1.1.1.0 = INTEGER: 2


위와 같이 OID의 값이 2일 경우에는 LLDP 설정이 disable 인 상태 입니다. LLDP 설정을 enable 하기 위하여 다음과 같이 명령을 실행 합니다.

[root@kill ~]$ snmpset -v2c -c kldp gwi.kldp.org 1.3.6.1.4.1.3955.89.110.1.1.1.0 i 1
SNMPv2-SMI::enterprises.3955.89.110.1.1.1.0 = INTEGER: 1


잘 설정이 되었는지 확인을 합니다.

[root@kill ~]$ snmpget -v2c -c kldp gwi.kldp.org 1.3.6.1.4.1.3955.89.110.1.1.1.0
SNMPv2-SMI::enterprises.3955.89.110.1.1.1.0 = INTEGER: 1


LLDP 가 enable 되었다면 잘 되었는지 확인을 합니다. switch cli mode로 진입 하여 아래와 같이 확인 합니다.

gwi.kldp.org# show lldp nei
Port Device ID Port ID System Name Capabilities
------- ----------------- ----------------- ------------------- ------------
3 00:31:b5:c7:64:32 00:31:b5:c7:64:32 netgear.kldp.org H
6 00:36:29:43:61:dc 00:36:29:43:61:dc cicso.kldp.org H
8 00:3e:24:c1:19:64 00:3e:24:c1:19:64 O
gwi.kldp.org#


확인이 잘 되면, rw 모드로 생성했던 commnunity를 ro로 변경해 줍니다.

console# conf
console(config)# snmp-server enable
console(config)# snmp-server community lldpset ro


삭제를 하고 싶다면, web UI를 이용하여 삭제할 수 있습니다. (이래저래 귀찮습니다. 한 곳에서 깔끔하게 되지를 않네요.


2018/08/11 15:45 2018/08/11 15:45
Posted
Filed under Tech/프로그래밍
0.70.1 release 소식 입니다.

0.70.1 은 iPuTTY 수정 사항에 대한 bug 나 신 기능에 대한 업데이트 입니다.

Download: https://github.com/iPuTTY/iPuTTY/releases/tag/l0.70.1i

Changes:


  • Vista 이후 사용되지 않는 ONTHESPOT 패치 코드 제거 (#20)
  • OTP와 같은 2 단계 인증 시에 저장되어 있는 암호가 잘못 입력 되는 문제 수정 (#31)
  • 명령행으로 실행 시에, 파일 세션을 불러오지 못하는 문제 수정 (#33)
  • 명령행으로 실행 시에, ssh:putty: 지원 (#35)
  • ZMODEM 단축키 지원 (#36) - 받기 F11 / 보내기 F12
  • MacOS의 SSH server로 로그인 시에, NFC 문제로 한글이 깨져 보이는 문제 수정 (#38)
  • 암호 저장시에, 암호 길이가 3의 배수일 경우 로그인 실패하는 문제 수정 (#39)



2018/04/29 22:23 2018/04/29 22:23
Posted
Filed under Tech/안녕리눅스
Apache 2.4.33 에 experimental 로 mod_md 라는 새로운 모듈이 추가가 되었습니다. (실제로는 2.4.30 에 추가가 되었으나, 2.4.30 이 release 되지 않고 2.4.33으로 relelase 가 되었습니다.)

ACME protocol 을 이용하여 인증서 자동 관리를 해 주는 모듈이라고 보면 됩니다. 일단은 현재 ACME protocol을 지원하는 곳이 Let's encrypt 밖에 없으므로, Let's encrypt 인증서 전용이라고 할 수 있습니다.

mod_md 모듈을 이용하면 아주 쉽게 인증서 설정 및 관리를 할 수가 있습니다. (인증서 발급 같은 것도 신경쓸 필요가 없습니다.)

일단 간단하게 예를 들자면

<VirtaulHost *:80>
ServerName oops.org
ServerAlias www.oops.org
</VirtaulHost>


이런 가상 호스트를 SSL 서비스를 하기 위하여 다음의 설정으로 간단히 가능해 집니다.

<IfModule md_module>
MDomain oops.org
MDCertificateAgreement https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf

<VirtaulHost *:443>
ServerName oops.org
ServerAlias www.oops.org
SSLEngine On
</VirtaulHost>
</IfModule>


이렇게 설정 한 후에 Apache 를 시작을 하면, oops.org 에 대한 인증서 발급을 시작 합니다. tail 명령으로 error_log 를 보고 있으면, 재시작 후 5~10초 정도가 지나면 다음과 같은 로그가 출력이 됩니다.

[root@host ~]# tail -f /var/log/httpd/error_log
[Tue Apr 10 23:53:51.043029 2018] [md:notice] [pid 88797] AH10059: The Managed Domain oops.org has been setup and changes will be activated on next (graceful) server restart.


이 로그가 출력이 되면 apache 를 다시 한번 재시작 해 주면 인증서가 자동 생성이 된 것을 확인할 수 있습니다. 더군다나, MDRenewWindow 를이용하면 자동 갱신도 가능하면, ServerAlias 의 도메인들은 SubjectAltName 으로 자동으로 등록이 됩니다. 즉, 도메인 발급 갱신에 대해서 신경을 꺼도 된다는 의미가 됩니다.

인증서는 SERVER_ROOT/md 에 저장이 되며, 이 위치는 MDStoreDir 지시자로 변경할 수 있습니다.

현재는 apache module 만 지원이 되는 듯 하며 조만간 nginx 도 지원을 하지 않을까 싶습니다.

mod_md에 대한 자세한 사항은 https://httpd.apache.org/docs/trunk/mod/mod_md.html 를 참조 하십시오.

안녕 리눅스 3에서는, httpd 2.4.33 부터 mod_md package 를 설치하여 사용이 가능 합니다.

빌드 시의 참고 사항으로는, 다음의 조건이 있습니다.

apr >= 1.5.2
libcurl > 7.50
brotli

안녕 리눅스에서는 apr 1.5.2 의 apr_escape call 을 back porting 하여 지원하였으며, brotli 는 설치 하지 않았음에도 잘 동작하는 것으로 보아 mod_md 와는 직접적인 연관이 없는 것으로 보입니다. 그리고, libcurl 도 mod_md 의 config2.m4 를 수정하여 CentOS 7의 libcurl 7.29 를 이용하여 빌드 하였으며, 아직까지는 문제점이 보이지는 않고 있습니다. 즉, apr 만 해결하면 CentOS 7에서 빌드는 그리 어려운 편은 아닙니다.

P.S.
mod_md는 mod_watchdog 모듈에 의존성이 있습니다. mod_watchdog 모듈을 mod_md 보다 먼저 load 해 주어야 합니다.
2018/04/11 00:07 2018/04/11 00:07
Posted
Filed under security
Intel Meltdown, Spectre 버그가 알려 진지도 한 5일 정도 지났고, 슬슬 패치들과 firmware들이 나오기 시작했습니다.

현재 알려진 바로는 3가지의 버그가 존재하고, 2가지는 Spectre, 1가지는 Meltdown 버그라 칭해지고 있습니다.


이 글은 Spectre bug와 Meltdown bug를 소개하는 것이 목적이 아닙니다. 이 버그에 대한 기술적인 글들은 많이 올라와 있으므로, 여기서는 RHEL/CentOS 환경에서 어떻게 적용할 것인가에 대하여 논하려 합니다.


일단, 버그가 알려진지 5일 정도 지난 시점에서, 벤더 별 OS kernel patch가 발표 되고, H/W 벤더들의 bios firmware 들이 발표가 되고 있는 상황에서 성능 저하 이슈와 패치 적용 이슈를 어떻게 해야 하는지에 대하여 논하려고 합니다.

현재, 나오고 있는 H/W bios patch는 CVE-2017-5715 (variant 2) 에 대해서만 해결을 하고 있으며, bios 만으로 해결은 안되고 software 적인 patch(즉 kernel patch)도 같이 필요한 상황입니다.

CVE-2017-5753 (variant 1)과 CVE-2017-5754 (variant 3)은 H/W 적으로 수정이 불가능 하고 software 적으로만 해결이 가능 합니다. 그리고 성능 저하의 문제는 CVE-2017-5754 (variant 3) meltdown patch에서 발생을 하게 됩니다.

meltdown patch의 경우 user 영역에서 kernel 영역의 memory 주소를 알지 못하게 하기 위하여 page table을 isolate 시켜 버리는데, 문제는 page table이 분리되다 보니 kernel syscall 이 호출 될 때 마다 분리된 kernel page table도 매번 호출이 되어야 하는 overhead가 발생하여 성능이 저하가 되는 것 입니다.

이 3가지 패치에 대하여 RHEL/Centos 의 커널은 3가지 옵션을 제공 합니다. (패치가 적용된 커널들은 /sys에 다음의 파일들이 생성되며, 파일 값은 1이 기본 입니다.)

[root@host ~]# cat /sys/kernel/debug/x86/pti_enabled
1
cat /sys/kernel/debug/x86/ibpb_enabled
1
cat /sys/kernel/debug/x86/ibrs_enabled
1


CentOS 6 의 경우에는 /sys/kernel/debug 를 아래와 같이 mount 해 주어야 합니다.

[root@host ~]# mount -t debugfs nodev /sys/kernel/debug



Intel CPU의 경우,

variant #1, #2, #3 을 모두 fix

[root@host ~]# echo "1" > /sys/kernel/debug/x86/pti_enabled
[root@host ~]# echo "1" > /sys/kernel/debug/x86/ibpb_enabled
[root@host ~]# echo "1" > /sys/kernel/debug/x86/ibrs_enabled


microcode update가 필요 없는 아주 오래된 intel cpu의 경우

[root@host ~]# echo "1" > /sys/kernel/debug/x86/pti_enabled
[root@host ~]# echo "0" > /sys/kernel/debug/x86/ibpb_enabled
[root@host ~]# echo "1" > /sys/kernel/debug/x86/ibrs_enabled


와 같이 해 주시면 됩니다.


AMD cpu의 경우에는 meltdown 은 적용이 필요 없으며,

H/W patch (bios upgrade)가 가능할 경우

[root@host ~]# echo "0" > /sys/kernel/debug/x86/pti_enabled
[root@host ~]# echo "0" > /sys/kernel/debug/x86/ibpb_enabled
[root@host ~]# echo "2" > /sys/kernel/debug/x86/ibrs_enabled


microcode 업데이트 없이 분기 예측을 사용할 수 없는 오래된 CPU의 경우

[root@host ~]# echo "0" > /sys/kernel/debug/x86/pti_enabled
[root@host ~]# echo "2" > /sys/kernel/debug/x86/ibpb_enabled
[root@host ~]# echo "1" > /sys/kernel/debug/x86/ibrs_enabled


로 해 주시면 됩니다.

물론 이 설정들은 runtime 설정이 가능 하며, 대신 persist 하지 않으므로 booting 시 마다 처리를 해 주어야 합니다. 또한, rc.local 에서 처리를 할 경우 rc.local 보다 먼저 실행되는 process 의 경우에는 이 설정의 영향을 받지 않기 때문에 기본 설정은 booting 시의 kernel parameter로 반영 하는 것이 좋습니다. 각 옵션에 해당하는 kernel parameter는 다음과 같습니다. (설정 값을 0으로 하는 것과 같습니다.)

noibrs noibpb nopti

여기까지는 아주 원론적으로 bug를 fix 하는 방법에 대하여 알아 보았습니다.

이 정보를 토대로 하면, spectre bug와 meltdown bug에 대하여 각각 정책을 취할 수 있게 됩니다. 예를 들어, 보안 버그가 중요하지만 성능 저하가 더 큰 문제인 경우, 해당 서버가 isolate 가 되어 있다면 과감하게 meltdown bug patch를 포기하는 정책도 가능 하다는 의미입니다.

현재, 이 기능을 사용할 수 있는 커널은

CentOS 7 3.10.0-693.11.6.el7
CentOS 6 2.6.32-696.18.7.el6
부터 사용이 가능 합니다. 물론, 이전 커널들은 page table isolate 같은 것을 하지 않았으니 이 기능 자체가 필요 없는 것이고요.

이 정보를 토대로 spectre meltdown 버그에 대한 정책을 결정하는데 도움이 되기를 바랍니다.

이 문서는 https://access.redhat.com/articles/3311301 문서를 토대로 작성을 하였음을 밝힙니다.
2018/01/09 22:21 2018/01/09 22:21
김정균

https://access.redhat.com/articles/3311301 에 업데이트 된 내용이 있습니다.

retp_enabled 이 추가가 되었습니다.
영구적으로 적용하지 않는 옵션은 "spectre_v2=off nopti" 이렇게 kernel parameter에 넣어도 된다고 하는 군요. 링크 페이지 참조 하시기 바랍니다.

retp_enable 는 google이 발표한 성능 저하 없는 spectre retpoline 패치 기능을 의미하는데, gcc 도 같이 업데이트가 되어야 합니다. 단, skylake 에서는 retp 대신에 ibrs 를 사용한다고 되어 있습니다.

즉, CentOS 에서 retp_enable 을 사용하려면, gcc 와 libgcc 도 같이 최신 버전으로 업데이트 되어야 합니다.

hong

CentOS 6.9랑 7.4 만 패치가 보이는데요 6.6 이나 7.0 같은 이외버전은 커널 어떤거 받으면 될까요? ㅠㅠ

김정균

6.6 이나 7.0 의 경우에는 RHEL 의 정책에 의해 별도로 license 계약을 체결해야 합니다.

또는, 6.9 나 7.4 로 업데이트를 해 주시면 됩니다. 업데이트는 간단하게 yum update 명령으로 업데이트가 가능 합니다. 6.x 나 7.X 간의 업데이트는 최소한의 하위 호환성을 보장 하면서 update 되기 때문에 update가 힘든 편은 아닙니다. 특시 APM 위주의 서비스는 그냥 업데이트를 따라 가셔도 거의 무방 합니다.

김정균

2017.12.19 자로 나온 1.31 적용 해 놓았습니다.

- jsdelivr 50M 제한 정책 때문에 1.31 부터는 svg, ttf format을 serving 하지 않습니다.
- ligature 기능은 d2coding-legature 로 분리 되었습니다.

jsdelivr 의 새로운 backend 에서 파일이 추가 삭제될 때 더이상 pull request를 던지지 않아도 되도록 변경이 되었네요 :)

Posted
Filed under Tech/안녕리눅스
2017년 08월 01일에 RHEL 7.4가 release 가 되었습니다. RHEL 7.4에 대응하는 안녕 리눅스 버전은 3.2 Aang 입니다.

RHEL 7.4는 binary level의 package를 배포하지 않고, 또한 안녕 리눅스는 RHEL이 아니라 CentOS 를 기반으로 릴리즈를 하기 때문에, CentOS 7.4 가 release 되어야 안녕 리눅스도 이에 맞춰 3.2가 출시 되게 됩니다.

일단, CentOS 7.4 는 블로그상에 의하면 8/22 ~ 9/12 사이에 출시를 하게 될 것이라고 언급 하고 있습니다. 그래서 안녕 리눅스 역시 CentOS 7.4가 출시되면 바로 출시가 가능 하도록 준비를 하고 있습니다.

안녕 리눅스 3.2 릴리즈를 위해서는 대략 25개의 package가 준비가 되어야 하며, 현재 10개의 패키지가 준비가 되었으며, binary 의존성이 없는 6개의 패키지는 이미 선 배포가 되고 있습니다.

CentOS 7.4 릴리즈 전에 대부분의 패키지는 선반영이 될 예정이며, CentOS 7.4의 bianry package 버전 의존성이 있는 (systemd 등 일부 패키지) 패키지들과 annyung-release 패키지는 CentOS 7.4가 릴리즈 된 이후 바로 배포가 될 예정입니다. (packaging은 CentOS 7.4 release 이전에 완료될 예정입니다.)
2017/08/21 00:03 2017/08/21 00:03
김정균

안녕 3.2 출시 준비를 마쳤습니다.

일단, CentSO 7.4 업데이트에 해당되는 안녕의 package 들은 이미 repository에 선 반영이 되어 있으며, CentOS 7.4 가 출시되면, annyung-release pacakge가 배포 되면서 공식적으로 AnNyung 3.2 (Aang) 배너로 변경하게 됩니다.

annyung-release-3.2 는 CentOS 7.4가 정식으로 출시되고, 한국 mirror에 sync가 되는 시점에 배포할 예정입니다.

참고할 사항으로는,

안녕 리눅스의 openssl 1.0.1e package들이 deprecated 되어 repository에서 제거 되었습니다. 안녕의 openssl은 HTTP/2 protocol 지원을 위하여
1.0.2의 ALPN 기능을 back porting 하여 제공하였으나, CentOS 7.4 부터 1.0.2k를 지원하므로 더이상 유지할 이유가 없어져 안녕 repository에서
제거가 되었습니다.

또한, 안녕의 openssl package는 CentOS의 package로 업데이트 되는 것을 방지하기 위하여, CentOS의 package보다 상위 버전처럼 하기 위하여 높>은 값의 epoch 버전을 가지고 있습니다. 그러므로 아무런 조치를 하지 않는다면 안녕의 1.0.1e는 CentOS 7.4를 설치하더라도 1.0.2k로 업데이트 >되지 않습니다.

이 문제를 해결하기 위하여, annyung-release-3.2 package에서 이를 보정하도록 되어 있고, CentOS 7.4가 한국 mirror 서버들에 동기화가 되었을>때, annyung-release-3.2를 배포할 예정이므로, CentOS 7.4로 업데이트가 되었다고 해도 annyung-release 3.2가 설치 되어 있지 않으면 여전히 op
enssl 1.0.1e 버전이 유지되오니 참고 하시기 바랍니다.

annyung-release 3.2가 설치 되기 전에, 또는 annyung-release package를 설치하기를 원치 않는 경우에는 다음 명령으로 1.0.2k 로 현시점에 바로
업데이트 할 수 있습니다.

rpm -q openssl | grep "\.an3" >& /dev/null
[ $? -eq 0 ] && yum downgrade "openssl*"

김정균

오늘 7.4 CR(Continuous Release) 버전이 release 되었네요. 조만간 7.4 가 출시될 것 같습니다. :-)

Posted
Filed under Tech/프로그래밍
0.70 release  소식 입니다.

iPuTTY 업데이트 사항:
  • fixed #27 wrong translattion
  • fixed #28 Fixedsys 폰트의 사용 on windows 10
  • fixed #30 add Hanterm key map
  • pscp의 기본 문자셋을 cp949에서 utf-8로 변경 (1e68e28)
PuTTY 업데이트 사항:
  • Security fix: the Windows PuTTY binaries should no longer be vulnerable to hijacking by specially named DLLs in the same directory, even a name we missed when we thought we'd fixed this in 0.69. See vuln-indirect-dll-hijack-3.
  • Windows PuTTY should be able to print again, after our DLL hijacking defences broke that functionality.
  • Windows PuTTY should be able to accept keyboard input outside the current code page, after our DLL hijacking defences broke that too.

릴리즈 패키지는 https://github.com/iPuTTY/iPuTTY/releases/tag/l0.70i 에서 제공 합니다.
2017/07/25 00:12 2017/07/25 00:12
Posted
Filed under Tech/Tip & Trick
Windows 10 사용중에 마우스만 움직이고 다른 기능은 다 멈추는 문제가 종종 발생했는데 찾아보니 "DynamicTick" 기술의 충돌 때문이라고 하네요. 자세한 건 하단의 "출처" 참고 하시고, 관리자 권한으로 cmd 실행해서

bcdedit /set disabledynamictick yes

실행한 후, rebooting 하시면 된다고 합니다.

출처: http://foxcg.com/246
2017/07/19 14:36 2017/07/19 14:36
Posted
Filed under Tech/프로그래밍
LePuTTY의 ZMODEM 기능을 iPuTTY에 포팅을 했습니다.

일단, 동작은 잘 하는 것 같네요. 좀 더 사용해 보고 문제가 없으면 0.69.1 로 릴리즈 할 예정 입니다. 그전에 PuTTY 0.70이 나오면 0.70으로 릴리즈 될 것이고요 :-)

https://github.com/iPuTTY/iPuTTY/pull/25

참고 하세요.
2017/06/12 03:40 2017/06/12 03:40