ubuntu 18.04, apache2 mod-security2 설치 및 설정.

ubuntu 18.04, apache2 mod-security2 설치 및 설정.

1. 설치.

$ sudo apt install libapache2-mod-security2

2. 아파치 웹서버를 다시 실행하고 security2 모듈이 작동중인지 확인한다.

재실행.

$ sudo systemctl restart apache2

모듈 확인

$ sudo apachectl -M | grep -i security
 security2_module (shared)

Continue reading

Ubuntu 20.04 LTS 대기모드 진입 금지.

Ubuntu 20.04 LTS에서 대기모드(hibernate) 금지하기.

Ubuntu 20.04 LTS 에 GPU 서버 구성후에, 일정 시간 지나면 서버가 대기상태로 들어가는 현상이 발생했다. 이 현상은 Ubuntu 18.04에서는 없었던 현상이다.

먼저, 아래처럼 동면(?)상태로 들어가는 서비스를 확인 해 본다.

mlearn@mlearn6:~$ sudo systemctl status sleep.target suspend.target hibernate.target hybrid-sleep.target
[sudo] password for mlearn:
 sleep.target - Sleep
     Loaded: loaded (/lib/systemd/system/sleep.target; static; vendor preset: enabled)
     Active: inactive (dead) since Thu 2021-12-23 08:21:42 UTC; 1min 41s ago
       Docs: man:systemd.special(7)

Dec 23 07:30:04 mlearn6 systemd[1]: Reached target Sleep.
Dec 23 08:21:42 mlearn6 systemd[1]: Stopped target Sleep.

 suspend.target - Suspend
     Loaded: loaded (/lib/systemd/system/suspend.target; static; vendor preset: enabled)
     Active: inactive (dead)
       Docs: man:systemd.special(7)

Dec 23 06:39:33 mlearn6 systemd[1]: Reached target Suspend.
Dec 23 06:39:33 mlearn6 systemd[1]: Stopped target Suspend.
Dec 23 07:09:35 mlearn6 systemd[1]: Reached target Suspend.
Dec 23 07:09:35 mlearn6 systemd[1]: Stopped target Suspend.
Dec 23 08:21:42 mlearn6 systemd[1]: Reached target Suspend.
Dec 23 08:21:42 mlearn6 systemd[1]: Stopped target Suspend.

 hibernate.target - Hibernate
     Loaded: loaded (/lib/systemd/system/hibernate.target; static; vendor preset: enabled)
     Active: inactive (dead)
       Docs: man:systemd.special(7)

 hybrid-sleep.target - Hybrid Suspend+Hibernate
     Loaded: loaded (/lib/systemd/system/hybrid-sleep.target; static; vendor preset: enabled)
     Active: inactive (dead)
       Docs: man:systemd.special(7)

Continue reading

리눅스 서버에서 apache-log4j 사용 유무 확인 하기.

리눅스 서버에서 apache-log4j 사용 유무 확인 하기.

apache-log4j 보안 이슈가 발생함.

개발과 배포가 끝나고 유지 보수도 진행하고 있다면 개발자에게 확인하면 되겠지만, 유지 보수를 진행하지 않는 사이트 관리자들이 사용 여부와 버전까지 확인하기가 어렵다는 문제가 있다.

간단하게 아래의 방법으로 log4j 사용을 확인 해 보자.

먼저, 자신의 서버가 웹 서버로 동작하는지 확인해야 한다.

# netstat -antp | grep -i listen
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      677/httpd
tcp        0      0 0.0.0.0:8400            0.0.0.0:*               LISTEN      2314/cvd
tcp        0      0 0.0.0.0:46387           0.0.0.0:*               LISTEN      2314/cvd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      963/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1995/master
tcp        0      0 0.0.0.0:49114           0.0.0.0:*               LISTEN      2315/ClMgrS
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      677/httpd
tcp        0      0 127.0.0.1:34107         0.0.0.0:*               LISTEN      2314/cvd
tcp        0      0 0.0.0.0:42276           0.0.0.0:*               LISTEN      2314/cvd
tcp        0      0 127.0.0.1:199           0.0.0.0:*               LISTEN      962/snmpd
tcp6       0      0 :::8009                 :::*                    LISTEN      1418/java
tcp6       0      0 :::8080                 :::*                    LISTEN      1418/java
tcp6       0      0 :::22                   :::*                    LISTEN      963/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      1995/master
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      1418/java

Continue reading

리눅스 HA(corosync, pacemaker, shared disk)에 zabbix 모니터링 서버 구성 – part 4

리눅스 HA(corosync, pacemaker, shared disk)에 zabbix 모니터링 서버 구성 – part 4

zabbix 모니터링 서버를 Active/Passive(Standby) 클러스터로 구성하기.

리눅스 HA(corosync, pacemaker) – Part 1
리눅스 HA(corosync, pacemaker, DRBD) – Part 2
리눅스 HA (pacemaker, corosync, iscsi shared storage) – part 3

이 글은 위의 리눅스 HA (pacemaker, corosync, iscsi shared storage) – part 3 의 구성을 기본으로 zabbix 서버를 구성하는 방법을 기술합니다.

1. 구성
몇 가지 방법이 있겠지만, 여기서는 zabbix 서버가 사용하는 mysql 데이타만 공유 스토리지에 위치시키는 방법을 사용하도록 하겠다. 물론, 모든 서비스를 공유 스토리지에 위치시키는 방법도 있을 수 있지만, 그렇게 구성하려면 패키지 설치 보다는 소스코드를 받아서 컴파일하는 것이 유리하다.
여기서는 패키지 설치의 장점을 최대한 살려 가장 단순하고 쉽게 구성해 보도록 한다.

Node1
IP : 192.168.0.31
hostname: wolf1

Node2
IP : 192.168.0.32
hostname: wolf2

iSCSI shared storage Node
IP : 192.168.0.33

Cluster VIP: 192.168.0.30

Continue reading

zabbix 네트워크 스위치 등록

1. 스위치에 snmp 설정

익스트림 스위치 ip: 192.168.0.6
snmp 커뮤니티 TEST를 등록한다.

system_office.7 # configure snmpv3 add community TEST name TEST user v1v2c_ro

2. zabbix 서버에서 snmpwalk로 스위치의 snmp 확인.
이 과정은 필수가 아니며, snmpwalk 도 필수 사항이 아니다. 스위치에 snmp 설정이 잘 되어 있으면 아래처럼 MIB, OID관련 값을 볼 수 있다.

# snmpwalk -v2c -c TEST 192.168.0.6
SNMPv2-MIB::sysDescr.0 = STRING: ExtremeXOS (X430-48t) version 16.2.5.4 16.2.5.4-patch1-7 by release-manager on Thu Nov 15 07:05:05 EST 2018
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.1916.2.191
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (2238472100) 259 days, 1:58:41.00
SNMPv2-MIB::sysContact.0 = STRING: support@extremenetworks.com, +1 888 257 3000
SNMPv2-MIB::sysName.0 = STRING: system_office
SNMPv2-MIB::sysLocation.0 = STRING:
SNMPv2-MIB::sysServices.0 = INTEGER: 79
IF-MIB::ifNumber.0 = INTEGER: 61
IF-MIB::ifIndex.1001 = INTEGER: 1001

...

Continue reading

Zabbix 설치하기 – CentOS 8 에서.

CentOS 8, Zabbix 설치.

1. 패키지 다운로드
https://www.zabbix.com/download에서 다운로드 받을 수 있다.

zabbix 사이트에서 zabbix 버전, OS 버전, 데이타베이스, 웹서버를 선택하면 이후 설치 문서에 반영된다.

zabbix 5.0LTS, CentOS8, mysql, Apache 를 선택하고 패키지를 다운로드 받았다.

2. 설치.
zabbix repository를 설치, 등록한다.

# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm

zabbix 서버, 프론트엔드, 에이전트를 설치한다.

# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent

Continue reading

Nagios core에 시스코 스위치 등록하기

Nagios core에 시스코 스위치 등록하기.

설치는 이전 문서 ‘CentOS 8, Nagios core 설치‘를 참고하면 된다.

1. 시스코 스위치의 snmp 설정.
테스트를 위해 기본 설정만 하도록 한다. 커뮤니티 이름은 TEST이고 read only(RO)로 설정했다. 스위치 호스트네임은 System_Node다.

System_Node#conf t
System_Node(config)#snmp-server community TEST ro
System_Node(config)#end

설정확인

System_Node#show snmp community 

Community name: TEST
Community Index: TEST
Community SecurityName: TEST
storage-type: nonvolatile	 active

Continue reading

Django, queryset 결과의 문자열을 변경하는 방법.

Django3.1, queryset 결과 문자열을 변경하는 방법.

아래의 모델에 저장된 MAC 주소는 ‘0021ccd3792f’ 같은 형식으로 일반적으로 표현되는 : 이나 – 이 제거된 형태다.

models.py

class MacTable(models.Model):
...
    mac = models.CharField(max_length=32, verbose_name='MAC Address.')
    device = models.ForeignKey(
        'NetworkDevice', on_delete=models.CASCADE, verbose_name='Network Device'
    )
    interface = models.CharField(max_length=32, verbose_name='Interface')
    vlan = models.CharField(max_length=32, verbose_name='VLAN')
    dropped = models.BooleanField(default=False, verbose_name='Dropped')
....

    class Meta:
        verbose_name_plural = 'MAC address table'
        # unique_together = ('mac', 'device')

이것을 queryset 결과로 템플릿에서 보여주면 ‘0021ccd3792f’ 형식으로 보인다.

이것을 보다 일반적인 ’00:21:cc:d3:79:2f’ 와 같은 형식으로 보여 주려면 몇 가지 방법이 있겠지만, 기존의 queryset이나 view를 수정하지 않고 해당 모델에 아래와 같은 메소드를 추가해 주면 된다.

    @property
    def colon_view_mac(self):
        tmp = self.mac
        mac = f'{tmp[0:2]}:{tmp[2:4]}:{tmp[4:6]}:{tmp[6:8]}:{tmp[8:10]}:{tmp[10:12]}'
        return mac.lower()

그리고, 템플릿 파일을 수정해 준다.

기존의 템플릿에서 mac을 보여주는 부분이 {{ i.mac }} 이었다면, 이 메소드 이름으로 바꿔주면된다.
즉, {{ i.mac }} 을 {{ i.colon_view_mac }} 로 바꿔주면 된다.

익스트림 스위치 ssh/telnet 세션.

익스트림 스위치 ssh/telnet 세션.

익스트림 스위치에 ssh 접속시도했는데, 아래와 같은 접속 거부 메시지가 보였다.

$ ssh wadmin@172.16.100.2
ssh_exchange_identification: read: Connection reset by peer

다행히 telnet 접속도 허용해 놓은 상태여서 일단 접속 가능했다.

현재 세션을 확인해 보면 아래 처럼 8개의 ssh 연결된 상태다. 익스트림 스위치의 ssh 최대 동시 접속은 8 이다. 아래는 8개의 ssh 접속이 있어서 더이상 접속을 허용하지 않는 상태가 되었다.

C-1F.1 # show session
                                                             CLI
    #       Login Time               User     Type    Auth   Auth Location
================================================================================
 79359      Mon Sep 27 12:25:20 2021 wadmin   ssh2    local  dis  192.168.100.122
 79361      Mon Sep 27 12:29:10 2021 wadmin   ssh2    local  dis  192.168.100.122
 79363      Mon Sep 27 12:32:55 2021 wadmin   ssh2    local  dis  192.168.100.122
 79365      Mon Sep 27 12:39:20 2021 wadmin   ssh2    local  dis  192.168.100.122
 79366      Mon Sep 27 12:43:05 2021 wadmin   ssh2    local  dis  192.168.100.122
 79378      Mon Sep 27 13:37:30 2021 wadmin   ssh2    local  dis  192.168.100.122
 79380      Mon Sep 27 13:41:15 2021 wadmin   ssh2    local  dis  192.168.100.122
 79381      Mon Sep 27 13:41:41 2021 wadmin   telnet  local  dis  192.168.100.121
*79382      Mon Sep 27 13:42:39 2021 wadmin   telnet  local  dis  192.168.100.122

Continue reading

mysql, 1040, ‘Too many connections’

mysql, 1040, ‘Too many connections’

mysql을 이용해서 스크립트 작성중 too many connections 오류가 발생했다.

스크립트 실행 전에 processlist를 확인해 보면 아래와 같다.

ysql> show full processlist\g
+--------+----------+-----------------+----------+---------+------+----------+-----------------------+
| Id     | User     | Host            | db       | Command | Time | State    | Info                  |
+--------+----------+-----------------+----------+---------+------+----------+-----------------------+
| 142415 | foxxipam | localhost:42880 | foxxipam | Sleep   |  239 |          | NULL                  |
| 142416 | foxxipam | localhost:42898 | foxxipam | Sleep   |  239 |          | NULL                  |
| 144300 | foxxipam | localhost       | foxxipam | Sleep   |  750 |          | NULL                  |
| 144325 | foxxipam | localhost       | foxxipam | Query   |    0 | starting | show full processlist |
+--------+----------+-----------------+----------+---------+------+----------+-----------------------+
4 rows in set (0.00 sec)

Continue reading