* 수정전 기존 글이 두서 없이 쓰다보니, 여쭙고 싶은 내용 전달이 제대로 되지 않은 것 같아서, 수정 후 재차 질문드립니다.
되도록 현업 시스템엔지니어 분들이나, 해당 직종에 과거 근무하셨던 경험이 있으신 분이 답변 주시길 기대합니다.
Q.1)
웹호스팅 회사의 시스템엔지니어 직종에서, 실제 어떠한 업무를 하는지 구체적인 예시가 궁금합니다.
인터넷상의 정보들은 너무 압축된 글들이라 구체적으로 궁금합니다.
주로 신입~3년 차 정도의 업무와, 5~6년 차 이상의 업무 경험이 궁금합니다.
예시)
(APM) Apache, PHP, MariaDB 등 운영에 필요한 것들 설치하고, 보안 쪽 ModSecurity/방화벽 룰까지 작성한다지, 네트워크 장비까지 세팅 후 만진다든지...
나열식으로 가능한 업무 내용이 많이 궁금합니다.
Q.2)
해당 직종에 신입으로 지원하는 경우, 앞서 업무에 대해서 (보통) 어느 정도 수준의 이해가 선행되어야 하는지 궁금합니다.
Q.3)
반대로 (호스팅 말고) 일반 웹서비스를 위한 신생벤처 업체에서, 시스템엔지니어 직종의 4년 차~ 이상의 최소 운영이 가능한 실무자를 구인한다면,
앞서 업무에 대해서 어느 정도 수준의 이해가 된 사람을 뽑아야 하는지 궁금합니다.
사업 운영자(구인자) 입장도 경험해 보았기에, 구인&구직 양측면에서 궁금하기에 질문드립니다.
Q.4)
시스템엔지니어 직종의 신입을 구인한다면, 보통의 경우 나이 제한을 어느 정도로 잡을지 궁금합니다.
# 첨부파일은,
과거 리눅스 웹서버 운영을 위해 개인적으로 공부&연구했었던, 리눅스 방화벽 룰 관련 자료를 일부 올린 것입니다.
[질문 내용은 수정하였지만, 자료는 관심이 있으시거나 공부하는 학생들이 있다면 참고용으로 남겨둡니다.]
과거 (CentOS 7) 리눅스 방화벽 룰을 공부하며, 다양한 공격에 대한 방어 방법을 실습 과정에서 대충 정리한 것입니다.
인터넷상에서 쉽게 찾아보기 힘든 일부 공격에 대한 방어 방법도 연구해 보았었기에, 학생이라면 참고가 가능할지 몰라 올려봅니다.
* 당시 재미로 공부&연구했던 것들 중 특이 내용
[수년 전 공부 했던 내용이라 공격 이름이 정확하지는 않지만]
인터넷상에 (DOS) TCP Zero Window / Sockstress / Slow Attack / Slow HTTP 등으로 알려져 있는 공격 방식입니다.
- 공격방식 : Window 사이즈와 관련된 취약점을 활용하여, 서버의 부하를 주지 않으면서 웹서버의 가용 가능한 접속(유저) 자원을 갉아먹는 공격입니다.
[공격에 대한 선행 지식이 있어야 룰을 이해할 수 있습니다.]
- 공격역사 : 공격은 이론적으로 2008~2009년? 즈음 정립된 것 같았는데. 공부하던 2015~2016년 정도에도,
(피해가 미미한지) 정확한 공격 탐지나 차단 방법에 대한 인터넷 자료가 별로 없어서 재미로 연구해본 것입니다.
당시에는 본 공격과 관련하여 Apache에 옵션이 있었던 것으로 기억하는데, 아마 버그나 운영에 사용하기 어려울 것 같이 별도로 연구해보았습니다.
- 요구사항 : (CentOS 7 부터) 방화벽 단에서 연동해 활용할 수 있는 일종의 작은 DB인 ipset + IPTables U32 Match (Netfilter u32) 를 활용합니다.
[룰이 괜찮게 작동하기 위해서는 리눅스 커널 옵션과 아파치 옵션이 적절히 수정되어야 하는데, 이에 대해서는 기억이 나지 않아 서술하지 않습니다.]
- 작동원리 : 일종의 동적인(지능형?) 방화벽 프로그램을 코딩한다고 생각하고, 방화벽 룰을 만들어봄.
> 두 개의 (LONG, SHORT) timeout 을 갖는 ipset list 를 생성.
> LONG 은 체크 시간을 의미하고, 체크 시간 내에 SHORT 만료까지 window size 가 복구 안 되면 감지하는 방식임.
[대충 그런 원리로 코딩했던 것 같습니다. 서술로는 이해하기 힘들어, 실제 룰의 흐름을 보아야 쉽게 이해하실 수 있습니다.]
[작동은 악의적인 공격자의 공격이 장시간 성공하기 위해서는, 시간 텀과 한계가 있는데, 그런 부분을 역이용한 것입니다.]
[과거 만들었던 것이라 기억이 가물가물하여 서술이 정확하지는 않습니다 ^^;;]
[효과는 있었던 것 같은데 완전히 다듬은 것은 아니라서 문서와 룰만 정리해 두었습니다.]
[당시에 재미로, 연구를 위해 해외 사이트를 많이 검색해 보았지만, 비슷한 방향으로 생각하고 연구하시는 분이 2분 정도 계셨던 것 같습니다.]
[자세한 자료는 없었던 것 같고요. 현재는 보편화된 방식인지는 모르겠습니다. ipset 으로 인해 부하가 있을 수 있습니다.]
[실제 현업에 계신 분이라면 재미로 봐주시고, 룰에 심한 문제가 있다면 보완에 대한 팁 주시면 감사하겠습니다. ^^;;]
[단일 서버로 앞단에 클라우드플레어(Cloudflare) 서비스를 이용하려고 했던 것이라, 일반 운영 룰과 조금 차이가 있을 수 있습니다.]
- 관련 자료
현업에 계신 분들은 실제 방화벽 룰인 'ipsetrule.sh' 파일을 바로 보아도 이해가 될 것으로 생각됩니다.
이와 관련된 문서와 자료는 '비정상 패킷 차단 연구_ZERO WINDOW 설명 분리.txt' 입니다.
'비정상 패킷 차단 연구.txt' 에도 일부 룰과 관련된 잡다한 내용이 정리되어 있습니다.
- 룰의 일부 예)
...
# intelligent window_size check - long timeout ipset create
ipset create -exist $SETNAME_TIMEOUT_PROTECTION_LONG hash:ip,port timeout $DEFAULT_TIMEOUT_PROTECTION_LONG
# intelligent window_size check - shore timeout ipset create
ipset create -exist $SETNAME_TIMEOUT_PROTECTION_SHORT hash:ip,port timeout $DEFAULT_TIMEOUT_PROTECTION_SHORT
...
# white list & other common log : ACK not set window size=0~min log (TCP ZeroWindow Normal: RST,ACK or ACK flags)
firewall-cmd -q --direct --add-rule ipv4 $ADD_TABLES_MANGLE $CREATE_CHAIN_MANGLE 23 -p tcp ! -f ! --tcp-flags ACK ACK -m u32 --u32 "0>>22&0x3C@12&0xFFFF=0x0000:0x05DB" -m limit --limit $LOG_LIMIT_AVG_MIN/minute --limit-burst $LOG_LIMIT_START_BURST -j LOG --log-prefix "WinSize Small: " --log-ip-options --log-tcp-options --log-tcp-sequence
# white list check -j RETURN
firewall-cmd -q --direct --add-rule ipv4 $ADD_TABLES_MANGLE $CREATE_CHAIN_MANGLE 24 -m set --match-set $SETNAME_WHITELIST_DROP src -j RETURN
# intelligent window_size drop : window size 0~4095(0x0FFF)? 1499(0x05DB)? check drop
firewall-cmd -q --direct --add-rule ipv4 $ADD_TABLES_MANGLE $CREATE_CHAIN_MANGLE 25 -p tcp ! -f -m u32 --u32 "0>>22&0x3C@12&0xFFFF=0x0000" -j $CREATE_CHAIN_MANGLE_INTEL_WINDOW
# long timeout ipset list check & ACK flags + normal window size = check list del ip
firewall-cmd -q --direct --add-rule ipv4 $ADD_TABLES_MANGLE $CREATE_CHAIN_MANGLE 26 -p tcp ! -f --tcp-flags ALL ACK -m u32 ! --u32 "0>>22&0x3C@12&0xFFFF=0x0000:0x05DB" -m set --match-set $SETNAME_TIMEOUT_PROTECTION_LONG src,src -j SET --del-set $SETNAME_TIMEOUT_PROTECTION_SHORT src,src
firewall-cmd -q --direct --add-rule ipv4 $ADD_TABLES_MANGLE $CREATE_CHAIN_MANGLE 27 -p tcp ! -f --tcp-flags ALL ACK -m u32 ! --u32 "0>>22&0x3C@12&0xFFFF=0x0000:0x05DB" -m set --match-set $SETNAME_TIMEOUT_PROTECTION_LONG src,src -j SET --del-set $SETNAME_TIMEOUT_PROTECTION_LONG src,src
...
* 공부하는 학생들을 위해서 덧붙임.
본 자료는 학습과정에서 대충 정리한 내용이라, 봐도 머리가 아플 것입니다.
다만, 학습 과정에서 Ctrl+F 해서 운 좋게 관련 내용이 나오면 참고 정도는 가능할 것 같습니다.
[아~ 리눅스 커널 옵션과 관련되어 잡다한 설명도 좀 있습니다.]
실제 방화벽 룰인 'ipsetrule.sh' 파일은 리눅스 .service 로 등록해서 작동할 수 있게 만들었습니다.
또한, 당시에는 리눅스 방화벽의 패킷 흐름과 룰의 처리 순서까지 고려해서 만들었기에.
골 때리고 부끄러운 룰이지만 참고 정도는 가능할 것 같습니다. 저도 학생(중고 신입 지원자)입니다.
[도전해볼 분들을 위해, 글과 자료를 삭제하려다가 남겨둡니다.]
* 주의!!
룰은 실 서버에 당연히 올리면 안 됩니다. 룰을 보면 사전에 일부 (수동)세팅해야 할 부분이 있습니다.
관심이 있는 경우, 그냥 공부에 참고하는 용도로만 사용해 주세요.
으흥님 재주도 열정도 좋네요.. 부럽습니다.. 자바로 먹고살고있는 저도 그정도까지 안될거 같네요;; 흑흑흑..
다 필요 없고(?) 다 때려치고(?) 일단 원하는 회사가 있으면 위에 서술한 내용을 좀 더 정제하고 압축하고 해서.. 자소서 하나 쓰시고요..
입사 지원 하시면 될거 같네요..
이력서 내도 될까? 안될까? 걱정할 필요 없습니다. 안되면 연락 안오겠고.. 면접 볼만하다 생각되면 연락오겠죠..
간단합니다.
도전하세요!!!
https://anatta.tistory.com/1272
두번째 대화내용을 보시면 그게 전부 입니다.
"내가 이걸 하겠다." "내가 이걸 꼭 하고싶다."
기술적 부족함이 있다고 생각하는건 그렇게 치명적인 결격사유는 아닙니다. 라고만 말하고싶네요..
왜시스템엔지니어를하고싶으신가요? 가 중요한것같습니다
시스템엔지니어를 하면 그런게 가능하지 않을까? 돈 까지 준다니 금상첨화 인듯 보여서요.
실제로는 업무 해보면 모든 일들이 그렇듯... 회의감도 좀 들고 그러나요?
실제 하는일이 뭔지 너무 몰라서요 ^^;
취업이 힘들다고 하더라도, 해당 업무에 대해 알면 좋을것 같아서요.
2. 자기 포트폴리오를 정리해 두세요. 자기 소개서를 위처럼 쓰면 오히려 좋은 점수를 받기 힘들 수 있습니다. 내가 가고자 하는 방향과 직접적으로 관련이 있는 내용만을 추리고 객관적인 내용에 집중하시기 바랍니다.
3. 모든 회사가 마찬거지 입니다만, 직군과 직렬이라는 게 있습니다. 이 내용을 보면 se 가 아니라 개발 같은 데... 내가 지원하고자 하는 업계에서 통용되는 정확한 직군과 업무내용을 이해하고 있는 것은 매우 중요한 가점사항입니다.
4. IT가 자격증을 안 본다고 하는 것은, 경력자에게나 해당하는 내용입니다. 자신을 객관적으로 평가할 수 있는 항목은 직접적으로 표현가능한 것이여야 합니다. 그 가장 직접적인게 자격증이지요.
5. 정부지원사업을 노려볼만 합니다. 정부지원사업을 보면 중소기업청, 노동청, 산업인력관리공단 등.. 여러 정부지원사업으로 IT교육업체등과 협약을 맺고 교육 하고 취업알선을 하는 사업이 엄청 많습니다. 자기가 원하는 과정을 선택해서 취업할 수 있도록 하는 사업입니다. 대부분 국가가 부담을 하고 현재 구직예정자 같은 경우는 용돈(?)꺼지 주는 사업도 있습니다. 이를 잘 활용하세요.
제가 취업 관련 지식이 정말 없는 편인데.
2번 3번이 특히 와 닿네요. 3번은 추가로 궁금한 점이...있는데요.
앞서 제가 서술한 내용이 시스템엔지니어(SE)가 하는 업무가 아니었나요. ^^?? 헉!
해당 직군의 업무가 그럼 뭐하는건가요??
제가 알고있는게 맞는지. 틀렸다면 해당 업무가 뭐하는 건지 자세히 궁금해서도 쓴 글인데...
제가 잘못알고 있었나 본데.
현업에 계시는분들 업무내용 팁이라도 주시면 좋으련만...
서비스 하는 서버가 죽지 않게 관리하고 OS 셋팅하고 데이터 백업하고 그런 일로 알고 있습니다..
기회와 능력이 된다면 미국 가셔서 취업하세요..
그리고 프로그래머는 30 이상 길어야 40 되면 프로그래밍 일 못합니다..
프로그래밍을 계속 하는 사람도 있으나 보통 영업이나 관리쪽으로 빠지죠..
어느 분야나 그렇지만 본인 하기 나름입니다.
동시에 그런 사람들이 많이 모여있는 곳에서 함께하시면 더 좋을겁니다.
40대쯤 되면 흰머리카락 나고(심하면 반백쯤 되고) 20대만큼 머리가 안 돌아가서 깜빡깜빡합니다..
그리고 프로그램 짜보셔서 아시겠지만 발동 걸리면 1주일 정도는 잠도 자지 않고 결과가 나올때까지 프로그램을 짜야 하는데
나이 40대면 보통 체력이 못 받쳐 줍니다..
따라서 보통 기술영업이나 관리 혹은 개발 팀장이지만 사람 관리 같은 것을 하게 됩니다..
힘들지만 대기업 프로그래머로 가면 재일 좋고 아니면 대기업에 파견 나가는 큰 하청업체 프로그래머도 정규직이면 나쁘지는 않습니다..
그 외에는 은행권에서 일하는 프로그래머도 있긴 하군요..
1. 기본적인 IT 능력
이지만 이에 못지않게 중요한 능력이
2. 시스템의 상태를 잘 리포팅 하는겁니다.
어느정도 수준의 회사라면 혼자서 처리할 수 있는 문제는 하나도 없습니다. 또한 해서도 않됩니다.
괜히 "보고"/"검증"하는거 아닙니다.
주제넘지만 개인적인 생각으로는 IT 능력보다 내용을 정리하고 다른 사람들에게 내용을 전달할 수 있는 능력을 키우시는게 우선으로 보입니다.
내용을 보는데 내 생각만 표현하고 상대방을 배려하지 않은 글 입니다.
그 능력이 되면 시스템엔지니어가 아니라 어떤 분야에서도 실패하지 않을 수 있습니다. 물론 성공보장도 없습니다.
두서없이 글을 쓰고 나니 여러 부분이 우려스러웠습니다. 말씀하신 부분도 그중 하나였습니다. ^^
뭐랄까... 인터넷이라는 공간에서 진솔한 여러 답변을 듣고 싶었는데, 역효과였던듯싶습니다.
실무에서는 그렇게 행동하지는 않지만, 좀 더 깊이 새기도록 노력하겠습니다.
[기존에 불필요한 내용은 대부분 삭제 후, 궁금한 점만 줄여서 수정하였습니다.]